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

Last change on this file since 139 was 139, checked in by rosiere, 14 years ago
  • Add test for all configuration
  • RAT : add rat scheme (depth_save)
  • Property svn:keywords set to Id
File size: 127.1 KB
Line 
1
2/*
3 * $Id: OOO_Engine_allocation.cpp 139 2010-07-30 14:47:27Z 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//          COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_HAVE_EVENT"    ,
537//                                   dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_HAVE_EVENT"    );
538            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_LAST_EVENT"    ,
539                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_LAST_EVENT"    );
540#ifdef DEBUG
541            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_ADDRESS"       ,
542                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_ADDRESS"       );
543#endif
544            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_ADDRESS_NEXT"  ,
545                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_ADDRESS_NEXT"  );
546            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_EXCEPTION_USE" ,
547                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_EXCEPTION_USE" );
548            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_EXCEPTION"     ,
549                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_EXCEPTION"     );
550#ifdef DEBUG
551            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_NUM_REG_RA_LOG",
552                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_NUM_REG_RA_LOG");
553            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_NUM_REG_RB_LOG",
554                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_NUM_REG_RB_LOG");
555            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_NUM_REG_RC_LOG",
556                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_NUM_REG_RC_LOG");
557#endif
558            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_NUM_REG_RD_LOG",
559                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_NUM_REG_RD_LOG");
560            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_NUM_REG_RE_LOG",
561                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_NUM_REG_RE_LOG");
562
563            dest = _name+"_glue";
564           
565#ifdef POSITION
566            _component->interface_map (src ,"insert_"+toString(j),
567                                       dest,"insert_"+toString(i)+"_"+toString(j));
568#endif
569           
570            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_VAL"                  ,
571                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_VAL"                  );
572            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(j)+                            "_ACK"                  ,
573                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_ACK"                  );
574            if (_param->_have_port_front_end_id)
575            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_FRONT_END_ID"         ,
576                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_FRONT_END_ID"         );
577            if (_param->_have_port_context_id)
578            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_CONTEXT_ID"           ,
579                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_CONTEXT_ID"           );
580            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_TYPE"                 ,
581                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_TYPE"                 );
582            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_OPERATION"            ,
583                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_OPERATION"            );
584            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_NO_EXECUTE"           ,
585                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_NO_EXECUTE"           );
586            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_HAS_IMMEDIAT"         ,
587                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_HAS_IMMEDIAT"         );
588            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_IMMEDIAT"             ,
589                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_IMMEDIAT"             );
590            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_STORE_QUEUE_PTR_WRITE",
591                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_STORE_QUEUE_PTR_WRITE");
592            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_STORE_QUEUE_PTR_READ" ,
593                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_STORE_QUEUE_PTR_READ" );
594            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_STORE_QUEUE_EMPTY"    ,
595                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_STORE_QUEUE_EMPTY"    );
596            if (_param->_have_port_load_queue_ptr)
597            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_LOAD_QUEUE_PTR_WRITE" ,
598                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_LOAD_QUEUE_PTR_WRITE" );
599            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_READ_RA"              ,
600                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_READ_RA"              );
601            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_NUM_REG_RA_PHY"       ,
602                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_NUM_REG_RA_PHY"       );
603            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_READ_RB"              ,
604                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_READ_RB"              );
605            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_NUM_REG_RB_PHY"       ,
606                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_NUM_REG_RB_PHY"       );
607            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_READ_RC"              ,
608                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_READ_RC"              );
609            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_NUM_REG_RC_PHY"       ,
610                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_NUM_REG_RC_PHY"       );
611            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_WRITE_RD"             ,
612                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_WRITE_RD"             );
613            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_NUM_REG_RD_PHY_OLD"   ,
614                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_NUM_REG_RD_PHY_OLD"   );
615            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_NUM_REG_RD_PHY_NEW"   ,
616                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_NUM_REG_RD_PHY_NEW"   );
617            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_WRITE_RE"             ,
618                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_WRITE_RE"             );
619            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_NUM_REG_RE_PHY_OLD"   ,
620                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_NUM_REG_RE_PHY_OLD"   );
621            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)+                            "_NUM_REG_RE_PHY_NEW"   ,
622                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_RENAME_UNIT_NUM_REG_RE_PHY_NEW"   );
623          }
624
625        // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
626        for (uint32_t j=0; j<_param->_nb_inst_retire[i]; j++)
627          {
628            dest = _name+"_commit_unit";
629           
630#ifdef POSITION
631            _component->interface_map (src ,"retire_"+toString(j),
632                                       dest,"retire_"+toString(i)+"_"+toString(j));
633#endif
634
635
636
637            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_VAL"               ,
638                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_VAL"               );
639            COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(j)+                "_ACK"               ,
640                                     dest, "in_RETIRE_"+toString(i)+"_"+toString(j)+"_ACK"               );
641            if (_param->_have_port_front_end_id)
642            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_FRONT_END_ID"      ,
643                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_FRONT_END_ID"      );
644            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_WRITE_RD"          ,
645                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_WRITE_RD"          );
646            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_NUM_REG_RD_PHY_OLD",
647                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RD_PHY_OLD");
648            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_NUM_REG_RD_PHY_NEW",
649                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RD_PHY_NEW");
650            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_WRITE_RE"          ,
651                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_WRITE_RE"          );
652            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_NUM_REG_RE_PHY_OLD",
653                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RE_PHY_OLD");
654            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_NUM_REG_RE_PHY_NEW",
655                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RE_PHY_NEW");
656            if (_param->_have_port_context_id)
657            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_CONTEXT_ID"           ,
658                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_CONTEXT_ID"           );
659//          COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_TYPE"                 ,
660//                                   dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_TYPE"                 );
661//          COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_OPERATION"            ,
662//                                   dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_OPERATION"            );
663            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_USE_STORE_QUEUE"      ,
664                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_USE_STORE_QUEUE"      );
665            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_USE_LOAD_QUEUE"       ,
666                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_USE_LOAD_QUEUE"       );
667            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_STORE_QUEUE_PTR_WRITE",
668                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_STORE_QUEUE_PTR_WRITE");
669            if (_param->_have_port_load_queue_ptr)
670            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_LOAD_QUEUE_PTR_WRITE" ,
671                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_LOAD_QUEUE_PTR_WRITE" );
672//             COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_READ_RA"              ,
673//                                      dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_READ_RA"              );
674//             COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_NUM_REG_RA_PHY"       ,
675//                                      dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RA_PHY"       );
676//             COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_READ_RB"              ,
677//                                      dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_READ_RB"              );
678//             COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_NUM_REG_RB_PHY"       ,
679//                                      dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RB_PHY"       );
680//             COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_READ_RC"              ,
681//                                      dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_READ_RC"              );
682//             COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_NUM_REG_RC_PHY"       ,
683//                                      dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RC_PHY"       );
684            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_NUM_REG_RD_LOG"       ,
685                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RD_LOG"       );
686            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_NUM_REG_RE_LOG"       ,
687                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RE_LOG"       );
688            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_RESTORE"              ,
689                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_RESTORE"              );
690            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_RESTORE_RD_PHY_OLD"   ,
691                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_RESTORE_RD_PHY_OLD"   );
692            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_RESTORE_RE_PHY_OLD"   ,
693                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_RESTORE_RE_PHY_OLD"   );
694          }
695
696        // ~~~~~[ Interface : "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
697        {
698          std::vector<uint32_t>::iterator it = _param->_link_front_end_with_rename_unit[i].begin();
699          uint32_t x = 0;
700          for (uint32_t j=0; j<_param->_nb_front_end; j++)
701            if (j == (*it))
702              {
703                for (uint32_t k=0; k<_param->_nb_context[i]; k++)
704                  {
705                    dest = _name+"_commit_unit";
706                   
707#ifdef POSITION
708                    _component->interface_map (src ,"retire_event_"+toString(x)+"_"+toString(k),
709                                               dest,"retire_event_"+toString(j)+"_"+toString(k));
710#endif
711                    COMPONENT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(x)+"_"+toString(k)+"_VAL",
712                                             dest,"out_RETIRE_EVENT_"+toString(j)+"_"+toString(k)+"_VAL");
713                    COMPONENT_MAP(_component,src ,"out_RETIRE_EVENT_"+toString(x)+"_"+toString(k)+"_ACK",
714                                             dest, "in_RETIRE_EVENT_"+toString(j)+"_"+toString(k)+"_ACK");
715                    COMPONENT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(x)+"_"+toString(k)+"_STATE",
716                                             dest,"out_RETIRE_EVENT_"+toString(j)+"_"+toString(k)+"_STATE");
717//                  COMPONENT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(x)+"_"+toString(k)+"_FLUSH",
718//                                           dest,"out_RETIRE_EVENT_"+toString(j)+"_"+toString(k)+"_FLUSH");
719                    COMPONENT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(x)+"_"+toString(k)+"_STOP",
720                                             dest,"out_RETIRE_EVENT_"+toString(j)+"_"+toString(k)+"_STOP");
721                    if (_param->_rat_scheme[i] == RAT_DEPTH_SAVE)
722                      {
723                    COMPONENT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(x)+"_"+toString(k)+"_TYPE",
724                                             dest,"out_RETIRE_EVENT_"+toString(j)+"_"+toString(k)+"_TYPE");
725                    COMPONENT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(x)+"_"+toString(k)+"_DEPTH",
726                                             dest,"out_RETIRE_EVENT_"+toString(j)+"_"+toString(k)+"_DEPTH");
727                      }
728                  }
729                x++;
730                ++it;
731              }
732        }
733
734        // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
735        {
736          std::vector<uint32_t>::iterator it = _param->_link_front_end_with_rename_unit[i].begin();
737          uint32_t x = 0;
738          for (uint32_t j=0; j<_param->_nb_front_end; j++)
739            if (j == *it)
740              {
741                for (uint32_t k=0; k<_param->_nb_context[j]; k++)
742                  {
743                    dest = _name+"_glue";
744                   
745#ifdef POSITION
746                    _component->interface_map (src ,"spr_read_"+toString(x)+"_"+toString(k),
747                                               dest,"spr_"     +toString(j)+"_"+toString(k));
748#endif
749
750                    COMPONENT_MAP(_component,src , "in_SPR_READ_"+toString(x)+"_"+toString(k)+            "_SR",
751                                             dest,"out_SPR_"     +toString(j)+"_"+toString(k)+"_RENAME_UNIT_SR");
752                  }
753                x++;
754                ++it;
755              }
756        }
757
758        // ~~~~~[ Interface : "info" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
759#ifdef DEBUG_TEST
760        {
761          dest = _name+"_commit_unit";
762                   
763#ifdef POSITION
764          _component->interface_map (src ,"info",
765                                     dest,"info");
766#endif
767          COMPONENT_MAP(_component,src , "in_INFO_ROB_EMPTY",
768                                   dest,"out_INFO_ROB_EMPTY");
769        }
770#endif
771      }
772
773    // ===================================================================
774    // =====[ commit_unit ]===============================================
775    // ===================================================================
776    {
777      src = _name+"_commit_unit";
778      log_printf(TRACE,OOO_Engine,FUNCTION,_("<%s> : Instance : %s"),_name.c_str(),src.c_str());
779           
780      {
781        dest = _name;
782#ifdef POSITION
783        _component->interface_map (src ,"",
784                                   dest,"");
785#endif
786        PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
787        PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
788      }
789
790      // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
791      for (uint32_t i=0; i<_param->_nb_rename_unit; ++i)
792        for (uint32_t j=0; j<_param->_nb_inst_insert[i]; j++)
793          {
794            dest = _name+"_glue";
795#ifdef POSITION
796            _component->interface_map (src ,"insert_"+toString(i)+"_"+toString(j),
797                                       dest,"insert_"+toString(i)+"_"+toString(j));
798#endif
799           
800            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_VAL"                  ,
801                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_VAL"                  );
802            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_"+toString(j)+            "_ACK"                  ,
803                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_ACK"                  );
804            if (_param->_have_port_front_end_id)
805            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_FRONT_END_ID"         ,
806                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_FRONT_END_ID"         );
807            if (_param->_have_port_context_id)
808            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_CONTEXT_ID"           ,
809                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_CONTEXT_ID"           );
810//          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_RENAME_UNIT_ID"       ,
811//                                   dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_RENAME_UNIT_ID"       );
812            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_TYPE"                 ,
813                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_TYPE"                 );
814            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_OPERATION"            ,
815                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_OPERATION"            );
816            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_NO_EXECUTE"           ,
817                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_NO_EXECUTE"           );
818            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_STORE_QUEUE_PTR_WRITE",
819                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_STORE_QUEUE_PTR_WRITE");
820            if (_param->_have_port_load_queue_ptr)
821            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_LOAD_QUEUE_PTR_WRITE" ,
822                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_LOAD_QUEUE_PTR_WRITE" );
823#ifdef DEBUG
824            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_READ_RA"              ,
825                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_READ_RA"              );
826            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RA_PHY"       ,
827                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_NUM_REG_RA_PHY"       );
828#endif
829            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_READ_RB"              ,
830                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_READ_RB"              );
831#ifdef DEBUG
832            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RB_PHY"       ,
833                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_NUM_REG_RB_PHY"       );
834            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_READ_RC"              ,
835                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_READ_RC"              );
836            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RC_PHY"       ,
837                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_NUM_REG_RC_PHY"       );
838#endif
839            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_WRITE_RD"             ,
840                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_WRITE_RD"             );
841            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RD_PHY_OLD"   ,
842                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_NUM_REG_RD_PHY_OLD"   );
843            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RD_PHY_NEW"   ,
844                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_NUM_REG_RD_PHY_NEW"   );
845            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_WRITE_RE"             ,
846                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_WRITE_RE"             );
847            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RE_PHY_OLD"   ,
848                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_NUM_REG_RE_PHY_OLD"   );
849            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RE_PHY_NEW"   ,
850                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_NUM_REG_RE_PHY_NEW"   );
851           
852            dest = _name+"_issue_queue";
853#ifdef POSITION
854            _component->interface_map (src ,"insert_"  +toString(i)+"_"+toString(j),
855                                       dest,"issue_in_"+toString(i)+"_"+toString(j));
856#endif
857           
858            if (_param->_have_port_rob_ptr)
859            COMPONENT_MAP(_component,src ,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_PACKET_ID",
860                                     dest, "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+"_PACKET_ID");
861
862            //    in_INSERT_DEPTH          - component_rename_unit
863            //    in_INSERT_ADDRESS        - component_rename_unit
864            //    in_INSERT_ADDRESS_NEXT   - component_rename_unit
865            //    in_INSERT_EXCEPTION_USE  - component_rename_unit
866            //    in_INSERT_EXCEPTION      - component_rename_unit
867            //    in_INSERT_NUM_REG_RA_LOG - component_rename_unit
868            //    in_INSERT_NUM_REG_RB_LOG - component_rename_unit
869            //    in_INSERT_NUM_REG_RC_LOG - component_rename_unit
870            //    in_INSERT_NUM_REG_RD_LOG - component_rename_unit
871            //    in_INSERT_NUM_REG_RE_LOG - component_rename_unit
872            //    in_INSERT_IS_DELAY_SLOT  - component_rename_unit
873          }
874                                                                                   
875      // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       
876      for (uint32_t i=0; i<_param->_nb_rename_unit; ++i)
877        for (uint32_t j=0; j<_param->_nb_inst_retire [i]; j++)
878          {
879//             dest = _name+"_glue";
880           
881// #ifdef POSITION
882//             _component->interface_map (src ,"retire_"+toString(i)+"_"+toString(j),
883//                                        dest,"retire_"+toString(i)+"_"+toString(j));
884// #endif
885
886//             COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_"+toString(j)+            "_VAL"               ,
887//                                      dest, "in_RETIRE_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_VAL"               );
888//             COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_"+toString(j)+            "_ACK"               ,
889//                                      dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_ACK"               );
890//             COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_"+toString(j)+            "_WRITE_RD"          ,
891//                                      dest, "in_RETIRE_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_WRITE_RD"          );
892//             if (_param->_have_port_front_end_id)
893//             COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_"+toString(j)+            "_FRONT_END_ID"      ,
894//                                      dest, "in_RETIRE_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_FRONT_END_ID"      );
895//             COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RD_PHY_OLD",
896//                                      dest, "in_RETIRE_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_NUM_REG_RD_PHY_OLD");
897//             COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RD_PHY_NEW",
898//                                      dest, "in_RETIRE_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_NUM_REG_RD_PHY_NEW");
899//             COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_"+toString(j)+            "_WRITE_RE"          ,
900//                                      dest, "in_RETIRE_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_WRITE_RE"          );
901//             COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RE_PHY_OLD",
902//                                      dest, "in_RETIRE_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_NUM_REG_RE_PHY_OLD");
903//             COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RE_PHY_NEW",
904//                                      dest, "in_RETIRE_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_NUM_REG_RE_PHY_NEW");
905//             COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_"+toString(j)+            "_EVENT_STATE"       ,
906//                                      dest, "in_RETIRE_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_EVENT_STATE"       );
907
908
909            //  out_RETIRE_VAL                       - component_rename_unit
910            //   in_RETIRE_ACK                       - component_rename_unit
911            //  out_RETIRE_WRITE_RD                  - component_rename_unit
912            //  out_RETIRE_FRONT_END_ID              - component_rename_unit
913            //  out_RETIRE_NUM_REG_RD_PHY_OLD        - component_rename_unit
914            //  out_RETIRE_NUM_REG_RD_PHY_NEW        - component_rename_unit
915            //  out_RETIRE_WRITE_RE                  - component_rename_unit
916            //  out_RETIRE_NUM_REG_RE_PHY_OLD        - component_rename_unit
917            //  out_RETIRE_NUM_REG_RE_PHY_NEW        - component_rename_unit
918   
919            //  out_RETIRE_CONTEXT_ID                - component_rename_unit
920            ////out_RETIRE_RENAME_UNIT_ID            - component_rename_unit
921            //  out_RETIRE_USE_STORE_QUEUE           - component_rename_unit
922            //  out_RETIRE_USE_LOAD_QUEUE            - component_rename_unit
923            //  out_RETIRE_STORE_QUEUE_PTR_WRITE     - component_rename_unit
924            //  out_RETIRE_LOAD_QUEUE_PTR_WRITE      - component_rename_unit
925            //  out_RETIRE_READ_RA                   - component_rename_unit
926            //  out_RETIRE_NUM_REG_RA_PHY            - component_rename_unit
927            //  out_RETIRE_READ_RB                   - component_rename_unit
928            //  out_RETIRE_NUM_REG_RB_PHY            - component_rename_unit
929            //  out_RETIRE_READ_RC                   - component_rename_unit
930            //  out_RETIRE_NUM_REG_RC_PHY            - component_rename_unit
931            //  out_RETIRE_NUM_REG_RD_LOG            - component_rename_unit
932            //  out_RETIRE_NUM_REG_RE_LOG            - component_rename_unit
933          }
934     
935      // ~~~~~[ Interface "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       
936        // out_RETIRE_VAL         - rename_unit.out_RETIRE_VAL       
937        //  in_RETIRE_ACK         - rename_unit. in_RETIRE_ACK       
938        // out_RETIRE_EVENT_STATE - rename_unit.out_RETIRE_EVENT_STATE
939        // out_RETIRE_EVENT_FLUSH - rename_unit.out_RETIRE_EVENT_FLUSH
940        // out_RETIRE_EVENT_STOP  - rename_unit.out_RETIRE_EVENT_STOP
941 
942
943      // ~~~~~[ Interface : "commit" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       
944      for (uint32_t i=0; i<_param->_nb_inst_commit; i++)
945        {
946          dest = _name+"_reexecute_unit";
947#ifdef POSITION
948          _component->interface_map (src ,"commit_"+toString(i),
949                                     dest,"commit_"+toString(i));
950#endif
951       
952          COMPONENT_MAP(_component,src , "in_COMMIT_"+toString(i)+"_VAL"        ,
953                                   dest,"out_COMMIT_"+toString(i)+"_VAL"        );
954          COMPONENT_MAP(_component,src ,"out_COMMIT_"+toString(i)+"_ACK"        ,
955                                   dest, "in_COMMIT_"+toString(i)+"_ACK"        );
956          COMPONENT_MAP(_component,src , "in_COMMIT_"+toString(i)+"_WEN"        ,
957                                   dest,"out_COMMIT_"+toString(i)+"_WEN"        );
958//        if (_param->_have_port_context_id)
959//        COMPONENT_MAP(_component,src , "in_COMMIT_"+toString(i)+"_CONTEXT_ID"  ,
960//                                 dest,"out_COMMIT_"+toString(i)+"_CONTEXT_ID"  );
961//        if (_param->_have_port_front_end_id)
962//        COMPONENT_MAP(_component,src , "in_COMMIT_"+toString(i)+"_FRONT_END_ID",
963//                                 dest,"out_COMMIT_"+toString(i)+"_FRONT_END_ID");
964          if (_param->_have_port_rob_ptr)
965          COMPONENT_MAP(_component,src , "in_COMMIT_"+toString(i)+"_PACKET_ID"  ,
966                                   dest,"out_COMMIT_"+toString(i)+"_PACKET_ID"  );
967//        COMPONENT_MAP(_component,src , "in_COMMIT_"+toString(i)+"_OPERATION"  ,
968//                                 dest,"out_COMMIT_"+toString(i)+"_OPERATION"  );
969//        COMPONENT_MAP(_component,src , "in_COMMIT_"+toString(i)+"_TYPE"       ,
970//                                 dest,"out_COMMIT_"+toString(i)+"_TYPE"       );
971          COMPONENT_MAP(_component,src , "in_COMMIT_"+toString(i)+"_CANCEL"     ,
972                                   dest,"out_COMMIT_"+toString(i)+"_CANCEL"     );
973          COMPONENT_MAP(_component,src , "in_COMMIT_"+toString(i)+"_FLAGS"      ,
974                                   dest,"out_COMMIT_"+toString(i)+"_FLAGS"      );
975          COMPONENT_MAP(_component,src , "in_COMMIT_"+toString(i)+"_EXCEPTION"  ,
976                                   dest,"out_COMMIT_"+toString(i)+"_EXCEPTION"  );
977          COMPONENT_MAP(_component,src , "in_COMMIT_"+toString(i)+"_NO_SEQUENCE",
978                                   dest,"out_COMMIT_"+toString(i)+"_NO_SEQUENCE");
979          COMPONENT_MAP(_component,src , "in_COMMIT_"+toString(i)+"_ADDRESS"    ,
980                                   dest,"out_COMMIT_"+toString(i)+"_ADDRESS"    );
981          COMPONENT_MAP(_component,src ,"out_COMMIT_"+toString(i)+"_NUM_REG_RD" ,
982                                   dest, "in_COMMIT_"+toString(i)+"_NUM_REG_RD" );
983          //@@@@@@@@@@
984        }
985     
986      // ~~~~~[ Interface : "reexecute" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       
987      for (uint32_t i=0; i<_param->_nb_inst_reexecute; i++)
988        {
989          dest = _name+"_reexecute_unit";
990#ifdef POSITION
991          _component->interface_map (src ,"reexecute_"    +toString(i),
992                                     dest,"reexecute_rob_"+toString(i));
993#endif
994
995          COMPONENT_MAP(_component,src ,"out_REEXECUTE_"    +toString(i)+"_VAL"                  ,
996                                   dest, "in_REEXECUTE_ROB_"+toString(i)+"_VAL"                  );
997          COMPONENT_MAP(_component,src , "in_REEXECUTE_"    +toString(i)+"_ACK"                  ,
998                                   dest,"out_REEXECUTE_ROB_"+toString(i)+"_ACK"                  );
999          if (_param->_have_port_front_end_id)
1000          COMPONENT_MAP(_component,src ,"out_REEXECUTE_"    +toString(i)+"_FRONT_END_ID"         ,
1001                                   dest, "in_REEXECUTE_ROB_"+toString(i)+"_FRONT_END_ID"         );
1002          if (_param->_have_port_context_id)
1003          COMPONENT_MAP(_component,src ,"out_REEXECUTE_"    +toString(i)+"_CONTEXT_ID"           ,
1004                                   dest, "in_REEXECUTE_ROB_"+toString(i)+"_CONTEXT_ID"           );
1005          if (_param->_have_port_rob_ptr)
1006          COMPONENT_MAP(_component,src ,"out_REEXECUTE_"    +toString(i)+"_PACKET_ID"            ,
1007                                   dest, "in_REEXECUTE_ROB_"+toString(i)+"_PACKET_ID"            );
1008          COMPONENT_MAP(_component,src ,"out_REEXECUTE_"    +toString(i)+"_OPERATION"            ,
1009                                   dest, "in_REEXECUTE_ROB_"+toString(i)+"_OPERATION"            );
1010          COMPONENT_MAP(_component,src ,"out_REEXECUTE_"    +toString(i)+"_TYPE"                 ,
1011                                   dest, "in_REEXECUTE_ROB_"+toString(i)+"_TYPE"                 );
1012          COMPONENT_MAP(_component,src ,"out_REEXECUTE_"    +toString(i)+"_STORE_QUEUE_PTR_WRITE",
1013                                   dest, "in_REEXECUTE_ROB_"+toString(i)+"_STORE_QUEUE_PTR_WRITE");
1014        }
1015                                                                           
1016      // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       
1017      for (uint32_t i=0; i<_param->_nb_inst_branch_complete; i++)
1018        {
1019          dest = _name;
1020#ifdef POSITION
1021          _component->interface_map (src ,"branch_complete_"+toString(i),
1022                                     dest,"branch_complete_"+toString(i));
1023#endif
1024
1025          PORT_MAP(_component,src ,"out_BRANCH_COMPLETE_"+toString(i)+"_VAL"            ,
1026                              dest,"out_BRANCH_COMPLETE_"+toString(i)+"_VAL"            );
1027          PORT_MAP(_component,src , "in_BRANCH_COMPLETE_"+toString(i)+"_ACK"            ,
1028                              dest, "in_BRANCH_COMPLETE_"+toString(i)+"_ACK"            );
1029          if (_param->_have_port_front_end_id)
1030          PORT_MAP(_component,src ,"out_BRANCH_COMPLETE_"+toString(i)+"_FRONT_END_ID"   ,
1031                              dest,"out_BRANCH_COMPLETE_"+toString(i)+"_FRONT_END_ID"   );
1032          if (_param->_have_port_context_id)
1033          PORT_MAP(_component,src ,"out_BRANCH_COMPLETE_"+toString(i)+"_CONTEXT_ID"     ,
1034                              dest,"out_BRANCH_COMPLETE_"+toString(i)+"_CONTEXT_ID"     );
1035          if (_param->_have_port_depth)
1036          PORT_MAP(_component,src ,"out_BRANCH_COMPLETE_"+toString(i)+"_DEPTH"          ,
1037                              dest,"out_BRANCH_COMPLETE_"+toString(i)+"_DEPTH"          );
1038          PORT_MAP(_component,src ,"out_BRANCH_COMPLETE_"+toString(i)+"_ADDRESS"        ,
1039                              dest,"out_BRANCH_COMPLETE_"+toString(i)+"_ADDRESS"        );
1040          PORT_MAP(_component,src ,"out_BRANCH_COMPLETE_"+toString(i)+"_NO_SEQUENCE"    ,
1041                              dest,"out_BRANCH_COMPLETE_"+toString(i)+"_NO_SEQUENCE"    );
1042          PORT_MAP(_component,src , "in_BRANCH_COMPLETE_"+toString(i)+"_MISS_PREDICTION",
1043                              dest, "in_BRANCH_COMPLETE_"+toString(i)+"_MISS_PREDICTION");
1044        }
1045                                                                                   
1046      // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1047      {
1048        dest = _name;
1049#ifdef POSITION
1050        _component->interface_map (src ,"update",
1051                                   dest,"commit_event");
1052#endif
1053
1054        PORT_MAP(_component,src ,"out_UPDATE_VAL"             ,dest,"out_COMMIT_EVENT_VAL"             );
1055        PORT_MAP(_component,src , "in_UPDATE_ACK"             ,dest, "in_COMMIT_EVENT_ACK"             );
1056        if (_param->_have_port_front_end_id)
1057        PORT_MAP(_component,src ,"out_UPDATE_FRONT_END_ID"    ,dest,"out_COMMIT_EVENT_FRONT_END_ID"    );
1058        if (_param->_have_port_context_id)
1059        PORT_MAP(_component,src ,"out_UPDATE_CONTEXT_ID"      ,dest,"out_COMMIT_EVENT_CONTEXT_ID"      );
1060        if (_param->_have_port_depth)
1061        PORT_MAP(_component,src ,"out_UPDATE_DEPTH"           ,dest,"out_COMMIT_EVENT_DEPTH"           );
1062        PORT_MAP(_component,src ,"out_UPDATE_TYPE"            ,dest,"out_COMMIT_EVENT_TYPE"            );
1063        PORT_MAP(_component,src ,"out_UPDATE_IS_DELAY_SLOT"   ,dest,"out_COMMIT_EVENT_IS_DELAY_SLOT"   );
1064        PORT_MAP(_component,src ,"out_UPDATE_ADDRESS"         ,dest,"out_COMMIT_EVENT_ADDRESS"         );
1065        PORT_MAP(_component,src ,"out_UPDATE_ADDRESS_EPCR_VAL",dest,"out_COMMIT_EVENT_ADDRESS_EPCR_VAL");
1066        PORT_MAP(_component,src ,"out_UPDATE_ADDRESS_EPCR"    ,dest,"out_COMMIT_EVENT_ADDRESS_EPCR"    );
1067        PORT_MAP(_component,src ,"out_UPDATE_ADDRESS_EEAR_VAL",dest,"out_COMMIT_EVENT_ADDRESS_EEAR_VAL");
1068        PORT_MAP(_component,src ,"out_UPDATE_ADDRESS_EEAR"    ,dest,"out_COMMIT_EVENT_ADDRESS_EEAR"    );
1069      }
1070
1071      // ~~~~~[ Interface "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1072      for (uint32_t i=0; i<_param->_nb_front_end; i++)
1073        for (uint32_t j=0; j<_param->_nb_context[i]; j++)
1074          {
1075            dest = _name;
1076#ifdef POSITION
1077            _component->interface_map (src ,"event_"+toString(i)+"_"+toString(j),
1078                                       dest,"event_"+toString(i)+"_"+toString(j));
1079#endif
1080           
1081            PORT_MAP(_component,src , "in_EVENT_"+toString(i)+"_"+toString(j)+"_VAL"             ,
1082                                dest, "in_EVENT_"+toString(i)+"_"+toString(j)+"_VAL"             );
1083            PORT_MAP(_component,src ,"out_EVENT_"+toString(i)+"_"+toString(j)+"_ACK"             ,
1084                                dest,"out_EVENT_"+toString(i)+"_"+toString(j)+"_ACK"             );
1085            PORT_MAP(_component,src , "in_EVENT_"+toString(i)+"_"+toString(j)+"_ADDRESS"         ,
1086                                dest, "in_EVENT_"+toString(i)+"_"+toString(j)+"_ADDRESS"         );
1087            PORT_MAP(_component,src , "in_EVENT_"+toString(i)+"_"+toString(j)+"_ADDRESS_NEXT"    ,
1088                                dest, "in_EVENT_"+toString(i)+"_"+toString(j)+"_ADDRESS_NEXT"    ); 
1089            PORT_MAP(_component,src , "in_EVENT_"+toString(i)+"_"+toString(j)+"_ADDRESS_NEXT_VAL",
1090                                dest, "in_EVENT_"+toString(i)+"_"+toString(j)+"_ADDRESS_NEXT_VAL");
1091            PORT_MAP(_component,src , "in_EVENT_"+toString(i)+"_"+toString(j)+"_IS_DS_TAKE"      ,
1092                                dest, "in_EVENT_"+toString(i)+"_"+toString(j)+"_IS_DS_TAKE"      );
1093          }
1094                                                                                   
1095      // ~~~~~[ Interface : "nb_inst" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       
1096      for (uint32_t i=0; i<_param->_nb_front_end; i++)
1097        for (uint32_t j=0; j<_param->_nb_context[i]; j++)
1098          {
1099            dest = _name;
1100#ifdef POSITION
1101            _component->interface_map (src ,"nb_inst_"+toString(i)+"_"+toString(j),
1102                                       dest,"nb_inst_"+toString(i)+"_"+toString(j));
1103#endif
1104
1105            PORT_MAP(_component,src ,"out_NB_INST_"+toString(i)+"_"+toString(j)+"_COMMIT_ALL",
1106                                dest,"out_NB_INST_"+toString(i)+"_"+toString(j)+"_COMMIT_ALL");
1107            PORT_MAP(_component,src ,"out_NB_INST_"+toString(i)+"_"+toString(j)+"_COMMIT_MEM",
1108                                dest,"out_NB_INST_"+toString(i)+"_"+toString(j)+"_COMMIT_MEM");
1109            PORT_MAP(_component,src , "in_NB_INST_"+toString(i)+"_"+toString(j)+"_DECOD_ALL" ,
1110                                dest, "in_NB_INST_"+toString(i)+"_"+toString(j)+"_DECOD_ALL" );
1111          }
1112
1113      // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       
1114      for (uint32_t i=0; i<_param->_nb_front_end; i++)
1115        for (uint32_t j=0; j<_param->_nb_context[i]; j++)
1116          {
1117            dest = _name;
1118#ifdef POSITION
1119            _component->interface_map (src ,"depth_"+toString(i)+"_"+toString(j),
1120                                       dest,"depth_"+toString(i)+"_"+toString(j));
1121#endif
1122
1123            if (_param->_have_port_depth)
1124              {
1125            PORT_MAP(_component,src , "in_DEPTH_"+toString(i)+"_"+toString(j)+"_MIN",
1126                                dest, "in_DEPTH_"+toString(i)+"_"+toString(j)+"_MIN");
1127            PORT_MAP(_component,src , "in_DEPTH_"+toString(i)+"_"+toString(j)+"_MAX",
1128                                dest, "in_DEPTH_"+toString(i)+"_"+toString(j)+"_MAX");
1129              }
1130            PORT_MAP(_component,src , "in_DEPTH_"+toString(i)+"_"+toString(j)+"_FULL",
1131                                dest, "in_DEPTH_"+toString(i)+"_"+toString(j)+"_FULL");
1132          }
1133
1134      // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1135      for (uint32_t i=0; i<_param->_nb_front_end; i++)
1136        for (uint32_t j=0; j<_param->_nb_context[i]; j++)
1137          {
1138            dest = _name+"_glue";
1139           
1140#ifdef POSITION
1141            _component->interface_map (src ,"spr_read_"+toString(i)+"_"+toString(j),
1142                                       dest,"spr_"     +toString(i)+"_"+toString(j));
1143#endif
1144
1145            COMPONENT_MAP(_component,src , "in_SPR_READ_"+toString(i)+"_"+toString(j)+            "_SR_OVE",
1146                                     dest,"out_SPR_"     +toString(i)+"_"+toString(j)+"_COMMIT_UNIT_SR_OVE");
1147          }
1148
1149      // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1150      for (uint32_t i=0; i<_param->_nb_front_end; i++)
1151        for (uint32_t j=0; j<_param->_nb_context[i]; j++)
1152          {
1153            dest = _name+"_special_register_unit";
1154#ifdef POSITION
1155            _component->interface_map (src ,"spr_write_" +toString(i)+"_"+toString(j),
1156                                       dest,"spr_commit_"+toString(i)+"_"+toString(j));
1157#endif
1158
1159            COMPONENT_MAP(_component,src ,"out_SPR_WRITE_" +toString(i)+"_"+toString(j)+"_VAL"      ,
1160                                     dest, "in_SPR_COMMIT_"+toString(i)+"_"+toString(j)+"_VAL"      );
1161            COMPONENT_MAP(_component,src , "in_SPR_WRITE_" +toString(i)+"_"+toString(j)+"_ACK"      ,
1162                                     dest,"out_SPR_COMMIT_"+toString(i)+"_"+toString(j)+"_ACK"      );
1163            COMPONENT_MAP(_component,src ,"out_SPR_WRITE_" +toString(i)+"_"+toString(j)+"_SR_F_VAL" ,
1164                                     dest, "in_SPR_COMMIT_"+toString(i)+"_"+toString(j)+"_SR_F_VAL" );
1165            COMPONENT_MAP(_component,src ,"out_SPR_WRITE_" +toString(i)+"_"+toString(j)+"_SR_F"     ,
1166                                     dest, "in_SPR_COMMIT_"+toString(i)+"_"+toString(j)+"_SR_F"     );
1167            COMPONENT_MAP(_component,src ,"out_SPR_WRITE_" +toString(i)+"_"+toString(j)+"_SR_CY_VAL",
1168                                     dest, "in_SPR_COMMIT_"+toString(i)+"_"+toString(j)+"_SR_CY_VAL");
1169            COMPONENT_MAP(_component,src ,"out_SPR_WRITE_" +toString(i)+"_"+toString(j)+"_SR_CY"    ,
1170                                     dest, "in_SPR_COMMIT_"+toString(i)+"_"+toString(j)+"_SR_CY"    );
1171            COMPONENT_MAP(_component,src ,"out_SPR_WRITE_" +toString(i)+"_"+toString(j)+"_SR_OV_VAL",
1172                                     dest, "in_SPR_COMMIT_"+toString(i)+"_"+toString(j)+"_SR_OV_VAL");
1173            COMPONENT_MAP(_component,src ,"out_SPR_WRITE_" +toString(i)+"_"+toString(j)+"_SR_OV"    ,
1174                                     dest, "in_SPR_COMMIT_"+toString(i)+"_"+toString(j)+"_SR_OV"    );
1175          }
1176    }
1177
1178    // ===================================================================
1179    // =====[ issue_queue ]===============================================
1180    // ===================================================================
1181    {
1182      src = _name+"_issue_queue";
1183      log_printf(TRACE,OOO_Engine,FUNCTION,_("<%s> : Instance : %s"),_name.c_str(),src.c_str());
1184           
1185      {
1186        dest = _name;
1187#ifdef POSITION
1188        _component->interface_map (src ,"",
1189                                   dest,"");
1190#endif
1191        PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
1192        PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
1193      }
1194
1195      // ~~~~~[ Interface : "issue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1196      for (uint32_t i=0; i<_param->_nb_rename_unit; ++i)
1197        for (uint32_t j=0; j<_param->_nb_inst_insert[i]; j++)
1198          {
1199            dest = _name+"_glue";
1200#ifdef POSITION
1201            _component->interface_map (src ,"issue_in_"+toString(i)+"_"+toString(j),
1202                                       dest,"insert_"  +toString(i)+"_"+toString(j));
1203#endif
1204
1205            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_VAL"                  ,
1206                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_VAL"                  );
1207            COMPONENT_MAP(_component,src ,"out_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_ACK"                  ,
1208                                     dest, "in_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_ACK"                  );
1209            if (_param->_have_port_context_id)
1210            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_CONTEXT_ID"           ,
1211                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_CONTEXT_ID"           );
1212            if (_param->_have_port_front_end_id)
1213            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_FRONT_END_ID"         ,
1214                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_FRONT_END_ID"         );
1215            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_OPERATION"            ,
1216                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_OPERATION"            );
1217            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_TYPE"                 ,
1218                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_TYPE"                 );
1219            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_STORE_QUEUE_PTR_WRITE",
1220                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_STORE_QUEUE_PTR_WRITE");
1221            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_STORE_QUEUE_PTR_READ" ,
1222                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_STORE_QUEUE_PTR_READ" );
1223            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_STORE_QUEUE_EMPTY"    ,
1224                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_STORE_QUEUE_EMPTY"    );
1225            if (_param->_have_port_load_queue_ptr)
1226            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_LOAD_QUEUE_PTR_WRITE" ,
1227                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_LOAD_QUEUE_PTR_WRITE" );
1228            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_HAS_IMMEDIAT"         ,
1229                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_HAS_IMMEDIAT"         );
1230            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_IMMEDIAT"             ,
1231                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_IMMEDIAT"             );
1232            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_READ_RA"              ,
1233                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_READ_RA"              );
1234            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RA"           ,
1235                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_NUM_REG_RA"           );
1236            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_READ_RB"              ,
1237                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_READ_RB"              );
1238            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RB"           ,
1239                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_NUM_REG_RB"           );
1240            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_READ_RC"              ,
1241                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_READ_RC"              );
1242            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RC"           ,
1243                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_NUM_REG_RC"           );
1244            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_WRITE_RD"             ,
1245                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_WRITE_RD"             );
1246            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RD"           ,
1247                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_NUM_REG_RD"           );
1248            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_WRITE_RE"             ,
1249                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_WRITE_RE"             );
1250            COMPONENT_MAP(_component,src , "in_ISSUE_IN_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RE"           ,
1251                                     dest,"out_INSERT_"  +toString(i)+"_"+toString(j)+"_ISSUE_QUEUE_NUM_REG_RE"           );
1252
1253
1254           
1255            //   in_ISSUE_IN_PACKET_ID - component_commit_unit
1256          }
1257
1258      // ~~~~~[ Interface : "reexecute" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1259      for (uint32_t i=0; i<_param->_nb_inst_reexecute; i++)
1260        {
1261          dest = _name+"_reexecute_unit";
1262#ifdef POSITION
1263          _component->interface_map (src ,"reexecute_"+toString(i),
1264                                     dest,"reexecute_"+toString(i));
1265#endif
1266       
1267         
1268          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_VAL"                  ,
1269                                   dest,"out_REEXECUTE_"+toString(i)+"_VAL"                  );
1270          COMPONENT_MAP(_component,src ,"out_REEXECUTE_"+toString(i)+"_ACK"                  ,
1271                                   dest, "in_REEXECUTE_"+toString(i)+"_ACK"                  );
1272          if (_param->_have_port_front_end_id)
1273          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_FRONT_END_ID"         ,
1274                                   dest,"out_REEXECUTE_"+toString(i)+"_FRONT_END_ID"         );
1275          if (_param->_have_port_context_id)
1276          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_CONTEXT_ID"           ,
1277                                   dest,"out_REEXECUTE_"+toString(i)+"_CONTEXT_ID"           );
1278          if (_param->_have_port_rob_ptr)
1279          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_PACKET_ID"            ,
1280                                   dest,"out_REEXECUTE_"+toString(i)+"_PACKET_ID"            );
1281          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_TYPE"                 ,
1282                                   dest,"out_REEXECUTE_"+toString(i)+"_TYPE"                 );
1283          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_OPERATION"            ,
1284                                   dest,"out_REEXECUTE_"+toString(i)+"_OPERATION"            );
1285          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_STORE_QUEUE_PTR_WRITE",
1286                                   dest,"out_REEXECUTE_"+toString(i)+"_STORE_QUEUE_PTR_WRITE");
1287          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_STORE_QUEUE_PTR_READ" ,
1288                                   dest,"out_REEXECUTE_"+toString(i)+"_STORE_QUEUE_PTR_READ" );
1289          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_STORE_QUEUE_EMPTY"    ,
1290                                   dest,"out_REEXECUTE_"+toString(i)+"_STORE_QUEUE_EMPTY"    );
1291          if (_param->_have_port_load_queue_ptr)
1292          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_LOAD_QUEUE_PTR_WRITE" ,
1293                                   dest,"out_REEXECUTE_"+toString(i)+"_LOAD_QUEUE_PTR_WRITE" );
1294          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_HAS_IMMEDIAT"         ,
1295                                   dest,"out_REEXECUTE_"+toString(i)+"_HAS_IMMEDIAT"         );
1296          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_IMMEDIAT"             ,
1297                                   dest,"out_REEXECUTE_"+toString(i)+"_IMMEDIAT"             );
1298          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_READ_RA"              ,
1299                                   dest,"out_REEXECUTE_"+toString(i)+"_READ_RA"              );
1300          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_NUM_REG_RA"           ,
1301                                   dest,"out_REEXECUTE_"+toString(i)+"_NUM_REG_RA"           );
1302          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_READ_RB"              ,
1303                                   dest,"out_REEXECUTE_"+toString(i)+"_READ_RB"              );
1304          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_NUM_REG_RB"           ,
1305                                   dest,"out_REEXECUTE_"+toString(i)+"_NUM_REG_RB"           );
1306          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_READ_RC"              ,
1307                                   dest,"out_REEXECUTE_"+toString(i)+"_READ_RC"              );
1308          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_NUM_REG_RC"           ,
1309                                   dest,"out_REEXECUTE_"+toString(i)+"_NUM_REG_RC"           );
1310          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_WRITE_RD"             ,
1311                                   dest,"out_REEXECUTE_"+toString(i)+"_WRITE_RD"             );
1312          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_NUM_REG_RD"           ,
1313                                   dest,"out_REEXECUTE_"+toString(i)+"_NUM_REG_RD"           );
1314          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_WRITE_RE"             ,
1315                                   dest,"out_REEXECUTE_"+toString(i)+"_WRITE_RE"             );
1316          COMPONENT_MAP(_component,src , "in_REEXECUTE_"+toString(i)+"_NUM_REG_RE"           ,
1317                                   dest,"out_REEXECUTE_"+toString(i)+"_NUM_REG_RE"           );
1318        }
1319
1320      // ~~~~~[ Interface : "issue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1321      for (uint32_t i=0; i<_param->_nb_inst_issue; i++)
1322        {
1323          dest = _name;
1324         
1325#ifdef POSITION
1326          _component->interface_map (src ,"issue_out_"+toString(i),
1327                                     dest,"issue_"    +toString(i));
1328#endif
1329
1330          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_VAL"                  ,
1331                              dest,"out_ISSUE_"    +toString(i)+"_VAL"                  );
1332          PORT_MAP(_component,src , "in_ISSUE_OUT_"+toString(i)+"_ACK"                  ,
1333                              dest, "in_ISSUE_"    +toString(i)+"_ACK"                  );
1334          if (_param->_have_port_front_end_id)
1335          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_FRONT_END_ID"         ,
1336                              dest,"out_ISSUE_"    +toString(i)+"_FRONT_END_ID"         );
1337          if (_param->_have_port_context_id)
1338          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_CONTEXT_ID"           ,
1339                              dest,"out_ISSUE_"    +toString(i)+"_CONTEXT_ID"           );
1340          if (_param->_have_port_rob_ptr)
1341          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_PACKET_ID"            ,
1342                              dest,"out_ISSUE_"    +toString(i)+"_PACKET_ID"            );
1343          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_TYPE"                 ,
1344                              dest,"out_ISSUE_"    +toString(i)+"_TYPE"                 );
1345          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_OPERATION"            ,
1346                              dest,"out_ISSUE_"    +toString(i)+"_OPERATION"            );
1347          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_CANCEL"               ,
1348                              dest,"out_ISSUE_"    +toString(i)+"_CANCEL"               );
1349          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_STORE_QUEUE_PTR_WRITE",
1350                              dest,"out_ISSUE_"    +toString(i)+"_STORE_QUEUE_PTR_WRITE");
1351          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_STORE_QUEUE_PTR_READ" ,
1352                              dest,"out_ISSUE_"    +toString(i)+"_STORE_QUEUE_PTR_READ" );
1353          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_STORE_QUEUE_EMPTY"    ,
1354                              dest,"out_ISSUE_"    +toString(i)+"_STORE_QUEUE_EMPTY"    );
1355          if (_param->_have_port_load_queue_ptr)
1356          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_LOAD_QUEUE_PTR_WRITE" ,
1357                              dest,"out_ISSUE_"    +toString(i)+"_LOAD_QUEUE_PTR_WRITE" );
1358          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_HAS_IMMEDIAT"         ,
1359                              dest,"out_ISSUE_"    +toString(i)+"_HAS_IMMEDIAT"         );
1360          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_IMMEDIAT"             ,
1361                              dest,"out_ISSUE_"    +toString(i)+"_IMMEDIAT"             );
1362          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_READ_RA"              ,
1363                              dest,"out_ISSUE_"    +toString(i)+"_READ_RA"              );
1364          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_NUM_REG_RA"           ,
1365                              dest,"out_ISSUE_"    +toString(i)+"_NUM_REG_RA"           );
1366          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_READ_RB"              ,
1367                              dest,"out_ISSUE_"    +toString(i)+"_READ_RB"              );
1368          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_NUM_REG_RB"           ,
1369                              dest,"out_ISSUE_"    +toString(i)+"_NUM_REG_RB"           );
1370          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_READ_RC"              ,
1371                              dest,"out_ISSUE_"    +toString(i)+"_READ_RC"              );
1372          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_NUM_REG_RC"           ,
1373                              dest,"out_ISSUE_"    +toString(i)+"_NUM_REG_RC"           );
1374          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_WRITE_RD"             ,
1375                              dest,"out_ISSUE_"    +toString(i)+"_WRITE_RD"             );
1376          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_NUM_REG_RD"           ,
1377                              dest,"out_ISSUE_"    +toString(i)+"_NUM_REG_RD"           );
1378          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_WRITE_RE"             ,
1379                              dest,"out_ISSUE_"    +toString(i)+"_WRITE_RE"             );
1380          PORT_MAP(_component,src ,"out_ISSUE_OUT_"+toString(i)+"_NUM_REG_RE"           ,
1381                              dest,"out_ISSUE_"    +toString(i)+"_NUM_REG_RE"           );
1382        }
1383    }
1384
1385    // ===================================================================
1386    // =====[ reexecute_unit ]============================================
1387    // ===================================================================
1388    {
1389      src = _name+"_reexecute_unit";
1390      log_printf(TRACE,OOO_Engine,FUNCTION,_("<%s> : Instance : %s"),_name.c_str(),src.c_str());
1391           
1392      {
1393        dest = _name;
1394#ifdef POSITION
1395        _component->interface_map (src ,"",
1396                                   dest,"");
1397#endif
1398        PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
1399        PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
1400      }
1401
1402      // ~~~~~[ Interface "execute_loop" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1403      for (uint32_t i=0; i<_param->_nb_execute_loop; i++)
1404        for (uint32_t j=0; j<_param->_nb_inst_execute[i]; j++)
1405          {
1406            dest = _name;
1407#ifdef POSITION
1408            _component->interface_map (src ,"execute_loop_"+toString(i)+"_"+toString(j),
1409                                       dest,"execute_loop_"+toString(i)+"_"+toString(j));
1410#endif
1411
1412            PORT_MAP(_component,src , "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_VAL"         ,
1413                                dest, "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_VAL"         );
1414            PORT_MAP(_component,src ,"out_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_ACK"         ,
1415                                dest,"out_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_ACK"         );
1416            if (_param->_have_port_front_end_id)
1417            PORT_MAP(_component,src , "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_FRONT_END_ID",
1418                                dest, "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_FRONT_END_ID");
1419            if (_param->_have_port_context_id)
1420            PORT_MAP(_component,src , "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_CONTEXT_ID"  ,
1421                                dest, "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_CONTEXT_ID"  );
1422            if (_param->_have_port_rob_ptr)
1423            PORT_MAP(_component,src , "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_PACKET_ID"   ,
1424                                dest, "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_PACKET_ID"   );
1425//          PORT_MAP(_component,src , "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_TYPE"        ,
1426//                              dest, "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_TYPE"        );
1427//          PORT_MAP(_component,src , "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_OPERATION"   ,
1428//                              dest, "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_OPERATION"   );
1429            PORT_MAP(_component,src , "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_CANCEL"      ,
1430                                dest, "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_CANCEL"      );
1431            PORT_MAP(_component,src , "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_FLAGS"       ,
1432                                dest, "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_FLAGS"       );
1433            PORT_MAP(_component,src , "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_EXCEPTION"   ,
1434                                dest, "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_EXCEPTION"   );
1435            PORT_MAP(_component,src , "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_NO_SEQUENCE" ,
1436                                dest, "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_NO_SEQUENCE" );
1437            PORT_MAP(_component,src , "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_ADDRESS"     ,
1438                                dest, "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_ADDRESS"     );
1439            PORT_MAP(_component,src , "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_DATA"        ,
1440                                dest, "in_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_DATA"        );
1441          }
1442
1443      // ~~~~~[ Interface "commit" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1444      //  out_COMMIT_VAL                           - component_commit_unit
1445      //   in_COMMIT_ACK                           - component_commit_unit
1446      //  out_COMMIT_WEN                           - component_commit_unit
1447      //  out_COMMIT_FRONT_END_ID                  - component_commit_unit
1448      //  out_COMMIT_CONTEXT_ID                    - component_commit_unit
1449      //  out_COMMIT_PACKET_ID                     - component_commit_unit
1450      ////out_COMMIT_OPERATION                     - component_commit_unit
1451      ////out_COMMIT_TYPE                          - component_commit_unit
1452      //  out_COMMIT_CANCEL                        - component_commit_unit
1453      //  out_COMMIT_FLAGS                         - component_commit_unit
1454      //  out_COMMIT_EXCEPTION                     - component_commit_unit
1455      //  out_COMMIT_NO_SEQUENCE                   - component_commit_unit
1456      //  out_COMMIT_ADDRESS                       - component_commit_unit
1457      //   in_COMMIT_NUM_REG_RD                    - component_commit_unit
1458     
1459      // ~~~~~[ Interface : "spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1460      for (uint32_t i=0; i<_param->_nb_inst_reexecute; i++)
1461        {
1462          dest = _name+"_special_register_unit";
1463#ifdef POSITION
1464          _component->interface_map (src ,"spr_"+toString(i),
1465                                     dest,"spr_"+toString(i));
1466#endif
1467     
1468          COMPONENT_MAP(_component,src ,"out_SPR_"       +toString(i)+"_VAL"         ,
1469                                   dest, "in_SPR_ACCESS_"+toString(i)+"_VAL"         );
1470          COMPONENT_MAP(_component,src , "in_SPR_"       +toString(i)+"_ACK"         ,
1471                                   dest,"out_SPR_ACCESS_"+toString(i)+"_ACK"         );
1472          if (_param->_have_port_front_end_id)
1473          COMPONENT_MAP(_component,src ,"out_SPR_"       +toString(i)+"_FRONT_END_ID",
1474                                   dest, "in_SPR_ACCESS_"+toString(i)+"_FRONT_END_ID");
1475          if (_param->_have_port_context_id)
1476          COMPONENT_MAP(_component,src ,"out_SPR_"       +toString(i)+"_CONTEXT_ID"  ,
1477                                   dest, "in_SPR_ACCESS_"+toString(i)+"_CONTEXT_ID"  );
1478          COMPONENT_MAP(_component,src ,"out_SPR_"       +toString(i)+"_WEN"         ,
1479                                   dest, "in_SPR_ACCESS_"+toString(i)+"_WEN"         );
1480          COMPONENT_MAP(_component,src ,"out_SPR_"       +toString(i)+"_NUM_GROUP"   ,
1481                                   dest, "in_SPR_ACCESS_"+toString(i)+"_NUM_GROUP"   );
1482          COMPONENT_MAP(_component,src ,"out_SPR_"       +toString(i)+"_NUM_REG"     ,
1483                                   dest, "in_SPR_ACCESS_"+toString(i)+"_NUM_REG"     );
1484          COMPONENT_MAP(_component,src ,"out_SPR_"       +toString(i)+"_WDATA"       ,
1485                                   dest, "in_SPR_ACCESS_"+toString(i)+"_WDATA"       );
1486          COMPONENT_MAP(_component,src , "in_SPR_"       +toString(i)+"_RDATA"       ,
1487                                   dest,"out_SPR_ACCESS_"+toString(i)+"_RDATA"       );
1488          COMPONENT_MAP(_component,src , "in_SPR_"       +toString(i)+"_INVALID"     ,
1489                                   dest,"out_SPR_ACCESS_"+toString(i)+"_INVALID"     );
1490        }
1491
1492      // ~~~~~[ Interface : "reexecute_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1493      //   in_REEXECUTE_ROB_VAL                    - component_commit_unit
1494      //  out_REEXECUTE_ROB_ACK                    - component_commit_unit
1495      //   in_REEXECUTE_ROB_FRONT_END_ID           - component_commit_unit
1496      //   in_REEXECUTE_ROB_CONTEXT_ID             - component_commit_unit
1497      //   in_REEXECUTE_ROB_PACKET_ID              - component_commit_unit
1498      //   in_REEXECUTE_ROB_OPERATION              - component_commit_unit
1499      //   in_REEXECUTE_ROB_TYPE                   - component_commit_unit
1500      //   in_REEXECUTE_ROB_STORE_QUEUE_PTR_WRITE  - component_commit_unit
1501
1502      // ~~~~~[ Interface : "reexecute" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1503      //  out_REEXECUTE_VAL                        - component_issue_queue
1504      //   in_REEXECUTE_ACK                        - component_issue_queue
1505      //  out_REEXECUTE_CONTEXT_ID                 - component_issue_queue
1506      //  out_REEXECUTE_FRONT_END_ID               - component_issue_queue
1507      //  out_REEXECUTE_PACKET_ID                  - component_issue_queue
1508      //  out_REEXECUTE_OPERATION                  - component_issue_queue
1509      //  out_REEXECUTE_TYPE                       - component_issue_queue
1510      //  out_REEXECUTE_STORE_QUEUE_PTR_WRITE      - component_issue_queue
1511      //  out_REEXECUTE_LOAD_QUEUE_PTR_WRITE       - component_issue_queue
1512      //  out_REEXECUTE_HAS_IMMEDIAT               - component_issue_queue
1513      //  out_REEXECUTE_IMMEDIAT                   - component_issue_queue
1514      //  out_REEXECUTE_READ_RA                    - component_issue_queue
1515      //  out_REEXECUTE_NUM_REG_RA                 - component_issue_queue
1516      //  out_REEXECUTE_READ_RB                    - component_issue_queue
1517      //  out_REEXECUTE_NUM_REG_RB                 - component_issue_queue
1518      //  out_REEXECUTE_READ_RC                    - component_issue_queue
1519      //  out_REEXECUTE_NUM_REG_RC                 - component_issue_queue
1520      //  out_REEXECUTE_WRITE_RD                   - component_issue_queue
1521      //  out_REEXECUTE_NUM_REG_RD                 - component_issue_queue
1522      //  out_REEXECUTE_WRITE_RE                   - component_issue_queue
1523      //  out_REEXECUTE_NUM_REG_RE                 - component_issue_queue
1524    }
1525
1526    // ===================================================================
1527    // =====[ special_register_unit ]=====================================
1528    // ===================================================================
1529    {
1530      src = _name+"_special_register_unit";
1531      log_printf(TRACE,OOO_Engine,FUNCTION,_("<%s> : Instance : %s"),_name.c_str(),src.c_str());
1532           
1533      {
1534        dest = _name;
1535#ifdef POSITION
1536        _component->interface_map (src ,"",
1537                                   dest,"");
1538#endif
1539        PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
1540        PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
1541      }
1542
1543      // ~~~~~[ Interface : "spr_access" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1544      //   in_SPR_ACCESS_VAL          - component_reexecute_unit
1545      //  out_SPR_ACCESS_ACK          - component_reexecute_unit
1546      //   in_SPR_ACCESS_FRONT_END_ID - component_reexecute_unit
1547      //   in_SPR_ACCESS_CONTEXT_ID   - component_reexecute_unit
1548      //   in_SPR_ACCESS_WEN          - component_reexecute_unit
1549      //   in_SPR_ACCESS_NUM_GROUP    - component_reexecute_unit
1550      //   in_SPR_ACCESS_NUM_REG      - component_reexecute_unit
1551      //   in_SPR_ACCESS_WDATA        - component_reexecute_unit
1552      //  out_SPR_ACCESS_RDATA        - component_reexecute_unit
1553      //  out_SPR_ACCESS_INVALID      - component_reexecute_unit
1554     
1555      // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1556      for (uint32_t i=0; i<_param->_nb_front_end; i++)
1557        for (uint32_t j=0; j<_param->_nb_context[i]; j++)
1558          {
1559            dest = _name+"_glue";
1560           
1561#ifdef POSITION
1562            _component->interface_map (src ,"spr_read_"+toString(i)+"_"+toString(j),
1563                                       dest,"spr_"     +toString(i)+"_"+toString(j));
1564#endif
1565
1566            COMPONENT_MAP(_component,src ,"out_SPR_READ_"+toString(i)+"_"+toString(j)+                      "_SR",
1567                                     dest, "in_SPR_"     +toString(i)+"_"+toString(j)+"_SPECIAL_REGISTER_UNIT_SR");
1568          }
1569
1570      // ~~~~~[ Interface : "spr_commit" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1571      //   in_SPR_COMMIT_VAL          - component_commit_unit
1572      //  out_SPR_COMMIT_ACK          - component_commit_unit
1573      //   in_SPR_COMMIT_SR_F_VAL     - component_commit_unit
1574      //   in_SPR_COMMIT_SR_F         - component_commit_unit
1575      //   in_SPR_COMMIT_SR_CY_VAL    - component_commit_unit
1576      //   in_SPR_COMMIT_SR_CY        - component_commit_unit
1577      //   in_SPR_COMMIT_SR_OV_VAL    - component_commit_unit
1578      //   in_SPR_COMMIT_SR_OV        - component_commit_unit
1579
1580      // ~~~~~[ Interface "spr_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1581      for (uint32_t i=0; i<_param->_nb_front_end; i++)
1582        for (uint32_t j=0; j<_param->_nb_context[i]; j++)
1583          {
1584            dest = _name;
1585#ifdef POSITION
1586            _component->interface_map (src ,"spr_event_"+toString(i)+"_"+toString(j),
1587                                       dest,"spr_event_"+toString(i)+"_"+toString(j));
1588#endif
1589
1590            PORT_MAP(_component,src , "in_SPR_EVENT_"+toString(i)+"_"+toString(j)+"_VAL"      ,
1591                                dest, "in_SPR_EVENT_"+toString(i)+"_"+toString(j)+"_VAL"      );
1592            PORT_MAP(_component,src ,"out_SPR_EVENT_"+toString(i)+"_"+toString(j)+"_ACK"      ,
1593                                dest,"out_SPR_EVENT_"+toString(i)+"_"+toString(j)+"_ACK"      );
1594            PORT_MAP(_component,src , "in_SPR_EVENT_"+toString(i)+"_"+toString(j)+"_EPCR"     ,
1595                                dest, "in_SPR_EVENT_"+toString(i)+"_"+toString(j)+"_EPCR"     );
1596            PORT_MAP(_component,src , "in_SPR_EVENT_"+toString(i)+"_"+toString(j)+"_EEAR_WEN" ,
1597                                dest, "in_SPR_EVENT_"+toString(i)+"_"+toString(j)+"_EEAR_WEN" );
1598            PORT_MAP(_component,src , "in_SPR_EVENT_"+toString(i)+"_"+toString(j)+"_EEAR"     ,
1599                                dest, "in_SPR_EVENT_"+toString(i)+"_"+toString(j)+"_EEAR"     );
1600            PORT_MAP(_component,src , "in_SPR_EVENT_"+toString(i)+"_"+toString(j)+"_SR_DSX"   ,
1601                                dest, "in_SPR_EVENT_"+toString(i)+"_"+toString(j)+"_SR_DSX"   );
1602            PORT_MAP(_component,src , "in_SPR_EVENT_"+toString(i)+"_"+toString(j)+"_SR_TO_ESR",
1603                                dest, "in_SPR_EVENT_"+toString(i)+"_"+toString(j)+"_SR_TO_ESR");
1604          }
1605    }
1606
1607    // ===================================================================
1608    // =====[ glue ]======================================================
1609    // ===================================================================
1610    {
1611      src = _name+"_glue";
1612      log_printf(TRACE,OOO_Engine,FUNCTION,_("<%s> : Instance : %s"),_name.c_str(),src.c_str());
1613           
1614      {
1615        dest = _name;
1616#ifdef POSITION
1617        _component->interface_map (src ,"",
1618                                   dest,"");
1619#endif
1620        PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
1621        PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
1622      }
1623
1624      // ~~~~~[ Interface : "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1625      for (uint32_t i=0; i<_param->_nb_front_end; i++)
1626        for (uint32_t j=0; j<_param->_nb_inst_decod [i]; j++)
1627          {
1628            dest = _name;
1629#ifdef POSITION
1630            _component->interface_map (src ,"rename_"+toString(i)+"_"+toString(j),
1631                                       dest,"rename_"+toString(i)+"_"+toString(j));
1632#endif
1633           
1634            if (_param->_have_port_front_end_id)
1635            PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_"+toString(j)+"_FRONT_END_ID",
1636                                dest, "in_RENAME_"+toString(i)+"_"+toString(j)+"_FRONT_END_ID");
1637
1638            //  out_RENAME_RENAME_UNIT_FRONT_END_ID              - component_rename_unit
1639          }
1640
1641      // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1642//       for (uint32_t i=0; i<_param->_sum_inst_insert; i++)
1643//         {
1644//           dest = _name;
1645// #ifdef POSITION
1646//           _component->interface_map (src ,"insert_"+toString(i),
1647//                                      dest,"insert_"+toString(i));
1648// #endif
1649//           PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_VAL"       ,
1650//                               dest,"out_INSERT_"+toString(i)+"_VAL"       );
1651//           PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_ACK"       ,
1652//                               dest, "in_INSERT_"+toString(i)+"_ACK"       );
1653//           PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_RD_USE"    ,
1654//                               dest,"out_INSERT_"+toString(i)+"_RD_USE"    );
1655//           PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_RD_NUM_REG",
1656//                               dest,"out_INSERT_"+toString(i)+"_RD_NUM_REG");
1657//           PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_RE_USE"    ,
1658//                               dest,"out_INSERT_"+toString(i)+"_RE_USE"    );
1659//           PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_RE_NUM_REG",
1660//                               dest,"out_INSERT_"+toString(i)+"_RE_NUM_REG");
1661//         }
1662
1663      //   in_INSERT_RENAME_UNIT_VAL                       - component_rename_unit
1664      //  out_INSERT_RENAME_UNIT_ACK                       - component_rename_unit
1665      //   in_INSERT_RENAME_UNIT_FRONT_END_ID              - component_rename_unit
1666      //   in_INSERT_RENAME_UNIT_CONTEXT_ID                - component_rename_unit
1667      //   in_INSERT_RENAME_UNIT_TYPE                      - component_rename_unit
1668      //   in_INSERT_RENAME_UNIT_OPERATION                 - component_rename_unit
1669      //   in_INSERT_RENAME_UNIT_NO_EXECUTE                - component_rename_unit
1670      //   in_INSERT_RENAME_UNIT_HAS_IMMEDIAT              - component_rename_unit
1671      //   in_INSERT_RENAME_UNIT_IMMEDIAT                  - component_rename_unit
1672      //   in_INSERT_RENAME_UNIT_STORE_QUEUE_PTR_WRITE     - component_rename_unit
1673      //   in_INSERT_RENAME_UNIT_LOAD_QUEUE_PTR_WRITE      - component_rename_unit
1674      //   in_INSERT_RENAME_UNIT_READ_RA                   - component_rename_unit
1675      //   in_INSERT_RENAME_UNIT_NUM_REG_RA_PHY            - component_rename_unit
1676      //   in_INSERT_RENAME_UNIT_READ_RB                   - component_rename_unit
1677      //   in_INSERT_RENAME_UNIT_NUM_REG_RB_PHY            - component_rename_unit
1678      //   in_INSERT_RENAME_UNIT_READ_RC                   - component_rename_unit
1679      //   in_INSERT_RENAME_UNIT_NUM_REG_RC_PHY            - component_rename_unit
1680      //   in_INSERT_RENAME_UNIT_WRITE_RD                  - component_rename_unit
1681      //   in_INSERT_RENAME_UNIT_NUM_REG_RD_PHY_OLD        - component_rename_unit
1682      //   in_INSERT_RENAME_UNIT_NUM_REG_RD_PHY_NEW        - component_rename_unit
1683      //   in_INSERT_RENAME_UNIT_WRITE_RE                  - component_rename_unit
1684      //   in_INSERT_RENAME_UNIT_NUM_REG_RE_PHY_OLD        - component_rename_unit
1685      //   in_INSERT_RENAME_UNIT_NUM_REG_RE_PHY_NEW        - component_rename_unit
1686      // 
1687      //  out_INSERT_COMMIT_UNIT_VAL                       - component_commit_unit
1688      //   in_INSERT_COMMIT_UNIT_ACK                       - component_commit_unit
1689      //  out_INSERT_COMMIT_UNIT_FRONT_END_ID              - component_commit_unit
1690      //  out_INSERT_COMMIT_UNIT_CONTEXT_ID                - component_commit_unit
1691      ////out_INSERT_COMMIT_UNIT_RENAME_UNIT_ID            - component_commit_unit
1692      //  out_INSERT_COMMIT_UNIT_TYPE                      - component_commit_unit
1693      //  out_INSERT_COMMIT_UNIT_OPERATION                 - component_commit_unit
1694      //  out_INSERT_COMMIT_UNIT_NO_EXECUTE                - component_commit_unit
1695      //  out_INSERT_COMMIT_UNIT_STORE_QUEUE_PTR_WRITE     - component_commit_unit
1696      //  out_INSERT_COMMIT_UNIT_LOAD_QUEUE_PTR_WRITE      - component_commit_unit
1697      //  out_INSERT_COMMIT_UNIT_READ_RA                   - component_commit_unit
1698      //  out_INSERT_COMMIT_UNIT_NUM_REG_RA_PHY            - component_commit_unit
1699      //  out_INSERT_COMMIT_UNIT_READ_RB                   - component_commit_unit
1700      //  out_INSERT_COMMIT_UNIT_NUM_REG_RB_PHY            - component_commit_unit
1701      //  out_INSERT_COMMIT_UNIT_READ_RC                   - component_commit_unit
1702      //  out_INSERT_COMMIT_UNIT_NUM_REG_RC_PHY            - component_commit_unit
1703      //  out_INSERT_COMMIT_UNIT_WRITE_RD                  - component_commit_unit
1704      //  out_INSERT_COMMIT_UNIT_NUM_REG_RD_PHY_OLD        - component_commit_unit
1705      //  out_INSERT_COMMIT_UNIT_NUM_REG_RD_PHY_NEW        - component_commit_unit
1706      //  out_INSERT_COMMIT_UNIT_WRITE_RE                  - component_commit_unit
1707      //  out_INSERT_COMMIT_UNIT_NUM_REG_RE_PHY_OLD        - component_commit_unit
1708      //  out_INSERT_COMMIT_UNIT_NUM_REG_RE_PHY_NEW        - component_commit_unit
1709      // 
1710      //  out_INSERT_ISSUE_QUEUE_VAL                       - component_issue_queue
1711      //   in_INSERT_ISSUE_QUEUE_ACK                       - component_issue_queue
1712      //  out_INSERT_ISSUE_QUEUE_CONTEXT_ID                - component_issue_queue
1713      //  out_INSERT_ISSUE_QUEUE_FRONT_END_ID              - component_issue_queue
1714      //  out_INSERT_ISSUE_QUEUE_OPERATION                 - component_issue_queue
1715      //  out_INSERT_ISSUE_QUEUE_TYPE                      - component_issue_queue
1716      //  out_INSERT_ISSUE_QUEUE_STORE_QUEUE_PTR_WRITE     - component_issue_queue
1717      //  out_INSERT_ISSUE_QUEUE_LOAD_QUEUE_PTR_WRITE      - component_issue_queue
1718      //  out_INSERT_ISSUE_QUEUE_HAS_IMMEDIAT              - component_issue_queue
1719      //  out_INSERT_ISSUE_QUEUE_IMMEDIAT                  - component_issue_queue
1720      //  out_INSERT_ISSUE_QUEUE_READ_RA                   - component_issue_queue
1721      //  out_INSERT_ISSUE_QUEUE_NUM_REG_RA                - component_issue_queue
1722      //  out_INSERT_ISSUE_QUEUE_READ_RB                   - component_issue_queue
1723      //  out_INSERT_ISSUE_QUEUE_NUM_REG_RB                - component_issue_queue
1724      //  out_INSERT_ISSUE_QUEUE_READ_RC                   - component_issue_queue
1725      //  out_INSERT_ISSUE_QUEUE_NUM_REG_RC                - component_issue_queue
1726      //  out_INSERT_ISSUE_QUEUE_WRITE_RD                  - component_issue_queue
1727      //  out_INSERT_ISSUE_QUEUE_NUM_REG_RD                - component_issue_queue
1728      //  out_INSERT_ISSUE_QUEUE_WRITE_RE                  - component_issue_queue
1729      //  out_INSERT_ISSUE_QUEUE_NUM_REG_RE                - component_issue_queue
1730
1731//       // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1732//       for (uint32_t i=0; i<_param->_sum_inst_retire; i++)
1733//         {
1734//           dest = _name;
1735// #ifdef POSITION
1736//           _component->interface_map (src ,"retire_"+toString(i),
1737//                                      dest,"retire_"+toString(i));
1738// #endif
1739
1740//           PORT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_VAL"           ,
1741//                               dest,"out_RETIRE_"+toString(i)+"_VAL"           );
1742//           PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_ACK"           ,
1743//                               dest, "in_RETIRE_"+toString(i)+"_ACK"           );
1744//           PORT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RD_OLD_USE"    ,
1745//                               dest,"out_RETIRE_"+toString(i)+"_RD_OLD_USE"    );
1746//           PORT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RD_OLD_NUM_REG",
1747//                               dest,"out_RETIRE_"+toString(i)+"_RD_OLD_NUM_REG");
1748//           PORT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RD_NEW_USE"    ,
1749//                               dest,"out_RETIRE_"+toString(i)+"_RD_NEW_USE"    );
1750//           PORT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RD_NEW_NUM_REG",
1751//                               dest,"out_RETIRE_"+toString(i)+"_RD_NEW_NUM_REG");
1752//           PORT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RE_OLD_USE"    ,
1753//                               dest,"out_RETIRE_"+toString(i)+"_RE_OLD_USE"    );
1754//           PORT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RE_OLD_NUM_REG",
1755//                               dest,"out_RETIRE_"+toString(i)+"_RE_OLD_NUM_REG");
1756//           PORT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RE_NEW_USE"    ,
1757//                               dest,"out_RETIRE_"+toString(i)+"_RE_NEW_USE"    );
1758//           PORT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RE_NEW_NUM_REG",
1759//                               dest,"out_RETIRE_"+toString(i)+"_RE_NEW_NUM_REG");
1760//         }
1761
1762      //  out_RETIRE_RENAME_UNIT_VAL                       - component_rename_unit
1763      //   in_RETIRE_RENAME_UNIT_ACK                       - component_rename_unit
1764      //  out_RETIRE_RENAME_UNIT_FRONT_END_ID              - component_rename_unit
1765      //  out_RETIRE_RENAME_UNIT_WRITE_RD                  - component_rename_unit
1766      //  out_RETIRE_RENAME_UNIT_NUM_REG_RD_PHY_OLD        - component_rename_unit
1767      //  out_RETIRE_RENAME_UNIT_NUM_REG_RD_PHY_NEW        - component_rename_unit
1768      //  out_RETIRE_RENAME_UNIT_WRITE_RE                  - component_rename_unit
1769      //  out_RETIRE_RENAME_UNIT_NUM_REG_RE_PHY_OLD        - component_rename_unit
1770      //  out_RETIRE_RENAME_UNIT_NUM_REG_RE_PHY_NEW        - component_rename_unit
1771      //  out_RETIRE_RENAME_UNIT_EVENT_STATE               - component_rename_unit
1772
1773      //   in_RETIRE_COMMIT_UNIT_VAL                       - component_commit_unit
1774      //  out_RETIRE_COMMIT_UNIT_ACK                       - component_commit_unit
1775      //   in_RETIRE_COMMIT_UNIT_FRONT_END_ID              - component_commit_unit
1776      //   in_RETIRE_COMMIT_UNIT_WRITE_RD                  - component_commit_unit
1777      //   in_RETIRE_COMMIT_UNIT_NUM_REG_RD_PHY_OLD        - component_commit_unit
1778      //   in_RETIRE_COMMIT_UNIT_NUM_REG_RD_PHY_NEW        - component_commit_unit
1779      //   in_RETIRE_COMMIT_UNIT_WRITE_RE                  - component_commit_unit
1780      //   in_RETIRE_COMMIT_UNIT_NUM_REG_RE_PHY_OLD        - component_commit_unit
1781      //   in_RETIRE_COMMIT_UNIT_NUM_REG_RE_PHY_NEW        - component_commit_unit
1782      //   in_RETIRE_COMMIT_UNIT_EVENT_STATE               - component_commit_unit
1783
1784      // ~~~~~[ Interface : "spr_sr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1785      for (uint32_t i=0; i<_param->_nb_front_end; i++)
1786        for (uint32_t j=0; j<_param->_nb_context [i]; j++)
1787          {
1788            dest = _name;
1789#ifdef POSITION
1790            _component->interface_map (src ,"spr_"+toString(i)+"_"+toString(j),
1791                                       dest,"spr_"+toString(i)+"_"+toString(j));
1792#endif
1793
1794            PORT_MAP(_component,src ,"out_SPR_"+toString(i)+"_"+toString(j)+"_SR_IEE",
1795                                dest,"out_SPR_"+toString(i)+"_"+toString(j)+"_SR_IEE");
1796            PORT_MAP(_component,src ,"out_SPR_"+toString(i)+"_"+toString(j)+"_SR_EPH",
1797                                dest,"out_SPR_"+toString(i)+"_"+toString(j)+"_SR_EPH");
1798
1799            //  out_SPR_RENAME_UNIT_SR                           - component_rename_unit
1800            //  out_SPR_COMMIT_UNIT_SR_OVE                       - component_commit_unit
1801            //   in_SPR_SPECIAL_REGISTER_UNIT_SR                 - component_special_register_unit
1802          }
1803
1804
1805    }
1806
1807    // ~~~~~[ Others ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1808#if DEBUG_OOO_Engine == true
1809       _component->test_map();
1810#endif
1811
1812#ifdef POSITION
1813     if (usage_is_set(_usage,USE_POSITION))
1814       _component->generate_file();
1815#endif
1816
1817     log_end(OOO_Engine,FUNCTION);
1818    };
1819
1820}; // end namespace ooo_engine
1821}; // end namespace multi_ooo_engine
1822}; // end namespace core
1823
1824}; // end namespace behavioural
1825}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.