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

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

1) Add Vhdl component
2) Inhib VHDL Seltest interface

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