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

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

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

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