source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_deallocation.cpp @ 78

Last change on this file since 78 was 78, checked in by rosiere, 16 years ago

Add :

  • Execute_loop (must be test systemC)
  • Prediction
    • Direction : predifined scheme
    • Branch Target Buffer
  • iFetch_unit
    • ifetch_queue
    • pc management
  • Decod_unit
    • coming soon : support for custom operation
  • Rename_unit
    • RAT
    • Free_list
    • Dependence RAW check
    • Load store unit pointer
  • New Environnement (hierarchy_memory will remove in a next version)


Modif :

  • Manage Custom Operation
  • All component in execute_loop to use the new statistics management

Not Finish :

  • Return Address Stack
  • Environnement
File size: 4.2 KB
Line 
1/*
2 * $Id$
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/include/Decod.h"
9
10namespace morpheo                    {
11namespace behavioural {
12namespace core {
13namespace multi_front_end {
14namespace front_end {
15namespace decod_unit {
16namespace decod {
17
18
19#undef  FUNCTION
20#define FUNCTION "Decod::deallocation"
21  void Decod::deallocation (void)
22  {
23    log_printf(FUNC,Decod,FUNCTION,"Begin");
24
25    if (_usage & USE_SYSTEMC)
26      {
27        delete    in_CLOCK ;
28        delete    in_NRESET;
29
30        delete []  in_IFETCH_VAL                         ;
31        delete [] out_IFETCH_ACK                         ;
32        delete []  in_IFETCH_INSTRUCTION                 ;
33        if (_param->_have_port_context_id)
34        delete []  in_IFETCH_CONTEXT_ID                  ;
35        delete []  in_IFETCH_ADDRESS                     ;
36//      delete []  in_IFETCH_ADDRESS_NEXT                ;
37        if (_param->_have_port_inst_ifetch_ptr)
38        delete []  in_IFETCH_INST_IFETCH_PTR             ;
39        delete []  in_IFETCH_BRANCH_STATE                ;
40        if (_param->_have_port_branch_update_prediction_id)
41        delete []  in_IFETCH_BRANCH_UPDATE_PREDICTION_ID ;
42
43        delete [] out_DECOD_VAL                          ;
44        delete []  in_DECOD_ACK                          ;
45        if (_param->_have_port_context_id)
46        delete [] out_DECOD_CONTEXT_ID                   ;
47        if (_param->_have_port_depth)
48        delete [] out_DECOD_DEPTH                        ;
49        delete [] out_DECOD_TYPE                         ;
50        delete [] out_DECOD_OPERATION                    ;
51        delete [] out_DECOD_IS_DELAY_SLOT                ;
52        delete [] out_DECOD_ADDRESS                      ;
53        delete [] out_DECOD_HAS_IMMEDIAT                 ;
54        delete [] out_DECOD_IMMEDIAT                     ;
55        delete [] out_DECOD_READ_RA                      ;
56        delete [] out_DECOD_NUM_REG_RA                   ;
57        delete [] out_DECOD_READ_RB                      ;
58        delete [] out_DECOD_NUM_REG_RB                   ;
59        delete [] out_DECOD_READ_RC                      ;
60        delete [] out_DECOD_NUM_REG_RC                   ;
61        delete [] out_DECOD_WRITE_RD                     ;
62        delete [] out_DECOD_NUM_REG_RD                   ;
63        delete [] out_DECOD_WRITE_RE                     ;
64        delete [] out_DECOD_NUM_REG_RE                   ;
65        delete [] out_DECOD_EXCEPTION_USE                ;
66
67        delete [] out_PREDICT_VAL                        ;
68        delete []  in_PREDICT_ACK                        ;
69        if (_param->_have_port_context_id)
70        delete [] out_PREDICT_CONTEXT_ID                 ;
71        delete [] out_PREDICT_BRANCH_STATE               ;
72        delete [] out_PREDICT_MATCH_INST_IFETCH_PTR      ;
73        if (_param->_have_port_branch_update_prediction_id)
74        delete [] out_PREDICT_BRANCH_UPDATE_PREDICTION_ID;
75        delete [] out_PREDICT_BRANCH_CONDITION           ;
76//      delete [] out_PREDICT_BRANCH_STACK_WRITE         ;
77        delete [] out_PREDICT_BRANCH_DIRECTION           ;
78        delete [] out_PREDICT_ADDRESS_SRC                ;
79        delete [] out_PREDICT_ADDRESS_DEST               ;
80//      delete []  in_PREDICT_CAN_CONTINUE               ;
81
82        delete []  in_CONTEXT_DECOD_ENABLE               ;
83        if (_param->_have_port_depth)
84        delete []  in_CONTEXT_DEPTH                      ;
85
86        delete    out_CONTEXT_EVENT_VAL                  ;
87        delete     in_CONTEXT_EVENT_ACK                  ;
88        if (_param->_have_port_context_id)
89        delete    out_CONTEXT_EVENT_CONTEXT_ID           ;
90        delete    out_CONTEXT_EVENT_TYPE                 ;
91        delete    out_CONTEXT_EVENT_IS_DELAY_SLOT        ;
92        delete    out_CONTEXT_EVENT_ADDRESS              ;
93        delete    out_CONTEXT_EVENT_ADDRESS_EPCR         ;
94      }
95
96    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
97    delete    reg_CONTEXT_ADDRESS_PREVIOUS      ;
98    delete    reg_CONTEXT_IS_DELAY_SLOT         ;
99
100    delete    internal_CONTEXT_HAVE_TRANSACTION ;
101    delete    internal_CONTEXT_ADDRESS_PREVIOUS ;
102    delete    internal_CONTEXT_IS_DELAY_SLOT    ;
103
104    delete [] _function_decod   ;
105    delete    _decod_instruction;
106    delete    _decod_param      ;
107    delete    _component;
108
109    log_printf(FUNC,Decod,FUNCTION,"End");
110  };
111
112}; // end namespace decod
113}; // end namespace decod_unit
114}; // end namespace front_end
115}; // end namespace multi_front_end
116}; // end namespace core
117
118}; // end namespace behavioural
119}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.