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

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

Almost complete design
with Test and test platform

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