source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Core_allocation.cpp @ 108

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

1) decod_queue : add reg_LAST_SLOT.
2) Commit : insert on event -> to pop decod_queue. Head test : add information (speculative or not)
3) Context State / UPT : Branch miss and Load miss in same cycle.
4) Free List : Bank is on LSB not MSB.
5) Platforms : move data

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