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

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

Various modif (add test, and vhdl)

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