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

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

1) Platforms : add new organization for test
2) Load_Store_Unit : add array to count nb_check in store_queue
3) Issue_queue and Core_Glue : rewrite the issue network
4) Special_Register_Unit : add reset value to register CID
5) Softwares : add multicontext test
6) Softwares : add SPECINT
7) Softwares : add MiBench?
7) Read_queue : inhib access for r0
8) Change Core_Glue (network) - dont yet support priority and load balancing scheme

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