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

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

1) Bug fix : Load Miss Speculation (in Commit_unit, Update Prediction Table and Context State)
2) Change address, in rob write address_next.
3) Move Meta_Predictor in save directory

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