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

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

1) Fix performance
2) add auto generation to SPECINT2000
3) add reset in genMoore and genMealy

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