source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Core_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: 91.7 KB
Line 
1/*
2 * $Id: Core_allocation.cpp 117 2009-05-16 14:42:39Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Core/include/Core.h"
9#include "Behavioural/include/Allocation.h"
10
11namespace morpheo                    {
12namespace behavioural {
13namespace core {
14
15
16
17#undef  FUNCTION
18#define FUNCTION "Core::allocation"
19  void Core::allocation
20  (
21#ifdef STATISTICS
22   morpheo::behavioural::Parameters_Statistics * param_statistics
23#else
24   void
25#endif
26   )
27  {
28    log_begin(Core,FUNCTION);
29
30    _component   = new Component (_usage);
31
32    Entity * entity = _component->set_entity (_name       
33                                              ,"Core"
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 "icache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
56    {
57      ALLOC1_INTERFACE_BEGIN("icache_req",WEST,OUT,_("Request to instruction cache"),_param->_nb_icache_port);
58
59      ALLOC1_VALACK_OUT(out_ICACHE_REQ_VAL         ,VAL);
60      ALLOC1_VALACK_IN ( in_ICACHE_REQ_ACK         ,ACK);
61      ALLOC1_SIGNAL_OUT(out_ICACHE_REQ_THREAD_ID   ,"thread_id",Tcontext_t           ,_param->_size_icache_thread_id);
62      ALLOC1_SIGNAL_OUT(out_ICACHE_REQ_PACKET_ID   ,"packet_id",Tpacket_t            ,_param->_size_icache_packet_id);
63      ALLOC1_SIGNAL_OUT(out_ICACHE_REQ_ADDRESS     ,"address"  ,Ticache_address_t    ,_param->_size_icache_address  );
64      ALLOC1_SIGNAL_OUT(out_ICACHE_REQ_TYPE        ,"type"     ,Ticache_type_t       ,_param->_size_icache_type     );
65
66      ALLOC1_INTERFACE_END(_param->_nb_icache_port);
67    }
68                                                                           
69    // ~~~~~[ Interface "icache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
70    {
71      ALLOC1_INTERFACE_BEGIN("icache_rsp",WEST,IN ,_("Respons from instruction cache"),_param->_nb_icache_port);
72     
73      ALLOC1_VALACK_IN ( in_ICACHE_RSP_VAL         ,VAL);
74      ALLOC1_VALACK_OUT(out_ICACHE_RSP_ACK         ,ACK);
75      ALLOC1_SIGNAL_IN ( in_ICACHE_RSP_THREAD_ID   ,"thread_id"  ,Tcontext_t           ,_param->_size_icache_thread_id);
76      ALLOC1_SIGNAL_IN ( in_ICACHE_RSP_PACKET_ID   ,"packet_id"  ,Tpacket_t            ,_param->_size_icache_packet_id);
77      ALLOC1_SIGNAL_IN ( in_ICACHE_RSP_ERROR       ,"error"      ,Ticache_error_t      ,_param->_size_icache_error);
78
79      ALLOC1_INTERFACE_END(_param->_nb_icache_port);
80    }
81    {
82      ALLOC2_INTERFACE_BEGIN("icache_rsp",WEST,IN ,_("Respons from instruction cache"),_param->_nb_icache_port,_param->_icache_nb_instruction[it1]);
83     
84      _ALLOC2_SIGNAL_IN ( in_ICACHE_RSP_INSTRUCTION ,"instruction",Ticache_instruction_t,_param->_size_instruction,_param->_nb_icache_port,_param->_icache_nb_instruction[it1]);
85
86      ALLOC2_INTERFACE_END(_param->_nb_icache_port,_param->_icache_nb_instruction[it1]);
87    }
88
89    // ~~~~~[ Interface "dcache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
90    {
91      ALLOC1_INTERFACE_BEGIN("dcache_req", OUT, NORTH, _("Request to data cache"),_param->_nb_dcache_port);
92     
93      ALLOC1_VALACK_OUT(out_DCACHE_REQ_VAL         ,VAL);
94      ALLOC1_VALACK_IN ( in_DCACHE_REQ_ACK         ,ACK);
95      ALLOC1_SIGNAL_OUT(out_DCACHE_REQ_THREAD_ID   ,"thread_id",Tcontext_t           ,_param->_size_dcache_thread_id);
96      ALLOC1_SIGNAL_OUT(out_DCACHE_REQ_PACKET_ID   ,"packet_id",Tpacket_t            ,_param->_size_dcache_packet_id);
97      ALLOC1_SIGNAL_OUT(out_DCACHE_REQ_ADDRESS     ,"address"  ,Tdcache_address_t    ,_param->_size_dcache_address);
98      ALLOC1_SIGNAL_OUT(out_DCACHE_REQ_WDATA       ,"wdata"    ,Tdcache_data_t       ,_param->_size_dcache_data);
99      ALLOC1_SIGNAL_OUT(out_DCACHE_REQ_TYPE        ,"type"     ,Tdcache_type_t       ,_param->_size_dcache_type);
100
101      ALLOC1_INTERFACE_END(_param->_nb_dcache_port);
102    }
103                                                                           
104    // ~~~~~[ Interface "dcache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
105    {
106      ALLOC1_INTERFACE_BEGIN("dcache_rsp", IN , NORTH, _("Respons from data cache"),_param->_nb_dcache_port);
107
108      ALLOC1_VALACK_IN ( in_DCACHE_RSP_VAL         ,VAL);
109      ALLOC1_VALACK_OUT(out_DCACHE_RSP_ACK         ,ACK);
110      ALLOC1_SIGNAL_IN ( in_DCACHE_RSP_THREAD_ID   ,"thread_id",Tcontext_t           ,_param->_size_dcache_thread_id);
111      ALLOC1_SIGNAL_IN ( in_DCACHE_RSP_PACKET_ID   ,"packet_id",Tpacket_t            ,_param->_size_dcache_packet_id);
112      ALLOC1_SIGNAL_IN ( in_DCACHE_RSP_RDATA       ,"rdata"    ,Tdcache_data_t       ,_param->_size_dcache_data);
113      ALLOC1_SIGNAL_IN ( in_DCACHE_RSP_ERROR       ,"error"    ,Tdcache_error_t      ,_param->_size_dcache_error);
114
115      ALLOC1_INTERFACE_END(_param->_nb_dcache_port);
116    }
117
118    // ~~~~~[ Interface : "interrupt" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
119    {
120      ALLOC1_INTERFACE_BEGIN("interrupt", IN , NORTH, _("Interruption line"),_param->_nb_thread);
121
122      ALLOC1_SIGNAL_IN ( in_INTERRUPT_ENABLE      ,"enable",Tcontrol_t           ,1);
123
124      ALLOC1_INTERFACE_END(_param->_nb_thread);
125    }
126   
127    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
128
129    std::string name;
130
131    _component_front_end = new core::multi_front_end::front_end::Front_end * [_param->_nb_front_end];
132    for (uint32_t i=0; i<_param->_nb_front_end; ++i)
133      {
134        name = _name+"_front_end_"+toString(i);
135        log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
136     
137        _component_front_end [i] = new core::multi_front_end::front_end::Front_end
138          (name.c_str()
139#ifdef STATISTICS
140           ,param_statistics
141#endif
142           ,_param->_param_front_end [i]
143           ,_usage);
144       
145        _component->set_component (_component_front_end[i]->_component
146#ifdef POSITION
147                                   , 50, 50, 10, 10
148#endif
149                                   );
150      }
151
152    _component_ooo_engine = new core::multi_ooo_engine::ooo_engine::OOO_Engine * [_param->_nb_ooo_engine];
153    for (uint32_t i=0; i<_param->_nb_ooo_engine; ++i)
154      {
155        name = _name+"_ooo_engine_"+toString(i);
156        log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
157     
158        _component_ooo_engine [i] = new core::multi_ooo_engine::ooo_engine::OOO_Engine
159          (name.c_str()
160#ifdef STATISTICS
161           ,param_statistics
162#endif
163           ,_param->_param_ooo_engine [i]
164           ,_usage);
165       
166        _component->set_component (_component_ooo_engine[i]->_component
167#ifdef POSITION
168                                   , 50, 50, 10, 10
169#endif
170                                   );
171      }
172
173    _component_execute_loop = new core::multi_execute_loop::execute_loop::Execute_loop * [_param->_nb_execute_loop];
174    for (uint32_t i=0; i<_param->_nb_execute_loop; ++i)
175      {
176        name = _name+"_execute_loop_"+toString(i);
177        log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
178     
179        _component_execute_loop [i] = new core::multi_execute_loop::execute_loop::Execute_loop
180          (name.c_str()
181#ifdef STATISTICS
182           ,param_statistics
183#endif
184           ,_param->_param_execute_loop [i]
185           ,_usage);
186       
187        _component->set_component (_component_execute_loop[i]->_component
188#ifdef POSITION
189                                   , 50, 50, 10, 10
190#endif
191                                   );
192      }
193
194    {
195      name = _name+"_icache_access";
196      log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
197     
198      _component_icache_access = new morpheo::behavioural::core::icache_access::Icache_Access
199        (name.c_str()
200#ifdef STATISTICS
201         ,param_statistics
202#endif
203         ,_param->_param_icache_access
204         ,_usage);
205     
206      _component->set_component (_component_icache_access->_component
207#ifdef POSITION
208                                 , 50, 50, 10, 10
209#endif
210                                 );
211    }
212
213    {
214      name = _name+"_dcache_access";
215      log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
216     
217      _component_dcache_access = new morpheo::behavioural::core::dcache_access::Dcache_Access
218        (name.c_str()
219#ifdef STATISTICS
220         ,param_statistics
221#endif
222         ,_param->_param_dcache_access
223         ,_usage);
224     
225      _component->set_component (_component_dcache_access->_component
226#ifdef POSITION
227                                 , 50, 50, 10, 10
228#endif
229                                 );
230    }
231
232
233    {
234      name = _name+"_glue";
235      log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
236     
237      _component_glue = new morpheo::behavioural::core::core_glue::Core_Glue
238        (name.c_str()
239#ifdef STATISTICS
240         ,param_statistics
241#endif
242         ,_param->_param_glue
243         ,_usage);
244     
245      _component->set_component (_component_glue->_component
246#ifdef POSITION
247                                 , 50, 50, 10, 10
248#endif
249                                 );
250    }
251   
252    // ~~~~~[ Instanciation ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
253    std::string src,dest;
254   
255   
256    // ===================================================================
257    // =====[ front_end ]=================================================
258    // ===================================================================
259    for (uint32_t i=0; i<_param->_nb_front_end; ++i)
260      {
261        src = _name+"_front_end_"+toString(i);
262        log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
263       
264        // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
265        {
266          dest = _name;
267#ifdef POSITION
268          _component->interface_map (src ,"",
269                                     dest,"");
270#endif
271          PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
272          PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
273        }
274
275        // ~~~~~[ Interface "icache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
276        // out_ICACHE_REQ_VAL       - icache_access. in_CONTEXT_REQ_VAL     
277        //  in_ICACHE_REQ_ACK       - icache_access.out_CONTEXT_REQ_ACK     
278//      // out_ICACHE_REQ_THREAD_ID - icache_access. in_CONTEXT_REQ_THREAD_ID
279        // out_ICACHE_REQ_PACKET_ID - icache_access. in_CONTEXT_REQ_PACKET_ID
280        // out_ICACHE_REQ_ADDRESS   - icache_access. in_CONTEXT_REQ_ADDRESS 
281        // out_ICACHE_REQ_TYPE      - icache_access. in_CONTEXT_REQ_TYPE     
282       
283        // ~~~~~[ Interface "icache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
284        //  in_ICACHE_RSP_VAL         - icache_access.out_CONTEXT_RSP_VAL       
285        // out_ICACHE_RSP_ACK         - icache_access. in_CONTEXT_RSP_ACK       
286//      //  in_ICACHE_RSP_THREAD_ID   - icache_access.out_CONTEXT_RSP_THREAD_ID 
287        //  in_ICACHE_RSP_PACKET_ID   - icache_access.out_CONTEXT_RSP_PACKET_ID 
288        //  in_ICACHE_RSP_INSTRUCTION - icache_access.out_CONTEXT_RSP_INSTRUCTION
289        //  in_ICACHE_RSP_ERROR       - icache_access.out_CONTEXT_RSP_ERROR     
290
291        // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
292        // out_DECOD_VAL           - ooo_engine. in_RENAME_VAL         
293        //  in_DECOD_ACK           - ooo_engine.out_RENAME_ACK         
294        // out_DECOD_CONTEXT_ID    - ooo_engine. in_RENAME_CONTEXT_ID   
295        // out_DECOD_DEPTH         - ooo_engine. in_RENAME_DEPTH       
296        // out_DECOD_TYPE          - ooo_engine. in_RENAME_TYPE         
297        // out_DECOD_OPERATION     - ooo_engine. in_RENAME_OPERATION   
298        // out_DECOD_NO_EXECUTE    - ooo_engine. in_RENAME_NO_EXECUTE   
299        // out_DECOD_IS_DELAY_SLOT - ooo_engine. in_RENAME_IS_DELAY_SLOT
300        // out_DECOD_ADDRESS       - ooo_engine. in_RENAME_ADDRESS     
301        // out_DECOD_ADDRESS_NEXT  - ooo_engine. in_RENAME_ADDRESS_NEXT
302        // out_DECOD_HAS_IMMEDIAT  - ooo_engine. in_RENAME_HAS_IMMEDIAT
303        // out_DECOD_IMMEDIAT      - ooo_engine. in_RENAME_IMMEDIAT     
304        // out_DECOD_READ_RA       - ooo_engine. in_RENAME_READ_RA     
305        // out_DECOD_NUM_REG_RA    - ooo_engine. in_RENAME_NUM_REG_RA   
306        // out_DECOD_READ_RB       - ooo_engine. in_RENAME_READ_RB     
307        // out_DECOD_NUM_REG_RB    - ooo_engine. in_RENAME_NUM_REG_RB   
308        // out_DECOD_READ_RC       - ooo_engine. in_RENAME_READ_RC     
309        // out_DECOD_NUM_REG_RC    - ooo_engine. in_RENAME_NUM_REG_RC   
310        // out_DECOD_WRITE_RD      - ooo_engine. in_RENAME_WRITE_RD     
311        // out_DECOD_NUM_REG_RD    - ooo_engine. in_RENAME_NUM_REG_RD   
312        // out_DECOD_WRITE_RE      - ooo_engine. in_RENAME_WRITE_RE     
313        // out_DECOD_NUM_REG_RE    - ooo_engine. in_RENAME_NUM_REG_RE   
314        // out_DECOD_EXCEPTION_USE - ooo_engine. in_RENAME_EXCEPTION_USE
315        // out_DECOD_EXCEPTION     - ooo_engine. in_RENAME_EXCEPTION   
316
317        // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~
318        for (uint32_t j=0; j<_param->_front_end_nb_inst_branch_complete[i]; ++j)
319          {
320            dest = _name+"_glue";
321#ifdef POSITION
322            _component->interface_map (src ,"branch_complete_"                          +toString(j),
323                                       dest,"branch_complete_front_end_"+toString(i)+"_"+toString(j));
324#endif
325
326            COMPONENT_MAP(_component,src , "in_BRANCH_COMPLETE_"                          +toString(j)+"_VAL"            ,
327                                     dest,"out_BRANCH_COMPLETE_FRONT_END_"+toString(i)+"_"+toString(j)+"_VAL"            );
328            COMPONENT_MAP(_component,src ,"out_BRANCH_COMPLETE_"                          +toString(j)+"_ACK"            ,
329                                     dest, "in_BRANCH_COMPLETE_FRONT_END_"+toString(i)+"_"+toString(j)+"_ACK"            );
330            if (_param->_have_port_context_id)
331            COMPONENT_MAP(_component,src , "in_BRANCH_COMPLETE_"                          +toString(j)+"_CONTEXT_ID"     ,
332                                     dest,"out_BRANCH_COMPLETE_FRONT_END_"+toString(i)+"_"+toString(j)+"_CONTEXT_ID"     );
333            if (_param->_have_port_depth)
334            COMPONENT_MAP(_component,src , "in_BRANCH_COMPLETE_"                          +toString(j)+"_DEPTH"          ,
335                                     dest,"out_BRANCH_COMPLETE_FRONT_END_"+toString(i)+"_"+toString(j)+"_DEPTH"          );
336            COMPONENT_MAP(_component,src , "in_BRANCH_COMPLETE_"                          +toString(j)+"_ADDRESS"        ,
337                                     dest,"out_BRANCH_COMPLETE_FRONT_END_"+toString(i)+"_"+toString(j)+"_ADDRESS"        );
338            COMPONENT_MAP(_component,src , "in_BRANCH_COMPLETE_"                          +toString(j)+"_NO_SEQUENCE"    ,
339                                     dest,"out_BRANCH_COMPLETE_FRONT_END_"+toString(i)+"_"+toString(j)+"_NO_SEQUENCE"    );
340            COMPONENT_MAP(_component,src ,"out_BRANCH_COMPLETE_"                          +toString(j)+"_MISS_PREDICTION",
341                                     dest, "in_BRANCH_COMPLETE_FRONT_END_"+toString(i)+"_"+toString(j)+"_MISS_PREDICTION");
342          }
343
344        // ~~~~~[ Interface : "commit_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~
345        {
346          dest = _name+"_glue";
347#ifdef POSITION
348          _component->interface_map (src ,"commit_event"                       ,
349                                     dest,"commit_event_front_end_"+toString(i));
350#endif
351
352          COMPONENT_MAP(_component,src , "in_COMMIT_EVENT_VAL"             ,
353                                   dest,"out_COMMIT_EVENT_FRONT_END_"+toString(i)+"_VAL"             );
354          COMPONENT_MAP(_component,src ,"out_COMMIT_EVENT_ACK"             ,
355                                   dest, "in_COMMIT_EVENT_FRONT_END_"+toString(i)+"_ACK"             );
356          if (_param->_have_port_context_id)
357          COMPONENT_MAP(_component,src , "in_COMMIT_EVENT_CONTEXT_ID"      ,
358                                   dest,"out_COMMIT_EVENT_FRONT_END_"+toString(i)+"_CONTEXT_ID"      );
359          if (_param->_have_port_depth)
360          COMPONENT_MAP(_component,src , "in_COMMIT_EVENT_DEPTH"           ,
361                                   dest,"out_COMMIT_EVENT_FRONT_END_"+toString(i)+"_DEPTH"           );
362          COMPONENT_MAP(_component,src , "in_COMMIT_EVENT_TYPE"            ,
363                                   dest,"out_COMMIT_EVENT_FRONT_END_"+toString(i)+"_TYPE"            );
364          COMPONENT_MAP(_component,src , "in_COMMIT_EVENT_IS_DELAY_SLOT"   ,
365                                   dest,"out_COMMIT_EVENT_FRONT_END_"+toString(i)+"_IS_DELAY_SLOT"   );
366          COMPONENT_MAP(_component,src , "in_COMMIT_EVENT_ADDRESS"         ,
367                                   dest,"out_COMMIT_EVENT_FRONT_END_"+toString(i)+"_ADDRESS"         );
368          COMPONENT_MAP(_component,src , "in_COMMIT_EVENT_ADDRESS_EPCR_VAL",
369                                   dest,"out_COMMIT_EVENT_FRONT_END_"+toString(i)+"_ADDRESS_EPCR_VAL");
370          COMPONENT_MAP(_component,src , "in_COMMIT_EVENT_ADDRESS_EPCR"    ,
371                                   dest,"out_COMMIT_EVENT_FRONT_END_"+toString(i)+"_ADDRESS_EPCR"    );
372          COMPONENT_MAP(_component,src , "in_COMMIT_EVENT_ADDRESS_EEAR_VAL",
373                                   dest,"out_COMMIT_EVENT_FRONT_END_"+toString(i)+"_ADDRESS_EEAR_VAL");
374          COMPONENT_MAP(_component,src , "in_COMMIT_EVENT_ADDRESS_EEAR"    ,
375                                   dest,"out_COMMIT_EVENT_FRONT_END_"+toString(i)+"_ADDRESS_EEAR"    );
376        }
377
378        // ~~~~~[ Interface "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
379        // out_EVENT_VAL              - ooo_engine. in_EVENT_VAL             
380        //  in_EVENT_ACK              - ooo_engine.out_EVENT_ACK             
381        // out_EVENT_ADDRESS          - ooo_engine. in_EVENT_ADDRESS         
382        // out_EVENT_ADDRESS_NEXT     - ooo_engine. in_EVENT_ADDRESS_NEXT     
383        // out_EVENT_ADDRESS_NEXT_VAL - ooo_engine. in_EVENT_ADDRESS_NEXT_VAL
384        // out_EVENT_IS_DS_TAKE       - ooo_engine. in_EVENT_IS_DS_TAKE     
385
386        // ~~~~~[ Interface "spr_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
387        //out_SPR_EVENT_VAL       - ooo_engine. in_SPR_EVENT_VAL     
388        // in_SPR_EVENT_ACK       - ooo_engine.out_SPR_EVENT_ACK     
389        //out_SPR_EVENT_EPCR      - ooo_engine. in_SPR_EVENT_EPCR     
390        //out_SPR_EVENT_EEAR_WEN  - ooo_engine. in_SPR_EVENT_EEAR_WEN
391        //out_SPR_EVENT_EEAR      - ooo_engine. in_SPR_EVENT_EEAR     
392        //out_SPR_EVENT_SR_DSX    - ooo_engine. in_SPR_EVENT_SR_DSX   
393        //out_SPR_EVENT_SR_TO_ESR - ooo_engine. in_SPR_EVENT_SR_TO_ESR
394       
395        // ~~~~~[ Interface : "nb_inst" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
396        // in_NB_INST_COMMIT_ALL - ooo_engine.out_NB_INST_COMMIT_ALL
397        // in_NB_INST_COMMIT_MEM - ooo_engine.out_NB_INST_COMMIT_MEM
398       
399        // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
400        // out_DEPTH_MIN  - ooo_engine. in_DEPTH_MIN     
401        // out_DEPTH_MAX  - ooo_engine. in_DEPTH_MAX
402        // out_DEPTH_FULL - ooo_engine. in_DEPTH_FULL
403       
404        // ~~~~~[ Interface : "spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
405        //  in_SPR_SR_IEE - ooo_engine.out_SPR_SR_IEE
406        //  in_SPR_SR_EPH - ooo_engine.out_SPR_SR_EPH
407       
408        // ~~~~~[ Interface : "interrupt" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
409        for (uint32_t j=0; j<_param->_nb_context [i]; ++j)
410          {
411            uint32_t x = _param->_link_thread_with_context [i][j];
412
413            dest = _name;
414#ifdef POSITION
415            _component->interface_map (src ,"interrupt_"+toString(j),
416                                       dest,"interrupt_"+toString(x));
417#endif
418           
419            PORT_MAP(_component,src , "in_INTERRUPT_"+toString(j)+"_ENABLE",
420                                dest, "in_INTERRUPT_"+toString(x)+"_ENABLE");
421          }
422      }
423   
424    // ===================================================================
425    // =====[ ooo_engine ]================================================
426    // ===================================================================
427    for (uint32_t i=0; i<_param->_nb_ooo_engine; ++i)
428      {
429        src = _name+"_ooo_engine_"+toString(i);
430        log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
431       
432        // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
433        {
434          dest = _name;
435#ifdef POSITION
436          _component->interface_map (src ,"",
437                                     dest,"");
438#endif
439          PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
440          PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
441        }
442
443        // ~~~~~[ Interface : "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
444        for (uint32_t j=0; j<_param->_ooo_engine_nb_front_end [i]; ++j)
445          for (uint32_t k=0; k<_param->_ooo_engine_nb_inst_decod[i][j]; ++k)
446            {
447              uint32_t x = _param->_translate_ooo_engine_num_front_end [i][j];
448              dest = _name+"_front_end_"+toString(x);
449#ifdef POSITION
450              _component->interface_map (src ,"rename_"+toString(j)+"_"+toString(k),
451                                         dest,"decod_"                 +toString(k));
452#endif
453             
454              COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_VAL"          ,
455                                       dest,"out_DECOD_"                 +toString(k)+"_VAL"          );
456              COMPONENT_MAP(_component,src ,"out_RENAME_"+toString(j)+"_"+toString(k)+"_ACK"          ,
457                                       dest, "in_DECOD_"                 +toString(k)+"_ACK"          );
458              if (_param->_have_port_context_id)
459              COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_CONTEXT_ID"   ,
460                                       dest,"out_DECOD_"                 +toString(k)+"_CONTEXT_ID"   );
461              if (_param->_have_port_depth)
462              COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_DEPTH"        ,
463                                       dest,"out_DECOD_"                 +toString(k)+"_DEPTH"        );
464              COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_TYPE"         ,
465                                       dest,"out_DECOD_"                 +toString(k)+"_TYPE"         );
466              COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_OPERATION"    ,
467                                       dest,"out_DECOD_"                 +toString(k)+"_OPERATION"    );
468              COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_NO_EXECUTE"   ,
469                                       dest,"out_DECOD_"                 +toString(k)+"_NO_EXECUTE"   );
470              COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_IS_DELAY_SLOT",
471                                       dest,"out_DECOD_"                 +toString(k)+"_IS_DELAY_SLOT");
472#ifdef DEBUG
473              COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_ADDRESS"      ,
474                                       dest,"out_DECOD_"                 +toString(k)+"_ADDRESS"      );
475#endif
476              COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_ADDRESS_NEXT" ,
477                                       dest,"out_DECOD_"                 +toString(k)+"_ADDRESS_NEXT" );
478              COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_HAS_IMMEDIAT" ,
479                                       dest,"out_DECOD_"                 +toString(k)+"_HAS_IMMEDIAT" );
480              COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_IMMEDIAT"     ,
481                                       dest,"out_DECOD_"                 +toString(k)+"_IMMEDIAT"     );
482              COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_READ_RA"      ,
483                                       dest,"out_DECOD_"                 +toString(k)+"_READ_RA"      );
484              COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_NUM_REG_RA"   ,
485                                       dest,"out_DECOD_"                 +toString(k)+"_NUM_REG_RA"   );
486              COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_READ_RB"      ,
487                                       dest,"out_DECOD_"                 +toString(k)+"_READ_RB"      );
488              COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_NUM_REG_RB"   ,
489                                       dest,"out_DECOD_"                 +toString(k)+"_NUM_REG_RB"   );
490              COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_READ_RC"      ,
491                                       dest,"out_DECOD_"                 +toString(k)+"_READ_RC"      );
492              COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_NUM_REG_RC"   ,
493                                       dest,"out_DECOD_"                 +toString(k)+"_NUM_REG_RC"   );
494              COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_WRITE_RD"     ,
495                                       dest,"out_DECOD_"                 +toString(k)+"_WRITE_RD"     );
496              COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_NUM_REG_RD"   ,
497                                       dest,"out_DECOD_"                 +toString(k)+"_NUM_REG_RD"   );
498              COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_WRITE_RE"     ,
499                                       dest,"out_DECOD_"                 +toString(k)+"_WRITE_RE"     );
500              COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_NUM_REG_RE"   ,
501                                       dest,"out_DECOD_"                 +toString(k)+"_NUM_REG_RE"   );
502              COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_EXCEPTION_USE",
503                                       dest,"out_DECOD_"                 +toString(k)+"_EXCEPTION_USE");
504              COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_EXCEPTION"    ,
505                                       dest,"out_DECOD_"                 +toString(k)+"_EXCEPTION"    );
506       
507              dest = _name+"_glue";
508#ifdef POSITION
509              _component->interface_map (src ,"rename_"+toString(j)+"_"+toString(k),
510                                         dest,"rename_"+toString(j)+"_"+toString(k));
511#endif
512              if (_param->_have_port_front_end_id)
513              COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_FRONT_END_ID" ,
514                                       dest,"out_RENAME_"+toString(j)+"_"+toString(k)+"_FRONT_END_ID" );
515            }
516
517        // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~
518        for (uint32_t j=0; j<_param->_nb_inst_branch_complete[i];++j)
519          {
520            dest = _name+"_glue";
521#ifdef POSITION
522            _component->interface_map (src ,"branch_complete_"                           +toString(j),
523                                       dest,"branch_complete_ooo_engine_"+toString(i)+"_"+toString(j));
524#endif
525
526            COMPONENT_MAP(_component,src ,"out_BRANCH_COMPLETE_"                           +toString(j)+"_VAL"            ,
527                                     dest, "in_BRANCH_COMPLETE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_VAL"            );
528            COMPONENT_MAP(_component,src , "in_BRANCH_COMPLETE_"                           +toString(j)+"_ACK"            ,
529                                     dest,"out_BRANCH_COMPLETE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_ACK"            );
530            if (_param->_have_port_front_end_id)
531            COMPONENT_MAP(_component,src ,"out_BRANCH_COMPLETE_"                           +toString(j)+"_FRONT_END_ID"   ,
532                                     dest, "in_BRANCH_COMPLETE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_FRONT_END_ID"   );
533            if (_param->_have_port_context_id)
534            COMPONENT_MAP(_component,src ,"out_BRANCH_COMPLETE_"                           +toString(j)+"_CONTEXT_ID"     ,
535                                     dest, "in_BRANCH_COMPLETE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_CONTEXT_ID"     );
536            if (_param->_have_port_depth)
537            COMPONENT_MAP(_component,src ,"out_BRANCH_COMPLETE_"                           +toString(j)+"_DEPTH"          ,
538                                     dest, "in_BRANCH_COMPLETE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_DEPTH"          );
539            COMPONENT_MAP(_component,src ,"out_BRANCH_COMPLETE_"                           +toString(j)+"_ADDRESS"        ,
540                                     dest, "in_BRANCH_COMPLETE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_ADDRESS"        );
541            COMPONENT_MAP(_component,src ,"out_BRANCH_COMPLETE_"                           +toString(j)+"_NO_SEQUENCE"    ,
542                                     dest, "in_BRANCH_COMPLETE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_NO_SEQUENCE"    );
543            COMPONENT_MAP(_component,src , "in_BRANCH_COMPLETE_"                           +toString(j)+"_MISS_PREDICTION",
544                                     dest,"out_BRANCH_COMPLETE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_MISS_PREDICTION");
545          }     
546
547        // ~~~~~[ Interface : "commit_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~
548        {
549          dest = _name+"_glue";
550#ifdef POSITION
551          _component->interface_map (src ,"commit_event",
552                                     dest,"commit_event_ooo_engine_"+toString(i));
553#endif
554         
555          COMPONENT_MAP(_component,src ,"out_COMMIT_EVENT_VAL"             ,
556                                   dest, "in_COMMIT_EVENT_OOO_ENGINE_"+toString(i)+"_VAL"             );
557          COMPONENT_MAP(_component,src , "in_COMMIT_EVENT_ACK"             ,
558                                   dest,"out_COMMIT_EVENT_OOO_ENGINE_"+toString(i)+"_ACK"             );
559          if (_param->_have_port_front_end_id)
560          COMPONENT_MAP(_component,src ,"out_COMMIT_EVENT_FRONT_END_ID"    ,
561                                   dest, "in_COMMIT_EVENT_OOO_ENGINE_"+toString(i)+"_FRONT_END_ID"    );
562          if (_param->_have_port_context_id)
563          COMPONENT_MAP(_component,src ,"out_COMMIT_EVENT_CONTEXT_ID"      ,
564                                   dest, "in_COMMIT_EVENT_OOO_ENGINE_"+toString(i)+"_CONTEXT_ID"      );
565          if (_param->_have_port_depth)
566          COMPONENT_MAP(_component,src ,"out_COMMIT_EVENT_DEPTH"           ,
567                                   dest, "in_COMMIT_EVENT_OOO_ENGINE_"+toString(i)+"_DEPTH"           );
568          COMPONENT_MAP(_component,src ,"out_COMMIT_EVENT_TYPE"            ,
569                                   dest, "in_COMMIT_EVENT_OOO_ENGINE_"+toString(i)+"_TYPE"            );
570          COMPONENT_MAP(_component,src ,"out_COMMIT_EVENT_IS_DELAY_SLOT"   ,
571                                   dest, "in_COMMIT_EVENT_OOO_ENGINE_"+toString(i)+"_IS_DELAY_SLOT"   );
572          COMPONENT_MAP(_component,src ,"out_COMMIT_EVENT_ADDRESS"         ,
573                                   dest, "in_COMMIT_EVENT_OOO_ENGINE_"+toString(i)+"_ADDRESS"         );
574          COMPONENT_MAP(_component,src ,"out_COMMIT_EVENT_ADDRESS_EPCR_VAL",
575                                   dest, "in_COMMIT_EVENT_OOO_ENGINE_"+toString(i)+"_ADDRESS_EPCR_VAL");
576          COMPONENT_MAP(_component,src ,"out_COMMIT_EVENT_ADDRESS_EPCR"    ,
577                                   dest, "in_COMMIT_EVENT_OOO_ENGINE_"+toString(i)+"_ADDRESS_EPCR"    );
578          COMPONENT_MAP(_component,src ,"out_COMMIT_EVENT_ADDRESS_EEAR_VAL",
579                                   dest, "in_COMMIT_EVENT_OOO_ENGINE_"+toString(i)+"_ADDRESS_EEAR_VAL");
580          COMPONENT_MAP(_component,src ,"out_COMMIT_EVENT_ADDRESS_EEAR"    ,
581                                   dest, "in_COMMIT_EVENT_OOO_ENGINE_"+toString(i)+"_ADDRESS_EEAR"    );
582        }
583
584        // ~~~~~[ Interface "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
585        for (uint32_t j=0; j<_param->_ooo_engine_nb_front_end [i]; ++j)
586          {
587            uint32_t x = _param->_translate_ooo_engine_num_front_end [i][j];
588            for (uint32_t k=0; k<_param->_nb_context[x]; ++k)
589              {
590                dest = _name+"_front_end_"+toString(x);
591#ifdef POSITION
592                _component->interface_map (src ,"event_"+toString(j)+"_"+toString(k),
593                                           dest,"event_"                +toString(k));
594#endif
595
596                COMPONENT_MAP(_component,src , "in_EVENT_"+toString(j)+"_"+toString(k)+"_VAL"             ,
597                                         dest,"out_EVENT_"                +toString(k)+"_VAL"             );
598                COMPONENT_MAP(_component,src ,"out_EVENT_"+toString(j)+"_"+toString(k)+"_ACK"             ,
599                                         dest, "in_EVENT_"                +toString(k)+"_ACK"             );
600                COMPONENT_MAP(_component,src , "in_EVENT_"+toString(j)+"_"+toString(k)+"_ADDRESS"         ,
601                                         dest,"out_EVENT_"                +toString(k)+"_ADDRESS"         );
602                COMPONENT_MAP(_component,src , "in_EVENT_"+toString(j)+"_"+toString(k)+"_ADDRESS_NEXT"    ,
603                                         dest,"out_EVENT_"                +toString(k)+"_ADDRESS_NEXT"    ); 
604                COMPONENT_MAP(_component,src , "in_EVENT_"+toString(j)+"_"+toString(k)+"_ADDRESS_NEXT_VAL",
605                                         dest,"out_EVENT_"                +toString(k)+"_ADDRESS_NEXT_VAL");
606                COMPONENT_MAP(_component,src , "in_EVENT_"+toString(j)+"_"+toString(k)+"_IS_DS_TAKE"      ,
607                                         dest,"out_EVENT_"                +toString(k)+"_IS_DS_TAKE"      );
608              }
609          }
610
611        // ~~~~~[ Interface "spr_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
612        for (uint32_t j=0; j<_param->_ooo_engine_nb_front_end [i]; ++j)
613          {
614            uint32_t x = _param->_translate_ooo_engine_num_front_end [i][j];
615            for (uint32_t k=0; k<_param->_nb_context[x]; ++k)
616              {
617                dest = _name+"_front_end_"+toString(x);
618#ifdef POSITION
619                _component->interface_map (src ,"spr_event_"+toString(j)+"_"+toString(k),
620                                           dest,"spr_event_"                +toString(k));
621#endif
622                COMPONENT_MAP(_component,src , "in_SPR_EVENT_"+toString(j)+"_"+toString(k)+"_VAL"      ,
623                                         dest,"out_SPR_EVENT_"                +toString(k)+"_VAL"      );
624                COMPONENT_MAP(_component,src ,"out_SPR_EVENT_"+toString(j)+"_"+toString(k)+"_ACK"      ,
625                                         dest, "in_SPR_EVENT_"                +toString(k)+"_ACK"      );
626                COMPONENT_MAP(_component,src , "in_SPR_EVENT_"+toString(j)+"_"+toString(k)+"_EPCR"     ,
627                                         dest,"out_SPR_EVENT_"                +toString(k)+"_EPCR"     );
628                COMPONENT_MAP(_component,src , "in_SPR_EVENT_"+toString(j)+"_"+toString(k)+"_EEAR_WEN" ,
629                                         dest,"out_SPR_EVENT_"                +toString(k)+"_EEAR_WEN" );
630                COMPONENT_MAP(_component,src , "in_SPR_EVENT_"+toString(j)+"_"+toString(k)+"_EEAR"     ,
631                                         dest,"out_SPR_EVENT_"                +toString(k)+"_EEAR"     );
632                COMPONENT_MAP(_component,src , "in_SPR_EVENT_"+toString(j)+"_"+toString(k)+"_SR_DSX"   ,
633                                         dest,"out_SPR_EVENT_"                +toString(k)+"_SR_DSX"   );
634                COMPONENT_MAP(_component,src , "in_SPR_EVENT_"+toString(j)+"_"+toString(k)+"_SR_TO_ESR",
635                                         dest,"out_SPR_EVENT_"                +toString(k)+"_SR_TO_ESR");
636              }
637          }
638
639        // ~~~~~[ Interface : "nb_inst" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
640        for (uint32_t j=0; j<_param->_ooo_engine_nb_front_end [i]; ++j)
641          {
642            uint32_t x = _param->_translate_ooo_engine_num_front_end [i][j];
643            for (uint32_t k=0; k<_param->_nb_context[x]; ++k)
644              {
645                dest = _name+"_front_end_"+toString(x);
646#ifdef POSITION
647                _component->interface_map (src ,"nb_inst_"+toString(j)+"_"+toString(k),
648                                           dest,"nb_inst_"                +toString(k));
649#endif
650                COMPONENT_MAP(_component,src ,"out_NB_INST_"+toString(j)+"_"+toString(k)+"_COMMIT_ALL",
651                                         dest, "in_NB_INST_"                +toString(k)+"_COMMIT_ALL");
652                COMPONENT_MAP(_component,src ,"out_NB_INST_"+toString(j)+"_"+toString(k)+"_COMMIT_MEM",
653                                         dest, "in_NB_INST_"                +toString(k)+"_COMMIT_MEM");
654                COMPONENT_MAP(_component,src , "in_NB_INST_"+toString(j)+"_"+toString(k)+"_DECOD_ALL" ,
655                                         dest,"out_NB_INST_"                +toString(k)+"_DECOD_ALL" );
656              }
657          }
658
659        // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
660        for (uint32_t j=0; j<_param->_ooo_engine_nb_front_end [i]; ++j)
661          {
662            uint32_t x = _param->_translate_ooo_engine_num_front_end [i][j];
663            for (uint32_t k=0; k<_param->_nb_context[x]; ++k)
664              {
665                dest = _name+"_front_end_"+toString(x);
666#ifdef POSITION
667                _component->interface_map (src ,"depth_"+toString(j)+"_"+toString(k),
668                                           dest,"depth_"                +toString(k));
669#endif
670
671                if (_param->_have_port_depth)
672                  {
673                COMPONENT_MAP(_component,src , "in_DEPTH_"+toString(j)+"_"+toString(k)+"_MIN",
674                                         dest,"out_DEPTH_"                +toString(k)+"_MIN");
675                COMPONENT_MAP(_component,src , "in_DEPTH_"+toString(j)+"_"+toString(k)+"_MAX",
676                                         dest,"out_DEPTH_"                +toString(k)+"_MAX");
677                  }
678                COMPONENT_MAP(_component,src , "in_DEPTH_"+toString(j)+"_"+toString(k)+"_FULL",
679                                         dest,"out_DEPTH_"                +toString(k)+"_FULL");
680              }
681          }
682
683        // ~~~~~[ Interface : "spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
684        for (uint32_t j=0; j<_param->_ooo_engine_nb_front_end [i]; ++j)
685          {
686            uint32_t x = _param->_translate_ooo_engine_num_front_end [i][j];
687            for (uint32_t k=0; k<_param->_nb_context[x]; ++k)
688              {
689                dest = _name+"_front_end_"+toString(x);
690#ifdef POSITION
691                _component->interface_map (src ,"spr_"+toString(j)+"_"+toString(k),
692                                           dest,"spr_"                +toString(k));
693#endif
694
695                COMPONENT_MAP(_component,src ,"out_SPR_"+toString(j)+"_"+toString(k)+"_SR_IEE",
696                                         dest, "in_SPR_"                +toString(k)+"_SR_IEE");
697                COMPONENT_MAP(_component,src ,"out_SPR_"+toString(j)+"_"+toString(k)+"_SR_EPH",
698                                         dest, "in_SPR_"                +toString(k)+"_SR_EPH");
699              }
700          }
701
702        // ~~~~~[ Interface : "issue" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
703        for (uint32_t j=0; j<_param->_nb_inst_issue_queue [i]; ++j)
704          {
705            dest = _name+"_glue";
706#ifdef POSITION
707            _component->interface_map (src ,"issue_"                           +toString(j),
708                                       dest,"issue_ooo_engine_"+toString(i)+"_"+toString(j));
709#endif
710
711            COMPONENT_MAP(_component,src ,"out_ISSUE_"                           +toString(j)+"_VAL"                  ,
712                                     dest, "in_ISSUE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_VAL"                  );
713            COMPONENT_MAP(_component,src , "in_ISSUE_"                           +toString(j)+"_ACK"                  ,
714                                     dest,"out_ISSUE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_ACK"                  );
715            if (_param->_have_port_front_end_id)
716            COMPONENT_MAP(_component,src ,"out_ISSUE_"                           +toString(j)+"_FRONT_END_ID"         ,
717                                     dest, "in_ISSUE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_FRONT_END_ID"         );
718            if (_param->_have_port_context_id)
719            COMPONENT_MAP(_component,src ,"out_ISSUE_"                           +toString(j)+"_CONTEXT_ID"           ,
720                                     dest, "in_ISSUE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_CONTEXT_ID"           );
721            if (_param->_have_port_rob_ptr)
722            COMPONENT_MAP(_component,src ,"out_ISSUE_"                           +toString(j)+"_PACKET_ID"            ,
723                                     dest, "in_ISSUE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_PACKET_ID"            );
724            COMPONENT_MAP(_component,src ,"out_ISSUE_"                           +toString(j)+"_TYPE"                 ,
725                                     dest, "in_ISSUE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_TYPE"                 );
726            COMPONENT_MAP(_component,src ,"out_ISSUE_"                           +toString(j)+"_OPERATION"            ,
727                                     dest, "in_ISSUE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_OPERATION"            );
728            COMPONENT_MAP(_component,src ,"out_ISSUE_"                           +toString(j)+"_STORE_QUEUE_PTR_WRITE",
729                                     dest, "in_ISSUE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_STORE_QUEUE_PTR_WRITE");
730            if (_param->_have_port_load_queue_ptr)
731            COMPONENT_MAP(_component,src ,"out_ISSUE_"                           +toString(j)+"_LOAD_QUEUE_PTR_WRITE" ,
732                                     dest, "in_ISSUE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_LOAD_QUEUE_PTR_WRITE" );
733            COMPONENT_MAP(_component,src ,"out_ISSUE_"                           +toString(j)+"_HAS_IMMEDIAT"         ,
734                                     dest, "in_ISSUE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_HAS_IMMEDIAT"         );
735            COMPONENT_MAP(_component,src ,"out_ISSUE_"                           +toString(j)+"_IMMEDIAT"             ,
736                                     dest, "in_ISSUE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_IMMEDIAT"             );
737            COMPONENT_MAP(_component,src ,"out_ISSUE_"                           +toString(j)+"_READ_RA"              ,
738                                     dest, "in_ISSUE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_READ_RA"              );
739            COMPONENT_MAP(_component,src ,"out_ISSUE_"                           +toString(j)+"_NUM_REG_RA"           ,
740                                     dest, "in_ISSUE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RA"           );
741            COMPONENT_MAP(_component,src ,"out_ISSUE_"                           +toString(j)+"_READ_RB"              ,
742                                     dest, "in_ISSUE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_READ_RB"              );
743            COMPONENT_MAP(_component,src ,"out_ISSUE_"                           +toString(j)+"_NUM_REG_RB"           ,
744                                     dest, "in_ISSUE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RB"           );
745            COMPONENT_MAP(_component,src ,"out_ISSUE_"                           +toString(j)+"_READ_RC"              ,
746                                     dest, "in_ISSUE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_READ_RC"              );
747            COMPONENT_MAP(_component,src ,"out_ISSUE_"                           +toString(j)+"_NUM_REG_RC"           ,
748                                     dest, "in_ISSUE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RC"           );
749            COMPONENT_MAP(_component,src ,"out_ISSUE_"                           +toString(j)+"_WRITE_RD"             ,
750                                     dest, "in_ISSUE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_WRITE_RD"             );
751            COMPONENT_MAP(_component,src ,"out_ISSUE_"                           +toString(j)+"_NUM_REG_RD"           ,
752                                     dest, "in_ISSUE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RD"           );
753            COMPONENT_MAP(_component,src ,"out_ISSUE_"                           +toString(j)+"_WRITE_RE"             ,
754                                     dest, "in_ISSUE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_WRITE_RE"             );
755            COMPONENT_MAP(_component,src ,"out_ISSUE_"                           +toString(j)+"_NUM_REG_RE"           ,
756                                     dest, "in_ISSUE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RE"           );
757          }
758
759        // ~~~~~[ Interface "execute_loop" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
760        for (uint32_t j=0; j<_param->_ooo_engine_nb_execute_loop [i]; ++j)
761          {
762            for (uint32_t k=0; k<_param->_ooo_engine_nb_inst_execute [i][j]; ++k)
763              {
764                dest = _name+"_glue";
765#ifdef POSITION
766                _component->interface_map (src ,"execute_loop_"                      +toString(j)+"_"+toString(k),
767                                           dest,"execute_ooo_engine_"+toString(i)+"_"+toString(j)+"_"+toString(k));
768#endif
769
770                COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_"                      +toString(j)+"_"+toString(k)+"_VAL"         ,
771                                         dest,"out_EXECUTE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_"+toString(k)+"_VAL"         );
772                COMPONENT_MAP(_component,src ,"out_EXECUTE_LOOP_"                      +toString(j)+"_"+toString(k)+"_ACK"         ,
773                                         dest, "in_EXECUTE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_"+toString(k)+"_ACK"         );
774                if (_param->_have_port_front_end_id)
775                COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_"                      +toString(j)+"_"+toString(k)+"_FRONT_END_ID",
776                                         dest,"out_EXECUTE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_"+toString(k)+"_FRONT_END_ID");
777                if (_param->_have_port_context_id)
778                COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_"                      +toString(j)+"_"+toString(k)+"_CONTEXT_ID"  ,
779                                         dest,"out_EXECUTE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_"+toString(k)+"_CONTEXT_ID"  );
780                if (_param->_have_port_rob_ptr)
781                COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_"                      +toString(j)+"_"+toString(k)+"_PACKET_ID"   ,
782                                         dest,"out_EXECUTE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_"+toString(k)+"_PACKET_ID"   );
783//              COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_"                      +toString(j)+"_"+toString(k)+"_TYPE"        ,
784//                                       dest,"out_EXECUTE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_"+toString(k)+"_TYPE"        );
785//              COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_"                      +toString(j)+"_"+toString(k)+"_OPERATION"   ,
786//                                       dest,"out_EXECUTE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_"+toString(k)+"_OPERATION"   );
787                COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_"                      +toString(j)+"_"+toString(k)+"_FLAGS"       ,
788                                         dest,"out_EXECUTE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_"+toString(k)+"_FLAGS"       );
789                COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_"                      +toString(j)+"_"+toString(k)+"_EXCEPTION"   ,
790                                         dest,"out_EXECUTE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_"+toString(k)+"_EXCEPTION"   );
791                COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_"                      +toString(j)+"_"+toString(k)+"_NO_SEQUENCE" ,
792                                         dest,"out_EXECUTE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_"+toString(k)+"_NO_SEQUENCE" );
793                COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_"                      +toString(j)+"_"+toString(k)+"_ADDRESS"     ,
794                                         dest,"out_EXECUTE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_"+toString(k)+"_ADDRESS"     );
795                COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_"                      +toString(j)+"_"+toString(k)+"_DATA"        ,
796                                         dest,"out_EXECUTE_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_"+toString(k)+"_DATA"        );
797              }
798          }
799
800        // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
801        for (uint32_t j=0; j<_param->_ooo_engine_nb_inst_insert_rob [i]; ++j)
802          {
803            dest = _name+"_glue";
804#ifdef POSITION
805            _component->interface_map (src ,"insert_"                           +toString(j),
806                                       dest,"insert_ooo_engine_"+toString(i)+"_"+toString(j));
807#endif
808           
809            COMPONENT_MAP(_component,src ,"out_INSERT_"                           +toString(j)+"_VAL"       ,
810                                     dest, "in_INSERT_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_VAL"       );
811            COMPONENT_MAP(_component,src , "in_INSERT_"                           +toString(j)+"_ACK"       ,
812                                     dest,"out_INSERT_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_ACK"       );
813            COMPONENT_MAP(_component,src ,"out_INSERT_"                           +toString(j)+"_RD_USE"    ,
814                                     dest, "in_INSERT_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_RD_USE"    );
815            COMPONENT_MAP(_component,src ,"out_INSERT_"                           +toString(j)+"_RD_NUM_REG",
816                                     dest, "in_INSERT_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_RD_NUM_REG");
817            COMPONENT_MAP(_component,src ,"out_INSERT_"                           +toString(j)+"_RE_USE"    ,
818                                     dest, "in_INSERT_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_RE_USE"    );
819            COMPONENT_MAP(_component,src ,"out_INSERT_"                           +toString(j)+"_RE_NUM_REG",
820                                     dest, "in_INSERT_OOO_ENGINE_"+toString(i)+"_"+toString(j)+"_RE_NUM_REG");
821          }
822      }
823
824    // ===================================================================
825    // =====[ execute_loop ]==============================================
826    // ===================================================================
827    for (uint32_t i=0; i<_param->_nb_execute_loop; ++i)
828      {
829        src = _name+"_execute_loop_"+toString(i);
830        log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
831       
832        // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
833        {
834          dest = _name;
835#ifdef POSITION
836          _component->interface_map (src ,"",
837                                     dest,"");
838#endif
839          PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
840          PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
841        }
842
843        // ~~~~~[ Interface "execute_loop_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~
844        for (uint32_t j=0; j<_param->_nb_read_unit[i]; ++j)
845          {
846            dest = _name+"_glue";
847#ifdef POSITION
848            _component->interface_map (src ,"execute_loop_in_"                   +toString(j),
849                                       dest,"issue_execute_loop_"+toString(i)+"_"+toString(j));
850#endif
851
852            COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_IN_"                   +toString(j)+"_VAL"                  ,
853                                     dest,"out_ISSUE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_VAL"                  );
854            COMPONENT_MAP(_component,src ,"out_EXECUTE_LOOP_IN_"                   +toString(j)+"_ACK"                  ,
855                                     dest, "in_ISSUE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_ACK"                  );
856            if (_param->_have_port_front_end_id)
857            COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_IN_"                   +toString(j)+"_FRONT_END_ID"         ,
858                                     dest,"out_ISSUE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_FRONT_END_ID"         );
859            if (_param->_have_port_context_id)
860            COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_IN_"                   +toString(j)+"_CONTEXT_ID"           ,
861                                     dest,"out_ISSUE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_CONTEXT_ID"           );
862            if (_param->_have_port_ooo_engine_id)
863            COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_IN_"                   +toString(j)+"_OOO_ENGINE_ID"        ,
864                                     dest,"out_ISSUE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_OOO_ENGINE_ID"        );
865            if (_param->_have_port_rob_ptr)
866            COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_IN_"                   +toString(j)+"_PACKET_ID"            ,
867                                     dest,"out_ISSUE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_PACKET_ID"            );
868            COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_IN_"                   +toString(j)+"_OPERATION"            ,
869                                     dest,"out_ISSUE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_OPERATION"            );
870            COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_IN_"                   +toString(j)+"_TYPE"                 ,
871                                     dest,"out_ISSUE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_TYPE"                 );
872            COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_IN_"                   +toString(j)+"_STORE_QUEUE_PTR_WRITE",
873                                     dest,"out_ISSUE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_STORE_QUEUE_PTR_WRITE");
874            if (_param->_have_port_load_queue_ptr)
875            COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_IN_"                   +toString(j)+"_LOAD_QUEUE_PTR_WRITE" ,
876                                     dest,"out_ISSUE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_LOAD_QUEUE_PTR_WRITE" );
877            COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_IN_"                   +toString(j)+"_HAS_IMMEDIAT"         ,
878                                     dest,"out_ISSUE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_HAS_IMMEDIAT"         );
879            COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_IN_"                   +toString(j)+"_IMMEDIAT"             ,
880                                     dest,"out_ISSUE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_IMMEDIAT"             );
881            COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_IN_"                   +toString(j)+"_READ_RA"              ,
882                                     dest,"out_ISSUE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_READ_RA"              );
883            COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_IN_"                   +toString(j)+"_NUM_REG_RA"           ,
884                                     dest,"out_ISSUE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_NUM_REG_RA"           );
885            COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_IN_"                   +toString(j)+"_READ_RB"              ,
886                                     dest,"out_ISSUE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_READ_RB"              );
887            COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_IN_"                   +toString(j)+"_NUM_REG_RB"           ,
888                                     dest,"out_ISSUE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_NUM_REG_RB"           );
889            COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_IN_"                   +toString(j)+"_READ_RC"              ,
890                                     dest,"out_ISSUE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_READ_RC"              );
891            COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_IN_"                   +toString(j)+"_NUM_REG_RC"           ,
892                                     dest,"out_ISSUE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_NUM_REG_RC"           );
893            COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_IN_"                   +toString(j)+"_WRITE_RD"             ,
894                                     dest,"out_ISSUE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_WRITE_RD"             );
895            COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_IN_"                   +toString(j)+"_NUM_REG_RD"           ,
896                                     dest,"out_ISSUE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_NUM_REG_RD"           );
897            COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_IN_"                   +toString(j)+"_WRITE_RE"             ,
898                                     dest,"out_ISSUE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_WRITE_RE"             );
899            COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_IN_"                   +toString(j)+"_NUM_REG_RE"           ,
900                                     dest,"out_ISSUE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_NUM_REG_RE"           );
901          }
902
903        // ~~~~~[ Interface "execute_loop_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~
904        for (uint32_t j=0; j<_param->_nb_write_unit[i]; ++j)
905          {
906            dest = _name+"_glue";
907#ifdef POSITION
908            _component->interface_map (src ,"execute_loop_out_"                    +toString(j),
909                                       dest,"execute_execute_loop_"+toString(i)+"_"+toString(j));
910#endif
911
912            COMPONENT_MAP(_component,src ,"out_EXECUTE_LOOP_OUT_"                    +toString(j)+"_VAL"          ,
913                                     dest, "in_EXECUTE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_VAL"          );
914            COMPONENT_MAP(_component,src , "in_EXECUTE_LOOP_OUT_"                    +toString(j)+"_ACK"          ,
915                                     dest,"out_EXECUTE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_ACK"          );
916            if (_param->_have_port_context_id)
917            COMPONENT_MAP(_component,src ,"out_EXECUTE_LOOP_OUT_"                    +toString(j)+"_CONTEXT_ID"   ,
918                                     dest, "in_EXECUTE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_CONTEXT_ID"   );
919            if (_param->_have_port_front_end_id)
920            COMPONENT_MAP(_component,src ,"out_EXECUTE_LOOP_OUT_"                    +toString(j)+"_FRONT_END_ID" ,
921                                     dest, "in_EXECUTE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_FRONT_END_ID" );
922            if (_param->_have_port_ooo_engine_id)
923            COMPONENT_MAP(_component,src ,"out_EXECUTE_LOOP_OUT_"                    +toString(j)+"_OOO_ENGINE_ID",
924                                     dest, "in_EXECUTE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_OOO_ENGINE_ID");
925            if (_param->_have_port_rob_ptr)
926            COMPONENT_MAP(_component,src ,"out_EXECUTE_LOOP_OUT_"                    +toString(j)+"_PACKET_ID"    ,
927                                     dest, "in_EXECUTE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_PACKET_ID"    );
928//          COMPONENT_MAP(_component,src ,"out_EXECUTE_LOOP_OUT_"                    +toString(j)+"_OPERATION"    ,
929//                                   dest, "in_EXECUTE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_OPERATION"    );
930//          COMPONENT_MAP(_component,src ,"out_EXECUTE_LOOP_OUT_"                    +toString(j)+"_TYPE"         ,
931//                                   dest, "in_EXECUTE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_TYPE"         );
932            COMPONENT_MAP(_component,src ,"out_EXECUTE_LOOP_OUT_"                    +toString(j)+"_FLAGS"        ,
933                                     dest, "in_EXECUTE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_FLAGS"        );
934            COMPONENT_MAP(_component,src ,"out_EXECUTE_LOOP_OUT_"                    +toString(j)+"_EXCEPTION"    ,
935                                     dest, "in_EXECUTE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_EXCEPTION"    );
936            COMPONENT_MAP(_component,src ,"out_EXECUTE_LOOP_OUT_"                    +toString(j)+"_NO_SEQUENCE"  ,
937                                     dest, "in_EXECUTE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_NO_SEQUENCE"  );
938            COMPONENT_MAP(_component,src ,"out_EXECUTE_LOOP_OUT_"                    +toString(j)+"_ADDRESS"      ,
939                                     dest, "in_EXECUTE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_ADDRESS"      );
940            COMPONENT_MAP(_component,src ,"out_EXECUTE_LOOP_OUT_"                    +toString(j)+"_DATA"         ,
941                                     dest, "in_EXECUTE_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_DATA"         );
942          }
943
944        // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
945        for (uint32_t j=0; j<_param->_execute_loop_nb_ooo_engine[i]; ++j)
946          for (uint32_t k=0; k<_param->_execute_loop_nb_inst_insert_rob[i][j]; ++k)
947            {
948              dest = _name+"_glue";
949#ifdef POSITION
950              _component->interface_map (src ,"insert_rob_"                         +toString(j)+"_"+toString(k),
951                                         dest,"insert_execute_loop_"+toString(i)+"_"+toString(j)+"_"+toString(k));
952#endif
953
954              COMPONENT_MAP(_component,src , "in_INSERT_ROB_"                         +toString(j)+"_"+toString(k)+"_VAL"       ,
955                                       dest,"out_INSERT_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_"+toString(k)+"_VAL"       );
956              COMPONENT_MAP(_component,src ,"out_INSERT_ROB_"                         +toString(j)+"_"+toString(k)+"_ACK"       ,
957                                       dest, "in_INSERT_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_"+toString(k)+"_ACK"       );
958              COMPONENT_MAP(_component,src , "in_INSERT_ROB_"                         +toString(j)+"_"+toString(k)+"_RD_USE"    ,
959                                       dest,"out_INSERT_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_"+toString(k)+"_RD_USE"    );
960              COMPONENT_MAP(_component,src , "in_INSERT_ROB_"                         +toString(j)+"_"+toString(k)+"_RD_NUM_REG",
961                                       dest,"out_INSERT_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_"+toString(k)+"_RD_NUM_REG");
962              COMPONENT_MAP(_component,src , "in_INSERT_ROB_"                         +toString(j)+"_"+toString(k)+"_RE_USE"    ,
963                                       dest,"out_INSERT_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_"+toString(k)+"_RE_USE"    );
964              COMPONENT_MAP(_component,src , "in_INSERT_ROB_"                         +toString(j)+"_"+toString(k)+"_RE_NUM_REG",
965                                       dest,"out_INSERT_EXECUTE_LOOP_"+toString(i)+"_"+toString(j)+"_"+toString(k)+"_RE_NUM_REG");
966            }       
967
968        // ~~~~~[ Interface "dcache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
969        // out_DCACHE_REQ_VAL        - dcache_access. in_LSQ_REQ_VAL       
970        //  in_DCACHE_REQ_ACK        - dcache_access.out_LSQ_REQ_ACK       
971        // out_DCACHE_REQ_CONTEXT_ID - dcache_access. in_LSQ_REQ_CONTEXT_ID
972        // out_DCACHE_REQ_PACKET_ID  - dcache_access. in_LSQ_REQ_PACKET_ID
973        // out_DCACHE_REQ_ADDRESS    - dcache_access. in_LSQ_REQ_ADDRESS   
974        // out_DCACHE_REQ_TYPE       - dcache_access. in_LSQ_REQ_TYPE     
975        // out_DCACHE_REQ_WDATA      - dcache_access. in_LSQ_REQ_WDATA
976
977        // ~~~~~[ Interface "dcache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
978        //  in_DCACHE_RSP_VAL        - dcache_access.out_LSQ_RSP_VAL       
979        // out_DCACHE_RSP_ACK        - dcache_access. in_LSQ_RSP_ACK       
980        //  in_DCACHE_RSP_CONTEXT_ID - dcache_access.out_LSQ_RSP_CONTEXT_ID
981        //  in_DCACHE_RSP_PACKET_ID  - dcache_access.out_LSQ_RSP_PACKET_ID
982        //  in_DCACHE_RSP_RDATA      - dcache_access.out_LSQ_RSP_RDATA     
983        //  in_DCACHE_RSP_ERROR      - dcache_access.out_LSQ_RSP_ERROR
984      }
985
986    // ===================================================================
987    // =====[ icache_access ]=============================================
988    // ===================================================================
989    {
990      src = _name+"_icache_access";
991      log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
992     
993      // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
994      {
995        dest = _name;
996#ifdef POSITION
997        _component->interface_map (src ,"",
998                                   dest,"");
999#endif
1000        PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
1001        PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
1002      }
1003
1004    // ~~~~~[ Interface "icache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1005    for (uint32_t i=0; i<_param->_nb_icache_port; ++i)
1006      {
1007        dest = _name;
1008#ifdef POSITION
1009        _component->interface_map (src ,"icache_req_"+toString(i),
1010                                   dest,"icache_req_"+toString(i));
1011#endif
1012       
1013        PORT_MAP(_component,src ,"out_ICACHE_REQ_"+toString(i)+"_VAL"      ,
1014                            dest,"out_ICACHE_REQ_"+toString(i)+"_VAL"      );
1015        PORT_MAP(_component,src , "in_ICACHE_REQ_"+toString(i)+"_ACK"      ,
1016                            dest, "in_ICACHE_REQ_"+toString(i)+"_ACK"      );
1017        if (_param->_have_port_icache_thread_id)
1018        PORT_MAP(_component,src ,"out_ICACHE_REQ_"+toString(i)+"_THREAD_ID",
1019                            dest,"out_ICACHE_REQ_"+toString(i)+"_THREAD_ID");
1020        if (_param->_have_port_icache_packet_id)
1021        PORT_MAP(_component,src ,"out_ICACHE_REQ_"+toString(i)+"_PACKET_ID",
1022                            dest,"out_ICACHE_REQ_"+toString(i)+"_PACKET_ID");
1023        PORT_MAP(_component,src ,"out_ICACHE_REQ_"+toString(i)+"_ADDRESS"  ,
1024                            dest,"out_ICACHE_REQ_"+toString(i)+"_ADDRESS"  );
1025        PORT_MAP(_component,src ,"out_ICACHE_REQ_"+toString(i)+"_TYPE"     ,
1026                            dest,"out_ICACHE_REQ_"+toString(i)+"_TYPE"     );
1027      }
1028
1029    // ~~~~~[ Interface "icache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1030    for (uint32_t i=0; i<_param->_nb_icache_port; ++i)
1031      {
1032        dest = _name;
1033#ifdef POSITION
1034        _component->interface_map (src ,"icache_rsp_"+toString(i),
1035                                   dest,"icache_rsp_"+toString(i));
1036#endif
1037
1038        PORT_MAP(_component,src , "in_ICACHE_RSP_"+toString(i)+"_VAL"        ,
1039                            dest, "in_ICACHE_RSP_"+toString(i)+"_VAL"        );
1040        PORT_MAP(_component,src ,"out_ICACHE_RSP_"+toString(i)+"_ACK"        ,
1041                            dest,"out_ICACHE_RSP_"+toString(i)+"_ACK"        );
1042        if (_param->_have_port_icache_thread_id)
1043        PORT_MAP(_component,src , "in_ICACHE_RSP_"+toString(i)+"_THREAD_ID"  ,
1044                            dest, "in_ICACHE_RSP_"+toString(i)+"_THREAD_ID"  );
1045        if (_param->_have_port_icache_packet_id)
1046        PORT_MAP(_component,src , "in_ICACHE_RSP_"+toString(i)+"_PACKET_ID"  ,
1047                            dest, "in_ICACHE_RSP_"+toString(i)+"_PACKET_ID"  );
1048        PORT_MAP(_component,src , "in_ICACHE_RSP_"+toString(i)+"_ERROR"      ,
1049                            dest, "in_ICACHE_RSP_"+toString(i)+"_ERROR"      );
1050
1051        for (uint32_t j=0; j<_param->_icache_nb_instruction[i];++j)
1052          {
1053#ifdef POSITION
1054            _component->interface_map (src ,"icache_rsp_"+toString(i)+"_"+toString(j),
1055                                       dest,"icache_rsp_"+toString(i)+"_"+toString(j));
1056#endif
1057
1058                           
1059            PORT_MAP(_component,src , "in_ICACHE_RSP_"+toString(i)+"_"+toString(j)+"_INSTRUCTION",
1060                                dest, "in_ICACHE_RSP_"+toString(i)+"_"+toString(j)+"_INSTRUCTION");
1061          }
1062      }
1063
1064    // ~~~~~[ Interface "context_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1065    for (uint32_t i=0; i<_param->_nb_front_end; ++i)
1066      for (uint32_t j=0; j<_param->_nb_context[i]; ++j)
1067        {
1068          dest = _name+"_front_end_"+toString(i);
1069#ifdef POSITION
1070          _component->interface_map (src ,"context_req_"+toString(i)+"_"+toString(j),
1071                                     dest,"icache_req_"                 +toString(j));
1072#endif
1073
1074          COMPONENT_MAP(_component,src , "in_CONTEXT_REQ_"+toString(i)+"_"+toString(j)+"_VAL"      ,
1075                                   dest,"out_ICACHE_REQ_"                 +toString(j)+"_VAL"      );
1076          COMPONENT_MAP(_component,src ,"out_CONTEXT_REQ_"+toString(i)+"_"+toString(j)+"_ACK"      ,
1077                                   dest, "in_ICACHE_REQ_"                 +toString(j)+"_ACK"      );
1078//        COMPONENT_MAP(_component,src , "in_CONTEXT_REQ_"+toString(i)+"_"+toString(j)+"_THREAD_ID",
1079//                                 dest,"out_ICACHE_REQ_"                 +toString(j)+"_THREAD_ID");
1080          if (_param->_have_port_icache_packet_id)
1081          COMPONENT_MAP(_component,src , "in_CONTEXT_REQ_"+toString(i)+"_"+toString(j)+"_PACKET_ID",
1082                                   dest,"out_ICACHE_REQ_"                 +toString(j)+"_PACKET_ID");
1083          COMPONENT_MAP(_component,src , "in_CONTEXT_REQ_"+toString(i)+"_"+toString(j)+"_ADDRESS"  ,
1084                                   dest,"out_ICACHE_REQ_"                 +toString(j)+"_ADDRESS"  );
1085          COMPONENT_MAP(_component,src , "in_CONTEXT_REQ_"+toString(i)+"_"+toString(j)+"_TYPE"     ,
1086                                   dest,"out_ICACHE_REQ_"                 +toString(j)+"_TYPE"     );
1087        }   
1088   
1089    // ~~~~~[ Interface "context_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1090    for (uint32_t i=0; i<_param->_nb_front_end; ++i)
1091      for (uint32_t j=0; j<_param->_nb_context[i]; ++j)
1092        {
1093          dest = _name+"_front_end_"+toString(i);
1094#ifdef POSITION
1095          _component->interface_map (src ,"context_rsp_"+toString(i)+"_"+toString(j),
1096                                     dest,"icache_rsp_"                 +toString(j));
1097#endif
1098
1099          COMPONENT_MAP(_component,src ,"out_CONTEXT_RSP_"+toString(i)+"_"+toString(j)+"_VAL"        ,
1100                                   dest, "in_ICACHE_RSP_"                 +toString(j)+"_VAL"        );
1101          COMPONENT_MAP(_component,src , "in_CONTEXT_RSP_"+toString(i)+"_"+toString(j)+"_ACK"        ,
1102                                   dest,"out_ICACHE_RSP_"                 +toString(j)+"_ACK"        );
1103//        COMPONENT_MAP(_component,src ,"out_CONTEXT_RSP_"+toString(i)+"_"+toString(j)+"_THREAD_ID"  ,
1104//                                 dest, "in_ICACHE_RSP_"                 +toString(j)+"_THREAD_ID"  );
1105          if (_param->_have_port_icache_packet_id)
1106          COMPONENT_MAP(_component,src ,"out_CONTEXT_RSP_"+toString(i)+"_"+toString(j)+"_PACKET_ID"  ,
1107                                   dest, "in_ICACHE_RSP_"                 +toString(j)+"_PACKET_ID"  );
1108          COMPONENT_MAP(_component,src ,"out_CONTEXT_RSP_"+toString(i)+"_"+toString(j)+"_ERROR"      ,
1109                                   dest, "in_ICACHE_RSP_"                 +toString(j)+"_ERROR"      );
1110
1111          for (uint32_t k=0; k<_param->_front_end_nb_inst_fetch[i][j];++k)
1112            {
1113#ifdef POSITION
1114              _component->interface_map (src ,"context_rsp_"+toString(i)+"_"+toString(j)+"_"+toString(k),
1115                                         dest,"icache_rsp_"                 +toString(j)+"_"+toString(k));
1116#endif
1117             
1118              COMPONENT_MAP(_component,src ,"out_CONTEXT_RSP_"+toString(i)+"_"+toString(j)+"_"+toString(k)+"_INSTRUCTION",
1119                                       dest, "in_ICACHE_RSP_"                 +toString(j)+"_"+toString(k)+"_INSTRUCTION");
1120            }
1121         
1122        }
1123    }
1124
1125    // ===================================================================
1126    // =====[ dcache_access ]=============================================
1127    // ===================================================================
1128    {
1129      src = _name+"_dcache_access";
1130      log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
1131     
1132      // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1133      {
1134        dest = _name;
1135#ifdef POSITION
1136        _component->interface_map (src ,"",
1137                                   dest,"");
1138#endif
1139        PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
1140        PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
1141      }
1142
1143    // ~~~~~[ Interface "dcache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1144    for (uint32_t i=0; i<_param->_nb_dcache_port; ++i)
1145      {
1146        dest = _name;
1147#ifdef POSITION
1148        _component->interface_map (src ,"dcache_req_"+toString(i),
1149                                   dest,"dcache_req_"+toString(i));
1150#endif
1151       
1152        PORT_MAP(_component,src ,"out_DCACHE_REQ_"+toString(i)+"_VAL"      ,
1153                            dest,"out_DCACHE_REQ_"+toString(i)+"_VAL"      );
1154        PORT_MAP(_component,src , "in_DCACHE_REQ_"+toString(i)+"_ACK"      ,
1155                            dest, "in_DCACHE_REQ_"+toString(i)+"_ACK"      );
1156        if (_param->_have_port_dcache_thread_id)
1157        PORT_MAP(_component,src ,"out_DCACHE_REQ_"+toString(i)+"_THREAD_ID",
1158                            dest,"out_DCACHE_REQ_"+toString(i)+"_THREAD_ID");
1159        if (_param->_have_port_dcache_packet_id)
1160        PORT_MAP(_component,src ,"out_DCACHE_REQ_"+toString(i)+"_PACKET_ID",
1161                            dest,"out_DCACHE_REQ_"+toString(i)+"_PACKET_ID");
1162        PORT_MAP(_component,src ,"out_DCACHE_REQ_"+toString(i)+"_ADDRESS"  ,
1163                            dest,"out_DCACHE_REQ_"+toString(i)+"_ADDRESS"  );
1164        PORT_MAP(_component,src ,"out_DCACHE_REQ_"+toString(i)+"_WDATA"    ,
1165                            dest,"out_DCACHE_REQ_"+toString(i)+"_WDATA"    );
1166        PORT_MAP(_component,src ,"out_DCACHE_REQ_"+toString(i)+"_TYPE"     ,
1167                            dest,"out_DCACHE_REQ_"+toString(i)+"_TYPE"     );
1168      }
1169
1170    // ~~~~~[ Interface "dcache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1171    for (uint32_t i=0; i<_param->_nb_dcache_port; ++i)
1172      {
1173        dest = _name;
1174#ifdef POSITION
1175        _component->interface_map (src ,"dcache_rsp_"+toString(i),
1176                                   dest,"dcache_rsp_"+toString(i));
1177#endif
1178
1179        PORT_MAP(_component,src , "in_DCACHE_RSP_"+toString(i)+"_VAL"        ,
1180                            dest, "in_DCACHE_RSP_"+toString(i)+"_VAL"        );
1181        PORT_MAP(_component,src ,"out_DCACHE_RSP_"+toString(i)+"_ACK"        ,
1182                            dest,"out_DCACHE_RSP_"+toString(i)+"_ACK"        );
1183        if (_param->_have_port_dcache_thread_id)
1184        PORT_MAP(_component,src , "in_DCACHE_RSP_"+toString(i)+"_THREAD_ID"  ,
1185                            dest, "in_DCACHE_RSP_"+toString(i)+"_THREAD_ID"  );
1186        if (_param->_have_port_dcache_packet_id)
1187        PORT_MAP(_component,src , "in_DCACHE_RSP_"+toString(i)+"_PACKET_ID"  ,
1188                            dest, "in_DCACHE_RSP_"+toString(i)+"_PACKET_ID"  );
1189        PORT_MAP(_component,src , "in_DCACHE_RSP_"+toString(i)+"_RDATA"      ,
1190                            dest, "in_DCACHE_RSP_"+toString(i)+"_RDATA"      );
1191        PORT_MAP(_component,src , "in_DCACHE_RSP_"+toString(i)+"_ERROR"      ,
1192                            dest, "in_DCACHE_RSP_"+toString(i)+"_ERROR"      );
1193      }
1194   
1195    // ~~~~~[ Interface "lsq_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1196    for (uint32_t i=0; i<_param->_nb_execute_loop; ++i)
1197      for (uint32_t j=0; j<_param->_execute_loop_nb_load_store_unit[i]; ++j)
1198        for (uint32_t k=0; k<_param->_execute_loop_nb_cache_port [i][j]; ++k)
1199          {
1200            dest = _name+"_execute_loop_"+toString(i);
1201#ifdef POSITION
1202            _component->interface_map (src ,"lsq_req_"   +toString(i)+"_"+toString(j)+"_"+toString(k),
1203                                       dest,"dcache_req_"                +toString(j)+"_"+toString(k));
1204#endif
1205
1206            COMPONENT_MAP(_component,src , "in_LSQ_REQ_"   +toString(i)+"_"+toString(j)+"_"+toString(k)+"_VAL"      ,
1207                                     dest,"out_DCACHE_REQ_"                +toString(j)+"_"+toString(k)+"_VAL"      );
1208            COMPONENT_MAP(_component,src ,"out_LSQ_REQ_"   +toString(i)+"_"+toString(j)+"_"+toString(k)+"_ACK"      ,
1209                                     dest, "in_DCACHE_REQ_"                +toString(j)+"_"+toString(k)+"_ACK"      );
1210            if (_param->_have_port_dcache_thread_id)
1211            COMPONENT_MAP(_component,src , "in_LSQ_REQ_"   +toString(i)+"_"+toString(j)+"_"+toString(k)+"_THREAD_ID",
1212                                     dest,"out_DCACHE_REQ_"                +toString(j)+"_"+toString(k)+"_CONTEXT_ID");
1213            if (_param->_have_port_dcache_packet_id)
1214            COMPONENT_MAP(_component,src , "in_LSQ_REQ_"   +toString(i)+"_"+toString(j)+"_"+toString(k)+"_PACKET_ID",
1215                                     dest,"out_DCACHE_REQ_"                +toString(j)+"_"+toString(k)+"_PACKET_ID");
1216            COMPONENT_MAP(_component,src , "in_LSQ_REQ_"   +toString(i)+"_"+toString(j)+"_"+toString(k)+"_ADDRESS"  ,
1217                                     dest,"out_DCACHE_REQ_"                +toString(j)+"_"+toString(k)+"_ADDRESS"  );
1218            COMPONENT_MAP(_component,src , "in_LSQ_REQ_"   +toString(i)+"_"+toString(j)+"_"+toString(k)+"_WDATA"    ,
1219                                     dest,"out_DCACHE_REQ_"                +toString(j)+"_"+toString(k)+"_WDATA"    );
1220            COMPONENT_MAP(_component,src , "in_LSQ_REQ_"   +toString(i)+"_"+toString(j)+"_"+toString(k)+"_TYPE"     ,
1221                                     dest,"out_DCACHE_REQ_"                +toString(j)+"_"+toString(k)+"_TYPE"     );
1222          }
1223
1224    // ~~~~~[ Interface "lsq_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1225    for (uint32_t i=0; i<_param->_nb_execute_loop; ++i)
1226      for (uint32_t j=0; j<_param->_execute_loop_nb_load_store_unit[i]; ++j)
1227        for (uint32_t k=0; k<_param->_execute_loop_nb_cache_port [i][j]; ++k)
1228          {
1229            dest = _name+"_execute_loop_"+toString(i);
1230#ifdef POSITION
1231            _component->interface_map (src ,"lsq_rsp_"   +toString(i)+"_"+toString(j)+"_"+toString(k),
1232                                       dest,"dcache_rsp_"                +toString(j)+"_"+toString(k));
1233#endif
1234
1235            COMPONENT_MAP(_component,src ,"out_LSQ_RSP_"   +toString(i)+"_"+toString(j)+"_"+toString(k)+"_VAL"      ,
1236                                     dest, "in_DCACHE_RSP_"                +toString(j)+"_"+toString(k)+"_VAL"      );
1237            COMPONENT_MAP(_component,src , "in_LSQ_RSP_"   +toString(i)+"_"+toString(j)+"_"+toString(k)+"_ACK"      ,
1238                                     dest,"out_DCACHE_RSP_"                +toString(j)+"_"+toString(k)+"_ACK"      );
1239            if (_param->_have_port_dcache_thread_id)
1240            COMPONENT_MAP(_component,src ,"out_LSQ_RSP_"   +toString(i)+"_"+toString(j)+"_"+toString(k)+"_THREAD_ID",
1241                                     dest, "in_DCACHE_RSP_"                +toString(j)+"_"+toString(k)+"_CONTEXT_ID");
1242            if (_param->_have_port_dcache_packet_id)
1243            COMPONENT_MAP(_component,src ,"out_LSQ_RSP_"   +toString(i)+"_"+toString(j)+"_"+toString(k)+"_PACKET_ID",
1244                                     dest, "in_DCACHE_RSP_"                +toString(j)+"_"+toString(k)+"_PACKET_ID");
1245            COMPONENT_MAP(_component,src ,"out_LSQ_RSP_"   +toString(i)+"_"+toString(j)+"_"+toString(k)+"_RDATA"    ,
1246                                     dest, "in_DCACHE_RSP_"                +toString(j)+"_"+toString(k)+"_RDATA"    );
1247            COMPONENT_MAP(_component,src ,"out_LSQ_RSP_"   +toString(i)+"_"+toString(j)+"_"+toString(k)+"_ERROR"    ,
1248                                     dest, "in_DCACHE_RSP_"                +toString(j)+"_"+toString(k)+"_ERROR"    );
1249          }
1250    }
1251
1252    // ===================================================================
1253    // =====[ glue ]======================================================
1254    // ===================================================================
1255    {
1256      src = _name+"_glue";
1257      log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
1258     
1259      // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1260      {
1261        dest = _name;
1262#ifdef POSITION
1263        _component->interface_map (src ,"",
1264                                   dest,"");
1265#endif
1266        PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
1267        PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
1268      }
1269
1270      // ~~~~~[ Interface : "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~         
1271      // out_RENAME_FRONT_END_ID - ooo_engine. in_RENAME_FRONT_END_ID
1272     
1273      // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~
1274      // out_BRANCH_COMPLETE_FRONT_END_VAL             - front_end. in_BRANCH_COMPLETE_VAL           
1275      //  in_BRANCH_COMPLETE_FRONT_END_ACK             - front_end.out_BRANCH_COMPLETE_ACK           
1276      // out_BRANCH_COMPLETE_FRONT_END_CONTEXT_ID      - front_end. in_BRANCH_COMPLETE_CONTEXT_ID     
1277      // out_BRANCH_COMPLETE_FRONT_END_DEPTH           - front_end. in_BRANCH_COMPLETE_DEPTH         
1278      // out_BRANCH_COMPLETE_FRONT_END_ADDRESS         - front_end. in_BRANCH_COMPLETE_ADDRESS       
1279      // out_BRANCH_COMPLETE_FRONT_END_FLAG            - front_end. in_BRANCH_COMPLETE_NO_SEQUENCE   
1280      //  in_BRANCH_COMPLETE_FRONT_END_MISS_PREDICTION - front_end.out_BRANCH_COMPLETE_MISS_PREDICTION
1281     
1282      //  in_BRANCH_COMPLETE_OOO_ENGINE_VAL            - ooo_engine.out_BRANCH_COMPLETE_VAL           
1283      // out_BRANCH_COMPLETE_OOO_ENGINE_ACK            - ooo_engine. in_BRANCH_COMPLETE_ACK           
1284      //  in_BRANCH_COMPLETE_OOO_ENGINE_FRONT_END_ID   - ooo_engine.out_BRANCH_COMPLETE_FRONT_END_ID   
1285      //  in_BRANCH_COMPLETE_OOO_ENGINE_CONTEXT_ID     - ooo_engine.out_BRANCH_COMPLETE_CONTEXT_ID     
1286      //  in_BRANCH_COMPLETE_OOO_ENGINE_DEPTH          - ooo_engine.out_BRANCH_COMPLETE_DEPTH         
1287      //  in_BRANCH_COMPLETE_OOO_ENGINE_ADDRESS        - ooo_engine.out_BRANCH_COMPLETE_ADDRESS       
1288      //  in_BRANCH_COMPLETE_OOO_ENGINE_FLAG           - ooo_engine.out_BRANCH_COMPLETE_NO_SEQUENCE   
1289      // out_BRANCH_COMPLETE_OOO_ENGINE_MISS_PREDICTION- ooo_engine. in_BRANCH_COMPLETE_MISS_PREDICTION
1290     
1291      // ~~~~~[ Interface : "commit_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1292      // out_COMMIT_EVENT_FRONT_END_VAL              - front_end. in_COMMIT_EVENT_VAL             
1293      //  in_COMMIT_EVENT_FRONT_END_ACK              - front_end.out_COMMIT_EVENT_ACK             
1294      // out_COMMIT_EVENT_FRONT_END_CONTEXT_ID       - front_end. in_COMMIT_EVENT_CONTEXT_ID     
1295      // out_COMMIT_EVENT_FRONT_END_DEPTH            - front_end. in_COMMIT_EVENT_DEPTH           
1296      // out_COMMIT_EVENT_FRONT_END_TYPE             - front_end. in_COMMIT_EVENT_TYPE           
1297      // out_COMMIT_EVENT_FRONT_END_IS_DELAY_SLOT    - front_end. in_COMMIT_EVENT_IS_DELAY_SLOT   
1298      // out_COMMIT_EVENT_FRONT_END_ADDRESS          - front_end. in_COMMIT_EVENT_ADDRESS         
1299      // out_COMMIT_EVENT_FRONT_END_ADDRESS_EPCR_VAL - front_end. in_COMMIT_EVENT_ADDRESS_EPCR_VAL
1300      // out_COMMIT_EVENT_FRONT_END_ADDRESS_EPCR     - front_end. in_COMMIT_EVENT_ADDRESS_EPCR   
1301      // out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR_VAL - front_end. in_COMMIT_EVENT_ADDRESS_EEAR_VAL
1302      // out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR     - front_end. in_COMMIT_EVENT_ADDRESS_EEAR   
1303     
1304      //  in_COMMIT_EVENT_OOO_ENGINE_VAL             - ooo_engine.out_COMMIT_EVENT_VAL             
1305      // out_COMMIT_EVENT_OOO_ENGINE_ACK             - ooo_engine. in_COMMIT_EVENT_ACK             
1306      //  in_COMMIT_EVENT_OOO_ENGINE_FRONT_END_ID    - ooo_engine.out_COMMIT_EVENT_FRONT_END_ID   
1307      //  in_COMMIT_EVENT_OOO_ENGINE_CONTEXT_ID      - ooo_engine.out_COMMIT_EVENT_CONTEXT_ID     
1308      //  in_COMMIT_EVENT_OOO_ENGINE_DEPTH           - ooo_engine.out_COMMIT_EVENT_DEPTH           
1309      //  in_COMMIT_EVENT_OOO_ENGINE_TYPE            - ooo_engine.out_COMMIT_EVENT_TYPE           
1310      //  in_COMMIT_EVENT_OOO_ENGINE_IS_DELAY_SLOT   - ooo_engine.out_COMMIT_EVENT_IS_DELAY_SLOT   
1311      //  in_COMMIT_EVENT_OOO_ENGINE_ADDRESS         - ooo_engine.out_COMMIT_EVENT_ADDRESS         
1312      //  in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EPCR_VAL- ooo_engine.out_COMMIT_EVENT_ADDRESS_EPCR_VAL
1313      //  in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EPCR    - ooo_engine.out_COMMIT_EVENT_ADDRESS_EPCR   
1314      //  in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR_VAL- ooo_engine.out_COMMIT_EVENT_ADDRESS_EEAR_VAL
1315      //  in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR    - ooo_engine.out_COMMIT_EVENT_ADDRESS_EEAR   
1316     
1317      // ~~~~~[ Interface : "issue" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1318      //  in_ISSUE_OOO_ENGINE_VAL                   - ooo_engine.out_ISSUE_VAL                 
1319      // out_ISSUE_OOO_ENGINE_ACK                   - ooo_engine. in_ISSUE_ACK                 
1320      //  in_ISSUE_OOO_ENGINE_FRONT_END_ID          - ooo_engine.out_ISSUE_FRONT_END_ID         
1321      //  in_ISSUE_OOO_ENGINE_CONTEXT_ID            - ooo_engine.out_ISSUE_CONTEXT_ID           
1322      //  in_ISSUE_OOO_ENGINE_PACKET_ID             - ooo_engine.out_ISSUE_PACKET_ID           
1323      //  in_ISSUE_OOO_ENGINE_TYPE                  - ooo_engine.out_ISSUE_TYPE                 
1324      //  in_ISSUE_OOO_ENGINE_OPERATION             - ooo_engine.out_ISSUE_OPERATION           
1325      //  in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_WRITE - ooo_engine.out_ISSUE_STORE_QUEUE_PTR_WRITE
1326      //  in_ISSUE_OOO_ENGINE_LOAD_QUEUE_PTR_WRITE  - ooo_engine.out_ISSUE_LOAD_QUEUE_PTR_WRITE
1327      //  in_ISSUE_OOO_ENGINE_HAS_IMMEDIAT          - ooo_engine.out_ISSUE_HAS_IMMEDIAT         
1328      //  in_ISSUE_OOO_ENGINE_IMMEDIAT              - ooo_engine.out_ISSUE_IMMEDIAT             
1329      //  in_ISSUE_OOO_ENGINE_READ_RA               - ooo_engine.out_ISSUE_READ_RA             
1330      //  in_ISSUE_OOO_ENGINE_NUM_REG_RA            - ooo_engine.out_ISSUE_NUM_REG_RA           
1331      //  in_ISSUE_OOO_ENGINE_READ_RB               - ooo_engine.out_ISSUE_READ_RB             
1332      //  in_ISSUE_OOO_ENGINE_NUM_REG_RB            - ooo_engine.out_ISSUE_NUM_REG_RB           
1333      //  in_ISSUE_OOO_ENGINE_READ_RC               - ooo_engine.out_ISSUE_READ_RC             
1334      //  in_ISSUE_OOO_ENGINE_NUM_REG_RC            - ooo_engine.out_ISSUE_NUM_REG_RC           
1335      //  in_ISSUE_OOO_ENGINE_WRITE_RD              - ooo_engine.out_ISSUE_WRITE_RD             
1336      //  in_ISSUE_OOO_ENGINE_NUM_REG_RD            - ooo_engine.out_ISSUE_NUM_REG_RD           
1337      //  in_ISSUE_OOO_ENGINE_WRITE_RE              - ooo_engine.out_ISSUE_WRITE_RE             
1338      //  in_ISSUE_OOO_ENGINE_NUM_REG_RE            - ooo_engine.out_ISSUE_NUM_REG_RE           
1339     
1340      // out_ISSUE_EXECUTE_LOOP_VAL                   - execute_loop. in_EXECUTE_LOOP_IN_VAL                 
1341      //  in_ISSUE_EXECUTE_LOOP_ACK                   - execute_loop. in_EXECUTE_LOOP_IN_ACK                 
1342      // out_ISSUE_EXECUTE_LOOP_CONTEXT_ID            - execute_loop. in_EXECUTE_LOOP_IN_CONTEXT_ID           
1343      // out_ISSUE_EXECUTE_LOOP_FRONT_END_ID          - execute_loop. in_EXECUTE_LOOP_IN_FRONT_END_ID         
1344      // out_ISSUE_EXECUTE_LOOP_OOO_ENGINE_ID         - execute_loop. in_EXECUTE_LOOP_IN_OOO_ENGINE_ID       
1345      // out_ISSUE_EXECUTE_LOOP_PACKET_ID             - execute_loop. in_EXECUTE_LOOP_IN_PACKET_ID           
1346      // out_ISSUE_EXECUTE_LOOP_OPERATION             - execute_loop. in_EXECUTE_LOOP_IN_OPERATION           
1347      // out_ISSUE_EXECUTE_LOOP_TYPE                  - execute_loop. in_EXECUTE_LOOP_IN_TYPE                 
1348      // out_ISSUE_EXECUTE_LOOP_STORE_QUEUE_PTR_WRITE - execute_loop. in_EXECUTE_LOOP_IN_STORE_QUEUE_PTR_WRITE
1349      // out_ISSUE_EXECUTE_LOOP_LOAD_QUEUE_PTR_WRITE  - execute_loop. in_EXECUTE_LOOP_IN_LOAD_QUEUE_PTR_WRITE
1350      // out_ISSUE_EXECUTE_LOOP_HAS_IMMEDIAT          - execute_loop. in_EXECUTE_LOOP_IN_HAS_IMMEDIAT         
1351      // out_ISSUE_EXECUTE_LOOP_IMMEDIAT              - execute_loop. in_EXECUTE_LOOP_IN_IMMEDIAT             
1352      // out_ISSUE_EXECUTE_LOOP_READ_RA               - execute_loop. in_EXECUTE_LOOP_IN_READ_RA             
1353      // out_ISSUE_EXECUTE_LOOP_NUM_REG_RA            - execute_loop. in_EXECUTE_LOOP_IN_NUM_REG_RA           
1354      // out_ISSUE_EXECUTE_LOOP_READ_RB               - execute_loop. in_EXECUTE_LOOP_IN_READ_RB             
1355      // out_ISSUE_EXECUTE_LOOP_NUM_REG_RB            - execute_loop. in_EXECUTE_LOOP_IN_NUM_REG_RB           
1356      // out_ISSUE_EXECUTE_LOOP_READ_RC               - execute_loop. in_EXECUTE_LOOP_IN_READ_RC             
1357      // out_ISSUE_EXECUTE_LOOP_NUM_REG_RC            - execute_loop. in_EXECUTE_LOOP_IN_NUM_REG_RC           
1358      // out_ISSUE_EXECUTE_LOOP_WRITE_RD              - execute_loop. in_EXECUTE_LOOP_IN_WRITE_RD             
1359      // out_ISSUE_EXECUTE_LOOP_NUM_REG_RD            - execute_loop. in_EXECUTE_LOOP_IN_NUM_REG_RD           
1360      // out_ISSUE_EXECUTE_LOOP_WRITE_RE              - execute_loop. in_EXECUTE_LOOP_IN_WRITE_RE             
1361      // out_ISSUE_EXECUTE_LOOP_NUM_REG_RE            - execute_loop. in_EXECUTE_LOOP_IN_NUM_REG_RE           
1362 
1363 
1364      // ~~~~~[ Interface "execute_loop" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1365      //   out_EXECUTE_OOO_ENGINE_VAL          - ooo_engine. in_EXECUTE_LOOP_VAL         
1366      //    in_EXECUTE_OOO_ENGINE_ACK          - ooo_engine.out_EXECUTE_LOOP_ACK         
1367      //   out_EXECUTE_OOO_ENGINE_FRONT_END_ID - ooo_engine. in_EXECUTE_LOOP_FRONT_END_ID
1368      //   out_EXECUTE_OOO_ENGINE_CONTEXT_ID   - ooo_engine. in_EXECUTE_LOOP_CONTEXT_ID 
1369      //   out_EXECUTE_OOO_ENGINE_PACKET_ID    - ooo_engine. in_EXECUTE_LOOP_PACKET_ID   
1370      //// out_EXECUTE_OOO_ENGINE_TYPE         - ooo_engine. in_EXECUTE_LOOP_TYPE       
1371      //// out_EXECUTE_OOO_ENGINE_OPERATION    - ooo_engine. in_EXECUTE_LOOP_OPERATION   
1372      //   out_EXECUTE_OOO_ENGINE_FLAGS        - ooo_engine. in_EXECUTE_LOOP_FLAGS       
1373      //   out_EXECUTE_OOO_ENGINE_EXCEPTION    - ooo_engine. in_EXECUTE_LOOP_EXCEPTION   
1374      //   out_EXECUTE_OOO_ENGINE_NO_SEQUENCE  - ooo_engine. in_EXECUTE_LOOP_NO_SEQUENCE
1375      //   out_EXECUTE_OOO_ENGINE_ADDRESS      - ooo_engine. in_EXECUTE_LOOP_ADDRESS     
1376      //   out_EXECUTE_OOO_ENGINE_DATA         - ooo_engine. in_EXECUTE_LOOP_DATA       
1377 
1378      //    in_EXECUTE_EXECUTE_LOOP_VAL           - execute_loop.out_EXECUTE_LOOP_OUT_VAL         
1379      //   out_EXECUTE_EXECUTE_LOOP_ACK           - execute_loop.out_EXECUTE_LOOP_OUT_ACK         
1380      //    in_EXECUTE_EXECUTE_LOOP_CONTEXT_ID    - execute_loop.out_EXECUTE_LOOP_OUT_CONTEXT_ID   
1381      //    in_EXECUTE_EXECUTE_LOOP_FRONT_END_ID  - execute_loop.out_EXECUTE_LOOP_OUT_FRONT_END_ID
1382      //    in_EXECUTE_EXECUTE_LOOP_OOO_ENGINE_ID - execute_loop.out_EXECUTE_LOOP_OUT_OOO_ENGINE_ID
1383      //    in_EXECUTE_EXECUTE_LOOP_PACKET_ID     - execute_loop.out_EXECUTE_LOOP_OUT_PACKET_ID   
1384      ////  in_EXECUTE_EXECUTE_LOOP_OPERATION     - execute_loop.out_EXECUTE_LOOP_OUT_OPERATION   
1385      ////  in_EXECUTE_EXECUTE_LOOP_TYPE          - execute_loop.out_EXECUTE_LOOP_OUT_TYPE         
1386      //    in_EXECUTE_EXECUTE_LOOP_FLAGS         - execute_loop.out_EXECUTE_LOOP_OUT_FLAGS       
1387      //    in_EXECUTE_EXECUTE_LOOP_EXCEPTION     - execute_loop.out_EXECUTE_LOOP_OUT_EXCEPTION   
1388      //    in_EXECUTE_EXECUTE_LOOP_NO_SEQUENCE   - execute_loop.out_EXECUTE_LOOP_OUT_NO_SEQUENCE 
1389      //    in_EXECUTE_EXECUTE_LOOP_ADDRESS       - execute_loop.out_EXECUTE_LOOP_OUT_ADDRESS     
1390      //    in_EXECUTE_EXECUTE_LOOP_DATA          - execute_loop.out_EXECUTE_LOOP_OUT_DATA         
1391
1392      // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1393      //  in_INSERT_OOO_ENGINE_VAL        - ooo_engine.out_INSERT_VAL       
1394      // out_INSERT_OOO_ENGINE_ACK        - ooo_engine. in_INSERT_ACK       
1395      //  in_INSERT_OOO_ENGINE_RD_USE     - ooo_engine.out_INSERT_RD_USE   
1396      //  in_INSERT_OOO_ENGINE_RD_NUM_REG - ooo_engine.out_INSERT_RD_NUM_REG
1397      //  in_INSERT_OOO_ENGINE_RE_USE     - ooo_engine.out_INSERT_RE_USE   
1398      //  in_INSERT_OOO_ENGINE_RE_NUM_REG - ooo_engine.out_INSERT_RE_NUM_REG
1399     
1400      // out_INSERT_EXECUTE_LOOP_VAL        - execute_loop. in_INSERT_ROB_VAL       
1401      //  in_INSERT_EXECUTE_LOOP_ACK        - execute_loop.out_INSERT_ROB_ACK       
1402      // out_INSERT_EXECUTE_LOOP_RD_USE     - execute_loop. in_INSERT_ROB_RD_USE   
1403      // out_INSERT_EXECUTE_LOOP_RD_NUM_REG - execute_loop. in_INSERT_ROB_RD_NUM_REG
1404      // out_INSERT_EXECUTE_LOOP_RE_USE     - execute_loop. in_INSERT_ROB_RE_USE   
1405      // out_INSERT_EXECUTE_LOOP_RE_NUM_REG - execute_loop. in_INSERT_ROB_RE_NUM_REG
1406
1407    }
1408
1409    // ~~~~~[ Others ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1410#if DEBUG_Core == true
1411    _component->test_map(false);
1412#endif
1413
1414#ifdef POSITION
1415     if (usage_is_set(_usage,USE_POSITION))
1416       _component->generate_file();
1417#endif
1418
1419     log_end(Core,FUNCTION);
1420  };
1421
1422}; // end namespace core
1423}; // end namespace behavioural
1424}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.