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

Last change on this file since 139 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: 57.0 KB
Line 
1/*
2 * $Id: Rename_unit_allocation.cpp 139 2010-07-30 14:47:27Z 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
20#undef  FUNCTION
21#define FUNCTION "Rename_unit::allocation"
22  void Rename_unit::allocation
23  (
24#ifdef STATISTICS
25   morpheo::behavioural::Parameters_Statistics * param_statistics
26#else
27   void
28#endif
29   )
30  {
31    log_begin(Rename_unit,FUNCTION);
32
33    _component   = new Component (_usage);
34
35    Entity * entity = _component->set_entity (_name       
36                                              ,"Rename_unit"
37#ifdef POSITION
38                                              ,COMBINATORY
39#endif
40                                              );
41
42    _interfaces = entity->set_interfaces();
43   
44    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
45    {
46      Interface * interface = _interfaces->set_interface(""
47#ifdef POSITION
48                                                         ,IN
49                                                         ,SOUTH,
50                                                         "Generalist interface"
51#endif
52                                                         );
53     
54      in_CLOCK        = interface->set_signal_clk              ("clock" ,1, CLOCK_VHDL_YES);
55      in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_YES);
56    }
57
58    // ~~~~~[ Interface : "rename_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
59    {
60      ALLOC2_INTERFACE_BEGIN("rename_in", IN, EAST, _("output of decod's stage"), _param->_nb_front_end, _param->_nb_inst_decod[it1]);
61     
62      _ALLOC2_VALACK_IN ( in_RENAME_IN_VAL           ,VAL, _param->_nb_front_end, _param->_nb_inst_decod[it1]);
63      _ALLOC2_VALACK_OUT(out_RENAME_IN_ACK           ,ACK, _param->_nb_front_end, _param->_nb_inst_decod[it1]);
64      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_FRONT_END_ID  ,"front_end_id" ,Tcontext_t        ,_param->_size_front_end_id          , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
65      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_CONTEXT_ID    ,"context_id"   ,Tcontext_t        ,_param->_size_context_id            , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
66      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_DEPTH         ,"depth"        ,Tdepth_t          ,_param->_size_depth                 , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
67#ifdef STATISTICS
68      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_INSTRUCTION   ,"instruction"  ,uint32_t          ,32                                  , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
69#endif
70      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_TYPE          ,"type"         ,Ttype_t           ,_param->_size_type                  , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
71      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_OPERATION     ,"operation"    ,Toperation_t      ,_param->_size_operation             , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
72      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_NO_EXECUTE    ,"no_execute"   ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
73//    _ALLOC2_SIGNAL_IN ( in_RENAME_IN_HAVE_EVENT    ,"have_event"   ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
74      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_LAST_EVENT    ,"last_event"   ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
75      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_IS_DELAY_SLOT ,"is_delay_slot",Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
76      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_SAVE_RAT      ,"save_rat"     ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
77#ifdef DEBUG
78      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_ADDRESS       ,"address"      ,Taddress_t        ,_param->_size_instruction_address   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
79#endif
80      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_ADDRESS_NEXT  ,"address_next" ,Taddress_t        ,_param->_size_instruction_address   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
81      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_HAS_IMMEDIAT  ,"has_immediat" ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
82      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_IMMEDIAT      ,"immediat"     ,Tgeneral_data_t   ,_param->_size_general_data          , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
83      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_READ_RA       ,"read_ra"      ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
84      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_NUM_REG_RA    ,"num_reg_ra"   ,Tgeneral_address_t,_param->_size_general_register_logic, _param->_nb_front_end, _param->_nb_inst_decod[it1]);
85      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_READ_RB       ,"read_rb"      ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
86      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_NUM_REG_RB    ,"num_reg_rb"   ,Tgeneral_address_t,_param->_size_general_register_logic, _param->_nb_front_end, _param->_nb_inst_decod[it1]);
87      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_READ_RC       ,"read_rc"      ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
88      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_NUM_REG_RC    ,"num_reg_rc"   ,Tspecial_address_t,_param->_size_special_register_logic, _param->_nb_front_end, _param->_nb_inst_decod[it1]);
89      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_WRITE_RD      ,"write_rd"     ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
90      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_NUM_REG_RD    ,"num_reg_rd"   ,Tgeneral_address_t,_param->_size_general_register_logic, _param->_nb_front_end, _param->_nb_inst_decod[it1]);
91      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_WRITE_RE      ,"write_re"     ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
92      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_NUM_REG_RE    ,"num_reg_re"   ,Tspecial_address_t,_param->_size_special_register_logic, _param->_nb_front_end, _param->_nb_inst_decod[it1]);
93      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_EXCEPTION_USE ,"exception_use",Texception_t      ,_param->_size_exception_use         , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
94      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_EXCEPTION     ,"exception"    ,Texception_t      ,_param->_size_exception             , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
95
96      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_inst_decod[it1]);
97    }
98
99    // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
100    {
101      ALLOC1_INTERFACE_BEGIN("insert",OUT,WEST , _("Instruction with physical register"), _param->_nb_inst_insert);
102     
103      ALLOC1_VALACK_OUT(out_INSERT_VAL                  ,VAL);
104      ALLOC1_VALACK_IN ( in_INSERT_ACK                  ,ACK);
105      ALLOC1_SIGNAL_OUT(out_INSERT_FRONT_END_ID         ,"front_end_id"         ,Tcontext_t        ,_param->_size_front_end_id          );
106      ALLOC1_SIGNAL_OUT(out_INSERT_CONTEXT_ID           ,"context_id"           ,Tcontext_t        ,_param->_size_context_id            );
107      ALLOC1_SIGNAL_OUT(out_INSERT_DEPTH                ,"depth"                ,Tdepth_t          ,_param->_size_depth                 );
108#ifdef STATISTICS
109      ALLOC1_SIGNAL_OUT(out_INSERT_INSTRUCTION          ,"instruction"          ,uint32_t          ,32);
110#endif
111      ALLOC1_SIGNAL_OUT(out_INSERT_TYPE                 ,"type"                 ,Ttype_t           ,_param->_size_type                  );
112      ALLOC1_SIGNAL_OUT(out_INSERT_OPERATION            ,"operation"            ,Toperation_t      ,_param->_size_operation             );
113      ALLOC1_SIGNAL_OUT(out_INSERT_NO_EXECUTE           ,"no_execute"           ,Tcontrol_t        ,1                                   );
114      ALLOC1_SIGNAL_OUT(out_INSERT_LAST_EVENT           ,"last_event"           ,Tcontrol_t        ,1                                   );
115      ALLOC1_SIGNAL_OUT(out_INSERT_IS_DELAY_SLOT        ,"is_delay_slot"        ,Tcontrol_t        ,1                                   );
116#ifdef DEBUG
117      ALLOC1_SIGNAL_OUT(out_INSERT_ADDRESS              ,"address"              ,Taddress_t        ,_param->_size_instruction_address   );
118#endif
119      ALLOC1_SIGNAL_OUT(out_INSERT_ADDRESS_NEXT         ,"address_next"         ,Taddress_t        ,_param->_size_instruction_address   );
120      ALLOC1_SIGNAL_OUT(out_INSERT_HAS_IMMEDIAT         ,"has_immediat"         ,Tcontrol_t        ,1                                   );
121      ALLOC1_SIGNAL_OUT(out_INSERT_IMMEDIAT             ,"immediat"             ,Tgeneral_data_t   ,_param->_size_general_data          );
122      ALLOC1_SIGNAL_OUT(out_INSERT_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t        ,_param->_size_store_queue_ptr       );
123      ALLOC1_SIGNAL_OUT(out_INSERT_STORE_QUEUE_PTR_READ ,"store_queue_ptr_read" ,Tlsq_ptr_t        ,_param->_size_store_queue_ptr       );
124      ALLOC1_SIGNAL_OUT(out_INSERT_STORE_QUEUE_EMPTY    ,"store_queue_empty"    ,Tcontrol_t        ,1                                   );
125      ALLOC1_SIGNAL_OUT(out_INSERT_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t        ,_param->_size_load_queue_ptr        );
126      ALLOC1_SIGNAL_OUT(out_INSERT_EXCEPTION_USE        ,"exception_use"        ,Texception_t      ,_param->_size_exception_use         );
127      ALLOC1_SIGNAL_OUT(out_INSERT_EXCEPTION            ,"exception"            ,Texception_t      ,_param->_size_exception             );
128      ALLOC1_SIGNAL_OUT(out_INSERT_READ_RA              ,"read_ra"              ,Tcontrol_t        ,1                                   );
129#ifdef DEBUG
130      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RA_LOG       ,"num_reg_ra_log"       ,Tgeneral_address_t,_param->_size_general_register_logic);
131#endif
132      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RA_PHY       ,"num_reg_ra_phy"       ,Tgeneral_address_t,_param->_size_general_register      );
133      ALLOC1_SIGNAL_OUT(out_INSERT_READ_RB              ,"read_rb"              ,Tcontrol_t        ,1                                   );
134#ifdef DEBUG
135      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RB_LOG       ,"num_reg_rb_log"       ,Tgeneral_address_t,_param->_size_general_register_logic);
136#endif
137      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RB_PHY       ,"num_reg_rb_phy"       ,Tgeneral_address_t,_param->_size_general_register      );
138      ALLOC1_SIGNAL_OUT(out_INSERT_READ_RC              ,"read_rc"              ,Tcontrol_t        ,1                                   );
139#ifdef DEBUG
140      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RC_LOG       ,"num_reg_rc_log"       ,Tspecial_address_t,_param->_size_special_register_logic);
141#endif
142      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RC_PHY       ,"num_reg_rc_phy"       ,Tspecial_address_t,_param->_size_special_register      );
143      ALLOC1_SIGNAL_OUT(out_INSERT_WRITE_RD             ,"write_rd"             ,Tcontrol_t        ,1                                   );
144      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RD_LOG       ,"num_reg_rd_log"       ,Tgeneral_address_t,_param->_size_general_register_logic);
145      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RD_PHY_OLD   ,"num_reg_rd_phy_old"   ,Tgeneral_address_t,_param->_size_general_register      );
146      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RD_PHY_NEW   ,"num_reg_rd_phy_new"   ,Tgeneral_address_t,_param->_size_general_register      );
147      ALLOC1_SIGNAL_OUT(out_INSERT_WRITE_RE             ,"write_re"             ,Tcontrol_t        ,1                                   );
148      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_LOG       ,"num_reg_re_log"       ,Tspecial_address_t,_param->_size_special_register_logic);
149      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_OLD   ,"num_reg_re_phy_old"   ,Tspecial_address_t,_param->_size_special_register      );
150      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_NEW   ,"num_reg_re_phy_new"   ,Tspecial_address_t,_param->_size_special_register      );
151
152      ALLOC1_INTERFACE_END(_param->_nb_inst_insert);
153    }
154
155    // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
156    {
157      ALLOC1_INTERFACE_BEGIN("retire",IN ,NORTH, _("Retire instruction, update renaming structure."), _param->_nb_inst_retire);
158
159      ALLOC1_VALACK_IN ( in_RETIRE_VAL                  ,VAL);
160      ALLOC1_VALACK_OUT(out_RETIRE_ACK                  ,ACK);
161      ALLOC1_SIGNAL_IN ( in_RETIRE_FRONT_END_ID         ,"front_end_id"         ,Tcontext_t        ,_param->_size_front_end_id          );
162      ALLOC1_SIGNAL_IN ( in_RETIRE_CONTEXT_ID           ,"context_id"           ,Tcontext_t        ,_param->_size_context_id            );
163//    ALLOC1_SIGNAL_IN ( in_RETIRE_TYPE                 ,"type"                 ,Ttype_t           ,_param->_size_type                  );
164//    ALLOC1_SIGNAL_IN ( in_RETIRE_OPERATION            ,"operation"            ,Toperation_t      ,_param->_size_operation             );
165      ALLOC1_SIGNAL_IN ( in_RETIRE_USE_STORE_QUEUE      ,"use_store_queue"      ,Tcontrol_t        ,1                                   );
166      ALLOC1_SIGNAL_IN ( in_RETIRE_USE_LOAD_QUEUE       ,"use_load_queue"       ,Tcontrol_t        ,1                                   );
167      ALLOC1_SIGNAL_IN ( in_RETIRE_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t        ,_param->_size_store_queue_ptr       );
168      ALLOC1_SIGNAL_IN ( in_RETIRE_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t        ,_param->_size_load_queue_ptr        );
169//    ALLOC1_SIGNAL_IN ( in_RETIRE_READ_RA              ,"read_ra"              ,Tcontrol_t        ,1                                   );
170//    ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RA_PHY       ,"num_reg_ra_phy"       ,Tgeneral_address_t,_param->_size_general_register      );
171//    ALLOC1_SIGNAL_IN ( in_RETIRE_READ_RB              ,"read_rb"              ,Tcontrol_t        ,1                                   );
172//    ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RB_PHY       ,"num_reg_rb_phy"       ,Tgeneral_address_t,_param->_size_general_register      );
173//    ALLOC1_SIGNAL_IN ( in_RETIRE_READ_RC              ,"read_rc"              ,Tcontrol_t        ,1                                   );
174//    ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RC_PHY       ,"num_reg_rc_phy"       ,Tspecial_address_t,_param->_size_special_register      );
175      ALLOC1_SIGNAL_IN ( in_RETIRE_WRITE_RD             ,"write_rd"             ,Tcontrol_t        ,1                                   );
176      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RD_LOG       ,"num_reg_rd_log"       ,Tgeneral_address_t,_param->_size_general_register_logic);
177      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RD_PHY_OLD   ,"num_reg_rd_phy_old"   ,Tgeneral_address_t,_param->_size_general_register      );
178      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RD_PHY_NEW   ,"num_reg_rd_phy_new"   ,Tgeneral_address_t,_param->_size_general_register      );
179      ALLOC1_SIGNAL_IN ( in_RETIRE_WRITE_RE             ,"write_re"             ,Tcontrol_t        ,1                                   );
180      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_LOG       ,"num_reg_re_log"       ,Tspecial_address_t,_param->_size_special_register_logic);
181      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_OLD   ,"num_reg_re_phy_old"   ,Tspecial_address_t,_param->_size_special_register      );
182      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_NEW   ,"num_reg_re_phy_new"   ,Tspecial_address_t,_param->_size_special_register      );
183      ALLOC1_SIGNAL_IN ( in_RETIRE_RESTORE              ,"restore"              ,Tcontrol_t        ,1                                   );
184      ALLOC1_SIGNAL_IN ( in_RETIRE_RESTORE_RD_PHY_OLD   ,"restore_rd_phy_old"   ,Tcontrol_t        ,1                                   );
185      ALLOC1_SIGNAL_IN ( in_RETIRE_RESTORE_RE_PHY_OLD   ,"restore_re_phy_old"   ,Tcontrol_t        ,1                                   );
186
187      ALLOC1_INTERFACE_END(_param->_nb_inst_retire);
188    }
189
190    // ~~~~~[ Interface : "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
191    {
192      ALLOC2_INTERFACE_BEGIN("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]);
193
194      _ALLOC2_VALACK_IN      ( in_RETIRE_EVENT_VAL           ,VAL,_param->_nb_front_end, _param->_nb_context[it1]);
195      _ALLOC2_VALACK_OUT     (out_RETIRE_EVENT_ACK           ,ACK,_param->_nb_front_end, _param->_nb_context[it1]);
196      _ALLOC2_SIGNAL_IN      ( in_RETIRE_EVENT_STATE         ,"state"                ,Tevent_state_t    ,_param->_size_event_state, _param->_nb_front_end, _param->_nb_context[it1]);
197//    _ALLOC2_SIGNAL_IN      ( in_RETIRE_EVENT_FLUSH         ,"flush"                ,Tcontrol_t        ,1                        , _param->_nb_front_end, _param->_nb_context[it1]);
198      _ALLOC2_SIGNAL_IN      ( in_RETIRE_EVENT_STOP          ,"stop"                 ,Tcontrol_t        ,1                        , _param->_nb_front_end, _param->_nb_context[it1]);
199      _ALLOC2_SIGNAL_IN_COND ( in_RETIRE_EVENT_TYPE          ,"type"                 ,Tevent_type_t     ,_param->_size_event_type , _param->_nb_front_end, _param->_nb_context[it1],_param->_rat_scheme == RAT_DEPTH_SAVE);
200      _ALLOC2_SIGNAL_IN_COND ( in_RETIRE_EVENT_DEPTH         ,"depth"                ,Tdepth_t          ,_param->_size_depth      , _param->_nb_front_end, _param->_nb_context[it1],_param->_rat_scheme == RAT_DEPTH_SAVE);
201
202      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
203    }
204
205    // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
206    {
207      ALLOC2_INTERFACE_BEGIN("spr_read", IN,NORTH, _("Special register"), _param->_nb_front_end, _param->_nb_context[it1]);
208
209      _ALLOC2_SIGNAL_IN (in_SPR_READ_SR                 ,"sr",Tspr_t            ,_param->_size_spr, _param->_nb_front_end, _param->_nb_context[it1]);
210
211      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
212    }
213
214    // ~~~~~[ interface : "info" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
215#ifdef DEBUG_TEST
216     {
217       ALLOC0_INTERFACE_BEGIN("info",IN, NORTH, _("Information"));
218
219       ALLOC0_SIGNAL_IN ( in_INFO_ROB_EMPTY  ,"rob_empty"  ,bool    ,1);
220
221       ALLOC0_INTERFACE_END();
222     }
223#endif
224
225    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
226
227    std::string name;
228
229    {
230      name = _name+"_rename_select";
231      log_printf(TRACE,Rename_unit,FUNCTION,_("Create   : %s"),name.c_str());
232     
233      _component_rename_select = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::rename_select::Rename_select
234        (name.c_str()
235#ifdef STATISTICS
236         ,param_statistics
237#endif
238         ,_param->_param_rename_select
239         ,_usage);
240     
241      _component->set_component (_component_rename_select->_component
242#ifdef POSITION
243                                 , 50, 50, 10, 10
244#endif
245                                 );
246    }
247
248    {
249      name = _name+"_register_translation_unit";
250      log_printf(TRACE,Rename_unit,FUNCTION,_("Create   : %s"),name.c_str());
251     
252      _component_register_translation_unit = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::Register_translation_unit
253        (name.c_str()
254#ifdef STATISTICS
255         ,param_statistics
256#endif
257         ,_param->_param_register_translation_unit
258         ,_usage);
259     
260      _component->set_component (_component_register_translation_unit->_component
261#ifdef POSITION
262                                 , 50, 50, 10, 10
263#endif
264                                 );
265    }
266
267    {
268      name = _name+"_load_store_pointer_unit";
269      log_printf(TRACE,Rename_unit,FUNCTION,_("Create   : %s"),name.c_str());
270     
271      _component_load_store_pointer_unit = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::load_store_pointer_unit::Load_Store_pointer_unit
272        (name.c_str()
273#ifdef STATISTICS
274         ,param_statistics
275#endif
276         ,_param->_param_load_store_pointer_unit
277         ,_usage);
278     
279      _component->set_component (_component_load_store_pointer_unit->_component
280#ifdef POSITION
281                                 , 50, 50, 10, 10
282#endif
283                                 );
284    }
285
286    {
287      name = _name+"_glue";
288      log_printf(TRACE,Rename_unit,FUNCTION,_("Create   : %s"),name.c_str());
289     
290      _component_glue = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::rename_unit_glue::Rename_unit_Glue
291        (name.c_str()
292#ifdef STATISTICS
293         ,param_statistics
294#endif
295         ,_param->_param_glue
296         ,_usage);
297     
298      _component->set_component (_component_glue->_component
299#ifdef POSITION
300                                 , 50, 50, 10, 10
301#endif
302                                 );
303    }
304   
305    // ~~~~~[ Instanciation ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
306    std::string src,dest;
307
308    // ===================================================================
309    // =====[ rename_select ]=============================================
310    // ===================================================================
311    {
312      src = _name+"_rename_select";
313      log_printf(TRACE,Rename_unit,FUNCTION,_("Instance : %s"),name.c_str());
314           
315      {
316        dest = _name;
317#ifdef POSITION
318        _component->interface_map (src ,"",
319                                   dest,"");
320#endif
321        PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
322        PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
323      }
324
325      for (uint32_t i=0; i<_param->_nb_front_end; i++)
326        for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++)
327          {
328            dest = _name;
329#ifdef POSITION
330            _component->interface_map (src ,"rename_in_"+toString(i)+"_"+toString(j),
331                                       dest,"rename_in_"+toString(i)+"_"+toString(j));
332#endif     
333
334            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_VAL"          ,
335                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_VAL"          );
336            PORT_MAP(_component,src ,"out_RENAME_IN_"+toString(i)+"_"+toString(j)+"_ACK"          ,
337                                dest,"out_RENAME_IN_"+toString(i)+"_"+toString(j)+"_ACK"          );
338            if (_param->_have_port_front_end_id)
339            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_FRONT_END_ID" ,
340                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_FRONT_END_ID" );
341            if (_param->_have_port_context_id)
342            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_CONTEXT_ID"   ,
343                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_CONTEXT_ID"   );
344            if (_param->_have_port_depth)
345              {
346            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_DEPTH"        ,
347                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_DEPTH"        );
348              }
349#ifdef STATISTICS
350            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_INSTRUCTION"  ,
351                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_INSTRUCTION"  );
352#endif
353            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_TYPE"         ,
354                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_TYPE"         );
355            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_OPERATION"    ,
356                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_OPERATION"    );
357            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_NO_EXECUTE"   ,
358                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_NO_EXECUTE"   );
359//          PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_HAVE_EVENT"   ,
360//                              dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_HAVE_EVENT"   );
361            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_LAST_EVENT"   ,
362                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_LAST_EVENT"   );
363            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_IS_DELAY_SLOT",
364                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_IS_DELAY_SLOT");
365            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_SAVE_RAT"     ,
366                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_SAVE_RAT"     );
367#ifdef DEBUG
368            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_ADDRESS"      ,
369                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_ADDRESS"      );
370#endif
371            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_ADDRESS_NEXT" ,
372                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_ADDRESS_NEXT" );
373            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_HAS_IMMEDIAT" ,
374                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_HAS_IMMEDIAT" );
375            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_IMMEDIAT"     ,
376                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_IMMEDIAT"     );
377            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_READ_RA"      ,
378                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_READ_RA"      );
379            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_NUM_REG_RA"   ,
380                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_NUM_REG_RA"   );
381            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_READ_RB"      ,
382                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_READ_RB"      );
383            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_NUM_REG_RB"   ,
384                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_NUM_REG_RB"   );
385            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_READ_RC"      ,
386                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_READ_RC"      );
387            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_NUM_REG_RC"   ,
388                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_NUM_REG_RC"   );
389            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_WRITE_RD"     ,
390                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_WRITE_RD"     );
391            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_NUM_REG_RD"   ,
392                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_NUM_REG_RD"   );
393            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_WRITE_RE"     ,
394                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_WRITE_RE"     );
395            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_NUM_REG_RE"   ,
396                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_NUM_REG_RE"   );
397            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_EXCEPTION_USE",
398                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_EXCEPTION_USE");
399            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_EXCEPTION"    ,
400                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_EXCEPTION"    );
401          }
402
403      for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
404        {
405          dest = _name;
406
407#ifdef POSITION
408          _component->interface_map (src ,"rename_out_"+toString(i),
409                                     dest,"insert_"    +toString(i));
410#endif
411
412          if (_param->_have_port_depth and (_param->_rat_scheme != RAT_DEPTH_SAVE))
413          PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_DEPTH",
414                              dest,"out_INSERT_"    +toString(i)+"_DEPTH");
415          PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_IS_DELAY_SLOT",
416                              dest,"out_INSERT_"    +toString(i)+"_IS_DELAY_SLOT");
417
418#ifdef STATISTICS
419          PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_INSTRUCTION" ,
420                              dest,"out_INSERT_"    +toString(i)+"_INSTRUCTION" );
421#endif
422#ifdef DEBUG
423          PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_ADDRESS"     ,
424                              dest,"out_INSERT_"    +toString(i)+"_ADDRESS"     );
425#endif
426          PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_ADDRESS_NEXT",
427                              dest,"out_INSERT_"    +toString(i)+"_ADDRESS_NEXT");
428          PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_HAS_IMMEDIAT",
429                              dest,"out_INSERT_"    +toString(i)+"_HAS_IMMEDIAT");
430          PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_EXCEPTION_USE",
431                              dest,"out_INSERT_"    +toString(i)+"_EXCEPTION_USE");
432          PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_LAST_EVENT",
433                              dest,"out_INSERT_"    +toString(i)+"_LAST_EVENT");
434
435          dest = _name+"_register_translation_unit";
436
437#ifdef POSITION
438          _component->interface_map (src ,"rename_out_"+toString(i),
439                                     dest,"rename_"    +toString(i));
440#endif
441
442          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_SAVE_RAT"  ,
443                                   dest, "in_RENAME_"    +toString(i)+"_SAVE_RAT"  );
444          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_READ_RA"   ,
445                                   dest, "in_RENAME_"    +toString(i)+"_READ_RA"   );
446          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RA",
447                                   dest, "in_RENAME_"    +toString(i)+"_NUM_REG_RA_LOG");
448          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_READ_RB"   ,
449                                   dest, "in_RENAME_"    +toString(i)+"_READ_RB"   );
450          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RB",
451                                   dest, "in_RENAME_"    +toString(i)+"_NUM_REG_RB_LOG");
452          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_READ_RC"   ,
453                                   dest, "in_RENAME_"    +toString(i)+"_READ_RC"   );
454          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RC",
455                                   dest, "in_RENAME_"    +toString(i)+"_NUM_REG_RC_LOG");
456          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_WRITE_RD"  ,
457                                   dest, "in_RENAME_"    +toString(i)+"_WRITE_RD"  );
458          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RD",
459                                   dest, "in_RENAME_"    +toString(i)+"_NUM_REG_RD_LOG");
460          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_WRITE_RE"  ,
461                                   dest, "in_RENAME_"    +toString(i)+"_WRITE_RE"  );
462          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RE",
463                                   dest, "in_RENAME_"    +toString(i)+"_NUM_REG_RE_LOG");
464
465          dest = _name+"_glue";
466
467#ifdef POSITION
468          _component->interface_map (src ,"rename_out_"+toString(i),
469                                     dest,"insert_"    +toString(i));
470#endif
471         
472          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+              "_VAL"          ,
473                                   dest, "in_INSERT_"    +toString(i)+"_RENAME_SELECT_VAL"          );
474          COMPONENT_MAP(_component,src , "in_RENAME_OUT_"+toString(i)+              "_ACK"          ,
475                                   dest,"out_INSERT_"    +toString(i)+"_RENAME_SELECT_ACK"          );
476          if (_param->_have_port_front_end_id)
477          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+              "_FRONT_END_ID" ,
478                                   dest, "in_INSERT_"    +toString(i)+"_RENAME_SELECT_FRONT_END_ID" );
479          if (_param->_have_port_context_id)
480          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+              "_CONTEXT_ID"   ,
481                                   dest, "in_INSERT_"    +toString(i)+"_RENAME_SELECT_CONTEXT_ID"   );
482          if (_param->_have_port_depth and (_param->_rat_scheme == RAT_DEPTH_SAVE))
483          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+              "_DEPTH"        ,
484                                   dest, "in_INSERT_"    +toString(i)+"_RENAME_SELECT_DEPTH"        );
485          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+              "_TYPE"         ,
486                                   dest, "in_INSERT_"    +toString(i)+"_RENAME_SELECT_TYPE"         );
487          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+              "_OPERATION"    ,
488                                   dest, "in_INSERT_"    +toString(i)+"_RENAME_SELECT_OPERATION"    );
489          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+              "_IMMEDIAT"    ,
490                                   dest, "in_INSERT_"    +toString(i)+"_RENAME_SELECT_IMMEDIAT"     );
491//        COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+              "_EXCEPTION_USE",
492//                                 dest, "in_INSERT_"    +toString(i)+"_RENAME_SELECT_EXCEPTION_USE");
493          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+              "_EXCEPTION"    ,
494                                   dest, "in_INSERT_"    +toString(i)+"_RENAME_SELECT_EXCEPTION"    );
495          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+              "_NO_EXECUTE"   ,
496                                   dest, "in_INSERT_"    +toString(i)+"_RENAME_SELECT_NO_EXECUTE"   );
497        }
498
499      for (uint32_t i=0; i<_param->_nb_front_end; i++)
500        for (uint32_t j=0; j<_param->_nb_context[i]; j++)
501          {
502            dest = _name;
503           
504#ifdef POSITION
505            _component->interface_map (src ,"retire_event_"+toString(i)+"_"+toString(j),
506                                       dest,"retire_event_"+toString(i)+"_"+toString(j));
507#endif     
508//          PORT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_FLUSH",
509//                                 dest, "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_FLUSH");
510            PORT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_STOP",
511                                dest, "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_STOP");
512          }
513    }
514
515    // ===================================================================
516    // =====[ register_translation_unit ]=================================
517    // ===================================================================
518    {
519      src = _name+"_register_translation_unit";
520      log_printf(TRACE,Rename_unit,FUNCTION,_("Instance : %s"),name.c_str());
521           
522      {
523        dest = _name;
524#ifdef POSITION
525        _component->interface_map (src ,"",
526                                   dest,"");
527#endif
528        PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
529        PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
530      }
531
532      for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
533        {
534          dest = _name+"_rename_select";
535
536#ifdef POSITION
537          _component->interface_map (src ,"rename_"    +toString(i),
538                                     dest,"rename_out_"+toString(i));
539#endif     
540
541          dest = _name+"_glue";
542
543#ifdef POSITION
544          _component->interface_map (src ,"rename_"+toString(i),
545                                     dest,"insert_"+toString(i));
546#endif     
547
548          COMPONENT_MAP(_component,src , "in_RENAME_"+toString(i)+                     "_VAL"         ,
549                                   dest,"out_INSERT_"+toString(i)+"_REGISTER_TRANSLATION_VAL"         );
550          COMPONENT_MAP(_component,src ,"out_RENAME_"+toString(i)+                     "_ACK"         ,
551                                   dest, "in_INSERT_"+toString(i)+"_REGISTER_TRANSLATION_ACK"         );
552          if (_param->_have_port_front_end_id)
553          COMPONENT_MAP(_component,src , "in_RENAME_"+toString(i)+                     "_FRONT_END_ID",
554                                   dest,"out_INSERT_"+toString(i)+"_REGISTER_TRANSLATION_FRONT_END_ID");
555          if (_param->_have_port_context_id)
556          COMPONENT_MAP(_component,src , "in_RENAME_"+toString(i)+                     "_CONTEXT_ID"  ,
557                                   dest,"out_INSERT_"+toString(i)+"_REGISTER_TRANSLATION_CONTEXT_ID"  );
558          if (_param->_have_port_depth and (_param->_rat_scheme == RAT_DEPTH_SAVE))
559          COMPONENT_MAP(_component,src , "in_RENAME_"+toString(i)+                     "_DEPTH"        ,
560                                   dest,"out_INSERT_"+toString(i)+"_REGISTER_TRANSLATION_DEPTH"        );
561
562          //  in_RENAME_SAVE_RAS          - rename_select
563          //  in_RENAME_READ_RA           - rename_select
564          //  in_RENAME_NUM_REG_RA_LOG    - rename_select
565          //  in_RENAME_READ_RB           - rename_select
566          //  in_RENAME_NUM_REG_RB_LOG    - rename_select
567          //  in_RENAME_READ_RC           - rename_select
568          //  in_RENAME_NUM_REG_RC_LOG    - rename_select
569          //  in_RENAME_WRITE_RD          - rename_select
570          //  in_RENAME_NUM_REG_RD_LOG    - rename_select
571          //  in_RENAME_WRITE_RE          - rename_select
572          //  in_RENAME_NUM_REG_RE_LOG    - rename_select
573
574        }
575
576      for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
577        {
578          dest = _name;
579
580#ifdef POSITION
581          _component->interface_map (src ,"insert_"+toString(i),
582                                     dest,"insert_"+toString(i));
583#endif     
584          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_VAL"               ,
585                              dest,"out_INSERT_"+toString(i)+"_VAL"               );
586          PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_ACK"               ,
587                              dest, "in_INSERT_"+toString(i)+"_ACK"               );
588//        if (_param->_have_port_front_end_id)
589//        PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_FRONT_END_ID"      ,
590//                            dest,"out_INSERT_"+toString(i)+"_FRONT_END_ID"      );
591//        if (_param->_have_port_context_id)
592//        PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_CONTEXT_ID"        ,
593//                            dest,"out_INSERT_"+toString(i)+"_CONTEXT_ID"        );
594          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_READ_RA"           ,
595                              dest,"out_INSERT_"+toString(i)+"_READ_RA"           );
596#ifdef DEBUG
597          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RA_LOG"    ,
598                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RA_LOG"    );
599#endif
600          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RA_PHY"    ,
601                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RA_PHY"    );
602          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_READ_RB"           ,
603                              dest,"out_INSERT_"+toString(i)+"_READ_RB"           );
604#ifdef DEBUG
605          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RB_LOG"    ,
606                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RB_LOG"    );
607#endif
608          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RB_PHY"    ,
609                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RB_PHY"    );
610          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_READ_RC"           ,
611                              dest,"out_INSERT_"+toString(i)+"_READ_RC"           );
612#ifdef DEBUG
613          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RC_LOG"    ,
614                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RC_LOG"    );
615#endif
616          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RC_PHY"    ,
617                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RC_PHY"    );
618          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_WRITE_RD"          ,
619                              dest,"out_INSERT_"+toString(i)+"_WRITE_RD"          );
620          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RD_LOG"    ,
621                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RD_LOG"    );
622          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RD_PHY_OLD",
623                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RD_PHY_OLD");
624          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RD_PHY_NEW",
625                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RD_PHY_NEW");
626          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_WRITE_RE"          ,
627                              dest,"out_INSERT_"+toString(i)+"_WRITE_RE"          );
628          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RE_LOG"    ,
629                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RE_LOG"    );
630          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RE_PHY_OLD",
631                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RE_PHY_OLD");
632
633          // HACK : use the field num_reg_re to pass the SM and SUMRA flag.
634          // cf : rename_unit_glue and functionnal_unit/Operation
635          dest = _name+"_glue";
636
637          COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(i)+                     "_NUM_REG_RE_PHY_NEW",
638                                   dest, "in_INSERT_"+toString(i)+"_REGISTER_TRANSLATION_NUM_REG_RE_PHY_NEW");
639        }
640
641      for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
642        {
643          dest = _name;
644         
645#ifdef POSITION
646          _component->interface_map (src ,"retire_"+toString(i),
647                                     dest,"retire_"+toString(i));
648#endif     
649         
650          if (_param->_have_port_front_end_id)
651          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_FRONT_END_ID"      ,
652                              dest, "in_RETIRE_"+toString(i)+"_FRONT_END_ID"      );
653          if (_param->_have_port_context_id)
654          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_CONTEXT_ID"        ,
655                              dest, "in_RETIRE_"+toString(i)+"_CONTEXT_ID"        );
656//        PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_READ_RA"           ,
657//                            dest, "in_RETIRE_"+toString(i)+"_READ_RA"           );
658//        PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RA_PHY"    ,
659//                            dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RA_PHY"    );
660//        PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_READ_RB"           ,
661//                            dest, "in_RETIRE_"+toString(i)+"_READ_RB"           );
662//        PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RB_PHY"    ,
663//                            dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RB_PHY"    );
664//        PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_READ_RC"           ,
665//                            dest, "in_RETIRE_"+toString(i)+"_READ_RC"           );
666//        PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RC_PHY"    ,
667//                            dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RC_PHY"    );
668          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_WRITE_RD"          ,
669                              dest, "in_RETIRE_"+toString(i)+"_WRITE_RD"          );
670          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RD_LOG"    ,
671                              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RD_LOG"    );
672          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RD_PHY_OLD",
673                              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RD_PHY_OLD");
674          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RD_PHY_NEW",
675                              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RD_PHY_NEW");
676          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_WRITE_RE"          ,
677                              dest, "in_RETIRE_"+toString(i)+"_WRITE_RE"          );
678          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RE_LOG"    ,
679                              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RE_LOG"    );
680          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RE_PHY_OLD",
681                              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RE_PHY_OLD");
682          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RE_PHY_NEW",
683                              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RE_PHY_NEW");
684          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_RESTORE"           ,
685                              dest, "in_RETIRE_"+toString(i)+"_RESTORE"           );
686          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_RESTORE_RD_PHY_OLD",
687                              dest, "in_RETIRE_"+toString(i)+"_RESTORE_RD_PHY_OLD");
688          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_RESTORE_RE_PHY_OLD",
689                              dest, "in_RETIRE_"+toString(i)+"_RESTORE_RE_PHY_OLD");
690
691          dest = _name+"_glue";
692         
693#ifdef POSITION
694          _component->interface_map (src ,"retire_"+toString(i),
695                                     dest,"retire_"+toString(i));
696#endif     
697
698          COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_VAL",dest,"out_RETIRE_"+toString(i)+"_REGISTER_TRANSLATION_VAL");
699          COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_ACK",dest, "in_RETIRE_"+toString(i)+"_REGISTER_TRANSLATION_ACK");
700        }
701
702      for (uint32_t i=0; i<_param->_nb_front_end; i++)
703        for (uint32_t j=0; j<_param->_nb_context[i]; j++)
704          {
705            dest = _name+"_glue";
706           
707#ifdef POSITION
708            _component->interface_map (src ,"retire_event_"+toString(i)+"_"+toString(j),
709                                       dest,"retire_event_"+toString(i)+"_"+toString(j));
710#endif     
711            COMPONENT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+                     "_VAL"  ,
712                                     dest,"out_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_REGISTER_TRANSLATION_VAL"  );
713            COMPONENT_MAP(_component,src ,"out_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+                     "_ACK"  ,
714                                     dest, "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_REGISTER_TRANSLATION_ACK"  );
715
716            dest = _name;
717
718#ifdef POSITION
719            _component->interface_map (src ,"retire_event_"+toString(i)+"_"+toString(j),
720                                       dest,"retire_event_"+toString(i)+"_"+toString(j));
721#endif     
722            PORT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_STATE",
723                                dest, "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_STATE");
724            if (_param->_rat_scheme == RAT_DEPTH_SAVE)
725              {
726            PORT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_TYPE" ,
727                                dest, "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_TYPE" );
728            if (_param->_have_port_depth)
729            PORT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_DEPTH",
730                                dest, "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_DEPTH");
731              }
732
733          }
734
735
736#ifdef DEBUG_TEST
737      {
738        dest = _name;
739#ifdef POSITION
740        _component->interface_map (src ,"info"
741                                   dest,"info");
742#endif
743       
744        PORT_MAP(_component,src , "in_INFO_ROB_EMPTY",
745                            dest, "in_INFO_ROB_EMPTY");
746      }
747#endif
748    }
749
750    // ===================================================================
751    // =====[ load_store_pointer_unit ]===================================
752    // ===================================================================
753    {
754      src = _name+"_load_store_pointer_unit";
755      log_printf(TRACE,Rename_unit,FUNCTION,_("Instance : %s"),name.c_str());
756           
757      {
758        dest = _name;
759#ifdef POSITION
760        _component->interface_map (src ,"",
761                                   dest,"");
762#endif
763        PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
764        PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
765      }
766
767      for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
768        {
769          dest = _name;
770
771#ifdef POSITION
772          _component->interface_map (src ,"insert_"+toString(i),
773                                     dest,"insert_"+toString(i));
774#endif     
775
776          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_STORE_QUEUE_PTR_WRITE",
777                              dest,"out_INSERT_"+toString(i)+"_STORE_QUEUE_PTR_WRITE");
778          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_STORE_QUEUE_PTR_READ" ,
779                              dest,"out_INSERT_"+toString(i)+"_STORE_QUEUE_PTR_READ" );
780          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_STORE_QUEUE_EMPTY"    ,
781                              dest,"out_INSERT_"+toString(i)+"_STORE_QUEUE_EMPTY"    );
782          if (_param->_have_port_load_queue_ptr)
783          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_LOAD_QUEUE_PTR_WRITE" ,
784                              dest,"out_INSERT_"+toString(i)+"_LOAD_QUEUE_PTR_WRITE" );
785
786          dest = _name+"_glue";
787
788#ifdef POSITION
789          _component->interface_map (src ,"insert_"+toString(i),
790                                     dest,"insert_"+toString(i));
791#endif     
792         
793          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+                         "_VAL"         ,
794                                   dest,"out_INSERT_"+toString(i)+"_LOAD_STORE_QUEUE_POINTER_VAL"         );
795          COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(i)+                         "_ACK"         ,
796                                   dest, "in_INSERT_"+toString(i)+"_LOAD_STORE_QUEUE_POINTER_ACK"         );
797          if (_param->_have_port_front_end_id)
798          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+                         "_FRONT_END_ID",
799                                   dest,"out_INSERT_"+toString(i)+"_LOAD_STORE_QUEUE_POINTER_FRONT_END_ID");
800          if (_param->_have_port_context_id)
801          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+                         "_CONTEXT_ID"  ,
802                                   dest,"out_INSERT_"+toString(i)+"_LOAD_STORE_QUEUE_POINTER_CONTEXT_ID"  );
803          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+                         "_TYPE"        ,
804                                   dest,"out_INSERT_"+toString(i)+"_LOAD_STORE_QUEUE_POINTER_TYPE"        );
805          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+                         "_OPERATION"   ,
806                                   dest,"out_INSERT_"+toString(i)+"_LOAD_STORE_QUEUE_POINTER_OPERATION"   );
807        }
808
809      for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
810        {
811          dest = _name;
812         
813#ifdef POSITION
814          _component->interface_map (src ,"retire_"+toString(i),
815                                     dest,"retire_"+toString(i));
816#endif     
817
818          if (_param->_have_port_front_end_id)
819          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_FRONT_END_ID"         ,
820                              dest, "in_RETIRE_"+toString(i)+"_FRONT_END_ID"         );
821          if (_param->_have_port_context_id)                                         
822          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_CONTEXT_ID"           ,
823                              dest, "in_RETIRE_"+toString(i)+"_CONTEXT_ID"           );
824          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_USE_STORE_QUEUE"      ,     
825                              dest, "in_RETIRE_"+toString(i)+"_USE_STORE_QUEUE"      );
826          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_USE_LOAD_QUEUE"       ,     
827                              dest, "in_RETIRE_"+toString(i)+"_USE_LOAD_QUEUE"       );
828          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_STORE_QUEUE_PTR_WRITE",
829                              dest, "in_RETIRE_"+toString(i)+"_STORE_QUEUE_PTR_WRITE");
830          if (_param->_have_port_load_queue_ptr)
831          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_LOAD_QUEUE_PTR_WRITE" ,
832                              dest, "in_RETIRE_"+toString(i)+"_LOAD_QUEUE_PTR_WRITE" );
833
834          dest = _name+"_glue";
835
836#ifdef POSITION
837          _component->interface_map (src ,"retire_"+toString(i),
838                                     dest,"retire_"+toString(i));
839#endif     
840         
841          COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(i)+                         "_VAL"         ,
842                                   dest,"out_RETIRE_"+toString(i)+"_LOAD_STORE_QUEUE_POINTER_VAL"         );
843          COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+                         "_ACK"         ,
844                                   dest, "in_RETIRE_"+toString(i)+"_LOAD_STORE_QUEUE_POINTER_ACK"         );
845          //// in_RETIRE_TYPE         - glue
846          //// in_RETIRE_OPERATION    - glue
847        }
848
849      for (uint32_t i=0; i<_param->_nb_front_end; i++)
850        for (uint32_t j=0; j<_param->_nb_context[i]; j++)
851          {
852            dest = _name+"_glue";
853           
854#ifdef POSITION
855            _component->interface_map (src ,"retire_event_"+toString(i)+"_"+toString(j),
856                                       dest,"retire_event_"+toString(i)+"_"+toString(j));
857#endif     
858            COMPONENT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+                         "_VAL"  ,
859                                     dest,"out_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_LOAD_STORE_QUEUE_POINTER_VAL"  );
860            COMPONENT_MAP(_component,src ,"out_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+                         "_ACK"  ,
861                                     dest, "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_LOAD_STORE_QUEUE_POINTER_ACK"  );
862
863            dest = _name;
864           
865#ifdef POSITION
866            _component->interface_map (src ,"retire_event_"+toString(i)+"_"+toString(j),
867                                       dest,"retire_event_"+toString(i)+"_"+toString(j));
868#endif     
869            PORT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_STATE",
870                                dest, "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_STATE");
871          }
872    }
873
874    // ===================================================================
875    // =====[ glue ]======================================================
876    // ===================================================================
877    {
878      src = _name+"_glue";
879      log_printf(TRACE,Rename_unit,FUNCTION,_("Instance : %s"),name.c_str());
880           
881      {
882        dest = _name;
883#ifdef POSITION
884        _component->interface_map (src ,"",
885                                   dest,"");
886#endif
887        PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
888        PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
889      }
890
891      for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
892        {
893          dest = _name;
894
895#ifdef POSITION
896          _component->interface_map (src ,"insert_"+toString(i),
897                                     dest,"insert_"+toString(i));
898#endif     
899
900          // //out_INSERT_VAL
901          // // in_INSERT_ACK
902          if (_param->_have_port_front_end_id)
903          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_FRONT_END_ID" ,
904                              dest,"out_INSERT_"+toString(i)+"_FRONT_END_ID" );
905          if (_param->_have_port_context_id)
906          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_CONTEXT_ID"   ,
907                              dest,"out_INSERT_"+toString(i)+"_CONTEXT_ID"   );
908          if (_param->_have_port_depth and (_param->_rat_scheme == RAT_DEPTH_SAVE))
909          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_DEPTH"        ,
910                              dest,"out_INSERT_"+toString(i)+"_DEPTH"        );
911          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_TYPE"         ,
912                              dest,"out_INSERT_"+toString(i)+"_TYPE"         );
913          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_OPERATION"    ,
914                              dest,"out_INSERT_"+toString(i)+"_OPERATION"    );
915          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_IMMEDIAT"     ,
916                              dest,"out_INSERT_"+toString(i)+"_IMMEDIAT"     );
917//        PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_EXCEPTION_USE",
918//                            dest,"out_INSERT_"+toString(i)+"_EXCEPTION_USE");
919          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_EXCEPTION"    ,
920                              dest,"out_INSERT_"+toString(i)+"_EXCEPTION"    );
921          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RE_PHY_NEW",
922                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RE_PHY_NEW");
923          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NO_EXECUTE"  ,
924                              dest,"out_INSERT_"+toString(i)+"_NO_EXECUTE"  );
925         
926          //    in_INSERT_RENAME_SELECT_VAL                       - rename_select
927          //   out_INSERT_RENAME_SELECT_ACK                       - rename_select
928          //    in_INSERT_RENAME_SELECT_FRONT_END_ID              - rename_select
929          //    in_INSERT_RENAME_SELECT_CONTEXT_ID                - rename_select
930          //    in_INSERT_RENAME_SELECT_TYPE                      - rename_select
931          //    in_INSERT_RENAME_SELECT_OPERATION                 - rename_select
932          //    in_INSERT_RENAME_SELECT_IMMEDIAT                  - rename_select
933//        //    in_INSERT_RENAME_SELECT_EXCEPTION_USE             - rename_select
934          //    in_INSERT_RENAME_SELECT_EXCEPTION                 - rename_select
935                                                                 
936          //   out_INSERT_REGISTER_TRANSLATION_VAL                - register_translation_unit
937          //    in_INSERT_REGISTER_TRANSLATION_ACK                - register_translation_unit
938          //   out_INSERT_REGISTER_TRANSLATION_FRONT_END_ID       - register_translation_unit
939          //   out_INSERT_REGISTER_TRANSLATION_CONTEXT_ID         - register_translation_unit
940          //   out_INSERT_REGISTER_TRANSLATION_NUM_REG_RE_PHY_NEW - register_translation_unit
941         
942          //   out_INSERT_LOAD_STORE_QUEUE_POINTER_VAL            - load_store_pointer_unit
943          //    in_INSERT_LOAD_STORE_QUEUE_POINTER_ACK            - load_store_pointer_unit
944          //   out_INSERT_LOAD_STORE_QUEUE_POINTER_FRONT_END_ID   - load_store_pointer_unit
945          //   out_INSERT_LOAD_STORE_QUEUE_POINTER_CONTEXT_ID     - load_store_pointer_unit
946          //   out_INSERT_LOAD_STORE_QUEUE_POINTER_TYPE           - load_store_pointer_unit
947          //   out_INSERT_LOAD_STORE_QUEUE_POINTER_OPERATION      - load_store_pointer_unit
948        }
949
950      for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
951        {
952          dest = _name;
953
954#ifdef POSITION
955          _component->interface_map (src ,"retire_"+toString(i),
956                                     dest,"retire_"+toString(i));
957#endif     
958         
959          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_VAL",
960                              dest, "in_RETIRE_"+toString(i)+"_VAL");
961          PORT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_ACK",
962                              dest,"out_RETIRE_"+toString(i)+"_ACK");
963
964          //   out_RETIRE_LOAD_STORE_QUEUE_POINTER_VAL          - load_store_pointer_unit
965          //    in_RETIRE_LOAD_STORE_QUEUE_POINTER_ACK          - load_store_pointer_unit
966          // //out_RETIRE_LOAD_STORE_QUEUE_POINTER_TYPE         - load_store_pointer_unit
967          // //out_RETIRE_LOAD_STORE_QUEUE_POINTER_OPERATION    - load_store_pointer_unit
968          //   out_RETIRE_REGISTER_TRANSLATION_VAL              - register_translation_unit
969          //    in_RETIRE_REGISTER_TRANSLATION_ACK              - register_translation_unit
970        }
971
972      for (uint32_t i=0; i<_param->_nb_front_end; i++)
973        for (uint32_t j=0; j<_param->_nb_context[i]; j++)
974          {
975            dest = _name;
976           
977#ifdef POSITION
978            _component->interface_map (src ,"retire_event_"+toString(i)+"_"+toString(j),
979                                       dest,"retire_event_"+toString(i)+"_"+toString(j));
980#endif     
981           
982            PORT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_VAL",
983                                dest, "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_VAL");
984            PORT_MAP(_component,src ,"out_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_ACK",
985                                dest,"out_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_ACK");
986
987            //   out_RETIRE_EVENT_LOAD_STORE_QUEUE_POINTER_VAL          - load_store_pointer_unit
988            //    in_RETIRE_EVENT_LOAD_STORE_QUEUE_POINTER_ACK          - load_store_pointer_unit
989            //   out_RETIRE_EVENT_REGISTER_TRANSLATION_VAL              - register_translation_unit
990            //    in_RETIRE_EVENT_REGISTER_TRANSLATION_ACK              - register_translation_unit
991          }
992
993
994      for (uint32_t i=0; i<_param->_nb_front_end; i++)
995        for (uint32_t j=0; j<_param->_nb_context[i]; j++)
996          {
997            dest = _name;
998#ifdef POSITION
999            _component->interface_map (src ,"spr_read_"+toString(i)+"_"+toString(j),
1000                                       dest,"spr_read_"+toString(i)+"_"+toString(j));
1001#endif     
1002
1003            PORT_MAP(_component,src , "in_SPR_READ_"+toString(i)+"_"+toString(j)+"_SR",
1004                                dest, "in_SPR_READ_"+toString(i)+"_"+toString(j)+"_SR");
1005          }
1006    }
1007
1008    // ~~~~~[ Others ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1009#if DEBUG_Rename_unit == true
1010    _component->test_map();
1011#endif
1012
1013#ifdef POSITION
1014     if (usage_is_set(_usage,USE_POSITION))
1015       _component->generate_file();
1016#endif
1017
1018     log_end(Rename_unit,FUNCTION);
1019  };
1020
1021}; // end namespace rename_unit
1022}; // end namespace ooo_engine
1023}; // end namespace multi_ooo_engine
1024}; // end namespace core
1025
1026}; // end namespace behavioural
1027}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.