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

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

1) Add new algo in ifetch queue
2) Add Cancel bit
3) new config

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