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

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

1) Add soc test
2) fix bug (Pc management, Decod and execute, Update prediction ...)

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