source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/src/Rename_unit_deallocation.cpp @ 145

Last change on this file since 145 was 145, checked in by rosiere, 14 years ago

1) add test with SPECINT2K
2) new config of Selftest
3) modif RAT to support multiple depth_save ... but not finish (need fix Update Prediction Table)
4) add Function_pointer but need fix

  • Property svn:keywords set to Id
File size: 15.2 KB
Line 
1/*
2 * $Id: Rename_unit_deallocation.cpp 145 2010-10-13 18:15:51Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/include/Rename_unit.h"
9#include "Behavioural/include/Allocation.h"
10
11namespace morpheo                    {
12namespace behavioural {
13namespace core {
14namespace multi_ooo_engine {
15namespace ooo_engine {
16namespace rename_unit {
17
18
19#undef  FUNCTION
20#define FUNCTION "Rename_unit::deallocation"
21  void Rename_unit::deallocation (void)
22  {
23    log_begin(Rename_unit,FUNCTION);
24
25    if (usage_is_set(_usage,USE_SYSTEMC))
26      {
27        delete    in_CLOCK ;
28        delete    in_NRESET;
29
30        DELETE2_SIGNAL     ( in_RENAME_IN_VAL               ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
31        DELETE2_SIGNAL     (out_RENAME_IN_ACK               ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
32        DELETE2_SIGNAL     ( in_RENAME_IN_FRONT_END_ID      ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_front_end_id          );
33        DELETE2_SIGNAL     ( in_RENAME_IN_CONTEXT_ID        ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_context_id            );
34        DELETE2_SIGNAL     ( in_RENAME_IN_DEPTH             ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_depth                 );
35#ifdef STATISTICS         
36        DELETE2_SIGNAL     ( in_RENAME_IN_INSTRUCTION       ,_param->_nb_front_end, _param->_nb_inst_decod[it1],32);
37#endif                     
38        DELETE2_SIGNAL     ( in_RENAME_IN_TYPE              ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_type                  );
39        DELETE2_SIGNAL     ( in_RENAME_IN_OPERATION         ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_operation             );
40        DELETE2_SIGNAL     ( in_RENAME_IN_NO_EXECUTE        ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
41//      DELETE2_SIGNAL     ( in_RENAME_IN_HAVE_EVENT        ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
42        DELETE2_SIGNAL     ( in_RENAME_IN_LAST_EVENT        ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
43        DELETE2_SIGNAL     ( in_RENAME_IN_IS_DELAY_SLOT     ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
44        DELETE2_SIGNAL     ( in_RENAME_IN_SAVE_RAT          ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
45#ifdef DEBUG               
46        DELETE2_SIGNAL     ( in_RENAME_IN_ADDRESS           ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_instruction_address   );
47#endif                     
48        DELETE2_SIGNAL     ( in_RENAME_IN_ADDRESS_NEXT      ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_instruction_address   );
49        DELETE2_SIGNAL     ( in_RENAME_IN_HAS_IMMEDIAT      ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
50        DELETE2_SIGNAL     ( in_RENAME_IN_IMMEDIAT          ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_general_data          );
51        DELETE2_SIGNAL     ( in_RENAME_IN_READ_RA           ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
52        DELETE2_SIGNAL     ( in_RENAME_IN_NUM_REG_RA        ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_general_register_logic);
53        DELETE2_SIGNAL     ( in_RENAME_IN_READ_RB           ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
54        DELETE2_SIGNAL     ( in_RENAME_IN_NUM_REG_RB        ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_general_register_logic);
55        DELETE2_SIGNAL     ( in_RENAME_IN_READ_RC           ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
56        DELETE2_SIGNAL     ( in_RENAME_IN_NUM_REG_RC        ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_special_register_logic);
57        DELETE2_SIGNAL     ( in_RENAME_IN_WRITE_RD          ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
58        DELETE2_SIGNAL     ( in_RENAME_IN_NUM_REG_RD        ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_general_register_logic);
59        DELETE2_SIGNAL     ( in_RENAME_IN_WRITE_RE          ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
60        DELETE2_SIGNAL     ( in_RENAME_IN_NUM_REG_RE        ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_special_register_logic);
61        DELETE2_SIGNAL     ( in_RENAME_IN_EXCEPTION_USE     ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_exception_use         );
62        DELETE2_SIGNAL     ( in_RENAME_IN_EXCEPTION         ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_exception             );
63                           
64        DELETE1_SIGNAL     (out_INSERT_VAL                  ,_param->_nb_inst_insert,1                                   );
65        DELETE1_SIGNAL     ( in_INSERT_ACK                  ,_param->_nb_inst_insert,1                                   );
66        DELETE1_SIGNAL     (out_INSERT_FRONT_END_ID         ,_param->_nb_inst_insert,_param->_size_front_end_id          );
67        DELETE1_SIGNAL     (out_INSERT_CONTEXT_ID           ,_param->_nb_inst_insert,_param->_size_context_id            );
68        DELETE1_SIGNAL     (out_INSERT_DEPTH                ,_param->_nb_inst_insert,_param->_size_depth                 );
69#ifdef STATISTICS         
70        DELETE1_SIGNAL     (out_INSERT_INSTRUCTION          ,_param->_nb_inst_insert,32);
71#endif                     
72        DELETE1_SIGNAL     (out_INSERT_TYPE                 ,_param->_nb_inst_insert,_param->_size_type                  );
73        DELETE1_SIGNAL     (out_INSERT_OPERATION            ,_param->_nb_inst_insert,_param->_size_operation             );
74        DELETE1_SIGNAL     (out_INSERT_NO_EXECUTE           ,_param->_nb_inst_insert,1                                   );
75        DELETE1_SIGNAL     (out_INSERT_LAST_EVENT           ,_param->_nb_inst_insert,1                                   );
76        DELETE1_SIGNAL     (out_INSERT_IS_DELAY_SLOT        ,_param->_nb_inst_insert,1                                   );
77        DELETE1_SIGNAL_COND(out_INSERT_SAVE_RAT             ,_param->_nb_inst_insert,1                                   ,_param->_rat_scheme == RAT_DEPTH_SAVE);
78#ifdef DEBUG               
79        DELETE1_SIGNAL     (out_INSERT_ADDRESS              ,_param->_nb_inst_insert,_param->_size_instruction_address   );
80#endif                     
81        DELETE1_SIGNAL     (out_INSERT_ADDRESS_NEXT         ,_param->_nb_inst_insert,_param->_size_instruction_address   );
82        DELETE1_SIGNAL     (out_INSERT_HAS_IMMEDIAT         ,_param->_nb_inst_insert,1                                   );
83        DELETE1_SIGNAL     (out_INSERT_IMMEDIAT             ,_param->_nb_inst_insert,_param->_size_general_data          );
84        DELETE1_SIGNAL     (out_INSERT_STORE_QUEUE_PTR_WRITE,_param->_nb_inst_insert,_param->_size_store_queue_ptr       );
85        DELETE1_SIGNAL     (out_INSERT_STORE_QUEUE_PTR_READ ,_param->_nb_inst_insert,_param->_size_store_queue_ptr       );
86        DELETE1_SIGNAL     (out_INSERT_STORE_QUEUE_EMPTY    ,_param->_nb_inst_insert,1                                   );
87        DELETE1_SIGNAL     (out_INSERT_LOAD_QUEUE_PTR_WRITE ,_param->_nb_inst_insert,_param->_size_load_queue_ptr        );
88        DELETE1_SIGNAL     (out_INSERT_EXCEPTION_USE        ,_param->_nb_inst_insert,_param->_size_exception_use         );
89        DELETE1_SIGNAL     (out_INSERT_EXCEPTION            ,_param->_nb_inst_insert,_param->_size_exception             );
90        DELETE1_SIGNAL     (out_INSERT_READ_RA              ,_param->_nb_inst_insert,1                                   );
91#ifdef DEBUG               
92        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RA_LOG       ,_param->_nb_inst_insert,_param->_size_general_register_logic);
93#endif                     
94        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RA_PHY       ,_param->_nb_inst_insert,_param->_size_general_register      );
95        DELETE1_SIGNAL     (out_INSERT_READ_RB              ,_param->_nb_inst_insert,1                                   );
96#ifdef DEBUG               
97        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RB_LOG       ,_param->_nb_inst_insert,_param->_size_general_register_logic);
98#endif                     
99        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RB_PHY       ,_param->_nb_inst_insert,_param->_size_general_register      );
100        DELETE1_SIGNAL     (out_INSERT_READ_RC              ,_param->_nb_inst_insert,1                                   );
101#ifdef DEBUG               
102        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RC_LOG       ,_param->_nb_inst_insert,_param->_size_special_register_logic);
103#endif                     
104        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RC_PHY       ,_param->_nb_inst_insert,_param->_size_special_register      );
105        DELETE1_SIGNAL     (out_INSERT_WRITE_RD             ,_param->_nb_inst_insert,1                                   );
106        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RD_LOG       ,_param->_nb_inst_insert,_param->_size_general_register_logic);
107        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RD_PHY_OLD   ,_param->_nb_inst_insert,_param->_size_general_register      );
108        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RD_PHY_NEW   ,_param->_nb_inst_insert,_param->_size_general_register      );
109        DELETE1_SIGNAL     (out_INSERT_WRITE_RE             ,_param->_nb_inst_insert,1                                   );
110        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RE_LOG       ,_param->_nb_inst_insert,_param->_size_special_register_logic);
111        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RE_PHY_OLD   ,_param->_nb_inst_insert,_param->_size_special_register      );
112        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RE_PHY_NEW   ,_param->_nb_inst_insert,_param->_size_special_register      );
113                           
114        DELETE1_SIGNAL     ( in_RETIRE_VAL                  ,_param->_nb_inst_retire,1                                   );
115        DELETE1_SIGNAL     (out_RETIRE_ACK                  ,_param->_nb_inst_retire,1                                   );
116        DELETE1_SIGNAL     ( in_RETIRE_FRONT_END_ID         ,_param->_nb_inst_retire,_param->_size_front_end_id          );
117        DELETE1_SIGNAL     ( in_RETIRE_CONTEXT_ID           ,_param->_nb_inst_retire,_param->_size_context_id            );
118//      DELETE1_SIGNAL     ( in_RETIRE_TYPE                 ,_param->_nb_inst_retire,_param->_size_type                  );
119//      DELETE1_SIGNAL     ( in_RETIRE_OPERATION            ,_param->_nb_inst_retire,_param->_size_operation             );
120        DELETE1_SIGNAL     ( in_RETIRE_USE_STORE_QUEUE      ,_param->_nb_inst_retire,1                                   );
121        DELETE1_SIGNAL     ( in_RETIRE_USE_LOAD_QUEUE       ,_param->_nb_inst_retire,1                                   );
122        DELETE1_SIGNAL     ( in_RETIRE_STORE_QUEUE_PTR_WRITE,_param->_nb_inst_retire,_param->_size_store_queue_ptr       );
123        DELETE1_SIGNAL     ( in_RETIRE_LOAD_QUEUE_PTR_WRITE ,_param->_nb_inst_retire,_param->_size_load_queue_ptr        );
124//      DELETE1_SIGNAL     ( in_RETIRE_READ_RA              ,_param->_nb_inst_retire,1                                   );
125//      DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RA_PHY       ,_param->_nb_inst_retire,_param->_size_general_register      );
126//      DELETE1_SIGNAL     ( in_RETIRE_READ_RB              ,_param->_nb_inst_retire,1                                   );
127//      DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RB_PHY       ,_param->_nb_inst_retire,_param->_size_general_register      );
128//      DELETE1_SIGNAL     ( in_RETIRE_READ_RC              ,_param->_nb_inst_retire,1                                   );
129//      DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RC_PHY       ,_param->_nb_inst_retire,_param->_size_special_register      );
130        DELETE1_SIGNAL     ( in_RETIRE_WRITE_RD             ,_param->_nb_inst_retire,1                                   );
131        DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RD_LOG       ,_param->_nb_inst_retire,_param->_size_general_register_logic);
132        DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RD_PHY_OLD   ,_param->_nb_inst_retire,_param->_size_general_register      );
133        DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RD_PHY_NEW   ,_param->_nb_inst_retire,_param->_size_general_register      );
134        DELETE1_SIGNAL     ( in_RETIRE_WRITE_RE             ,_param->_nb_inst_retire,1                                   );
135        DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RE_LOG       ,_param->_nb_inst_retire,_param->_size_special_register_logic);
136        DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RE_PHY_OLD   ,_param->_nb_inst_retire,_param->_size_special_register      );
137        DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RE_PHY_NEW   ,_param->_nb_inst_retire,_param->_size_special_register      );
138        DELETE1_SIGNAL     ( in_RETIRE_RESTORE              ,_param->_nb_inst_retire,1);
139        DELETE1_SIGNAL     ( in_RETIRE_RESTORE_RD_PHY_OLD   ,_param->_nb_inst_retire,1);
140        DELETE1_SIGNAL     ( in_RETIRE_RESTORE_RE_PHY_OLD   ,_param->_nb_inst_retire,1);
141                           
142        DELETE2_SIGNAL     ( in_RETIRE_EVENT_VAL            ,_param->_nb_front_end, _param->_nb_context[it1],1);
143        DELETE2_SIGNAL     (out_RETIRE_EVENT_ACK            ,_param->_nb_front_end, _param->_nb_context[it1],1);
144        DELETE2_SIGNAL     ( in_RETIRE_EVENT_STATE          ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_event_state);
145//      DELETE2_SIGNAL     ( in_RETIRE_EVENT_FLUSH          ,_param->_nb_front_end, _param->_nb_context[it1],1);
146        DELETE2_SIGNAL     ( in_RETIRE_EVENT_STOP           ,_param->_nb_front_end, _param->_nb_context[it1],1);
147        DELETE2_SIGNAL_COND( in_RETIRE_EVENT_TYPE           ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_event_type,_param->_rat_scheme == RAT_DEPTH_SAVE);
148        DELETE2_SIGNAL_COND( in_RETIRE_EVENT_DEPTH          ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_depth     ,_param->_rat_scheme == RAT_DEPTH_SAVE);
149       
150        DELETE2_SIGNAL     ( in_SPR_READ_SR                 ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_spr);
151
152        DELETE2_SIGNAL     ( in_DEPTH_MIN                   ,_param->_nb_front_end,_param->_nb_context[it1],_param->_size_depth);
153        DELETE2_SIGNAL     ( in_DEPTH_MAX                   ,_param->_nb_front_end,_param->_nb_context[it1],_param->_size_depth);
154        DELETE2_SIGNAL     ( in_DEPTH_FULL                  ,_param->_nb_front_end,_param->_nb_context[it1],1                  );
155
156#ifdef DEBUG_TEST
157        DELETE0_SIGNAL     ( in_INFO_ROB_EMPTY  ,1);
158#endif
159      }
160    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
161    delete _component_rename_select            ;
162    delete _component_register_translation_unit;
163    delete _component_load_store_pointer_unit  ;
164    delete _component_glue                     ;
165
166    delete _component;
167
168    log_end(Rename_unit,FUNCTION);
169  };
170
171}; // end namespace rename_unit
172}; // end namespace ooo_engine
173}; // end namespace multi_ooo_engine
174}; // end namespace core
175
176}; // end namespace behavioural
177}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.