source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/OOO_Engine_allocation.cpp @ 122

Last change on this file since 122 was 122, checked in by rosiere, 15 years ago

Modif for performance :
1) Load Store Unit : store send request to valid exeception
2) Commit_unit : retire can bypass store
3) Commit_unit : add stat to manage store instruction
4) Load Store Unit and Load Store Pointer Manager : add store_queue_ptr_read
5) Fix lot of bug

  • Property svn:keywords set to Id
File size: 121.9 KB
Line 
1/*
2 * $Id: OOO_Engine_allocation.cpp 122 2009-06-03 08:15:51Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/include/OOO_Engine.h"
9#include "Behavioural/include/Allocation.h"
10
11namespace morpheo                    {
12namespace behavioural {
13namespace core {
14namespace multi_ooo_engine {
15namespace ooo_engine {
16
17#undef  FUNCTION
18#define FUNCTION "OOO_Engine::allocation"
19  void OOO_Engine::allocation
20  (
21#ifdef STATISTICS
22   morpheo::behavioural::Parameters_Statistics * param_statistics
23#else
24   void
25#endif
26   )
27  {
28    log_begin(OOO_Engine,FUNCTION);
29
30    _component   = new Component (_usage);
31
32    Entity * entity = _component->set_entity (_name       
33                                              ,"OOO_Engine"
34#ifdef POSITION
35                                              ,COMBINATORY
36#endif
37                                              );
38
39    _interfaces = entity->set_interfaces();
40   
41    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
42    {
43      Interface * interface = _interfaces->set_interface(""
44#ifdef POSITION
45                                                         ,IN
46                                                         ,SOUTH,
47                                                         "Generalist interface"
48#endif
49                                                         );
50     
51      in_CLOCK        = interface->set_signal_clk              ("clock" ,1, CLOCK_VHDL_YES);
52      in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_YES);
53    }
54
55    // ~~~~~[ Interface : "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
56    {
57      ALLOC2_INTERFACE_BEGIN("rename",IN,WEST,_("Instruction from front_end."),_param->_nb_front_end,_param->_nb_inst_decod[it1]);
58
59      _ALLOC2_VALACK_IN ( in_RENAME_VAL                       , VAL                                                                                 ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
60      _ALLOC2_VALACK_OUT(out_RENAME_ACK                       , ACK                                                                                 ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
61      _ALLOC2_SIGNAL_IN ( in_RENAME_FRONT_END_ID              ,"FRONT_END_ID"              ,Tcontext_t        ,_param->_size_front_end_id           ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
62      _ALLOC2_SIGNAL_IN ( in_RENAME_CONTEXT_ID                ,"CONTEXT_ID"                ,Tcontext_t        ,_param->_size_context_id             ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
63      _ALLOC2_SIGNAL_IN ( in_RENAME_DEPTH                     ,"DEPTH"                     ,Tdepth_t          ,_param->_size_depth                  ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
64      _ALLOC2_SIGNAL_IN ( in_RENAME_TYPE                      ,"TYPE"                      ,Ttype_t           ,_param->_size_type                   ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
65      _ALLOC2_SIGNAL_IN ( in_RENAME_OPERATION                 ,"OPERATION"                 ,Toperation_t      ,_param->_size_operation              ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
66      _ALLOC2_SIGNAL_IN ( in_RENAME_NO_EXECUTE                ,"NO_EXECUTE"                ,Tcontrol_t        ,1                                    ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
67      _ALLOC2_SIGNAL_IN ( in_RENAME_IS_DELAY_SLOT             ,"IS_DELAY_SLOT"             ,Tcontrol_t        ,1                                    ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
68#ifdef DEBUG
69      _ALLOC2_SIGNAL_IN ( in_RENAME_ADDRESS                   ,"ADDRESS"                   ,Taddress_t        ,_param->_size_instruction_address    ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
70#endif
71      _ALLOC2_SIGNAL_IN ( in_RENAME_ADDRESS_NEXT              ,"ADDRESS_NEXT"              ,Taddress_t        ,_param->_size_instruction_address    ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
72      _ALLOC2_SIGNAL_IN ( in_RENAME_HAS_IMMEDIAT              ,"HAS_IMMEDIAT"              ,Tcontrol_t        ,1                                    ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
73      _ALLOC2_SIGNAL_IN ( in_RENAME_IMMEDIAT                  ,"IMMEDIAT"                  ,Tgeneral_data_t   ,_param->_size_general_data           ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
74      _ALLOC2_SIGNAL_IN ( in_RENAME_READ_RA                   ,"READ_RA"                   ,Tcontrol_t        ,1                                    ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
75      _ALLOC2_SIGNAL_IN ( in_RENAME_NUM_REG_RA                ,"NUM_REG_RA"                ,Tgeneral_address_t,_param->_size_general_register_logic ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
76      _ALLOC2_SIGNAL_IN ( in_RENAME_READ_RB                   ,"READ_RB"                   ,Tcontrol_t        ,1                                    ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
77      _ALLOC2_SIGNAL_IN ( in_RENAME_NUM_REG_RB                ,"NUM_REG_RB"                ,Tgeneral_address_t,_param->_size_general_register_logic ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
78      _ALLOC2_SIGNAL_IN ( in_RENAME_READ_RC                   ,"READ_RC"                   ,Tcontrol_t        ,1                                    ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
79      _ALLOC2_SIGNAL_IN ( in_RENAME_NUM_REG_RC                ,"NUM_REG_RC"                ,Tspecial_address_t,_param->_size_special_register_logic ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
80      _ALLOC2_SIGNAL_IN ( in_RENAME_WRITE_RD                  ,"WRITE_RD"                  ,Tcontrol_t        ,1                                    ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
81      _ALLOC2_SIGNAL_IN ( in_RENAME_NUM_REG_RD                ,"NUM_REG_RD"                ,Tgeneral_address_t,_param->_size_general_register_logic ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
82      _ALLOC2_SIGNAL_IN ( in_RENAME_WRITE_RE                  ,"WRITE_RE"                  ,Tcontrol_t        ,1                                    ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
83      _ALLOC2_SIGNAL_IN ( in_RENAME_NUM_REG_RE                ,"NUM_REG_RE"                ,Tspecial_address_t,_param->_size_special_register_logic ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
84      _ALLOC2_SIGNAL_IN ( in_RENAME_EXCEPTION_USE             ,"EXCEPTION_USE"             ,Texception_t      ,_param->_size_exception_use          ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
85      _ALLOC2_SIGNAL_IN ( in_RENAME_EXCEPTION                 ,"EXCEPTION"                 ,Texception_t      ,_param->_size_exception              ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
86
87      ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_inst_decod[it1]);
88    }
89
90    // ~~~~~[ Interface : "issue" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
91    {
92      ALLOC1_INTERFACE_BEGIN("issue",OUT,EAST,_("Instruction to execute_loop"),_param->_nb_inst_issue);
93
94      ALLOC1_VALACK_OUT (out_ISSUE_VAL                        , VAL                                                                                 );
95      ALLOC1_VALACK_IN  ( in_ISSUE_ACK                        , ACK                                                                                 );
96      ALLOC1_SIGNAL_OUT (out_ISSUE_FRONT_END_ID               ,"FRONT_END_ID"              ,Tcontext_t        ,_param->_size_front_end_id           );
97      ALLOC1_SIGNAL_OUT (out_ISSUE_CONTEXT_ID                 ,"CONTEXT_ID"                ,Tcontext_t        ,_param->_size_context_id             );
98      ALLOC1_SIGNAL_OUT (out_ISSUE_PACKET_ID                  ,"PACKET_ID"                 ,Tpacket_t         ,_param->_size_rob_ptr                );
99      ALLOC1_SIGNAL_OUT (out_ISSUE_TYPE                       ,"TYPE"                      ,Ttype_t           ,_param->_size_type                   );
100      ALLOC1_SIGNAL_OUT (out_ISSUE_OPERATION                  ,"OPERATION"                 ,Toperation_t      ,_param->_size_operation              );
101      ALLOC1_SIGNAL_OUT (out_ISSUE_STORE_QUEUE_PTR_WRITE      ,"STORE_QUEUE_PTR_WRITE"     ,Tlsq_ptr_t        ,_param->_size_store_queue_ptr        );
102      ALLOC1_SIGNAL_OUT (out_ISSUE_STORE_QUEUE_PTR_READ       ,"STORE_QUEUE_PTR_READ"      ,Tlsq_ptr_t        ,_param->_size_store_queue_ptr        );
103      ALLOC1_SIGNAL_OUT (out_ISSUE_STORE_QUEUE_EMPTY          ,"STORE_QUEUE_EMPTY"         ,Tcontrol_t        ,1                                    );
104      ALLOC1_SIGNAL_OUT (out_ISSUE_LOAD_QUEUE_PTR_WRITE       ,"LOAD_QUEUE_PTR_WRITE"      ,Tlsq_ptr_t        ,_param->_size_load_queue_ptr         );
105      ALLOC1_SIGNAL_OUT (out_ISSUE_HAS_IMMEDIAT               ,"HAS_IMMEDIAT"              ,Tcontrol_t        ,1                                    );
106      ALLOC1_SIGNAL_OUT (out_ISSUE_IMMEDIAT                   ,"IMMEDIAT"                  ,Tgeneral_data_t   ,_param->_size_general_data           );
107      ALLOC1_SIGNAL_OUT (out_ISSUE_READ_RA                    ,"READ_RA"                   ,Tcontrol_t        ,1                                    );
108      ALLOC1_SIGNAL_OUT (out_ISSUE_NUM_REG_RA                 ,"NUM_REG_RA"                ,Tgeneral_address_t,_param->_size_general_register       );
109      ALLOC1_SIGNAL_OUT (out_ISSUE_READ_RB                    ,"READ_RB"                   ,Tcontrol_t        ,1                                    );
110      ALLOC1_SIGNAL_OUT (out_ISSUE_NUM_REG_RB                 ,"NUM_REG_RB"                ,Tgeneral_address_t,_param->_size_general_register       );
111      ALLOC1_SIGNAL_OUT (out_ISSUE_READ_RC                    ,"READ_RC"                   ,Tcontrol_t        ,1                                    );
112      ALLOC1_SIGNAL_OUT (out_ISSUE_NUM_REG_RC                 ,"NUM_REG_RC"                ,Tspecial_address_t,_param->_size_special_register       );
113      ALLOC1_SIGNAL_OUT (out_ISSUE_WRITE_RD                   ,"WRITE_RD"                  ,Tcontrol_t        ,1                                    );
114      ALLOC1_SIGNAL_OUT (out_ISSUE_NUM_REG_RD                 ,"NUM_REG_RD"                ,Tgeneral_address_t,_param->_size_general_register       );
115      ALLOC1_SIGNAL_OUT (out_ISSUE_WRITE_RE                   ,"WRITE_RE"                  ,Tcontrol_t        ,1                                    );
116      ALLOC1_SIGNAL_OUT (out_ISSUE_NUM_REG_RE                 ,"NUM_REG_RE"                ,Tspecial_address_t,_param->_size_special_register       );
117
118      ALLOC1_INTERFACE_END(_param->_nb_inst_issue);
119    }
120
121    // ~~~~~[ Interface "execute_loop" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
122    {
123      ALLOC2_INTERFACE_BEGIN("execute_loop",IN,EAST,_("Instruction executed, from execute_loop."),_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
124
125      _ALLOC2_VALACK_IN ( in_EXECUTE_LOOP_VAL                 , VAL                                                                                 ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
126      _ALLOC2_VALACK_OUT(out_EXECUTE_LOOP_ACK                 , ACK                                                                                 ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
127      _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_FRONT_END_ID        ,"FRONT_END_ID"              ,Tcontext_t        ,_param->_size_front_end_id           ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
128      _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_CONTEXT_ID          ,"CONTEXT_ID"                ,Tcontext_t        ,_param->_size_context_id             ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
129      _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_PACKET_ID           ,"PACKET_ID"                 ,Tpacket_t         ,_param->_size_rob_ptr                ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
130//    _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_TYPE                ,"TYPE"                      ,Ttype_t           ,_param->_size_type                   ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
131//    _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_OPERATION           ,"OPERATION"                 ,Toperation_t      ,_param->_size_operation              ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
132      _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_FLAGS               ,"FLAGS"                     ,Tspecial_data_t   ,_param->_size_special_data           ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
133      _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_EXCEPTION           ,"EXCEPTION"                 ,Texception_t      ,_param->_size_exception              ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
134      _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_NO_SEQUENCE         ,"NO_SEQUENCE"               ,Tcontrol_t        ,1                                    ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
135      _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_ADDRESS             ,"ADDRESS"                   ,Taddress_t        ,_param->_size_instruction_address    ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
136      _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_DATA                ,"DATA"                      ,Tgeneral_data_t   ,_param->_size_general_data           ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
137
138      ALLOC2_INTERFACE_END(_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
139    }
140
141    // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
142    {
143      ALLOC1_INTERFACE_BEGIN("insert",OUT,EAST,_("Interface with RegisterFile's stat-list (insert Re-Order-Buffer)."),_param->_sum_inst_insert);
144
145      ALLOC1_VALACK_OUT (out_INSERT_VAL                       , VAL);
146      ALLOC1_VALACK_IN  ( in_INSERT_ACK                       , ACK);
147      ALLOC1_SIGNAL_OUT (out_INSERT_RD_USE                    ,"RD_USE"                    ,Tcontrol_t        ,1                                    );
148      ALLOC1_SIGNAL_OUT (out_INSERT_RD_NUM_REG                ,"RD_NUM_REG"                ,Tgeneral_address_t,_param->_size_general_register       );
149      ALLOC1_SIGNAL_OUT (out_INSERT_RE_USE                    ,"RE_USE"                    ,Tcontrol_t        ,1                                    );
150      ALLOC1_SIGNAL_OUT (out_INSERT_RE_NUM_REG                ,"RE_NUM_REG"                ,Tspecial_address_t,_param->_size_special_register       );
151
152      ALLOC1_INTERFACE_END(_param->_sum_inst_insert);
153    }
154
155//     // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
156//     {
157//       ALLOC1_INTERFACE_BEGIN("retire",OUT,EAST,_("Interface with RegisterFile's stat-list (retire Re-Order-Buffer)."),_param->_sum_inst_retire);
158
159//       ALLOC1_VALACK_OUT (out_RETIRE_VAL                       , VAL);
160//       ALLOC1_VALACK_IN  ( in_RETIRE_ACK                       , ACK);
161//       ALLOC1_SIGNAL_OUT (out_RETIRE_RD_OLD_USE                ,"RD_OLD_USE"                ,Tcontrol_t        ,1                                    );
162//       ALLOC1_SIGNAL_OUT (out_RETIRE_RD_OLD_NUM_REG            ,"RD_OLD_NUM_REG"            ,Tgeneral_address_t,_param->_size_general_register       );
163//       ALLOC1_SIGNAL_OUT (out_RETIRE_RD_NEW_USE                ,"RD_NEW_USE"                ,Tcontrol_t        ,1                                    );
164//       ALLOC1_SIGNAL_OUT (out_RETIRE_RD_NEW_NUM_REG            ,"RD_NEW_NUM_REG"            ,Tgeneral_address_t,_param->_size_general_register       );
165//       ALLOC1_SIGNAL_OUT (out_RETIRE_RE_OLD_USE                ,"RE_OLD_USE"                ,Tcontrol_t        ,1                                    );
166//       ALLOC1_SIGNAL_OUT (out_RETIRE_RE_OLD_NUM_REG            ,"RE_OLD_NUM_REG"            ,Tspecial_address_t,_param->_size_special_register       );
167//       ALLOC1_SIGNAL_OUT (out_RETIRE_RE_NEW_USE                ,"RE_NEW_USE"                ,Tcontrol_t        ,1                                    );
168//       ALLOC1_SIGNAL_OUT (out_RETIRE_RE_NEW_NUM_REG            ,"RE_NEW_NUM_REG"            ,Tspecial_address_t,_param->_size_special_register       );
169
170//       ALLOC1_INTERFACE_END(_param->_sum_inst_retire);
171//     }
172
173    // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~         
174    {
175      ALLOC1_INTERFACE_BEGIN("branch_complete",OUT,WEST,_("Instruction to execute_loop"),_param->_nb_inst_branch_complete);
176
177      ALLOC1_VALACK_OUT (out_BRANCH_COMPLETE_VAL              , VAL);
178      ALLOC1_VALACK_IN  ( in_BRANCH_COMPLETE_ACK              , ACK);
179      ALLOC1_SIGNAL_OUT (out_BRANCH_COMPLETE_FRONT_END_ID     ,"FRONT_END_ID"              ,Tcontext_t        ,_param->_size_front_end_id           );
180      ALLOC1_SIGNAL_OUT (out_BRANCH_COMPLETE_CONTEXT_ID       ,"CONTEXT_ID"                ,Tcontext_t        ,_param->_size_context_id             );
181      ALLOC1_SIGNAL_OUT (out_BRANCH_COMPLETE_DEPTH            ,"DEPTH"                     ,Tdepth_t          ,_param->_size_depth                  );
182      ALLOC1_SIGNAL_OUT (out_BRANCH_COMPLETE_ADDRESS          ,"ADDRESS"                   ,Taddress_t        ,_param->_size_instruction_address    );
183      ALLOC1_SIGNAL_OUT (out_BRANCH_COMPLETE_NO_SEQUENCE      ,"NO_SEQUENCE"               ,Tcontrol_t        ,1                                    );
184      ALLOC1_SIGNAL_IN  ( in_BRANCH_COMPLETE_MISS_PREDICTION  ,"MISS_PREDICTION"           ,Tcontrol_t        ,1                                    );
185
186      ALLOC1_INTERFACE_END(_param->_nb_inst_branch_complete);
187    }
188                                                                             
189    // ~~~~~[ Interface : "commit_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
190    {
191      ALLOC0_INTERFACE_BEGIN("commit_event",OUT,WEST,_("Commit an event (exception)."));
192
193      ALLOC0_VALACK_OUT(out_COMMIT_EVENT_VAL                 , VAL);
194      ALLOC0_VALACK_IN ( in_COMMIT_EVENT_ACK                 , ACK);
195      ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_FRONT_END_ID        ,"FRONT_END_ID"              ,Tcontext_t        ,_param->_size_front_end_id           );
196      ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_CONTEXT_ID          ,"CONTEXT_ID"                ,Tcontext_t        ,_param->_size_context_id             );
197      ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_DEPTH               ,"DEPTH"                     ,Tdepth_t          ,_param->_size_depth                  );
198      ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_TYPE                ,"TYPE"                      ,Tevent_type_t     ,_param->_size_event_type             );
199      ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_IS_DELAY_SLOT       ,"IS_DELAY_SLOT"             ,Tcontrol_t        ,1                                    );
200      ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_ADDRESS             ,"ADDRESS"                   ,Taddress_t        ,_param->_size_instruction_address    );
201      ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_ADDRESS_EPCR_VAL    ,"ADDRESS_EPCR_VAL"          ,Tcontrol_t        ,1                                    );
202      ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_ADDRESS_EPCR        ,"ADDRESS_EPCR"              ,Taddress_t        ,_param->_size_instruction_address    );
203      ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_ADDRESS_EEAR_VAL    ,"ADDRESS_EEAR_VAL"          ,Tcontrol_t        ,1                                    );
204      ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_ADDRESS_EEAR        ,"ADDRESS_EEAR"              ,Tgeneral_data_t   ,_param->_size_general_data           );
205
206      ALLOC0_INTERFACE_END();
207    }
208
209    // ~~~~~[ Interface "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
210    {
211      ALLOC2_INTERFACE_BEGIN("event",IN,WEST,_("Event from context_state."),_param->_nb_front_end,_param->_nb_context[it1]);
212
213      _ALLOC2_VALACK_IN ( in_EVENT_VAL                        , VAL                                                                                 ,_param->_nb_front_end,_param->_nb_context[it1]);
214      _ALLOC2_VALACK_OUT(out_EVENT_ACK                        , ACK                                                                                 ,_param->_nb_front_end,_param->_nb_context[it1]);
215      _ALLOC2_SIGNAL_IN ( in_EVENT_ADDRESS                    ,"ADDRESS"                   ,Taddress_t        ,_param->_size_instruction_address    ,_param->_nb_front_end,_param->_nb_context[it1]);
216      _ALLOC2_SIGNAL_IN ( in_EVENT_ADDRESS_NEXT               ,"ADDRESS_NEXT"              ,Taddress_t        ,_param->_size_instruction_address    ,_param->_nb_front_end,_param->_nb_context[it1]); 
217      _ALLOC2_SIGNAL_IN ( in_EVENT_ADDRESS_NEXT_VAL           ,"ADDRESS_NEXT_VAL"          ,Tcontrol_t        ,1                                    ,_param->_nb_front_end,_param->_nb_context[it1]);
218      _ALLOC2_SIGNAL_IN ( in_EVENT_IS_DS_TAKE                 ,"IS_DS_TAKE"                ,Tcontrol_t        ,1                                    ,_param->_nb_front_end,_param->_nb_context[it1]);
219
220      ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]);
221    }
222
223    // ~~~~~[ Interface "spr_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
224    {
225      ALLOC2_INTERFACE_BEGIN("spr_event",IN,WEST,_("Exception : save spr and set a lot of special register."),_param->_nb_front_end,_param->_nb_context[it1]);
226
227      _ALLOC2_VALACK_IN ( in_SPR_EVENT_VAL                    , VAL                                                                                 ,_param->_nb_front_end,_param->_nb_context[it1]);
228      _ALLOC2_VALACK_OUT(out_SPR_EVENT_ACK                    , ACK                                                                                 ,_param->_nb_front_end,_param->_nb_context[it1]);
229      _ALLOC2_SIGNAL_IN ( in_SPR_EVENT_EPCR                   ,"EPCR"                      ,Tspr_t            ,_param->_size_spr                    ,_param->_nb_front_end,_param->_nb_context[it1]);
230      _ALLOC2_SIGNAL_IN ( in_SPR_EVENT_EEAR_WEN               ,"EEAR_WEN"                  ,Tcontrol_t        ,1                                    ,_param->_nb_front_end,_param->_nb_context[it1]);
231      _ALLOC2_SIGNAL_IN ( in_SPR_EVENT_EEAR                   ,"EEAR"                      ,Tspr_t            ,_param->_size_spr                    ,_param->_nb_front_end,_param->_nb_context[it1]);
232      _ALLOC2_SIGNAL_IN ( in_SPR_EVENT_SR_DSX                 ,"SR_DSX"                    ,Tcontrol_t        ,1                                    ,_param->_nb_front_end,_param->_nb_context[it1]);
233      _ALLOC2_SIGNAL_IN ( in_SPR_EVENT_SR_TO_ESR              ,"SR_TO_ESR"                 ,Tcontrol_t        ,1                                    ,_param->_nb_front_end,_param->_nb_context[it1]);
234
235      ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]);
236    }
237                                                                                 
238    // ~~~~~[ Interface : "nb_inst" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
239    {
240      ALLOC2_INTERFACE_BEGIN("nb_inst",OUT,WEST,_("Internal number instruction."),_param->_nb_front_end,_param->_nb_context[it1]);
241
242      _ALLOC2_SIGNAL_OUT(out_NB_INST_COMMIT_ALL               ,"COMMIT_ALL"                 ,Tcounter_t       ,_param->_size_nb_inst_commit         ,_param->_nb_front_end,_param->_nb_context[it1]);
243      _ALLOC2_SIGNAL_OUT(out_NB_INST_COMMIT_MEM               ,"COMMIT_MEM"                 ,Tcounter_t       ,_param->_size_nb_inst_commit         ,_param->_nb_front_end,_param->_nb_context[it1]);
244      _ALLOC2_SIGNAL_IN ( in_NB_INST_DECOD_ALL                ,"DECOD_ALL"                  ,Tcounter_t       ,_param->_size_nb_inst_decod          ,_param->_nb_front_end,_param->_nb_context[it1]);
245
246      ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]);
247    }
248
249    // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
250    {
251      ALLOC2_INTERFACE_BEGIN("depth",IN,WEST,_("Interface with Prediction unit."),_param->_nb_front_end, _param->_nb_context[it1]);
252
253      _ALLOC2_SIGNAL_IN ( in_DEPTH_MIN                        ,"MIN"                        ,Tdepth_t         ,_param->_size_depth                  ,_param->_nb_front_end, _param->_nb_context[it1]);
254      _ALLOC2_SIGNAL_IN ( in_DEPTH_MAX                        ,"MAX"                        ,Tdepth_t         ,_param->_size_depth                  ,_param->_nb_front_end, _param->_nb_context[it1]); 
255      _ALLOC2_SIGNAL_IN ( in_DEPTH_FULL                       ,"FULL"                       ,Tcontrol_t       ,1                                    ,_param->_nb_front_end, _param->_nb_context[it1]); 
256
257      ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]);
258    }
259
260    // ~~~~~[ Interface : "spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
261    {
262      ALLOC2_INTERFACE_BEGIN("spr",OUT,WEST,_("SPR"),_param->_nb_front_end,_param->_nb_context[it1]);
263
264      _ALLOC2_SIGNAL_OUT(out_SPR_SR_IEE                       ,"SR_IEE"                     ,Tcontrol_t       ,1                                    ,_param->_nb_front_end,_param->_nb_context[it1]);
265      _ALLOC2_SIGNAL_OUT(out_SPR_SR_EPH                       ,"SR_EPH"                     ,Tcontrol_t       ,1                                    ,_param->_nb_front_end,_param->_nb_context[it1]);
266
267      ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]);
268    }
269
270    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
271    std::string name;
272
273    _component_rename_unit = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::Rename_unit * [_param->_nb_rename_unit];
274    for (uint32_t i=0; i<_param->_nb_rename_unit; ++i)
275      {
276        name = _name+"_rename_unit_"+toString(i);
277        log_printf(TRACE,OOO_Engine,FUNCTION,_("Create   : %s"),name.c_str());
278       
279        _component_rename_unit [i] = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::Rename_unit
280          (name.c_str()
281#ifdef STATISTICS
282           ,param_statistics
283#endif
284           ,_param->_param_rename_unit [i]
285           ,_usage);
286
287        _component->set_component (_component_rename_unit [i]->_component
288#ifdef POSITION
289                                   , 50, 50, 10, 10
290#endif
291                                   );
292      }
293
294    {
295      name = _name+"_commit_unit";
296      log_printf(TRACE,OOO_Engine,FUNCTION,_("Create   : %s"),name.c_str());
297     
298      _component_commit_unit = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::Commit_unit
299        (name.c_str()
300#ifdef STATISTICS
301         ,param_statistics
302#endif
303         ,_param->_param_commit_unit
304         ,_usage);
305     
306      _component->set_component (_component_commit_unit->_component
307#ifdef POSITION
308                                 , 50, 50, 10, 10
309#endif
310                                 );
311    }
312
313    {
314      name = _name+"_issue_queue";
315      log_printf(TRACE,OOO_Engine,FUNCTION,_("Create   : %s"),name.c_str());
316     
317      _component_issue_queue = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::Issue_queue
318        (name.c_str()
319#ifdef STATISTICS
320         ,param_statistics
321#endif
322         ,_param->_param_issue_queue
323         ,_usage);
324     
325      _component->set_component (_component_issue_queue->_component
326#ifdef POSITION
327                                 , 50, 50, 10, 10
328#endif
329                                 );
330    }
331
332    {
333      name = _name+"_reexecute_unit";
334      log_printf(TRACE,OOO_Engine,FUNCTION,_("Create   : %s"),name.c_str());
335     
336      _component_reexecute_unit = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::reexecute_unit::Reexecute_unit
337        (name.c_str()
338#ifdef STATISTICS
339         ,param_statistics
340#endif
341         ,_param->_param_reexecute_unit
342         ,_usage);
343     
344      _component->set_component (_component_reexecute_unit->_component
345#ifdef POSITION
346                                 , 50, 50, 10, 10
347#endif
348                                 );
349    }
350
351    {
352      name = _name+"_special_register_unit";
353      log_printf(TRACE,OOO_Engine,FUNCTION,_("Create   : %s"),name.c_str());
354     
355      _component_special_register_unit = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::special_register_unit::Special_Register_unit
356        (name.c_str()
357#ifdef STATISTICS
358         ,param_statistics
359#endif
360         ,_param->_param_special_register_unit
361         ,_usage);
362     
363      _component->set_component (_component_special_register_unit->_component
364#ifdef POSITION
365                                 , 50, 50, 10, 10
366#endif
367                                 );
368    }
369
370    {
371      name = _name+"_glue";
372      log_printf(TRACE,OOO_Engine,FUNCTION,_("Create   : %s"),name.c_str());
373     
374      _component_glue = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::ooo_engine_glue::OOO_Engine_Glue
375        (name.c_str()
376#ifdef STATISTICS
377         ,param_statistics
378#endif
379         ,_param->_param_glue
380         ,_usage);
381     
382      _component->set_component (_component_glue->_component
383#ifdef POSITION
384                                 , 50, 50, 10, 10
385#endif
386                                 );
387    }
388       
389    // ~~~~~[ Instanciation ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
390    std::string src,dest;
391
392    // ===================================================================
393    // =====[ rename_unit ]===============================================
394    // ===================================================================
395    for (uint32_t i=0; i<_param->_nb_rename_unit; ++i)
396      {
397        src = _name+"_rename_unit_"+toString(i);
398        log_printf(TRACE,OOO_Engine,FUNCTION,_("Instance : %s"),name.c_str());
399       
400        {
401          dest = _name;
402#ifdef POSITION
403          _component->interface_map (src ,"",
404                                     dest,"");
405#endif
406          PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
407          PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
408        }
409
410        // ~~~~~[ Interface : "rename_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
411        {
412          std::vector<uint32_t>::iterator it = _param->_link_front_end_with_rename_unit[i].begin();
413          uint32_t x = 0;
414          for (uint32_t j=0; j<_param->_nb_front_end; j++)
415            if (j == *it)
416              {
417                // this front end is link with this rename_unit
418                for (uint32_t k=0; k<_param->_nb_inst_decod [j]; k++)
419                  {
420                    dest = _name;
421
422#ifdef POSITION
423                    _component->interface_map (src ,"rename_in_"+toString(x)+"_"+toString(k),
424                                               dest,"rename_"   +toString(j)+"_"+toString(k));
425#endif
426
427                    PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_VAL"          ,
428                                        dest, "in_RENAME_"   +toString(j)+"_"+toString(k)+"_VAL"          );
429                    PORT_MAP(_component,src ,"out_RENAME_IN_"+toString(x)+"_"+toString(k)+"_ACK"          ,
430                                        dest,"out_RENAME_"   +toString(j)+"_"+toString(k)+"_ACK"          );
431                    if (_param->_have_port_context_id)
432                    PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_CONTEXT_ID"   ,
433                                        dest, "in_RENAME_"   +toString(j)+"_"+toString(k)+"_CONTEXT_ID"   );
434                    if (_param->_have_port_depth)
435                    PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_DEPTH"        ,
436                                        dest, "in_RENAME_"   +toString(j)+"_"+toString(k)+"_DEPTH"        );
437                    PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_TYPE"         ,
438                                        dest, "in_RENAME_"   +toString(j)+"_"+toString(k)+"_TYPE"         );
439                    PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_OPERATION"    ,
440                                        dest, "in_RENAME_"   +toString(j)+"_"+toString(k)+"_OPERATION"    );
441                    PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_NO_EXECUTE"   ,
442                                        dest, "in_RENAME_"   +toString(j)+"_"+toString(k)+"_NO_EXECUTE"   );
443                    PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_IS_DELAY_SLOT",
444                                        dest, "in_RENAME_"   +toString(j)+"_"+toString(k)+"_IS_DELAY_SLOT");
445#ifdef DEBUG
446                    PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_ADDRESS"      ,
447                                        dest, "in_RENAME_"   +toString(j)+"_"+toString(k)+"_ADDRESS"      );
448#endif
449                    PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_ADDRESS_NEXT" ,
450                                        dest, "in_RENAME_"   +toString(j)+"_"+toString(k)+"_ADDRESS_NEXT" );
451                    PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_HAS_IMMEDIAT" ,
452                                        dest, "in_RENAME_"   +toString(j)+"_"+toString(k)+"_HAS_IMMEDIAT" );
453                    PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_IMMEDIAT"     ,
454                                        dest, "in_RENAME_"   +toString(j)+"_"+toString(k)+"_IMMEDIAT"     );
455                    PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_READ_RA"      ,
456                                        dest, "in_RENAME_"   +toString(j)+"_"+toString(k)+"_READ_RA"      );
457                    PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_NUM_REG_RA"   ,
458                                        dest, "in_RENAME_"   +toString(j)+"_"+toString(k)+"_NUM_REG_RA"   );
459                    PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_READ_RB"      ,
460                                        dest, "in_RENAME_"   +toString(j)+"_"+toString(k)+"_READ_RB"      );
461                    PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_NUM_REG_RB"   ,
462                                        dest, "in_RENAME_"   +toString(j)+"_"+toString(k)+"_NUM_REG_RB"   );
463                    PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_READ_RC"      ,
464                                        dest, "in_RENAME_"   +toString(j)+"_"+toString(k)+"_READ_RC"      );
465                    PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_NUM_REG_RC"   ,
466                                        dest, "in_RENAME_"   +toString(j)+"_"+toString(k)+"_NUM_REG_RC"   );
467                    PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_WRITE_RD"     ,
468                                        dest, "in_RENAME_"   +toString(j)+"_"+toString(k)+"_WRITE_RD"     );
469                    PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_NUM_REG_RD"   ,
470                                        dest, "in_RENAME_"   +toString(j)+"_"+toString(k)+"_NUM_REG_RD"   );
471                    PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_WRITE_RE"     ,
472                                        dest, "in_RENAME_"   +toString(j)+"_"+toString(k)+"_WRITE_RE"     );
473                    PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_NUM_REG_RE"   ,
474                                        dest, "in_RENAME_"   +toString(j)+"_"+toString(k)+"_NUM_REG_RE"   );
475                    PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_EXCEPTION_USE",
476                                        dest, "in_RENAME_"   +toString(j)+"_"+toString(k)+"_EXCEPTION_USE");
477                    PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_EXCEPTION"    ,
478                                        dest, "in_RENAME_"   +toString(j)+"_"+toString(k)+"_EXCEPTION"    );
479
480                    // glue
481                    dest = _name+"_glue";
482
483#ifdef POSITION
484                    _component->interface_map (src ,"rename_in_"+toString(x)+"_"+toString(k),
485                                               dest,"rename_"   +toString(j)+"_"+toString(k));
486#endif
487
488                    if (_param->_have_port_front_end_id)
489                    COMPONENT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+            "_FRONT_END_ID" ,
490                                             dest,"out_RENAME_"   +toString(j)+"_"+toString(k)+"_RENAME_UNIT_FRONT_END_ID" );
491                  }
492
493                x ++; 
494                it++;
495              }
496        }
497       
498        // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
499        for (uint32_t j=0; j<_param->_nb_inst_insert[i]; j++)
500          {
501            dest = _name+"_commit_unit";
502           
503#ifdef POSITION
504            _component->interface_map (src ,"insert_"+toString(j),
505                                       dest,"insert_"+toString(i)+"_"+toString(j));
506#endif
507
508            if (_param->_have_port_depth)
509            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_DEPTH"         ,
510                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_DEPTH"         );
511            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_IS_DELAY_SLOT" ,
512                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_IS_DELAY_SLOT" );
513#ifdef DEBUG
514            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_ADDRESS"       ,
515                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_ADDRESS"       );
516#endif
517            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_ADDRESS_NEXT"  ,
518                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_ADDRESS_NEXT"  );
519            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_EXCEPTION_USE" ,
520                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_EXCEPTION_USE" );
521            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_EXCEPTION"     ,
522                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_EXCEPTION"     );
523#ifdef DEBUG
524            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_NUM_REG_RA_LOG",
525                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_NUM_REG_RA_LOG");
526            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_NUM_REG_RB_LOG",
527                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_NUM_REG_RB_LOG");
528            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_NUM_REG_RC_LOG",
529                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_NUM_REG_RC_LOG");
530#endif
531            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_NUM_REG_RD_LOG",
532                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_NUM_REG_RD_LOG");
533            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_NUM_REG_RE_LOG",
534                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_NUM_REG_RE_LOG");
535
536            dest = _name+"_glue";
537           
538#ifdef POSITION
539            _component->interface_map (src ,"insert_"+toString(j),
540                                       dest,"insert_"+toString(i)+"_"+toString(j));
541#endif
542           
543            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_VAL"                  ,
544                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_VAL"                  );
545            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(j)+                            "_ACK"                  ,
546                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_ACK"                  );
547            if (_param->_have_port_front_end_id)
548            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_FRONT_END_ID"         ,
549                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_FRONT_END_ID"         );
550            if (_param->_have_port_context_id)
551            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_CONTEXT_ID"           ,
552                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_CONTEXT_ID"           );
553            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_TYPE"                 ,
554                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_TYPE"                 );
555            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_OPERATION"            ,
556                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_OPERATION"            );
557            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_NO_EXECUTE"           ,
558                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_NO_EXECUTE"           );
559            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_HAS_IMMEDIAT"         ,
560                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_HAS_IMMEDIAT"         );
561            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_IMMEDIAT"             ,
562                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_IMMEDIAT"             );
563            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_STORE_QUEUE_PTR_WRITE",
564                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_STORE_QUEUE_PTR_WRITE");
565            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_STORE_QUEUE_PTR_READ" ,
566                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_STORE_QUEUE_PTR_READ" );
567            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_STORE_QUEUE_EMPTY"    ,
568                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_STORE_QUEUE_EMPTY"    );
569            if (_param->_have_port_load_queue_ptr)
570            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_LOAD_QUEUE_PTR_WRITE" ,
571                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_LOAD_QUEUE_PTR_WRITE" );
572            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_READ_RA"              ,
573                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_READ_RA"              );
574            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_NUM_REG_RA_PHY"       ,
575                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_NUM_REG_RA_PHY"       );
576            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_READ_RB"              ,
577                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_READ_RB"              );
578            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_NUM_REG_RB_PHY"       ,
579                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_NUM_REG_RB_PHY"       );
580            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_READ_RC"              ,
581                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_READ_RC"              );
582            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_NUM_REG_RC_PHY"       ,
583                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_NUM_REG_RC_PHY"       );
584            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_WRITE_RD"             ,
585                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_WRITE_RD"             );
586            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_NUM_REG_RD_PHY_OLD"   ,
587                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_NUM_REG_RD_PHY_OLD"   );
588            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_NUM_REG_RD_PHY_NEW"   ,
589                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_NUM_REG_RD_PHY_NEW"   );
590            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_WRITE_RE"             ,
591                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_WRITE_RE"             );
592            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_NUM_REG_RE_PHY_OLD"   ,
593                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_NUM_REG_RE_PHY_OLD"   );
594            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_NUM_REG_RE_PHY_NEW"   ,
595                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_NUM_REG_RE_PHY_NEW"   );
596          }
597
598        // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
599        for (uint32_t j=0; j<_param->_nb_inst_retire[i]; j++)
600          {
601            dest = _name+"_commit_unit";
602           
603#ifdef POSITION
604            _component->interface_map (src ,"retire_"+toString(j),
605                                       dest,"retire_"+toString(i)+"_"+toString(j));
606#endif
607
608
609
610            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_VAL"               ,
611                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_VAL"               );
612            COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(j)+                "_ACK"               ,
613                                     dest, "in_RETIRE_"+toString(i)+"_"+toString(j)+"_ACK"               );
614            if (_param->_have_port_front_end_id)
615            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_FRONT_END_ID"      ,
616                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_FRONT_END_ID"      );
617            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_WRITE_RD"          ,
618                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_WRITE_RD"          );
619            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_NUM_REG_RD_PHY_OLD",
620                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RD_PHY_OLD");
621            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_NUM_REG_RD_PHY_NEW",
622                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RD_PHY_NEW");
623            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_WRITE_RE"          ,
624                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_WRITE_RE"          );
625            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_NUM_REG_RE_PHY_OLD",
626                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RE_PHY_OLD");
627            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_NUM_REG_RE_PHY_NEW",
628                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RE_PHY_NEW");
629            if (_param->_have_port_context_id)
630            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_CONTEXT_ID"           ,
631                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_CONTEXT_ID"           );
632//          COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_TYPE"                 ,
633//                                   dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_TYPE"                 );
634//          COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_OPERATION"            ,
635//                                   dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_OPERATION"            );
636            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_USE_STORE_QUEUE"      ,
637                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_USE_STORE_QUEUE"      );
638            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_USE_LOAD_QUEUE"       ,
639                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_USE_LOAD_QUEUE"       );
640            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_STORE_QUEUE_PTR_WRITE",
641                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_STORE_QUEUE_PTR_WRITE");
642            if (_param->_have_port_load_queue_ptr)
643            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_LOAD_QUEUE_PTR_WRITE" ,
644                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_LOAD_QUEUE_PTR_WRITE" );
645//             COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_READ_RA"              ,
646//                                      dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_READ_RA"              );
647//             COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_NUM_REG_RA_PHY"       ,
648//                                      dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RA_PHY"       );
649//             COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_READ_RB"              ,
650//                                      dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_READ_RB"              );
651//             COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_NUM_REG_RB_PHY"       ,
652//                                      dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RB_PHY"       );
653//             COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_READ_RC"              ,
654//                                      dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_READ_RC"              );
655//             COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_NUM_REG_RC_PHY"       ,
656//                                      dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RC_PHY"       );
657            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_NUM_REG_RD_LOG"       ,
658                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RD_LOG"       );
659            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_NUM_REG_RE_LOG"       ,
660                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RE_LOG"       );
661          }
662
663        // ~~~~~[ Interface : "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
664        {
665          std::vector<uint32_t>::iterator it = _param->_link_front_end_with_rename_unit[i].begin();
666          uint32_t x = 0;
667          for (uint32_t j=0; j<_param->_nb_front_end; j++)
668            if (j == (*it))
669              {
670                for (uint32_t k=0; k<_param->_nb_context[i]; k++)
671                  {
672                    dest = _name+"_commit_unit";
673                   
674#ifdef POSITION
675                    _component->interface_map (src ,"retire_event_"+toString(x)+"_"+toString(k),
676                                               dest,"retire_event_"+toString(j)+"_"+toString(k));
677#endif
678                    COMPONENT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(x)+"_"+toString(k)+"_VAL",
679                                             dest,"out_RETIRE_EVENT_"+toString(j)+"_"+toString(k)+"_VAL");
680                    COMPONENT_MAP(_component,src ,"out_RETIRE_EVENT_"+toString(x)+"_"+toString(k)+"_ACK",
681                                             dest, "in_RETIRE_EVENT_"+toString(j)+"_"+toString(k)+"_ACK");
682                    COMPONENT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(x)+"_"+toString(k)+"_STATE",
683                                             dest,"out_RETIRE_EVENT_"+toString(j)+"_"+toString(k)+"_STATE");
684                    COMPONENT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(x)+"_"+toString(k)+"_FLUSH",
685                                             dest,"out_RETIRE_EVENT_"+toString(j)+"_"+toString(k)+"_FLUSH");
686                    COMPONENT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(x)+"_"+toString(k)+"_STOP",
687                                             dest,"out_RETIRE_EVENT_"+toString(j)+"_"+toString(k)+"_STOP");
688                  }
689                x++;
690                ++it;
691              }
692        }
693
694        // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
695        {
696          std::vector<uint32_t>::iterator it = _param->_link_front_end_with_rename_unit[i].begin();
697          uint32_t x = 0;
698          for (uint32_t j=0; j<_param->_nb_front_end; j++)
699            if (j == *it)
700              {
701                for (uint32_t k=0; k<_param->_nb_context[j]; k++)
702                  {
703                    dest = _name+"_glue";
704                   
705#ifdef POSITION
706                    _component->interface_map (src ,"spr_read_"+toString(x)+"_"+toString(k),
707                                               dest,"spr_"     +toString(j)+"_"+toString(k));
708#endif
709
710                    COMPONENT_MAP(_component,src , "in_SPR_READ_"+toString(x)+"_"+toString(k)+            "_SR",
711                                             dest,"out_SPR_"     +toString(j)+"_"+toString(k)+"_RENAME_UNIT_SR");
712                  }
713                x++;
714                ++it;
715              }
716        }
717      }
718
719    // ===================================================================
720    // =====[ commit_unit ]===============================================
721    // ===================================================================
722    {
723      src = _name+"_commit_unit";
724      log_printf(TRACE,OOO_Engine,FUNCTION,_("Instance : %s"),name.c_str());
725           
726      {
727        dest = _name;
728#ifdef POSITION
729        _component->interface_map (src ,"",
730                                   dest,"");
731#endif
732        PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
733        PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
734      }
735
736      // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
737      for (uint32_t i=0; i<_param->_nb_rename_unit; ++i)
738        for (uint32_t j=0; j<_param->_nb_inst_insert[i]; j++)
739          {
740            dest = _name+"_glue";
741#ifdef POSITION
742            _component->interface_map (src ,"insert_"+toString(i)+"_"+toString(j),
743                                       dest,"insert_"+toString(i)+"_"+toString(j));
744#endif
745           
746            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_VAL"                  ,
747                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_VAL"                  );
748            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_"+toString(j)+            "_ACK"                  ,
749                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_ACK"                  );
750            if (_param->_have_port_front_end_id)
751            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_FRONT_END_ID"         ,
752                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_FRONT_END_ID"         );
753            if (_param->_have_port_context_id)
754            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_CONTEXT_ID"           ,
755                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_CONTEXT_ID"           );
756//          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_RENAME_UNIT_ID"       ,
757//                                   dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_RENAME_UNIT_ID"       );
758            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_TYPE"                 ,
759                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_TYPE"                 );
760            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_OPERATION"            ,
761                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_OPERATION"            );
762            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_NO_EXECUTE"           ,
763                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_NO_EXECUTE"           );
764            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_STORE_QUEUE_PTR_WRITE",
765                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_STORE_QUEUE_PTR_WRITE");
766            if (_param->_have_port_load_queue_ptr)
767            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_LOAD_QUEUE_PTR_WRITE" ,
768                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_LOAD_QUEUE_PTR_WRITE" );
769#ifdef DEBUG
770            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_READ_RA"              ,
771                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_READ_RA"              );
772            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RA_PHY"       ,
773                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_NUM_REG_RA_PHY"       );
774            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_READ_RB"              ,
775                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_READ_RB"              );
776            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RB_PHY"       ,
777                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_NUM_REG_RB_PHY"       );
778            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_READ_RC"              ,
779                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_READ_RC"              );
780            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RC_PHY"       ,
781                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_NUM_REG_RC_PHY"       );
782#endif
783            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_WRITE_RD"             ,
784                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_WRITE_RD"             );
785            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RD_PHY_OLD"   ,
786                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_NUM_REG_RD_PHY_OLD"   );
787            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RD_PHY_NEW"   ,
788                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_NUM_REG_RD_PHY_NEW"   );
789            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_WRITE_RE"             ,
790                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_WRITE_RE"             );
791            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RE_PHY_OLD"   ,
792                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_NUM_REG_RE_PHY_OLD"   );
793            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RE_PHY_NEW"   ,
794                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_NUM_REG_RE_PHY_NEW"   );
795           
796            dest = _name+"_issue_queue";
797#ifdef POSITION
798            _component->interface_map (src ,"insert_"  +toString(i)+"_"+toString(j),
799                                       dest,"issue_in_"+toString(i)+"_"+toString(j));
800#endif
801           
802            if (_param->_have_port_rob_ptr)
803            COMPONENT_MAP(_component,src ,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_PACKET_ID",
804                                     dest, "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+"_PACKET_ID");
805
806            //    in_INSERT_DEPTH          - component_rename_unit
807            //    in_INSERT_ADDRESS        - component_rename_unit
808            //    in_INSERT_ADDRESS_NEXT   - component_rename_unit
809            //    in_INSERT_EXCEPTION_USE  - component_rename_unit
810            //    in_INSERT_EXCEPTION      - component_rename_unit
811            //    in_INSERT_NUM_REG_RA_LOG - component_rename_unit
812            //    in_INSERT_NUM_REG_RB_LOG - component_rename_unit
813            //    in_INSERT_NUM_REG_RC_LOG - component_rename_unit
814            //    in_INSERT_NUM_REG_RD_LOG - component_rename_unit
815            //    in_INSERT_NUM_REG_RE_LOG - component_rename_unit
816            //    in_INSERT_IS_DELAY_SLOT  - component_rename_unit
817          }
818                                                                                   
819      // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       
820      for (uint32_t i=0; i<_param->_nb_rename_unit; ++i)
821        for (uint32_t j=0; j<_param->_nb_inst_retire [i]; j++)
822          {
823//             dest = _name+"_glue";
824           
825// #ifdef POSITION
826//             _component->interface_map (src ,"retire_"+toString(i)+"_"+toString(j),
827//                                        dest,"retire_"+toString(i)+"_"+toString(j));
828// #endif
829
830//             COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_"+toString(j)+            "_VAL"               ,
831//                                      dest, "in_RETIRE_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_VAL"               );
832//             COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_"+toString(j)+            "_ACK"               ,
833//                                      dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_ACK"               );
834//             COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_"+toString(j)+            "_WRITE_RD"          ,
835//                                      dest, "in_RETIRE_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_WRITE_RD"          );
836//             if (_param->_have_port_front_end_id)
837//             COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_"+toString(j)+            "_FRONT_END_ID"      ,
838//                                      dest, "in_RETIRE_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_FRONT_END_ID"      );
839//             COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RD_PHY_OLD",
840//                                      dest, "in_RETIRE_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_NUM_REG_RD_PHY_OLD");
841//             COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RD_PHY_NEW",
842//                                      dest, "in_RETIRE_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_NUM_REG_RD_PHY_NEW");
843//             COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_"+toString(j)+            "_WRITE_RE"          ,
844//                                      dest, "in_RETIRE_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_WRITE_RE"          );
845//             COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RE_PHY_OLD",
846//                                      dest, "in_RETIRE_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_NUM_REG_RE_PHY_OLD");
847//             COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RE_PHY_NEW",
848//                                      dest, "in_RETIRE_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_NUM_REG_RE_PHY_NEW");
849//             COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_"+toString(j)+            "_EVENT_STATE"       ,
850//                                      dest, "in_RETIRE_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_EVENT_STATE"       );
851
852
853            //  out_RETIRE_VAL                       - component_rename_unit
854            //   in_RETIRE_ACK                       - component_rename_unit
855            //  out_RETIRE_WRITE_RD                  - component_rename_unit
856            //  out_RETIRE_FRONT_END_ID              - component_rename_unit
857            //  out_RETIRE_NUM_REG_RD_PHY_OLD        - component_rename_unit
858            //  out_RETIRE_NUM_REG_RD_PHY_NEW        - component_rename_unit
859            //  out_RETIRE_WRITE_RE                  - component_rename_unit
860            //  out_RETIRE_NUM_REG_RE_PHY_OLD        - component_rename_unit
861            //  out_RETIRE_NUM_REG_RE_PHY_NEW        - component_rename_unit
862   
863            //  out_RETIRE_CONTEXT_ID                - component_rename_unit
864            ////out_RETIRE_RENAME_UNIT_ID            - component_rename_unit
865            //  out_RETIRE_USE_STORE_QUEUE           - component_rename_unit
866            //  out_RETIRE_USE_LOAD_QUEUE            - component_rename_unit
867            //  out_RETIRE_STORE_QUEUE_PTR_WRITE     - component_rename_unit
868            //  out_RETIRE_LOAD_QUEUE_PTR_WRITE      - component_rename_unit
869            //  out_RETIRE_READ_RA                   - component_rename_unit
870            //  out_RETIRE_NUM_REG_RA_PHY            - component_rename_unit
871            //  out_RETIRE_READ_RB                   - component_rename_unit
872            //  out_RETIRE_NUM_REG_RB_PHY            - component_rename_unit
873            //  out_RETIRE_READ_RC                   - component_rename_unit
874            //  out_RETIRE_NUM_REG_RC_PHY            - component_rename_unit
875            //  out_RETIRE_NUM_REG_RD_LOG            - component_rename_unit
876            //  out_RETIRE_NUM_REG_RE_LOG            - component_rename_unit
877          }
878     
879      // ~~~~~[ Interface "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       
880        // out_RETIRE_VAL         - rename_unit.out_RETIRE_VAL       
881        //  in_RETIRE_ACK         - rename_unit. in_RETIRE_ACK       
882        // out_RETIRE_EVENT_STATE - rename_unit.out_RETIRE_EVENT_STATE
883        // out_RETIRE_EVENT_FLUSH - rename_unit.out_RETIRE_EVENT_FLUSH
884        // out_RETIRE_EVENT_STOP  - rename_unit.out_RETIRE_EVENT_STOP
885 
886
887      // ~~~~~[ Interface : "commit" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       
888      for (uint32_t i=0; i<_param->_nb_inst_commit; i++)
889        {
890          dest = _name+"_reexecute_unit";
891#ifdef POSITION
892          _component->interface_map (src ,"commit_"+toString(i),
893                                     dest,"commit_"+toString(i));
894#endif
895       
896          COMPONENT_MAP(_component,src , "in_COMMIT_"+toString(i)+"_VAL"        ,
897                                   dest,"out_COMMIT_"+toString(i)+"_VAL"        );
898          COMPONENT_MAP(_component,src ,"out_COMMIT_"+toString(i)+"_ACK"        ,
899                                   dest, "in_COMMIT_"+toString(i)+"_ACK"        );
900          COMPONENT_MAP(_component,src , "in_COMMIT_"+toString(i)+"_WEN"        ,
901                                   dest,"out_COMMIT_"+toString(i)+"_WEN"        );
902//        if (_param->_have_port_context_id)
903//        COMPONENT_MAP(_component,src , "in_COMMIT_"+toString(i)+"_CONTEXT_ID"  ,
904//                                 dest,"out_COMMIT_"+toString(i)+"_CONTEXT_ID"  );
905//        if (_param->_have_port_front_end_id)
906//        COMPONENT_MAP(_component,src , "in_COMMIT_"+toString(i)+"_FRONT_END_ID",
907//                                 dest,"out_COMMIT_"+toString(i)+"_FRONT_END_ID");
908          if (_param->_have_port_rob_ptr)
909          COMPONENT_MAP(_component,src , "in_COMMIT_"+toString(i)+"_PACKET_ID"  ,
910                                   dest,"out_COMMIT_"+toString(i)+"_PACKET_ID"  );
911//        COMPONENT_MAP(_component,src , "in_COMMIT_"+toString(i)+"_OPERATION"  ,
912//                                 dest,"out_COMMIT_"+toString(i)+"_OPERATION"  );
913//        COMPONENT_MAP(_component,src , "in_COMMIT_"+toString(i)+"_TYPE"       ,
914//                                 dest,"out_COMMIT_"+toString(i)+"_TYPE"       );
915          COMPONENT_MAP(_component,src , "in_COMMIT_"+toString(i)+"_FLAGS"      ,
916                                   dest,"out_COMMIT_"+toString(i)+"_FLAGS"      );
917          COMPONENT_MAP(_component,src , "in_COMMIT_"+toString(i)+"_EXCEPTION"  ,
918                                   dest,"out_COMMIT_"+toString(i)+"_EXCEPTION"  );
919          COMPONENT_MAP(_component,src , "in_COMMIT_"+toString(i)+"_NO_SEQUENCE",
920                                   dest,"out_COMMIT_"+toString(i)+"_NO_SEQUENCE");
921          COMPONENT_MAP(_component,src , "in_COMMIT_"+toString(i)+"_ADDRESS"    ,
922                                   dest,"out_COMMIT_"+toString(i)+"_ADDRESS"    );
923          COMPONENT_MAP(_component,src ,"out_COMMIT_"+toString(i)+"_NUM_REG_RD" ,
924                                   dest, "in_COMMIT_"+toString(i)+"_NUM_REG_RD" );
925          //@@@@@@@@@@
926        }
927     
928      // ~~~~~[ Interface : "reexecute" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       
929      for (uint32_t i=0; i<_param->_nb_inst_reexecute; i++)
930        {
931          dest = _name+"_reexecute_unit";
932#ifdef POSITION
933          _component->interface_map (src ,"reexecute_"    +toString(i),
934                                     dest,"reexecute_rob_"+toString(i));
935#endif
936
937          COMPONENT_MAP(_component,src ,"out_REEXECUTE_"    +toString(i)+"_VAL"                  ,
938                                   dest, "in_REEXECUTE_ROB_"+toString(i)+"_VAL"                  );
939          COMPONENT_MAP(_component,src , "in_REEXECUTE_"    +toString(i)+"_ACK"                  ,
940                                   dest,"out_REEXECUTE_ROB_"+toString(i)+"_ACK"                  );
941          if (_param->_have_port_front_end_id)
942          COMPONENT_MAP(_component,src ,"out_REEXECUTE_"    +toString(i)+"_FRONT_END_ID"         ,
943                                   dest, "in_REEXECUTE_ROB_"+toString(i)+"_FRONT_END_ID"         );
944          if (_param->_have_port_context_id)
945          COMPONENT_MAP(_component,src ,"out_REEXECUTE_"    +toString(i)+"_CONTEXT_ID"           ,
946                                   dest, "in_REEXECUTE_ROB_"+toString(i)+"_CONTEXT_ID"           );
947          if (_param->_have_port_rob_ptr)
948          COMPONENT_MAP(_component,src ,"out_REEXECUTE_"    +toString(i)+"_PACKET_ID"            ,
949                                   dest, "in_REEXECUTE_ROB_"+toString(i)+"_PACKET_ID"            );
950          COMPONENT_MAP(_component,src ,"out_REEXECUTE_"    +toString(i)+"_OPERATION"            ,
951                                   dest, "in_REEXECUTE_ROB_"+toString(i)+"_OPERATION"            );
952          COMPONENT_MAP(_component,src ,"out_REEXECUTE_"    +toString(i)+"_TYPE"                 ,
953                                   dest, "in_REEXECUTE_ROB_"+toString(i)+"_TYPE"                 );
954          COMPONENT_MAP(_component,src ,"out_REEXECUTE_"    +toString(i)+"_STORE_QUEUE_PTR_WRITE",
955                                   dest, "in_REEXECUTE_ROB_"+toString(i)+"_STORE_QUEUE_PTR_WRITE");
956        }
957                                                                           
958      // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       
959      for (uint32_t i=0; i<_param->_nb_inst_branch_complete; i++)
960        {
961          dest = _name;
962#ifdef POSITION
963          _component->interface_map (src ,"branch_complete_"+toString(i),
964                                     dest,"branch_complete_"+toString(i));
965#endif
966
967          PORT_MAP(_component,src ,"out_BRANCH_COMPLETE_"+toString(i)+"_VAL"            ,
968                              dest,"out_BRANCH_COMPLETE_"+toString(i)+"_VAL"            );
969          PORT_MAP(_component,src , "in_BRANCH_COMPLETE_"+toString(i)+"_ACK"            ,
970                              dest, "in_BRANCH_COMPLETE_"+toString(i)+"_ACK"            );
971          if (_param->_have_port_front_end_id)
972          PORT_MAP(_component,src ,"out_BRANCH_COMPLETE_"+toString(i)+"_FRONT_END_ID"   ,
973                              dest,"out_BRANCH_COMPLETE_"+toString(i)+"_FRONT_END_ID"   );
974          if (_param->_have_port_context_id)
975          PORT_MAP(_component,src ,"out_BRANCH_COMPLETE_"+toString(i)+"_CONTEXT_ID"     ,
976                              dest,"out_BRANCH_COMPLETE_"+toString(i)+"_CONTEXT_ID"     );
977          if (_param->_have_port_depth)
978          PORT_MAP(_component,src ,"out_BRANCH_COMPLETE_"+toString(i)+"_DEPTH"          ,
979                              dest,"out_BRANCH_COMPLETE_"+toString(i)+"_DEPTH"          );
980          PORT_MAP(_component,src ,"out_BRANCH_COMPLETE_"+toString(i)+"_ADDRESS"        ,
981                              dest,"out_BRANCH_COMPLETE_"+toString(i)+"_ADDRESS"        );
982          PORT_MAP(_component,src ,"out_BRANCH_COMPLETE_"+toString(i)+"_NO_SEQUENCE"    ,
983                              dest,"out_BRANCH_COMPLETE_"+toString(i)+"_NO_SEQUENCE"    );
984          PORT_MAP(_component,src , "in_BRANCH_COMPLETE_"+toString(i)+"_MISS_PREDICTION",
985                              dest, "in_BRANCH_COMPLETE_"+toString(i)+"_MISS_PREDICTION");
986        }
987                                                                                   
988      // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
989      {
990        dest = _name;
991#ifdef POSITION
992        _component->interface_map (src ,"update",
993                                   dest,"commit_event");
994#endif
995
996        PORT_MAP(_component,src ,"out_UPDATE_VAL"             ,dest,"out_COMMIT_EVENT_VAL"             );
997        PORT_MAP(_component,src , "in_UPDATE_ACK"             ,dest, "in_COMMIT_EVENT_ACK"             );
998        if (_param->_have_port_front_end_id)
999        PORT_MAP(_component,src ,"out_UPDATE_FRONT_END_ID"    ,dest,"out_COMMIT_EVENT_FRONT_END_ID"    );
1000        if (_param->_have_port_context_id)
1001        PORT_MAP(_component,src ,"out_UPDATE_CONTEXT_ID"      ,dest,"out_COMMIT_EVENT_CONTEXT_ID"      );
1002        if (_param->_have_port_depth)
1003        PORT_MAP(_component,src ,"out_UPDATE_DEPTH"           ,dest,"out_COMMIT_EVENT_DEPTH"           );
1004        PORT_MAP(_component,src ,"out_UPDATE_TYPE"            ,dest,"out_COMMIT_EVENT_TYPE"            );
1005        PORT_MAP(_component,src ,"out_UPDATE_IS_DELAY_SLOT"   ,dest,"out_COMMIT_EVENT_IS_DELAY_SLOT"   );
1006        PORT_MAP(_component,src ,"out_UPDATE_ADDRESS"         ,dest,"out_COMMIT_EVENT_ADDRESS"         );
1007        PORT_MAP(_component,src ,"out_UPDATE_ADDRESS_EPCR_VAL",dest,"out_COMMIT_EVENT_ADDRESS_EPCR_VAL");
1008        PORT_MAP(_component,src ,"out_UPDATE_ADDRESS_EPCR"    ,dest,"out_COMMIT_EVENT_ADDRESS_EPCR"    );
1009        PORT_MAP(_component,src ,"out_UPDATE_ADDRESS_EEAR_VAL",dest,"out_COMMIT_EVENT_ADDRESS_EEAR_VAL");
1010        PORT_MAP(_component,src ,"out_UPDATE_ADDRESS_EEAR"    ,dest,"out_COMMIT_EVENT_ADDRESS_EEAR"    );
1011      }
1012
1013      // ~~~~~[ Interface "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1014      for (uint32_t i=0; i<_param->_nb_front_end; i++)
1015        for (uint32_t j=0; j<_param->_nb_context[i]; j++)
1016          {
1017            dest = _name;
1018#ifdef POSITION
1019            _component->interface_map (src ,"event_"+toString(i)+"_"+toString(j),
1020                                       dest,"event_"+toString(i)+"_"+toString(j));
1021#endif
1022           
1023            PORT_MAP(_component,src , "in_EVENT_"+toString(i)+"_"+toString(j)+"_VAL"             ,
1024                                dest, "in_EVENT_"+toString(i)+"_"+toString(j)+"_VAL"             );
1025            PORT_MAP(_component,src ,"out_EVENT_"+toString(i)+"_"+toString(j)+"_ACK"             ,
1026                                dest,"out_EVENT_"+toString(i)+"_"+toString(j)+"_ACK"             );
1027            PORT_MAP(_component,src , "in_EVENT_"+toString(i)+"_"+toString(j)+"_ADDRESS"         ,
1028                                dest, "in_EVENT_"+toString(i)+"_"+toString(j)+"_ADDRESS"         );
1029            PORT_MAP(_component,src , "in_EVENT_"+toString(i)+"_"+toString(j)+"_ADDRESS_NEXT"    ,
1030                                dest, "in_EVENT_"+toString(i)+"_"+toString(j)+"_ADDRESS_NEXT"    ); 
1031            PORT_MAP(_component,src , "in_EVENT_"+toString(i)+"_"+toString(j)+"_ADDRESS_NEXT_VAL",
1032                                dest, "in_EVENT_"+toString(i)+"_"+toString(j)+"_ADDRESS_NEXT_VAL");
1033            PORT_MAP(_component,src , "in_EVENT_"+toString(i)+"_"+toString(j)+"_IS_DS_TAKE"      ,
1034                                dest, "in_EVENT_"+toString(i)+"_"+toString(j)+"_IS_DS_TAKE"      );
1035          }
1036                                                                                   
1037      // ~~~~~[ Interface : "nb_inst" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       
1038      for (uint32_t i=0; i<_param->_nb_front_end; i++)
1039        for (uint32_t j=0; j<_param->_nb_context[i]; j++)
1040          {
1041            dest = _name;
1042#ifdef POSITION
1043            _component->interface_map (src ,"nb_inst_"+toString(i)+"_"+toString(j),
1044                                       dest,"nb_inst_"+toString(i)+"_"+toString(j));
1045#endif
1046
1047            PORT_MAP(_component,src ,"out_NB_INST_"+toString(i)+"_"+toString(j)+"_COMMIT_ALL",
1048                                dest,"out_NB_INST_"+toString(i)+"_"+toString(j)+"_COMMIT_ALL");
1049            PORT_MAP(_component,src ,"out_NB_INST_"+toString(i)+"_"+toString(j)+"_COMMIT_MEM",
1050                                dest,"out_NB_INST_"+toString(i)+"_"+toString(j)+"_COMMIT_MEM");
1051            PORT_MAP(_component,src , "in_NB_INST_"+toString(i)+"_"+toString(j)+"_DECOD_ALL" ,
1052                                dest, "in_NB_INST_"+toString(i)+"_"+toString(j)+"_DECOD_ALL" );
1053          }
1054
1055      // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       
1056      for (uint32_t i=0; i<_param->_nb_front_end; i++)
1057        for (uint32_t j=0; j<_param->_nb_context[i]; j++)
1058          {
1059            dest = _name;
1060#ifdef POSITION
1061            _component->interface_map (src ,"depth_"+toString(i)+"_"+toString(j),
1062                                       dest,"depth_"+toString(i)+"_"+toString(j));
1063#endif
1064
1065            if (_param->_have_port_depth)
1066              {
1067            PORT_MAP(_component,src , "in_DEPTH_"+toString(i)+"_"+toString(j)+"_MIN",
1068                                dest, "in_DEPTH_"+toString(i)+"_"+toString(j)+"_MIN");
1069            PORT_MAP(_component,src , "in_DEPTH_"+toString(i)+"_"+toString(j)+"_MAX",
1070                                dest, "in_DEPTH_"+toString(i)+"_"+toString(j)+"_MAX");
1071              }
1072            PORT_MAP(_component,src , "in_DEPTH_"+toString(i)+"_"+toString(j)+"_FULL",
1073                                dest, "in_DEPTH_"+toString(i)+"_"+toString(j)+"_FULL");
1074          }
1075
1076      // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1077      for (uint32_t i=0; i<_param->_nb_front_end; i++)
1078        for (uint32_t j=0; j<_param->_nb_context[i]; j++)
1079          {
1080            dest = _name+"_glue";
1081           
1082#ifdef POSITION
1083            _component->interface_map (src ,"spr_read_"+toString(i)+"_"+toString(j),
1084                                       dest,"spr_"     +toString(i)+"_"+toString(j));
1085#endif
1086
1087            COMPONENT_MAP(_component,src , "in_SPR_READ_"+toString(i)+"_"+toString(j)+            "_SR_OVE",
1088                                     dest,"out_SPR_"     +toString(i)+"_"+toString(j)+"_COMMIT_UNIT_SR_OVE");
1089          }
1090
1091      // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1092      for (uint32_t i=0; i<_param->_nb_front_end; i++)
1093        for (uint32_t j=0; j<_param->_nb_context[i]; j++)
1094          {
1095            dest = _name+"_special_register_unit";
1096#ifdef POSITION
1097            _component->interface_map (src ,"spr_write_" +toString(i)+"_"+toString(j),
1098                                       dest,"spr_commit_"+toString(i)+"_"+toString(j));
1099#endif
1100
1101            COMPONENT_MAP(_component,src ,"out_SPR_WRITE_" +toString(i)+"_"+toString(j)+"_VAL"      ,
1102                                     dest, "in_SPR_COMMIT_"+toString(i)+"_"+toString(j)+"_VAL"      );
1103            COMPONENT_MAP(_component,src , "in_SPR_WRITE_" +toString(i)+"_"+toString(j)+"_ACK"      ,
1104                                     dest,"out_SPR_COMMIT_"+toString(i)+"_"+toString(j)+"_ACK"      );
1105            COMPONENT_MAP(_component,src ,"out_SPR_WRITE_" +toString(i)+"_"+toString(j)+"_SR_F_VAL" ,
1106                                     dest, "in_SPR_COMMIT_"+toString(i)+"_"+toString(j)+"_SR_F_VAL" );
1107            COMPONENT_MAP(_component,src ,"out_SPR_WRITE_" +toString(i)+"_"+toString(j)+"_SR_F"     ,
1108                                     dest, "in_SPR_COMMIT_"+toString(i)+"_"+toString(j)+"_SR_F"     );
1109            COMPONENT_MAP(_component,src ,"out_SPR_WRITE_" +toString(i)+"_"+toString(j)+"_SR_CY_VAL",
1110                                     dest, "in_SPR_COMMIT_"+toString(i)+"_"+toString(j)+"_SR_CY_VAL");
1111            COMPONENT_MAP(_component,src ,"out_SPR_WRITE_" +toString(i)+"_"+toString(j)+"_SR_CY"    ,
1112                                     dest, "in_SPR_COMMIT_"+toString(i)+"_"+toString(j)+"_SR_CY"    );
1113            COMPONENT_MAP(_component,src ,"out_SPR_WRITE_" +toString(i)+"_"+toString(j)+"_SR_OV_VAL",
1114                                     dest, "in_SPR_COMMIT_"+toString(i)+"_"+toString(j)+"_SR_OV_VAL");
1115            COMPONENT_MAP(_component,src ,"out_SPR_WRITE_" +toString(i)+"_"+toString(j)+"_SR_OV"    ,
1116                                     dest, "in_SPR_COMMIT_"+toString(i)+"_"+toString(j)+"_SR_OV"    );
1117          }
1118    }
1119
1120    // ===================================================================
1121    // =====[ issue_queue ]===============================================
1122    // ===================================================================
1123    {
1124      src = _name+"_issue_queue";
1125      log_printf(TRACE,OOO_Engine,FUNCTION,_("Instance : %s"),name.c_str());
1126           
1127      {
1128        dest = _name;
1129#ifdef POSITION
1130        _component->interface_map (src ,"",
1131                                   dest,"");
1132#endif
1133        PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
1134        PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
1135      }
1136
1137      // ~~~~~[ Interface : "issue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1138      for (uint32_t i=0; i<_param->_nb_rename_unit; ++i)
1139        for (uint32_t j=0; j<_param->_nb_inst_insert[i]; j++)
1140          {
1141            dest = _name+"_glue";
1142#ifdef POSITION
1143            _component->interface_map (src ,"issue_in_"+toString(i)+"_"+toString(j),
1144                                       dest,"insert_"  +toString(i)+"_"+toString(j));
1145#endif
1146
1147            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_VAL"                  ,
1148                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_VAL"                  );
1149            COMPONENT_MAP(_component,src ,"out_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_ACK"                  ,
1150                                     dest, "in_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_ACK"                  );
1151            if (_param->_have_port_context_id)
1152            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_CONTEXT_ID"           ,
1153                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_CONTEXT_ID"           );
1154            if (_param->_have_port_front_end_id)
1155            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_FRONT_END_ID"         ,
1156                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_FRONT_END_ID"         );
1157            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_OPERATION"            ,
1158                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_OPERATION"            );
1159            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_TYPE"                 ,
1160                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_TYPE"                 );
1161            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_STORE_QUEUE_PTR_WRITE",
1162                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_STORE_QUEUE_PTR_WRITE");
1163            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_STORE_QUEUE_PTR_READ" ,
1164                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_STORE_QUEUE_PTR_READ" );
1165            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_STORE_QUEUE_EMPTY"    ,
1166                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_STORE_QUEUE_EMPTY"    );
1167            if (_param->_have_port_load_queue_ptr)
1168            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_LOAD_QUEUE_PTR_WRITE" ,
1169                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_LOAD_QUEUE_PTR_WRITE" );
1170            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_HAS_IMMEDIAT"         ,
1171                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_HAS_IMMEDIAT"         );
1172            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_IMMEDIAT"             ,
1173                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_IMMEDIAT"             );
1174            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_READ_RA"              ,
1175                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_READ_RA"              );
1176            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RA"           ,
1177                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_NUM_REG_RA"           );
1178            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_READ_RB"              ,
1179                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_READ_RB"              );
1180            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RB"           ,
1181                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_NUM_REG_RB"           );
1182            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_READ_RC"              ,
1183                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_READ_RC"              );
1184            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RC"           ,
1185                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_NUM_REG_RC"           );
1186            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_WRITE_RD"             ,
1187                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_WRITE_RD"             );
1188            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RD"           ,
1189                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_NUM_REG_RD"           );
1190            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_WRITE_RE"             ,
1191                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_WRITE_RE"             );
1192            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RE"           ,
1193                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_NUM_REG_RE"           );
1194
1195
1196           
1197            //   in_ISSUE_IN_PACKET_ID - component_commit_unit
1198          }
1199
1200      // ~~~~~[ Interface : "reexecute" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1201      for (uint32_t i=0; i<_param->_nb_inst_reexecute; i++)
1202        {
1203          dest = _name+"_reexecute_unit";
1204#ifdef POSITION
1205          _component->interface_map (src ,"reexecute_"+toString(i),
1206                                     dest,"reexecute_"+toString(i));
1207#endif
1208       
1209         
1210          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_VAL"                  ,
1211                                   dest,"out_REEXECUTE_"+toString(i)+"_VAL"                  );
1212          COMPONENT_MAP(_component,src ,"out_REEXECUTE_"+toString(i)+"_ACK"                  ,
1213                                   dest, "in_REEXECUTE_"+toString(i)+"_ACK"                  );
1214          if (_param->_have_port_front_end_id)
1215          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_FRONT_END_ID"         ,
1216                                   dest,"out_REEXECUTE_"+toString(i)+"_FRONT_END_ID"         );
1217          if (_param->_have_port_context_id)
1218          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_CONTEXT_ID"           ,
1219                                   dest,"out_REEXECUTE_"+toString(i)+"_CONTEXT_ID"           );
1220          if (_param->_have_port_rob_ptr)
1221          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_PACKET_ID"            ,
1222                                   dest,"out_REEXECUTE_"+toString(i)+"_PACKET_ID"            );
1223          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_TYPE"                 ,
1224                                   dest,"out_REEXECUTE_"+toString(i)+"_TYPE"                 );
1225          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_OPERATION"            ,
1226                                   dest,"out_REEXECUTE_"+toString(i)+"_OPERATION"            );
1227          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_STORE_QUEUE_PTR_WRITE",
1228                                   dest,"out_REEXECUTE_"+toString(i)+"_STORE_QUEUE_PTR_WRITE");
1229          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_STORE_QUEUE_PTR_READ" ,
1230                                   dest,"out_REEXECUTE_"+toString(i)+"_STORE_QUEUE_PTR_READ" );
1231          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_STORE_QUEUE_EMPTY"    ,
1232                                   dest,"out_REEXECUTE_"+toString(i)+"_STORE_QUEUE_EMPTY"    );
1233          if (_param->_have_port_load_queue_ptr)
1234          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_LOAD_QUEUE_PTR_WRITE" ,
1235                                   dest,"out_REEXECUTE_"+toString(i)+"_LOAD_QUEUE_PTR_WRITE" );
1236          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_HAS_IMMEDIAT"         ,
1237                                   dest,"out_REEXECUTE_"+toString(i)+"_HAS_IMMEDIAT"         );
1238          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_IMMEDIAT"             ,
1239                                   dest,"out_REEXECUTE_"+toString(i)+"_IMMEDIAT"             );
1240          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_READ_RA"              ,
1241                                   dest,"out_REEXECUTE_"+toString(i)+"_READ_RA"              );
1242          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_NUM_REG_RA"           ,
1243                                   dest,"out_REEXECUTE_"+toString(i)+"_NUM_REG_RA"           );
1244          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_READ_RB"              ,
1245                                   dest,"out_REEXECUTE_"+toString(i)+"_READ_RB"              );
1246          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_NUM_REG_RB"           ,
1247                                   dest,"out_REEXECUTE_"+toString(i)+"_NUM_REG_RB"           );
1248          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_READ_RC"              ,
1249                                   dest,"out_REEXECUTE_"+toString(i)+"_READ_RC"              );
1250          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_NUM_REG_RC"           ,
1251                                   dest,"out_REEXECUTE_"+toString(i)+"_NUM_REG_RC"           );
1252          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_WRITE_RD"             ,
1253                                   dest,"out_REEXECUTE_"+toString(i)+"_WRITE_RD"             );
1254          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_NUM_REG_RD"           ,
1255                                   dest,"out_REEXECUTE_"+toString(i)+"_NUM_REG_RD"           );
1256          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_WRITE_RE"             ,
1257                                   dest,"out_REEXECUTE_"+toString(i)+"_WRITE_RE"             );
1258          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_NUM_REG_RE"           ,
1259                                   dest,"out_REEXECUTE_"+toString(i)+"_NUM_REG_RE"           );
1260        }
1261
1262      // ~~~~~[ Interface : "issue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1263      for (uint32_t i=0; i<_param->_nb_inst_issue; i++)
1264        {
1265          dest = _name;
1266         
1267#ifdef POSITION
1268          _component->interface_map (src ,"issue_out_"+toString(i),
1269                                     dest,"issue_"    +toString(i));
1270#endif
1271
1272          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_VAL"                  ,
1273                              dest,"out_ISSUE_"    +toString(i)+"_VAL"                  );
1274          PORT_MAP(_component,src , "in_ISSUE_OUT_"+toString(i)+"_ACK"                  ,
1275                              dest, "in_ISSUE_"    +toString(i)+"_ACK"                  );
1276          if (_param->_have_port_front_end_id)
1277          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_FRONT_END_ID"         ,
1278                              dest,"out_ISSUE_"    +toString(i)+"_FRONT_END_ID"         );
1279          if (_param->_have_port_context_id)
1280          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_CONTEXT_ID"           ,
1281                              dest,"out_ISSUE_"    +toString(i)+"_CONTEXT_ID"           );
1282          if (_param->_have_port_rob_ptr)
1283          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_PACKET_ID"            ,
1284                              dest,"out_ISSUE_"    +toString(i)+"_PACKET_ID"            );
1285          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_TYPE"                 ,
1286                              dest,"out_ISSUE_"    +toString(i)+"_TYPE"                 );
1287          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_OPERATION"            ,
1288                              dest,"out_ISSUE_"    +toString(i)+"_OPERATION"            );
1289          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_STORE_QUEUE_PTR_WRITE",
1290                              dest,"out_ISSUE_"    +toString(i)+"_STORE_QUEUE_PTR_WRITE");
1291          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_STORE_QUEUE_PTR_READ" ,
1292                              dest,"out_ISSUE_"    +toString(i)+"_STORE_QUEUE_PTR_READ" );
1293          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_STORE_QUEUE_EMPTY"    ,
1294                              dest,"out_ISSUE_"    +toString(i)+"_STORE_QUEUE_EMPTY"    );
1295          if (_param->_have_port_load_queue_ptr)
1296          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_LOAD_QUEUE_PTR_WRITE" ,
1297                              dest,"out_ISSUE_"    +toString(i)+"_LOAD_QUEUE_PTR_WRITE" );
1298          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_HAS_IMMEDIAT"         ,
1299                              dest,"out_ISSUE_"    +toString(i)+"_HAS_IMMEDIAT"         );
1300          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_IMMEDIAT"             ,
1301                              dest,"out_ISSUE_"    +toString(i)+"_IMMEDIAT"             );
1302          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_READ_RA"              ,
1303                              dest,"out_ISSUE_"    +toString(i)+"_READ_RA"              );
1304          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_NUM_REG_RA"           ,
1305                              dest,"out_ISSUE_"    +toString(i)+"_NUM_REG_RA"           );
1306          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_READ_RB"              ,
1307                              dest,"out_ISSUE_"    +toString(i)+"_READ_RB"              );
1308          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_NUM_REG_RB"           ,
1309                              dest,"out_ISSUE_"    +toString(i)+"_NUM_REG_RB"           );
1310          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_READ_RC"              ,
1311                              dest,"out_ISSUE_"    +toString(i)+"_READ_RC"              );
1312          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_NUM_REG_RC"           ,
1313                              dest,"out_ISSUE_"    +toString(i)+"_NUM_REG_RC"           );
1314          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_WRITE_RD"             ,
1315                              dest,"out_ISSUE_"    +toString(i)+"_WRITE_RD"             );
1316          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_NUM_REG_RD"           ,
1317                              dest,"out_ISSUE_"    +toString(i)+"_NUM_REG_RD"           );
1318          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_WRITE_RE"             ,
1319                              dest,"out_ISSUE_"    +toString(i)+"_WRITE_RE"             );
1320          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_NUM_REG_RE"           ,
1321                              dest,"out_ISSUE_"    +toString(i)+"_NUM_REG_RE"           );
1322        }
1323    }
1324
1325    // ===================================================================
1326    // =====[ reexecute_unit ]============================================
1327    // ===================================================================
1328    {
1329      src = _name+"_reexecute_unit";
1330      log_printf(TRACE,OOO_Engine,FUNCTION,_("Instance : %s"),name.c_str());
1331           
1332      {
1333        dest = _name;
1334#ifdef POSITION
1335        _component->interface_map (src ,"",
1336                                   dest,"");
1337#endif
1338        PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
1339        PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
1340      }
1341
1342      // ~~~~~[ Interface "execute_loop" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1343      for (uint32_t i=0; i<_param->_nb_execute_loop; i++)
1344        for (uint32_t j=0; j<_param->_nb_inst_execute[i]; j++)
1345          {
1346            dest = _name;
1347#ifdef POSITION
1348            _component->interface_map (src ,"execute_loop_"+toString(i)+"_"+toString(j),
1349                                       dest,"execute_loop_"+toString(i)+"_"+toString(j));
1350#endif
1351
1352            PORT_MAP(_component,src , "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_VAL"         ,
1353                                dest, "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_VAL"         );
1354            PORT_MAP(_component,src ,"out_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_ACK"         ,
1355                                dest,"out_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_ACK"         );
1356            if (_param->_have_port_front_end_id)
1357            PORT_MAP(_component,src , "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_FRONT_END_ID",
1358                                dest, "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_FRONT_END_ID");
1359            if (_param->_have_port_context_id)
1360            PORT_MAP(_component,src , "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_CONTEXT_ID"  ,
1361                                dest, "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_CONTEXT_ID"  );
1362            if (_param->_have_port_rob_ptr)
1363            PORT_MAP(_component,src , "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_PACKET_ID"   ,
1364                                dest, "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_PACKET_ID"   );
1365//          PORT_MAP(_component,src , "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_TYPE"        ,
1366//                              dest, "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_TYPE"        );
1367//          PORT_MAP(_component,src , "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_OPERATION"   ,
1368//                              dest, "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_OPERATION"   );
1369            PORT_MAP(_component,src , "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_FLAGS"       ,
1370                                dest, "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_FLAGS"       );
1371            PORT_MAP(_component,src , "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_EXCEPTION"   ,
1372                                dest, "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_EXCEPTION"   );
1373            PORT_MAP(_component,src , "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_NO_SEQUENCE" ,
1374                                dest, "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_NO_SEQUENCE" );
1375            PORT_MAP(_component,src , "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_ADDRESS"     ,
1376                                dest, "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_ADDRESS"     );
1377            PORT_MAP(_component,src , "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_DATA"        ,
1378                                dest, "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_DATA"        );
1379          }
1380
1381      // ~~~~~[ Interface "commit" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1382      //  out_COMMIT_VAL                           - component_commit_unit
1383      //   in_COMMIT_ACK                           - component_commit_unit
1384      //  out_COMMIT_WEN                           - component_commit_unit
1385      //  out_COMMIT_FRONT_END_ID                  - component_commit_unit
1386      //  out_COMMIT_CONTEXT_ID                    - component_commit_unit
1387      //  out_COMMIT_PACKET_ID                     - component_commit_unit
1388      ////out_COMMIT_OPERATION                     - component_commit_unit
1389      ////out_COMMIT_TYPE                          - component_commit_unit
1390      //  out_COMMIT_FLAGS                         - component_commit_unit
1391      //  out_COMMIT_EXCEPTION                     - component_commit_unit
1392      //  out_COMMIT_NO_SEQUENCE                   - component_commit_unit
1393      //  out_COMMIT_ADDRESS                       - component_commit_unit
1394      //   in_COMMIT_NUM_REG_RD                    - component_commit_unit
1395     
1396      // ~~~~~[ Interface : "spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1397      for (uint32_t i=0; i<_param->_nb_inst_reexecute; i++)
1398        {
1399          dest = _name+"_special_register_unit";
1400#ifdef POSITION
1401          _component->interface_map (src ,"spr_"+toString(i),
1402                                     dest,"spr_"+toString(i));
1403#endif
1404     
1405          COMPONENT_MAP(_component,src ,"out_SPR_"       +toString(i)+"_VAL"         ,
1406                                   dest, "in_SPR_ACCESS_"+toString(i)+"_VAL"         );
1407          COMPONENT_MAP(_component,src , "in_SPR_"       +toString(i)+"_ACK"         ,
1408                                   dest,"out_SPR_ACCESS_"+toString(i)+"_ACK"         );
1409          if (_param->_have_port_front_end_id)
1410          COMPONENT_MAP(_component,src ,"out_SPR_"       +toString(i)+"_FRONT_END_ID",
1411                                   dest, "in_SPR_ACCESS_"+toString(i)+"_FRONT_END_ID");
1412          if (_param->_have_port_context_id)
1413          COMPONENT_MAP(_component,src ,"out_SPR_"       +toString(i)+"_CONTEXT_ID"  ,
1414                                   dest, "in_SPR_ACCESS_"+toString(i)+"_CONTEXT_ID"  );
1415          COMPONENT_MAP(_component,src ,"out_SPR_"       +toString(i)+"_WEN"         ,
1416                                   dest, "in_SPR_ACCESS_"+toString(i)+"_WEN"         );
1417          COMPONENT_MAP(_component,src ,"out_SPR_"       +toString(i)+"_NUM_GROUP"   ,
1418                                   dest, "in_SPR_ACCESS_"+toString(i)+"_NUM_GROUP"   );
1419          COMPONENT_MAP(_component,src ,"out_SPR_"       +toString(i)+"_NUM_REG"     ,
1420                                   dest, "in_SPR_ACCESS_"+toString(i)+"_NUM_REG"     );
1421          COMPONENT_MAP(_component,src ,"out_SPR_"       +toString(i)+"_WDATA"       ,
1422                                   dest, "in_SPR_ACCESS_"+toString(i)+"_WDATA"       );
1423          COMPONENT_MAP(_component,src , "in_SPR_"       +toString(i)+"_RDATA"       ,
1424                                   dest,"out_SPR_ACCESS_"+toString(i)+"_RDATA"       );
1425          COMPONENT_MAP(_component,src , "in_SPR_"       +toString(i)+"_INVALID"     ,
1426                                   dest,"out_SPR_ACCESS_"+toString(i)+"_INVALID"     );
1427        }
1428
1429      // ~~~~~[ Interface : "reexecute_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1430      //   in_REEXECUTE_ROB_VAL                    - component_commit_unit
1431      //  out_REEXECUTE_ROB_ACK                    - component_commit_unit
1432      //   in_REEXECUTE_ROB_FRONT_END_ID           - component_commit_unit
1433      //   in_REEXECUTE_ROB_CONTEXT_ID             - component_commit_unit
1434      //   in_REEXECUTE_ROB_PACKET_ID              - component_commit_unit
1435      //   in_REEXECUTE_ROB_OPERATION              - component_commit_unit
1436      //   in_REEXECUTE_ROB_TYPE                   - component_commit_unit
1437      //   in_REEXECUTE_ROB_STORE_QUEUE_PTR_WRITE  - component_commit_unit
1438
1439      // ~~~~~[ Interface : "reexecute" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1440      //  out_REEXECUTE_VAL                        - component_issue_queue
1441      //   in_REEXECUTE_ACK                        - component_issue_queue
1442      //  out_REEXECUTE_CONTEXT_ID                 - component_issue_queue
1443      //  out_REEXECUTE_FRONT_END_ID               - component_issue_queue
1444      //  out_REEXECUTE_PACKET_ID                  - component_issue_queue
1445      //  out_REEXECUTE_OPERATION                  - component_issue_queue
1446      //  out_REEXECUTE_TYPE                       - component_issue_queue
1447      //  out_REEXECUTE_STORE_QUEUE_PTR_WRITE      - component_issue_queue
1448      //  out_REEXECUTE_LOAD_QUEUE_PTR_WRITE       - component_issue_queue
1449      //  out_REEXECUTE_HAS_IMMEDIAT               - component_issue_queue
1450      //  out_REEXECUTE_IMMEDIAT                   - component_issue_queue
1451      //  out_REEXECUTE_READ_RA                    - component_issue_queue
1452      //  out_REEXECUTE_NUM_REG_RA                 - component_issue_queue
1453      //  out_REEXECUTE_READ_RB                    - component_issue_queue
1454      //  out_REEXECUTE_NUM_REG_RB                 - component_issue_queue
1455      //  out_REEXECUTE_READ_RC                    - component_issue_queue
1456      //  out_REEXECUTE_NUM_REG_RC                 - component_issue_queue
1457      //  out_REEXECUTE_WRITE_RD                   - component_issue_queue
1458      //  out_REEXECUTE_NUM_REG_RD                 - component_issue_queue
1459      //  out_REEXECUTE_WRITE_RE                   - component_issue_queue
1460      //  out_REEXECUTE_NUM_REG_RE                 - component_issue_queue
1461    }
1462
1463    // ===================================================================
1464    // =====[ special_register_unit ]=====================================
1465    // ===================================================================
1466    {
1467      src = _name+"_special_register_unit";
1468      log_printf(TRACE,OOO_Engine,FUNCTION,_("Instance : %s"),name.c_str());
1469           
1470      {
1471        dest = _name;
1472#ifdef POSITION
1473        _component->interface_map (src ,"",
1474                                   dest,"");
1475#endif
1476        PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
1477        PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
1478      }
1479
1480      // ~~~~~[ Interface : "spr_access" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1481      //   in_SPR_ACCESS_VAL          - component_reexecute_unit
1482      //  out_SPR_ACCESS_ACK          - component_reexecute_unit
1483      //   in_SPR_ACCESS_FRONT_END_ID - component_reexecute_unit
1484      //   in_SPR_ACCESS_CONTEXT_ID   - component_reexecute_unit
1485      //   in_SPR_ACCESS_WEN          - component_reexecute_unit
1486      //   in_SPR_ACCESS_NUM_GROUP    - component_reexecute_unit
1487      //   in_SPR_ACCESS_NUM_REG      - component_reexecute_unit
1488      //   in_SPR_ACCESS_WDATA        - component_reexecute_unit
1489      //  out_SPR_ACCESS_RDATA        - component_reexecute_unit
1490      //  out_SPR_ACCESS_INVALID      - component_reexecute_unit
1491     
1492      // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1493      for (uint32_t i=0; i<_param->_nb_front_end; i++)
1494        for (uint32_t j=0; j<_param->_nb_context[i]; j++)
1495          {
1496            dest = _name+"_glue";
1497           
1498#ifdef POSITION
1499            _component->interface_map (src ,"spr_read_"+toString(i)+"_"+toString(j),
1500                                       dest,"spr_"     +toString(i)+"_"+toString(j));
1501#endif
1502
1503            COMPONENT_MAP(_component,src ,"out_SPR_READ_"+toString(i)+"_"+toString(j)+                      "_SR",
1504                                     dest, "in_SPR_"     +toString(i)+"_"+toString(j)+"_SPECIAL_REGISTER_UNIT_SR");
1505          }
1506
1507      // ~~~~~[ Interface : "spr_commit" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1508      //   in_SPR_COMMIT_VAL          - component_commit_unit
1509      //  out_SPR_COMMIT_ACK          - component_commit_unit
1510      //   in_SPR_COMMIT_SR_F_VAL     - component_commit_unit
1511      //   in_SPR_COMMIT_SR_F         - component_commit_unit
1512      //   in_SPR_COMMIT_SR_CY_VAL    - component_commit_unit
1513      //   in_SPR_COMMIT_SR_CY        - component_commit_unit
1514      //   in_SPR_COMMIT_SR_OV_VAL    - component_commit_unit
1515      //   in_SPR_COMMIT_SR_OV        - component_commit_unit
1516
1517      // ~~~~~[ Interface "spr_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1518      for (uint32_t i=0; i<_param->_nb_front_end; i++)
1519        for (uint32_t j=0; j<_param->_nb_context[i]; j++)
1520          {
1521            dest = _name;
1522#ifdef POSITION
1523            _component->interface_map (src ,"spr_event_"+toString(i)+"_"+toString(j),
1524                                       dest,"spr_event_"+toString(i)+"_"+toString(j));
1525#endif
1526
1527            PORT_MAP(_component,src , "in_SPR_EVENT_"+toString(i)+"_"+toString(j)+"_VAL"      ,
1528                                dest, "in_SPR_EVENT_"+toString(i)+"_"+toString(j)+"_VAL"      );
1529            PORT_MAP(_component,src ,"out_SPR_EVENT_"+toString(i)+"_"+toString(j)+"_ACK"      ,
1530                                dest,"out_SPR_EVENT_"+toString(i)+"_"+toString(j)+"_ACK"      );
1531            PORT_MAP(_component,src , "in_SPR_EVENT_"+toString(i)+"_"+toString(j)+"_EPCR"     ,
1532                                dest, "in_SPR_EVENT_"+toString(i)+"_"+toString(j)+"_EPCR"     );
1533            PORT_MAP(_component,src , "in_SPR_EVENT_"+toString(i)+"_"+toString(j)+"_EEAR_WEN" ,
1534                                dest, "in_SPR_EVENT_"+toString(i)+"_"+toString(j)+"_EEAR_WEN" );
1535            PORT_MAP(_component,src , "in_SPR_EVENT_"+toString(i)+"_"+toString(j)+"_EEAR"     ,
1536                                dest, "in_SPR_EVENT_"+toString(i)+"_"+toString(j)+"_EEAR"     );
1537            PORT_MAP(_component,src , "in_SPR_EVENT_"+toString(i)+"_"+toString(j)+"_SR_DSX"   ,
1538                                dest, "in_SPR_EVENT_"+toString(i)+"_"+toString(j)+"_SR_DSX"   );
1539            PORT_MAP(_component,src , "in_SPR_EVENT_"+toString(i)+"_"+toString(j)+"_SR_TO_ESR",
1540                                dest, "in_SPR_EVENT_"+toString(i)+"_"+toString(j)+"_SR_TO_ESR");
1541          }
1542    }
1543
1544    // ===================================================================
1545    // =====[ glue ]======================================================
1546    // ===================================================================
1547    {
1548      src = _name+"_glue";
1549      log_printf(TRACE,OOO_Engine,FUNCTION,_("Instance : %s"),name.c_str());
1550           
1551      {
1552        dest = _name;
1553#ifdef POSITION
1554        _component->interface_map (src ,"",
1555                                   dest,"");
1556#endif
1557        PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
1558        PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
1559      }
1560
1561      // ~~~~~[ Interface : "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1562      for (uint32_t i=0; i<_param->_nb_front_end; i++)
1563        for (uint32_t j=0; j<_param->_nb_inst_decod [i]; j++)
1564          {
1565            dest = _name;
1566#ifdef POSITION
1567            _component->interface_map (src ,"rename_"+toString(i)+"_"+toString(j),
1568                                       dest,"rename_"+toString(i)+"_"+toString(j));
1569#endif
1570           
1571            if (_param->_have_port_front_end_id)
1572            PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_"+toString(j)+"_FRONT_END_ID",
1573                                dest, "in_RENAME_"+toString(i)+"_"+toString(j)+"_FRONT_END_ID");
1574
1575            //  out_RENAME_RENAME_UNIT_FRONT_END_ID              - component_rename_unit
1576          }
1577
1578      // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1579      for (uint32_t i=0; i<_param->_sum_inst_insert; i++)
1580        {
1581          dest = _name;
1582#ifdef POSITION
1583          _component->interface_map (src ,"insert_"+toString(i),
1584                                     dest,"insert_"+toString(i));
1585#endif
1586          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_VAL"       ,
1587                              dest,"out_INSERT_"+toString(i)+"_VAL"       );
1588          PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_ACK"       ,
1589                              dest, "in_INSERT_"+toString(i)+"_ACK"       );
1590          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_RD_USE"    ,
1591                              dest,"out_INSERT_"+toString(i)+"_RD_USE"    );
1592          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_RD_NUM_REG",
1593                              dest,"out_INSERT_"+toString(i)+"_RD_NUM_REG");
1594          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_RE_USE"    ,
1595                              dest,"out_INSERT_"+toString(i)+"_RE_USE"    );
1596          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_RE_NUM_REG",
1597                              dest,"out_INSERT_"+toString(i)+"_RE_NUM_REG");
1598        }
1599
1600      //   in_INSERT_RENAME_UNIT_VAL                       - component_rename_unit
1601      //  out_INSERT_RENAME_UNIT_ACK                       - component_rename_unit
1602      //   in_INSERT_RENAME_UNIT_FRONT_END_ID              - component_rename_unit
1603      //   in_INSERT_RENAME_UNIT_CONTEXT_ID                - component_rename_unit
1604      //   in_INSERT_RENAME_UNIT_TYPE                      - component_rename_unit
1605      //   in_INSERT_RENAME_UNIT_OPERATION                 - component_rename_unit
1606      //   in_INSERT_RENAME_UNIT_NO_EXECUTE                - component_rename_unit
1607      //   in_INSERT_RENAME_UNIT_HAS_IMMEDIAT              - component_rename_unit
1608      //   in_INSERT_RENAME_UNIT_IMMEDIAT                  - component_rename_unit
1609      //   in_INSERT_RENAME_UNIT_STORE_QUEUE_PTR_WRITE     - component_rename_unit
1610      //   in_INSERT_RENAME_UNIT_LOAD_QUEUE_PTR_WRITE      - component_rename_unit
1611      //   in_INSERT_RENAME_UNIT_READ_RA                   - component_rename_unit
1612      //   in_INSERT_RENAME_UNIT_NUM_REG_RA_PHY            - component_rename_unit
1613      //   in_INSERT_RENAME_UNIT_READ_RB                   - component_rename_unit
1614      //   in_INSERT_RENAME_UNIT_NUM_REG_RB_PHY            - component_rename_unit
1615      //   in_INSERT_RENAME_UNIT_READ_RC                   - component_rename_unit
1616      //   in_INSERT_RENAME_UNIT_NUM_REG_RC_PHY            - component_rename_unit
1617      //   in_INSERT_RENAME_UNIT_WRITE_RD                  - component_rename_unit
1618      //   in_INSERT_RENAME_UNIT_NUM_REG_RD_PHY_OLD        - component_rename_unit
1619      //   in_INSERT_RENAME_UNIT_NUM_REG_RD_PHY_NEW        - component_rename_unit
1620      //   in_INSERT_RENAME_UNIT_WRITE_RE                  - component_rename_unit
1621      //   in_INSERT_RENAME_UNIT_NUM_REG_RE_PHY_OLD        - component_rename_unit
1622      //   in_INSERT_RENAME_UNIT_NUM_REG_RE_PHY_NEW        - component_rename_unit
1623      // 
1624      //  out_INSERT_COMMIT_UNIT_VAL                       - component_commit_unit
1625      //   in_INSERT_COMMIT_UNIT_ACK                       - component_commit_unit
1626      //  out_INSERT_COMMIT_UNIT_FRONT_END_ID              - component_commit_unit
1627      //  out_INSERT_COMMIT_UNIT_CONTEXT_ID                - component_commit_unit
1628      ////out_INSERT_COMMIT_UNIT_RENAME_UNIT_ID            - component_commit_unit
1629      //  out_INSERT_COMMIT_UNIT_TYPE                      - component_commit_unit
1630      //  out_INSERT_COMMIT_UNIT_OPERATION                 - component_commit_unit
1631      //  out_INSERT_COMMIT_UNIT_NO_EXECUTE                - component_commit_unit
1632      //  out_INSERT_COMMIT_UNIT_STORE_QUEUE_PTR_WRITE     - component_commit_unit
1633      //  out_INSERT_COMMIT_UNIT_LOAD_QUEUE_PTR_WRITE      - component_commit_unit
1634      //  out_INSERT_COMMIT_UNIT_READ_RA                   - component_commit_unit
1635      //  out_INSERT_COMMIT_UNIT_NUM_REG_RA_PHY            - component_commit_unit
1636      //  out_INSERT_COMMIT_UNIT_READ_RB                   - component_commit_unit
1637      //  out_INSERT_COMMIT_UNIT_NUM_REG_RB_PHY            - component_commit_unit
1638      //  out_INSERT_COMMIT_UNIT_READ_RC                   - component_commit_unit
1639      //  out_INSERT_COMMIT_UNIT_NUM_REG_RC_PHY            - component_commit_unit
1640      //  out_INSERT_COMMIT_UNIT_WRITE_RD                  - component_commit_unit
1641      //  out_INSERT_COMMIT_UNIT_NUM_REG_RD_PHY_OLD        - component_commit_unit
1642      //  out_INSERT_COMMIT_UNIT_NUM_REG_RD_PHY_NEW        - component_commit_unit
1643      //  out_INSERT_COMMIT_UNIT_WRITE_RE                  - component_commit_unit
1644      //  out_INSERT_COMMIT_UNIT_NUM_REG_RE_PHY_OLD        - component_commit_unit
1645      //  out_INSERT_COMMIT_UNIT_NUM_REG_RE_PHY_NEW        - component_commit_unit
1646      // 
1647      //  out_INSERT_ISSUE_QUEUE_VAL                       - component_issue_queue
1648      //   in_INSERT_ISSUE_QUEUE_ACK                       - component_issue_queue
1649      //  out_INSERT_ISSUE_QUEUE_CONTEXT_ID                - component_issue_queue
1650      //  out_INSERT_ISSUE_QUEUE_FRONT_END_ID              - component_issue_queue
1651      //  out_INSERT_ISSUE_QUEUE_OPERATION                 - component_issue_queue
1652      //  out_INSERT_ISSUE_QUEUE_TYPE                      - component_issue_queue
1653      //  out_INSERT_ISSUE_QUEUE_STORE_QUEUE_PTR_WRITE     - component_issue_queue
1654      //  out_INSERT_ISSUE_QUEUE_LOAD_QUEUE_PTR_WRITE      - component_issue_queue
1655      //  out_INSERT_ISSUE_QUEUE_HAS_IMMEDIAT              - component_issue_queue
1656      //  out_INSERT_ISSUE_QUEUE_IMMEDIAT                  - component_issue_queue
1657      //  out_INSERT_ISSUE_QUEUE_READ_RA                   - component_issue_queue
1658      //  out_INSERT_ISSUE_QUEUE_NUM_REG_RA                - component_issue_queue
1659      //  out_INSERT_ISSUE_QUEUE_READ_RB                   - component_issue_queue
1660      //  out_INSERT_ISSUE_QUEUE_NUM_REG_RB                - component_issue_queue
1661      //  out_INSERT_ISSUE_QUEUE_READ_RC                   - component_issue_queue
1662      //  out_INSERT_ISSUE_QUEUE_NUM_REG_RC                - component_issue_queue
1663      //  out_INSERT_ISSUE_QUEUE_WRITE_RD                  - component_issue_queue
1664      //  out_INSERT_ISSUE_QUEUE_NUM_REG_RD                - component_issue_queue
1665      //  out_INSERT_ISSUE_QUEUE_WRITE_RE                  - component_issue_queue
1666      //  out_INSERT_ISSUE_QUEUE_NUM_REG_RE                - component_issue_queue
1667
1668//       // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1669//       for (uint32_t i=0; i<_param->_sum_inst_retire; i++)
1670//         {
1671//           dest = _name;
1672// #ifdef POSITION
1673//           _component->interface_map (src ,"retire_"+toString(i),
1674//                                      dest,"retire_"+toString(i));
1675// #endif
1676
1677//           PORT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_VAL"           ,
1678//                               dest,"out_RETIRE_"+toString(i)+"_VAL"           );
1679//           PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_ACK"           ,
1680//                               dest, "in_RETIRE_"+toString(i)+"_ACK"           );
1681//           PORT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RD_OLD_USE"    ,
1682//                               dest,"out_RETIRE_"+toString(i)+"_RD_OLD_USE"    );
1683//           PORT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RD_OLD_NUM_REG",
1684//                               dest,"out_RETIRE_"+toString(i)+"_RD_OLD_NUM_REG");
1685//           PORT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RD_NEW_USE"    ,
1686//                               dest,"out_RETIRE_"+toString(i)+"_RD_NEW_USE"    );
1687//           PORT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RD_NEW_NUM_REG",
1688//                               dest,"out_RETIRE_"+toString(i)+"_RD_NEW_NUM_REG");
1689//           PORT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RE_OLD_USE"    ,
1690//                               dest,"out_RETIRE_"+toString(i)+"_RE_OLD_USE"    );
1691//           PORT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RE_OLD_NUM_REG",
1692//                               dest,"out_RETIRE_"+toString(i)+"_RE_OLD_NUM_REG");
1693//           PORT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RE_NEW_USE"    ,
1694//                               dest,"out_RETIRE_"+toString(i)+"_RE_NEW_USE"    );
1695//           PORT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RE_NEW_NUM_REG",
1696//                               dest,"out_RETIRE_"+toString(i)+"_RE_NEW_NUM_REG");
1697//         }
1698
1699      //  out_RETIRE_RENAME_UNIT_VAL                       - component_rename_unit
1700      //   in_RETIRE_RENAME_UNIT_ACK                       - component_rename_unit
1701      //  out_RETIRE_RENAME_UNIT_FRONT_END_ID              - component_rename_unit
1702      //  out_RETIRE_RENAME_UNIT_WRITE_RD                  - component_rename_unit
1703      //  out_RETIRE_RENAME_UNIT_NUM_REG_RD_PHY_OLD        - component_rename_unit
1704      //  out_RETIRE_RENAME_UNIT_NUM_REG_RD_PHY_NEW        - component_rename_unit
1705      //  out_RETIRE_RENAME_UNIT_WRITE_RE                  - component_rename_unit
1706      //  out_RETIRE_RENAME_UNIT_NUM_REG_RE_PHY_OLD        - component_rename_unit
1707      //  out_RETIRE_RENAME_UNIT_NUM_REG_RE_PHY_NEW        - component_rename_unit
1708      //  out_RETIRE_RENAME_UNIT_EVENT_STATE               - component_rename_unit
1709
1710      //   in_RETIRE_COMMIT_UNIT_VAL                       - component_commit_unit
1711      //  out_RETIRE_COMMIT_UNIT_ACK                       - component_commit_unit
1712      //   in_RETIRE_COMMIT_UNIT_FRONT_END_ID              - component_commit_unit
1713      //   in_RETIRE_COMMIT_UNIT_WRITE_RD                  - component_commit_unit
1714      //   in_RETIRE_COMMIT_UNIT_NUM_REG_RD_PHY_OLD        - component_commit_unit
1715      //   in_RETIRE_COMMIT_UNIT_NUM_REG_RD_PHY_NEW        - component_commit_unit
1716      //   in_RETIRE_COMMIT_UNIT_WRITE_RE                  - component_commit_unit
1717      //   in_RETIRE_COMMIT_UNIT_NUM_REG_RE_PHY_OLD        - component_commit_unit
1718      //   in_RETIRE_COMMIT_UNIT_NUM_REG_RE_PHY_NEW        - component_commit_unit
1719      //   in_RETIRE_COMMIT_UNIT_EVENT_STATE               - component_commit_unit
1720
1721      // ~~~~~[ Interface : "spr_sr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1722      for (uint32_t i=0; i<_param->_nb_front_end; i++)
1723        for (uint32_t j=0; j<_param->_nb_context [i]; j++)
1724          {
1725            dest = _name;
1726#ifdef POSITION
1727            _component->interface_map (src ,"spr_"+toString(i)+"_"+toString(j),
1728                                       dest,"spr_"+toString(i)+"_"+toString(j));
1729#endif
1730
1731            PORT_MAP(_component,src ,"out_SPR_"+toString(i)+"_"+toString(j)+"_SR_IEE",
1732                                dest,"out_SPR_"+toString(i)+"_"+toString(j)+"_SR_IEE");
1733            PORT_MAP(_component,src ,"out_SPR_"+toString(i)+"_"+toString(j)+"_SR_EPH",
1734                                dest,"out_SPR_"+toString(i)+"_"+toString(j)+"_SR_EPH");
1735
1736            //  out_SPR_RENAME_UNIT_SR                           - component_rename_unit
1737            //  out_SPR_COMMIT_UNIT_SR_OVE                       - component_commit_unit
1738            //   in_SPR_SPECIAL_REGISTER_UNIT_SR                 - component_special_register_unit
1739          }
1740
1741
1742    }
1743
1744    // ~~~~~[ Others ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1745#if DEBUG_OOO_Engine == true
1746       _component->test_map();
1747#endif
1748
1749#ifdef POSITION
1750     if (usage_is_set(_usage,USE_POSITION))
1751       _component->generate_file();
1752#endif
1753
1754     log_end(OOO_Engine,FUNCTION);
1755    };
1756
1757}; // end namespace ooo_engine
1758}; // end namespace multi_ooo_engine
1759}; // end namespace core
1760
1761}; // end namespace behavioural
1762}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.