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

Last change on this file was 139, checked in by rosiere, 14 years ago
  • Add test for all configuration
  • RAT : add rat scheme (depth_save)
  • Property svn:keywords set to Id
File size: 8.2 KB
Line 
1/*
2 * $Id: Decod_deallocation.cpp 139 2010-07-30 14:47:27Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/include/Decod.h"
9#include "Behavioural/include/Allocation.h"
10
11namespace morpheo                    {
12namespace behavioural {
13namespace core {
14namespace multi_front_end {
15namespace front_end {
16namespace decod_unit {
17namespace decod {
18
19
20#undef  FUNCTION
21#define FUNCTION "Decod::deallocation"
22  void Decod::deallocation (void)
23  {
24    log_printf(FUNC,Decod,FUNCTION,"Begin");
25
26    if (_usage & USE_SYSTEMC)
27      {
28        delete    in_CLOCK ;
29        delete    in_NRESET;
30     
31        DELETE2_SIGNAL( in_IFETCH_VAL                        ,_param->_nb_context,_param->_nb_inst_fetch[it1],1);
32        DELETE2_SIGNAL(out_IFETCH_ACK                        ,_param->_nb_context,_param->_nb_inst_fetch[it1],1);
33        DELETE2_SIGNAL( in_IFETCH_INSTRUCTION                ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_instruction);
34        DELETE2_SIGNAL( in_IFETCH_CONTEXT_ID                 ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_context_id      );
35        DELETE2_SIGNAL( in_IFETCH_ADDRESS                    ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_instruction_address    );
36//      DELETE2_SIGNAL( in_IFETCH_ADDRESS_NEXT               ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_instruction_address    );
37//      DELETE2_SIGNAL( in_IFETCH_INST_IFETCH_PTR            ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_inst_ifetch_ptr );
38        DELETE2_SIGNAL( in_IFETCH_BRANCH_STATE               ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_branch_state    );
39        DELETE2_SIGNAL( in_IFETCH_BRANCH_UPDATE_PREDICTION_ID,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_depth           );
40        DELETE2_SIGNAL( in_IFETCH_EXCEPTION                  ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_exception_ifetch);
41
42        DELETE1_SIGNAL(out_DECOD_VAL          ,_param->_nb_inst_decod,1);
43        DELETE1_SIGNAL( in_DECOD_ACK          ,_param->_nb_inst_decod,1);
44        DELETE1_SIGNAL(out_DECOD_CONTEXT_ID   ,_param->_nb_inst_decod,_param->_size_context_id            );
45        DELETE1_SIGNAL(out_DECOD_DEPTH        ,_param->_nb_inst_decod,_param->_size_depth                 );
46#ifdef STATISTICS
47        DELETE1_SIGNAL(out_DECOD_INSTRUCTION  ,_param->_nb_inst_decod,32                                  );
48#endif
49        DELETE1_SIGNAL(out_DECOD_TYPE         ,_param->_nb_inst_decod,_param->_size_type                  );
50        DELETE1_SIGNAL(out_DECOD_OPERATION    ,_param->_nb_inst_decod,_param->_size_operation             );
51        DELETE1_SIGNAL(out_DECOD_NO_EXECUTE   ,_param->_nb_inst_decod,1                                   );
52        DELETE1_SIGNAL(out_DECOD_IS_DELAY_SLOT,_param->_nb_inst_decod,1                                   );
53        DELETE1_SIGNAL(out_DECOD_SAVE_RAT     ,_param->_nb_inst_decod,1                                   );
54#ifdef DEBUG
55        DELETE1_SIGNAL(out_DECOD_ADDRESS      ,_param->_nb_inst_decod,_param->_size_instruction_address   );
56#endif
57        DELETE1_SIGNAL(out_DECOD_ADDRESS_NEXT ,_param->_nb_inst_decod,_param->_size_instruction_address   );
58        DELETE1_SIGNAL(out_DECOD_HAS_IMMEDIAT ,_param->_nb_inst_decod,1                                   );
59        DELETE1_SIGNAL(out_DECOD_IMMEDIAT     ,_param->_nb_inst_decod,_param->_size_general_data          );
60        DELETE1_SIGNAL(out_DECOD_READ_RA      ,_param->_nb_inst_decod,1                                   );
61        DELETE1_SIGNAL(out_DECOD_NUM_REG_RA   ,_param->_nb_inst_decod,_param->_size_general_register_logic);
62        DELETE1_SIGNAL(out_DECOD_READ_RB      ,_param->_nb_inst_decod,1                                   );
63        DELETE1_SIGNAL(out_DECOD_NUM_REG_RB   ,_param->_nb_inst_decod,_param->_size_general_register_logic);
64        DELETE1_SIGNAL(out_DECOD_READ_RC      ,_param->_nb_inst_decod,1                                   );
65        DELETE1_SIGNAL(out_DECOD_NUM_REG_RC   ,_param->_nb_inst_decod,_param->_size_special_register_logic);
66        DELETE1_SIGNAL(out_DECOD_WRITE_RD     ,_param->_nb_inst_decod,1                                   );
67        DELETE1_SIGNAL(out_DECOD_NUM_REG_RD   ,_param->_nb_inst_decod,_param->_size_general_register_logic);
68        DELETE1_SIGNAL(out_DECOD_WRITE_RE     ,_param->_nb_inst_decod,1                                   );
69        DELETE1_SIGNAL(out_DECOD_NUM_REG_RE   ,_param->_nb_inst_decod,_param->_size_special_register_logic);
70        DELETE1_SIGNAL(out_DECOD_EXCEPTION_USE,_param->_nb_inst_decod,_param->_size_exception_use         );
71        DELETE1_SIGNAL(out_DECOD_EXCEPTION    ,_param->_nb_inst_decod,_param->_size_exception_decod       );
72
73        DELETE1_SIGNAL(out_PREDICT_VAL                        ,_param->_nb_inst_decod,1);
74        DELETE1_SIGNAL( in_PREDICT_ACK                        ,_param->_nb_inst_decod,1);
75        DELETE1_SIGNAL(out_PREDICT_CONTEXT_ID                 ,_param->_nb_inst_decod,_param->_size_context_id      );
76        DELETE1_SIGNAL(out_PREDICT_MATCH_INST_IFETCH_PTR      ,_param->_nb_inst_decod,1                             );
77        DELETE1_SIGNAL(out_PREDICT_BRANCH_STATE               ,_param->_nb_inst_decod,_param->_size_branch_state    );
78        DELETE1_SIGNAL(out_PREDICT_BRANCH_UPDATE_PREDICTION_ID,_param->_nb_inst_decod,_param->_size_depth           );
79        DELETE1_SIGNAL(out_PREDICT_BRANCH_CONDITION           ,_param->_nb_inst_decod,_param->_size_branch_condition);
80//      DELETE1_SIGNAL(out_PREDICT_BRANCH_STACK_WRITE         ,_param->_nb_inst_decod,1                             );
81        DELETE1_SIGNAL(out_PREDICT_BRANCH_DIRECTION           ,_param->_nb_inst_decod,1                             );
82        DELETE1_SIGNAL(out_PREDICT_ADDRESS_SRC                ,_param->_nb_inst_decod,_param->_size_instruction_address    );
83        DELETE1_SIGNAL(out_PREDICT_ADDRESS_DEST               ,_param->_nb_inst_decod,_param->_size_instruction_address    );
84        DELETE1_SIGNAL( in_PREDICT_CAN_CONTINUE               ,_param->_nb_inst_decod,1                             );
85
86        DELETE1_SIGNAL(in_CONTEXT_DECOD_ENABLE, _param->_nb_context,1);
87        DELETE1_SIGNAL(in_CONTEXT_DEPTH_VAL   , _param->_nb_context,1);
88        DELETE1_SIGNAL(in_CONTEXT_DEPTH       , _param->_nb_context,_param->_size_depth);
89
90        DELETE0_SIGNAL(out_CONTEXT_EVENT_VAL          ,1);
91        DELETE0_SIGNAL( in_CONTEXT_EVENT_ACK          ,1);
92        DELETE0_SIGNAL(out_CONTEXT_EVENT_CONTEXT_ID   ,_param->_size_context_id  );
93        DELETE0_SIGNAL(out_CONTEXT_EVENT_DEPTH        ,_param->_size_depth       );
94        DELETE0_SIGNAL(out_CONTEXT_EVENT_TYPE         ,_param->_size_event_type  );
95        DELETE0_SIGNAL(out_CONTEXT_EVENT_IS_DELAY_SLOT,1                         );
96        DELETE0_SIGNAL(out_CONTEXT_EVENT_ADDRESS      ,_param->_size_instruction_address);
97        DELETE0_SIGNAL(out_CONTEXT_EVENT_ADDRESS_EPCR ,_param->_size_instruction_address);
98
99
100        DELETE1(reg_CONTEXT_ADDRESS_PREVIOUS      ,_param->_nb_context);
101        DELETE1(reg_CONTEXT_IS_DELAY_SLOT         ,_param->_nb_context);
102//      DELETE1(reg_CONTEXT_SAVE_RAT              ,_param->_nb_context);
103
104        DELETE1(internal_CONTEXT_HAVE_TRANSACTION ,_param->_nb_context);
105        DELETE1(internal_CONTEXT_ADDRESS_PREVIOUS ,_param->_nb_context);
106        DELETE1(internal_CONTEXT_IS_DELAY_SLOT    ,_param->_nb_context);
107//      DELETE1(internal_CONTEXT_SAVE_RAT         ,_param->_nb_context);
108
109#ifdef STATISTICS
110        DELETE1(internal_DECOD_VAL                ,_param->_nb_inst_decod);
111#endif
112      }
113
114    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
115    delete    _priority;
116
117    DELETE3(_function_decod   ,_param->_nb_context,nb_opcod_type,tab_opcod_type[it2]);
118    DELETE3(_function_custom  ,_param->_nb_context,nb_opcod_type,tab_opcod_type[it2]);
119    DELETE0(_decod_instruction);
120
121    for (uint32_t i=0; i<_param->_nb_context; i++)
122      delete _decod_param [i];
123    DELETE1(_decod_param      ,_param->_nb_context);
124
125    delete    _component;
126
127    log_printf(FUNC,Decod,FUNCTION,"End");
128  };
129
130}; // end namespace decod
131}; // end namespace decod_unit
132}; // end namespace front_end
133}; // end namespace multi_front_end
134}; // end namespace core
135
136}; // end namespace behavioural
137}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.