source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/src/Execute_loop_allocation.cpp @ 138

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

1) Add new algo in ifetch queue
2) Add Cancel bit
3) new config

  • Property svn:keywords set to Id
File size: 101.7 KB
Line 
1/*
2 * $Id: Execute_loop_allocation.cpp 136 2009-10-20 18:52:15Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/include/Execute_loop.h"
9#include "Behavioural/include/Allocation.h"
10
11namespace morpheo                    {
12namespace behavioural {
13namespace core {
14namespace multi_execute_loop {
15namespace execute_loop {
16
17
18
19#undef  FUNCTION
20#define FUNCTION "Execute_loop::allocation"
21  void Execute_loop::allocation (
22#ifdef STATISTICS
23                               morpheo::behavioural::Parameters_Statistics * param_statistics
24#else
25                               void
26#endif
27                               )
28  {
29    log_printf(FUNC,Execute_loop,FUNCTION,"Begin");
30
31    _component   = new Component (_usage);
32
33    Entity * entity = _component->set_entity (_name       
34                                              ,"Execute_loop"
35#ifdef POSITION
36                                              ,COMBINATORY
37#endif
38                                              );
39
40    _interfaces = entity->set_interfaces();
41
42    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
43
44      Interface * interface = _interfaces->set_interface(""
45#ifdef POSITION
46                                                         ,IN
47                                                         ,SOUTH,
48                                                         "Generalist interface"
49#endif
50                                                         );
51
52     in_CLOCK        = interface->set_signal_clk              ("clock" ,1, CLOCK_VHDL_YES);
53     in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_YES);
54
55    // ~~~~~[ Interface "execute_loop_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
56     {
57       ALLOC1_INTERFACE_BEGIN("execute_loop_in", IN, EAST, "Operation's Input", _param->_nb_read_unit);
58
59       ALLOC1_VALACK_IN ( in_EXECUTE_LOOP_IN_VAL,VAL);
60       ALLOC1_VALACK_OUT(out_EXECUTE_LOOP_IN_ACK,ACK);
61       ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_CONTEXT_ID           ,"context_id"           ,Tcontext_t        ,_param->_size_context_id);
62       ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_FRONT_END_ID         ,"front_end_id"         ,Tcontext_t        ,_param->_size_front_end_id);
63       ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_OOO_ENGINE_ID        ,"ooo_engine_id"        ,Tcontext_t        ,_param->_size_ooo_engine_id);
64       ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_PACKET_ID            ,"packet_id"            ,Tpacket_t         ,_param->_size_rob_ptr  );
65       ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_OPERATION            ,"operation"            ,Toperation_t      ,_param->_size_operation);
66       ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_TYPE                 ,"type"                 ,Ttype_t           ,_param->_size_type);         
67       ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_CANCEL               ,"cancel"               ,Tcontrol_t        ,1);
68       ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t        ,_param->_size_store_queue_ptr);
69       ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_STORE_QUEUE_PTR_READ ,"store_queue_ptr_read" ,Tlsq_ptr_t        ,_param->_size_store_queue_ptr);
70       ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_STORE_QUEUE_EMPTY    ,"store_queue_empty"    ,Tcontrol_t        ,1);
71       ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t        ,_param->_size_load_queue_ptr);
72       ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_HAS_IMMEDIAT         ,"has_immediat"         ,Tcontrol_t        ,1);
73       ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_IMMEDIAT             ,"immediat"             ,Tgeneral_data_t   ,_param->_size_general_data);
74       ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_READ_RA              ,"read_ra"              ,Tcontrol_t        ,1);
75       ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_NUM_REG_RA           ,"num_reg_ra"           ,Tgeneral_address_t,_param->_size_general_register);
76       ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_READ_RB              ,"read_rb"              ,Tcontrol_t        ,1);
77       ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_NUM_REG_RB           ,"num_reg_rb"           ,Tgeneral_address_t,_param->_size_general_register);
78       ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_READ_RC              ,"read_rc"              ,Tcontrol_t        ,1);
79       ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_NUM_REG_RC           ,"num_reg_rc"           ,Tspecial_address_t,_param->_size_special_register);
80       ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_WRITE_RD             ,"write_rd"             ,Tcontrol_t        ,1);
81       ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_NUM_REG_RD           ,"num_reg_rd"           ,Tgeneral_address_t,_param->_size_general_register);
82       ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_WRITE_RE             ,"write_re"             ,Tcontrol_t        ,1);
83       ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_NUM_REG_RE           ,"num_reg_re"           ,Tspecial_address_t,_param->_size_special_register);
84
85       ALLOC1_INTERFACE_END(param->_nb_read_unit);
86     }
87    // ~~~~~[ Interface "execute_loop_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
88     {
89       ALLOC1_INTERFACE_BEGIN("execute_loop_out",OUT, EAST, "Operation's Output", _param->_nb_write_unit);
90
91       ALLOC1_VALACK_OUT(out_EXECUTE_LOOP_OUT_VAL,VAL);
92       ALLOC1_VALACK_IN ( in_EXECUTE_LOOP_OUT_ACK,ACK);
93       ALLOC1_SIGNAL_OUT(out_EXECUTE_LOOP_OUT_CONTEXT_ID   ,"context_id"   ,Tcontext_t     ,_param->_size_context_id);
94       ALLOC1_SIGNAL_OUT(out_EXECUTE_LOOP_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t     ,_param->_size_front_end_id);
95       ALLOC1_SIGNAL_OUT(out_EXECUTE_LOOP_OUT_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t     ,_param->_size_ooo_engine_id);
96       ALLOC1_SIGNAL_OUT(out_EXECUTE_LOOP_OUT_PACKET_ID    ,"packet_id"    ,Tpacket_t      ,_param->_size_rob_ptr  );
97//     ALLOC1_SIGNAL_OUT(out_EXECUTE_LOOP_OUT_OPERATION    ,"operation"    ,Toperation_t   ,_param->_size_operation);
98//     ALLOC1_SIGNAL_OUT(out_EXECUTE_LOOP_OUT_TYPE         ,"type"         ,Ttype_t        ,_param->_size_type);
99       ALLOC1_SIGNAL_OUT(out_EXECUTE_LOOP_OUT_CANCEL       ,"cancel"       ,Tcontrol_t     ,1);
100       ALLOC1_SIGNAL_OUT(out_EXECUTE_LOOP_OUT_FLAGS        ,"flags"        ,Tspecial_data_t,_param->_size_special_data);
101       ALLOC1_SIGNAL_OUT(out_EXECUTE_LOOP_OUT_EXCEPTION    ,"exception"    ,Texception_t   ,_param->_size_exception);
102       ALLOC1_SIGNAL_OUT(out_EXECUTE_LOOP_OUT_NO_SEQUENCE  ,"no_sequence"  ,Tcontrol_t     ,1);
103       ALLOC1_SIGNAL_OUT(out_EXECUTE_LOOP_OUT_ADDRESS      ,"address"      ,Taddress_t     ,_param->_size_instruction_address);
104       ALLOC1_SIGNAL_OUT(out_EXECUTE_LOOP_OUT_DATA         ,"data"         ,Tgeneral_data_t,_param->_size_general_data);
105
106       ALLOC1_INTERFACE_END(_param->_nb_write_unit);
107     }
108    // ~~~~~[ Interface "dcache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
109     {
110       ALLOC2_INTERFACE_BEGIN("dcache_req",OUT, NORTH, "Data cache port : request", _param->_nb_load_store_unit, _param->_nb_cache_port[it1]);
111       
112       _ALLOC2_VALACK_OUT(out_DCACHE_REQ_VAL,VAL, _param->_nb_load_store_unit, _param->_nb_cache_port[it1]);
113       _ALLOC2_VALACK_IN ( in_DCACHE_REQ_ACK,ACK, _param->_nb_load_store_unit, _param->_nb_cache_port[it1]);
114       _ALLOC2_SIGNAL_OUT(out_DCACHE_REQ_CONTEXT_ID,"context_id",Tcontext_t       ,_param->_max_size_dcache_context_id, _param->_nb_load_store_unit, _param->_nb_cache_port[it1]);
115       _ALLOC2_SIGNAL_OUT(out_DCACHE_REQ_PACKET_ID ,"packet_id" ,Tpacket_t        ,_param->_max_size_dcache_packet_id , _param->_nb_load_store_unit, _param->_nb_cache_port[it1]);
116       _ALLOC2_SIGNAL_OUT(out_DCACHE_REQ_ADDRESS   ,"address"   ,Tdcache_address_t,_param->_size_general_data         , _param->_nb_load_store_unit, _param->_nb_cache_port[it1]);
117       _ALLOC2_SIGNAL_OUT(out_DCACHE_REQ_TYPE      ,"type"      ,Tdcache_type_t   ,_param->_size_dcache_type          , _param->_nb_load_store_unit, _param->_nb_cache_port[it1]);
118       _ALLOC2_SIGNAL_OUT(out_DCACHE_REQ_WDATA     ,"wdata"     ,Tdcache_data_t   ,_param->_size_general_data         , _param->_nb_load_store_unit, _param->_nb_cache_port[it1]);
119
120       ALLOC2_INTERFACE_END(_param->_nb_load_store_unit, _param->_nb_cache_port[it1]);
121     }
122
123    // ~~~~~[ Interface "dcache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
124     {
125       ALLOC2_INTERFACE_BEGIN("dcache_rsp",IN, NORTH, "Data cache port : respons", _param->_nb_load_store_unit, _param->_nb_cache_port[it1]);
126
127       _ALLOC2_VALACK_IN ( in_DCACHE_RSP_VAL,VAL, _param->_nb_load_store_unit, _param->_nb_cache_port[it1]);
128       _ALLOC2_VALACK_OUT(out_DCACHE_RSP_ACK,ACK, _param->_nb_load_store_unit, _param->_nb_cache_port[it1]);
129       _ALLOC2_SIGNAL_IN ( in_DCACHE_RSP_CONTEXT_ID,"context_id",Tcontext_t     ,_param->_max_size_dcache_context_id, _param->_nb_load_store_unit, _param->_nb_cache_port[it1]);
130       _ALLOC2_SIGNAL_IN ( in_DCACHE_RSP_PACKET_ID ,"packet_id" ,Tpacket_t      ,_param->_max_size_dcache_packet_id , _param->_nb_load_store_unit, _param->_nb_cache_port[it1]);
131       _ALLOC2_SIGNAL_IN ( in_DCACHE_RSP_RDATA     ,"rdata"     ,Tdcache_data_t ,_param->_size_general_data         , _param->_nb_load_store_unit, _param->_nb_cache_port[it1]);
132       _ALLOC2_SIGNAL_IN ( in_DCACHE_RSP_ERROR     ,"error"     ,Tdcache_error_t,_param->_size_dcache_error         , _param->_nb_load_store_unit, _param->_nb_cache_port[it1]);
133
134       ALLOC2_INTERFACE_END(_param->_nb_load_store_unit, _param->_nb_cache_port[it1]);
135     }
136
137//     // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
138//      {
139//        ALLOC2_INTERFACE_BEGIN("insert_rob",IN, EAST, "Rename's stage : insert a new instruction in the Re Order Buffer",_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]);
140       
141//        _ALLOC2_VALACK_IN ( in_INSERT_ROB_VAL,VAL,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]);
142//        _ALLOC2_VALACK_OUT(out_INSERT_ROB_ACK,ACK,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]);
143
144//        _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RD_USE    ,"rd_use"    ,Tcontrol_t        ,1                             ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]);
145//        _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RD_NUM_REG,"rd_num_reg",Tgeneral_address_t,_param->_size_general_register,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]);
146//        _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RE_USE    ,"re_use"    ,Tcontrol_t        ,1                             ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]);
147//        _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RE_NUM_REG,"re_num_reg",Tspecial_address_t,_param->_size_special_register,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]);
148
149//        ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]);
150//      }
151
152//     // ~~~~~[ Interface "retire_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
153//      {
154//        ALLOC2_INTERFACE("retire_rob",IN, EAST, "Rename's stage : retire a new instruction in the Re Order Buffer",_param->_nb_ooo_engine,_param->_nb_inst_retire_rob[it1]);
155       
156//        _ALLOC2_VALACK_IN ( in_RETIRE_ROB_VAL,VAL,_param->_nb_ooo_engine,_param->_nb_inst_retire_rob[it1]);
157//        _ALLOC2_VALACK_OUT(out_RETIRE_ROB_ACK,ACK,_param->_nb_ooo_engine,_param->_nb_inst_retire_rob[it1]);
158
159//        _ALLOC2_SIGNAL_IN ( in_RETIRE_ROB_RD_OLD_USE    ,"rd_old_use"    ,Tcontrol_t        ,1                             ,_param->_nb_ooo_engine,_param->_nb_inst_retire_rob[it1]);
160//        _ALLOC2_SIGNAL_IN ( in_RETIRE_ROB_RD_OLD_NUM_REG,"rd_old_num_reg",Tgeneral_address_t,_param->_size_general_register,_param->_nb_ooo_engine,_param->_nb_inst_retire_rob[it1]);
161//        _ALLOC2_SIGNAL_IN ( in_RETIRE_ROB_RD_NEW_USE    ,"rd_new_use"    ,Tcontrol_t        ,1                             ,_param->_nb_ooo_engine,_param->_nb_inst_retire_rob[it1]);
162//        _ALLOC2_SIGNAL_IN ( in_RETIRE_ROB_RD_NEW_NUM_REG,"rd_new_num_reg",Tgeneral_address_t,_param->_size_general_register,_param->_nb_ooo_engine,_param->_nb_inst_retire_rob[it1]);
163//        _ALLOC2_SIGNAL_IN ( in_RETIRE_ROB_RE_OLD_USE    ,"re_old_use"    ,Tcontrol_t        ,1                             ,_param->_nb_ooo_engine,_param->_nb_inst_retire_rob[it1]);
164//        _ALLOC2_SIGNAL_IN ( in_RETIRE_ROB_RE_OLD_NUM_REG,"re_old_num_reg",Tspecial_address_t,_param->_size_special_register,_param->_nb_ooo_engine,_param->_nb_inst_retire_rob[it1]);
165//        _ALLOC2_SIGNAL_IN ( in_RETIRE_ROB_RE_NEW_USE    ,"re_new_use"    ,Tcontrol_t        ,1                             ,_param->_nb_ooo_engine,_param->_nb_inst_retire_rob[it1]);
166//        _ALLOC2_SIGNAL_IN ( in_RETIRE_ROB_RE_NEW_NUM_REG,"re_new_num_reg",Tspecial_address_t,_param->_size_special_register,_param->_nb_ooo_engine,_param->_nb_inst_retire_rob[it1]);
167//      }
168
169     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
170     std::string name;
171
172     {
173       name = _name+"_glue";
174       log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
175       
176       _component_glue = new morpheo::behavioural::core::multi_execute_loop::execute_loop::execute_loop_glue::Execute_loop_Glue
177         (name.c_str()
178#ifdef STATISTICS
179          ,param_statistics
180#endif
181          ,_param->_param_glue
182          ,_usage);
183       
184       _component->set_component (_component_glue->_component
185#ifdef POSITION
186                                  , 50, 50, 10, 10
187#endif
188                                  );
189     }
190       
191     _component_read_unit = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::Read_unit * [_param->_nb_read_unit];
192     for (uint32_t i=0; i<_param->_nb_read_unit; i++)
193       {
194         name = _name+"_read_unit_"+toString(i);
195         log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
196
197         _component_read_unit [i] = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::Read_unit
198           (name.c_str()
199#ifdef STATISTICS
200            ,param_statistics
201#endif
202            ,_param->_param_read_unit[i]
203            ,_usage);
204
205         _component->set_component (_component_read_unit [i]->_component
206#ifdef POSITION
207                                    , 50, 50, 10, 10
208#endif
209                                    );
210       }
211
212     _component_functionnal_unit = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::functionnal_unit::Functionnal_unit * [_param->_nb_functionnal_unit];
213     for (uint32_t i=0; i<_param->_nb_functionnal_unit; i++)
214       {
215         name = _name+"_functionnal_unit_"+toString(i);
216         log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
217
218         _component_functionnal_unit [i] = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::functionnal_unit::Functionnal_unit
219           (name.c_str()
220#ifdef STATISTICS
221            ,param_statistics
222#endif
223            ,_param->_param_functionnal_unit[i]
224            ,_usage);
225
226         _component->set_component (_component_functionnal_unit [i]->_component
227#ifdef POSITION
228                                    , 50, 50, 10, 10
229#endif
230                                    );
231       }
232
233     _component_load_store_unit = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Load_store_unit * [_param->_nb_load_store_unit];
234     for (uint32_t i=0; i<_param->_nb_load_store_unit; i++)
235       {
236         name = _name+"_load_store_unit_"+toString(i);
237         log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
238
239         _component_load_store_unit [i] = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Load_store_unit
240           (name.c_str()
241#ifdef STATISTICS
242            ,param_statistics
243#endif
244            ,_param->_param_load_store_unit[i]
245            ,_usage);
246
247         _component->set_component (_component_load_store_unit [i]->_component
248#ifdef POSITION
249                                    , 50, 50, 10, 10
250#endif
251                                    );
252       }
253
254     _component_write_unit = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::Write_unit * [_param->_nb_write_unit];
255     for (uint32_t i=0; i<_param->_nb_write_unit; i++)
256       {
257         name = _name+"_write_unit_"+toString(i);
258         log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
259
260         _component_write_unit [i] = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::Write_unit
261           (name.c_str()
262#ifdef STATISTICS
263            ,param_statistics
264#endif
265            ,_param->_param_write_unit[i]
266            ,_usage);
267
268         _component->set_component (_component_write_unit [i]->_component
269#ifdef POSITION
270                                    , 50, 50, 10, 10
271#endif
272                                    );
273       }
274     
275     {
276       name = _name+"_read_unit_to_execution_unit";
277       log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
278       
279       _component_read_unit_to_execution_unit = new morpheo::behavioural::core::multi_execute_loop::execute_loop::network::read_unit_to_execution_unit::Read_unit_to_Execution_unit
280         (name.c_str()
281#ifdef STATISTICS
282          ,param_statistics
283#endif
284          ,_param->_param_read_unit_to_execution_unit
285          ,_usage);
286       
287       _component->set_component (_component_read_unit_to_execution_unit->_component
288#ifdef POSITION
289                                  , 50, 50, 10, 10
290#endif
291                                  );
292     }
293
294     {
295       name = _name+"_execution_unit_to_write_unit";
296       log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
297       
298       _component_execution_unit_to_write_unit = new morpheo::behavioural::core::multi_execute_loop::execute_loop::network::execution_unit_to_write_unit::Execution_unit_to_Write_unit
299         (name.c_str()
300#ifdef STATISTICS
301          ,param_statistics
302#endif
303          ,_param->_param_execution_unit_to_write_unit
304          ,_usage);
305       
306       _component->set_component (_component_execution_unit_to_write_unit->_component
307#ifdef POSITION
308                                  , 50, 50, 10, 10
309#endif
310                                  );
311     }
312
313     {
314       name = _name+"_register_unit";
315       log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
316       
317       _component_register_unit = new morpheo::behavioural::core::multi_execute_loop::execute_loop::register_unit::Register_unit
318         (name.c_str()
319#ifdef STATISTICS
320          ,param_statistics
321#endif
322          ,_param->_param_register_unit
323          ,_usage);
324       
325       _component->set_component (_component_register_unit->_component
326#ifdef POSITION
327                                  , 50, 50, 10, 10
328#endif
329                                  );
330     }
331
332     // ~~~~~[ Instanciation ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
333     std::string src,dest;
334
335     // ===================================================================
336     // =====[ GLUE ]======================================================
337     // ===================================================================
338     {
339       src = _name+"_glue";
340       log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
341       
342       {
343         dest = _name;
344#ifdef POSITION
345         _component->interface_map (src ,"",
346                                    dest,"");
347#endif
348         PORT_MAP(_component ,src , "in_CLOCK" ,dest, "in_CLOCK");
349         PORT_MAP(_component ,src , "in_NRESET",dest, "in_NRESET");
350       }
351
352       for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
353         {
354           {
355             dest = _name+"_write_unit_"+toString(i);
356             
357#ifdef POSITION
358             _component->interface_map (src ,"gpr_write_write_unit_"+toString(i),
359                                        dest,"gpr_write");
360#endif
361
362             //  in_GPR_WRITE_WRITE_UNIT_VAL               
363             // out_GPR_WRITE_WRITE_UNIT_ACK               
364             //  in_GPR_WRITE_WRITE_UNIT_OOO_ENGINE_ID     
365             //  in_GPR_WRITE_WRITE_UNIT_NUM_REG           
366             //  in_GPR_WRITE_WRITE_UNIT_DATA             
367           }
368
369           {
370             dest = _name+"_register_unit";
371             
372#ifdef POSITION
373             _component->interface_map (src ,"gpr_write_register_file_"+toString(i),
374                                        dest,"gpr_write_"+toString(i));
375#endif
376             // out_GPR_WRITE_REGISTER_FILE_VAL           
377             //  in_GPR_WRITE_REGISTER_FILE_ACK           
378             // out_GPR_WRITE_REGISTER_FILE_OOO_ENGINE_ID 
379             // out_GPR_WRITE_REGISTER_FILE_NUM_REG       
380             // out_GPR_WRITE_REGISTER_FILE_DATA           
381           }
382
383           {
384             dest = _name+"_read_unit_0";
385
386#ifdef POSITION
387             _component->interface_map (src ,"gpr_write_read_unit_"+toString(i),
388                                        dest,"gpr_write");
389#endif
390
391             // out_GPR_WRITE_READ_UNIT_VAL               
392             // out_GPR_WRITE_READ_UNIT_OOO_ENGINE_ID     
393             // out_GPR_WRITE_READ_UNIT_NUM_REG           
394             // out_GPR_WRITE_READ_UNIT_DATA               
395           }
396         }
397
398       for (uint32_t i=0; i<_param->_nb_spr_write; i++)
399         {
400           {
401             dest = _name+"_write_unit_"+toString(i);
402             
403#ifdef POSITION
404             _component->interface_map (src ,"spr_write_write_unit_"+toString(i),
405                                        dest,"spr_write");
406#endif
407
408             //  in_SPR_WRITE_WRITE_UNIT_VAL               
409             // out_SPR_WRITE_WRITE_UNIT_ACK               
410             //  in_SPR_WRITE_WRITE_UNIT_OOO_ENGINE_ID     
411             //  in_SPR_WRITE_WRITE_UNIT_NUM_REG           
412             //  in_SPR_WRITE_WRITE_UNIT_DATA             
413           }
414
415           {
416             dest = _name+"_register_unit";
417             
418#ifdef POSITION
419             _component->interface_map (src ,"spr_write_register_file_"+toString(i),
420                                        dest,"spr_write_"+toString(i));
421#endif
422             // out_SPR_WRITE_REGISTER_FILE_VAL           
423             //  in_SPR_WRITE_REGISTER_FILE_ACK           
424             // out_SPR_WRITE_REGISTER_FILE_OOO_ENGINE_ID 
425             // out_SPR_WRITE_REGISTER_FILE_NUM_REG       
426             // out_SPR_WRITE_REGISTER_FILE_DATA           
427           }
428
429           {
430             dest = _name+"_read_unit_0";
431
432#ifdef POSITION
433             _component->interface_map (src ,"spr_write_read_unit_"+toString(i),
434                                        dest,"spr_write");
435#endif
436
437             // out_SPR_WRITE_READ_UNIT_VAL               
438             // out_SPR_WRITE_READ_UNIT_OOO_ENGINE_ID     
439             // out_SPR_WRITE_READ_UNIT_NUM_REG           
440             // out_SPR_WRITE_READ_UNIT_DATA               
441           }
442         }
443
444       // -----[ Interface "issue" ]-----------------------------------------
445       for (uint32_t i=0; i<_param->_nb_read_unit; i++)
446         {
447           dest = _name;
448
449           PORT_MAP(_component ,src , "in_ISSUE_"+toString(i)+"_VAL",
450                                dest, "in_EXECUTE_LOOP_IN_"+toString(i)+"_VAL");
451           PORT_MAP(_component ,src ,"out_ISSUE_"+toString(i)+"_ACK",
452                                dest,"out_EXECUTE_LOOP_IN_"+toString(i)+"_ACK");
453
454           //out_ISSUE_READ_UNIT_VAL   
455           // in_ISSUE_READ_UNIT_ACK   
456           //out_ISSUE_REGISTER_UNIT_VAL
457           // in_ISSUE_REGISTER_UNIT_ACK
458         }
459     }
460
461     // ===================================================================
462     // =====[ READ_UNIT ]=================================================
463     // ===================================================================
464     {
465       uint32_t it_read_unit_out = 0;
466       
467       for (uint32_t i=0; i<_param->_nb_read_unit; i++)
468         {
469           src = _name+"_read_unit_"+toString(i);
470           log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
471           
472           {
473             dest = _name;
474#ifdef POSITION
475             _component->interface_map (src ,"",
476                                        dest,"");
477#endif
478             PORT_MAP(_component ,src , "in_CLOCK" ,dest, "in_CLOCK");
479             PORT_MAP(_component ,src , "in_NRESET",dest, "in_NRESET");
480           }
481           
482           // ~~~~~[ Interface "read_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
483           {
484             dest = _name+"_glue";
485
486             COMPONENT_MAP(_component ,src , "in_READ_UNIT_IN_VAL"                  ,
487                                       dest,"out_ISSUE_"+toString(i)+"_READ_UNIT_VAL");
488             COMPONENT_MAP(_component ,src ,"out_READ_UNIT_IN_ACK"                 
489                                      ,dest, "in_ISSUE_"+toString(i)+"_READ_UNIT_ACK");
490
491             dest = _name;
492#ifdef POSITION
493             _component->interface_map (src ,"read_unit_in",
494                                        dest,"execute_loop_in_"+toString(i));
495#endif
496
497             if (_param->_have_port_context_id)
498             PORT_MAP(_component ,src , "in_READ_UNIT_IN_CONTEXT_ID"           ,dest , "in_EXECUTE_LOOP_IN_"+toString(i)+"_CONTEXT_ID"           );
499             if (_param->_have_port_front_end_id)
500             PORT_MAP(_component ,src , "in_READ_UNIT_IN_FRONT_END_ID"         ,dest , "in_EXECUTE_LOOP_IN_"+toString(i)+"_FRONT_END_ID"         );
501             if (_param->_have_port_ooo_engine_id)
502             PORT_MAP(_component ,src , "in_READ_UNIT_IN_OOO_ENGINE_ID"        ,dest , "in_EXECUTE_LOOP_IN_"+toString(i)+"_OOO_ENGINE_ID"        );
503             if (_param->_have_port_rob_ptr  )
504             PORT_MAP(_component ,src , "in_READ_UNIT_IN_PACKET_ID"            ,dest , "in_EXECUTE_LOOP_IN_"+toString(i)+"_PACKET_ID"            );
505             PORT_MAP(_component ,src , "in_READ_UNIT_IN_OPERATION"            ,dest , "in_EXECUTE_LOOP_IN_"+toString(i)+"_OPERATION"            );
506             PORT_MAP(_component ,src , "in_READ_UNIT_IN_TYPE"                 ,dest , "in_EXECUTE_LOOP_IN_"+toString(i)+"_TYPE"                 );
507             PORT_MAP(_component ,src , "in_READ_UNIT_IN_CANCEL"               ,dest , "in_EXECUTE_LOOP_IN_"+toString(i)+"_CANCEL"               );
508             PORT_MAP(_component ,src , "in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE",dest , "in_EXECUTE_LOOP_IN_"+toString(i)+"_STORE_QUEUE_PTR_WRITE");
509             PORT_MAP(_component ,src , "in_READ_UNIT_IN_STORE_QUEUE_PTR_READ" ,dest , "in_EXECUTE_LOOP_IN_"+toString(i)+"_STORE_QUEUE_PTR_READ" );
510             PORT_MAP(_component ,src , "in_READ_UNIT_IN_STORE_QUEUE_EMPTY"    ,dest , "in_EXECUTE_LOOP_IN_"+toString(i)+"_STORE_QUEUE_EMPTY"    );
511             if (_param->_have_port_load_queue_ptr)
512             PORT_MAP(_component ,src , "in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE" ,dest , "in_EXECUTE_LOOP_IN_"+toString(i)+"_LOAD_QUEUE_PTR_WRITE" );
513             PORT_MAP(_component ,src , "in_READ_UNIT_IN_HAS_IMMEDIAT"         ,dest , "in_EXECUTE_LOOP_IN_"+toString(i)+"_HAS_IMMEDIAT"         );
514             PORT_MAP(_component ,src , "in_READ_UNIT_IN_IMMEDIAT"             ,dest , "in_EXECUTE_LOOP_IN_"+toString(i)+"_IMMEDIAT"             );
515             PORT_MAP(_component ,src , "in_READ_UNIT_IN_READ_RA"              ,dest , "in_EXECUTE_LOOP_IN_"+toString(i)+"_READ_RA"              );
516             PORT_MAP(_component ,src , "in_READ_UNIT_IN_NUM_REG_RA"           ,dest , "in_EXECUTE_LOOP_IN_"+toString(i)+"_NUM_REG_RA"           );
517             PORT_MAP(_component ,src , "in_READ_UNIT_IN_READ_RB"              ,dest , "in_EXECUTE_LOOP_IN_"+toString(i)+"_READ_RB"              );
518             PORT_MAP(_component ,src , "in_READ_UNIT_IN_NUM_REG_RB"           ,dest , "in_EXECUTE_LOOP_IN_"+toString(i)+"_NUM_REG_RB"           );
519             PORT_MAP(_component ,src , "in_READ_UNIT_IN_READ_RC"              ,dest , "in_EXECUTE_LOOP_IN_"+toString(i)+"_READ_RC"              );
520             PORT_MAP(_component ,src , "in_READ_UNIT_IN_NUM_REG_RC"           ,dest , "in_EXECUTE_LOOP_IN_"+toString(i)+"_NUM_REG_RC"           );
521             PORT_MAP(_component ,src , "in_READ_UNIT_IN_WRITE_RD"             ,dest , "in_EXECUTE_LOOP_IN_"+toString(i)+"_WRITE_RD"             );
522             PORT_MAP(_component ,src , "in_READ_UNIT_IN_NUM_REG_RD"           ,dest , "in_EXECUTE_LOOP_IN_"+toString(i)+"_NUM_REG_RD"           );
523             PORT_MAP(_component ,src , "in_READ_UNIT_IN_WRITE_RE"             ,dest , "in_EXECUTE_LOOP_IN_"+toString(i)+"_WRITE_RE"             );
524             PORT_MAP(_component ,src , "in_READ_UNIT_IN_NUM_REG_RE"           ,dest , "in_EXECUTE_LOOP_IN_"+toString(i)+"_NUM_REG_RE"           );
525           }
526
527           // ~~~~~[ Interface "read_unit_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
528           for (uint32_t j=0; j < _param->_nb_inst_retire[i]; j++)
529             {
530               dest = _name+"_read_unit_to_execution_unit";
531               
532#ifdef POSITION
533               _component->interface_map (src ,"read_unit_"+toString(j),
534                                          dest,"read_unit_"+toString(it_read_unit_out));
535#endif
536             
537               COMPONENT_MAP(_component ,src ,"out_READ_UNIT_OUT_"+toString(j               )+"_VAL"                  ,
538                                         dest, "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_"+toString(j)+"_VAL"                  );
539               COMPONENT_MAP(_component ,src , "in_READ_UNIT_OUT_"+toString(j               )+"_ACK"                  ,
540                                         dest,"out_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_"+toString(j)+"_ACK"                  );
541               if (_param->_have_port_context_id)
542               COMPONENT_MAP(_component ,src ,"out_READ_UNIT_OUT_"+toString(j               )+"_CONTEXT_ID"           ,
543                                         dest, "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_"+toString(j)+"_CONTEXT_ID"           );
544               if (_param->_have_port_front_end_id)
545               COMPONENT_MAP(_component ,src ,"out_READ_UNIT_OUT_"+toString(j               )+"_FRONT_END_ID"         ,
546                                         dest, "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_"+toString(j)+"_FRONT_END_ID"         );
547               if (_param->_have_port_ooo_engine_id)
548               COMPONENT_MAP(_component ,src ,"out_READ_UNIT_OUT_"+toString(j               )+"_OOO_ENGINE_ID"        ,
549                                         dest, "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_"+toString(j)+"_OOO_ENGINE_ID"        );
550               if (_param->_have_port_rob_ptr  )
551               COMPONENT_MAP(_component ,src ,"out_READ_UNIT_OUT_"+toString(j               )+"_PACKET_ID"            ,
552                                         dest, "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_"+toString(j)+"_PACKET_ID"            );
553               COMPONENT_MAP(_component ,src ,"out_READ_UNIT_OUT_"+toString(j               )+"_OPERATION"            ,
554                                         dest, "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_"+toString(j)+"_OPERATION"            );
555               COMPONENT_MAP(_component ,src ,"out_READ_UNIT_OUT_"+toString(j               )+"_TYPE"                 ,
556                                         dest, "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_"+toString(j)+"_TYPE"                 );
557               COMPONENT_MAP(_component ,src ,"out_READ_UNIT_OUT_"+toString(j               )+"_CANCEL"               ,
558                                         dest, "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_"+toString(j)+"_CANCEL"               );
559               COMPONENT_MAP(_component ,src ,"out_READ_UNIT_OUT_"+toString(j               )+"_STORE_QUEUE_PTR_WRITE",
560                                         dest, "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_"+toString(j)+"_STORE_QUEUE_PTR_WRITE");
561               COMPONENT_MAP(_component ,src ,"out_READ_UNIT_OUT_"+toString(j               )+"_STORE_QUEUE_PTR_READ" ,
562                                         dest, "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_"+toString(j)+"_STORE_QUEUE_PTR_READ" );
563               COMPONENT_MAP(_component ,src ,"out_READ_UNIT_OUT_"+toString(j               )+"_STORE_QUEUE_EMPTY"    ,
564                                         dest, "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_"+toString(j)+"_STORE_QUEUE_EMPTY"    );
565               if (_param->_have_port_load_queue_ptr)
566               COMPONENT_MAP(_component ,src ,"out_READ_UNIT_OUT_"+toString(j               )+"_LOAD_QUEUE_PTR_WRITE" ,
567                                         dest, "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_"+toString(j)+"_LOAD_QUEUE_PTR_WRITE" );
568               COMPONENT_MAP(_component ,src ,"out_READ_UNIT_OUT_"+toString(j               )+"_HAS_IMMEDIAT"         ,
569                                         dest, "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_"+toString(j)+"_HAS_IMMEDIAT"         );
570               COMPONENT_MAP(_component ,src ,"out_READ_UNIT_OUT_"+toString(j               )+"_IMMEDIAT"             ,
571                                         dest, "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_"+toString(j)+"_IMMEDIAT"             );
572               COMPONENT_MAP(_component ,src ,"out_READ_UNIT_OUT_"+toString(j               )+"_DATA_RA"              ,
573                                         dest, "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_"+toString(j)+"_DATA_RA"              );
574               COMPONENT_MAP(_component ,src ,"out_READ_UNIT_OUT_"+toString(j               )+"_DATA_RB"              ,
575                                         dest, "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_"+toString(j)+"_DATA_RB"              );
576               COMPONENT_MAP(_component ,src ,"out_READ_UNIT_OUT_"+toString(j               )+"_DATA_RC"              ,
577                                         dest, "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_"+toString(j)+"_DATA_RC"              );
578               COMPONENT_MAP(_component ,src ,"out_READ_UNIT_OUT_"+toString(j               )+"_WRITE_RD"             ,
579                                         dest, "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_"+toString(j)+"_WRITE_RD"             );
580               COMPONENT_MAP(_component ,src ,"out_READ_UNIT_OUT_"+toString(j               )+"_NUM_REG_RD"           ,
581                                         dest, "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_"+toString(j)+"_NUM_REG_RD"           );
582               COMPONENT_MAP(_component ,src ,"out_READ_UNIT_OUT_"+toString(j               )+"_WRITE_RE"             ,
583                                         dest, "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_"+toString(j)+"_WRITE_RE"             );
584               COMPONENT_MAP(_component ,src ,"out_READ_UNIT_OUT_"+toString(j               )+"_NUM_REG_RE"           ,
585                                         dest, "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_"+toString(j)+"_NUM_REG_RE"           );
586             
587           }
588           it_read_unit_out ++;
589           
590           // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
591           {
592             dest = _name+"_register_unit";
593#ifdef POSITION
594             _component->interface_map (src ,"gpr_read_0",
595                                        dest,"gpr_read_"+toString(2*));
596             _component->interface_map (src ,"gpr_read_1",
597                                        dest,"gpr_read_"+toString(2*i+1));
598#endif
599             COMPONENT_MAP(_component ,src ,"out_GPR_READ_0_VAL"          , dest, "in_GPR_READ_"+toString(2*)+"_VAL"          );
600             COMPONENT_MAP(_component ,src , "in_GPR_READ_0_ACK"          , dest,"out_GPR_READ_"+toString(2*)+"_ACK"          );
601             if (_param->_have_port_ooo_engine_id)
602             COMPONENT_MAP(_component ,src ,"out_GPR_READ_0_OOO_ENGINE_ID", dest, "in_GPR_READ_"+toString(2*)+"_OOO_ENGINE_ID");
603             COMPONENT_MAP(_component ,src ,"out_GPR_READ_0_NUM_REG"      , dest, "in_GPR_READ_"+toString(2*)+"_NUM_REG"      );
604             COMPONENT_MAP(_component ,src , "in_GPR_READ_0_DATA"         , dest,"out_GPR_READ_"+toString(2*)+"_DATA"         );
605             COMPONENT_MAP(_component ,src , "in_GPR_READ_0_DATA_VAL"     , dest,"out_GPR_READ_"+toString(2*)+"_DATA_VAL"     );
606             COMPONENT_MAP(_component ,src ,"out_GPR_READ_1_VAL"          , dest, "in_GPR_READ_"+toString(2*i+1)+"_VAL"          );
607             COMPONENT_MAP(_component ,src , "in_GPR_READ_1_ACK"          , dest,"out_GPR_READ_"+toString(2*i+1)+"_ACK"          );
608             if (_param->_have_port_ooo_engine_id)
609             COMPONENT_MAP(_component ,src ,"out_GPR_READ_1_OOO_ENGINE_ID", dest, "in_GPR_READ_"+toString(2*i+1)+"_OOO_ENGINE_ID");
610             COMPONENT_MAP(_component ,src ,"out_GPR_READ_1_NUM_REG"      , dest, "in_GPR_READ_"+toString(2*i+1)+"_NUM_REG"      );
611             COMPONENT_MAP(_component ,src , "in_GPR_READ_1_DATA"         , dest,"out_GPR_READ_"+toString(2*i+1)+"_DATA"         );
612             COMPONENT_MAP(_component ,src , "in_GPR_READ_1_DATA_VAL"     , dest,"out_GPR_READ_"+toString(2*i+1)+"_DATA_VAL"     );
613           }
614           
615           // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
616           {
617             dest = _name+"_register_unit";
618#ifdef POSITION
619             _component->interface_map (src ,"spr_read_0",
620                                        dest,"spr_read_"+toString(i));
621#endif
622             COMPONENT_MAP(_component ,src ,"out_SPR_READ_0_VAL"          , dest, "in_SPR_READ_"+toString(i)+"_VAL"          );
623             COMPONENT_MAP(_component ,src , "in_SPR_READ_0_ACK"          , dest,"out_SPR_READ_"+toString(i)+"_ACK"          );
624             if (_param->_have_port_ooo_engine_id)
625             COMPONENT_MAP(_component ,src ,"out_SPR_READ_0_OOO_ENGINE_ID", dest, "in_SPR_READ_"+toString(i)+"_OOO_ENGINE_ID");
626             COMPONENT_MAP(_component ,src ,"out_SPR_READ_0_NUM_REG"      , dest, "in_SPR_READ_"+toString(i)+"_NUM_REG"      );
627             COMPONENT_MAP(_component ,src , "in_SPR_READ_0_DATA"         , dest,"out_SPR_READ_"+toString(i)+"_DATA"         );
628             COMPONENT_MAP(_component ,src , "in_SPR_READ_0_DATA_VAL"     , dest,"out_SPR_READ_"+toString(i)+"_DATA_VAL"     );
629           }
630           
631           // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
632           uint32_t it_gpr_write = 0;
633           for (std::set<uint32_t>::iterator it=_param->_set_read_unit_source_register_write[i].begin();
634                it!=_param->_set_read_unit_source_register_write[i].end();
635                it++)
636             {
637               uint32_t num_port = (*it);
638
639               dest = _name+"_glue";
640#ifdef POSITION
641               _component->interface_map (src ,"gpr_write_"+toString(it_gpr_write),
642                                          dest,"gpr_write_read_unit_"+toString(num_port));
643#endif
644               
645               COMPONENT_MAP(_component ,src , "in_GPR_WRITE_"+toString(it_gpr_write)+"_VAL"          ,
646                                         dest,"out_GPR_WRITE_READ_UNIT_"+toString(num_port)+"_VAL"          );
647               if (_param->_have_port_ooo_engine_id)
648               COMPONENT_MAP(_component ,src , "in_GPR_WRITE_"+toString(it_gpr_write)+"_OOO_ENGINE_ID",
649                                         dest,"out_GPR_WRITE_READ_UNIT_"+toString(num_port)+"_OOO_ENGINE_ID");
650               COMPONENT_MAP(_component ,src , "in_GPR_WRITE_"+toString(it_gpr_write)+"_NUM_REG"      ,
651                                         dest,"out_GPR_WRITE_READ_UNIT_"+toString(num_port)+"_NUM_REG"      );
652               COMPONENT_MAP(_component ,src , "in_GPR_WRITE_"+toString(it_gpr_write)+"_DATA"         ,
653                                         dest,"out_GPR_WRITE_READ_UNIT_"+toString(num_port)+"_DATA"         );
654               
655               it_gpr_write ++;
656             }
657           
658           // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
659           uint32_t it_spr_write = 0;
660           for (std::set<uint32_t>::iterator it=_param->_set_read_unit_source_register_write[i].begin();
661                it!=_param->_set_read_unit_source_register_write[i].end();
662                it++)
663             {
664               uint32_t num_port = (*it);
665
666               dest = _name+"_glue";
667#ifdef POSITION
668               _component->interface_map (src ,"spr_write_"+toString(it_spr_write),
669                                          dest,"spr_write_read_unit_"+toString(num_port));
670#endif
671               
672               COMPONENT_MAP(_component ,src , "in_SPR_WRITE_"+toString(it_spr_write)+"_VAL"          ,
673                                         dest,"out_SPR_WRITE_READ_UNIT_"+toString(num_port)+"_VAL"          );
674
675               if (_param->_have_port_ooo_engine_id)
676               COMPONENT_MAP(_component ,src , "in_SPR_WRITE_"+toString(it_spr_write)+"_OOO_ENGINE_ID",
677                                         dest,"out_SPR_WRITE_READ_UNIT_"+toString(num_port)+"_OOO_ENGINE_ID");
678               COMPONENT_MAP(_component ,src , "in_SPR_WRITE_"+toString(it_spr_write)+"_NUM_REG"      ,
679                                         dest,"out_SPR_WRITE_READ_UNIT_"+toString(num_port)+"_NUM_REG"      );
680               COMPONENT_MAP(_component ,src , "in_SPR_WRITE_"+toString(it_spr_write)+"_DATA"         ,
681                                         dest,"out_SPR_WRITE_READ_UNIT_"+toString(num_port)+"_DATA"         );
682               
683               it_spr_write ++;
684             }
685
686           // ~~~~~[ Interface "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
687           uint32_t it_bypass_write = 0;
688           for (std::set<uint32_t>::iterator it=_param->_set_read_unit_source_bypass_write[i].begin();
689                it!=_param->_set_read_unit_source_bypass_write[i].end();
690                it++)
691             {
692               dest = _name+"_write_unit_"+toString(*it);
693
694               for (uint32_t j=0; j<_param->_nb_bypass_write[*it]; j++)
695                 {
696#ifdef POSITION
697                   _component->interface_map (src ,"bypass_write_"+toString(it_bypass_write),
698                                              dest,"bypass_write_"+toString(j));
699#endif
700                   
701                   if (_param->_have_port_ooo_engine_id)
702                   COMPONENT_MAP(_component ,src , "in_BYPASS_WRITE_"+toString(it_bypass_write)+"_OOO_ENGINE_ID",
703                                             dest,"out_BYPASS_WRITE_"+toString(j              )+"_OOO_ENGINE_ID");
704                   COMPONENT_MAP(_component ,src , "in_BYPASS_WRITE_"+toString(it_bypass_write)+"_GPR_VAL"      ,
705                                             dest,"out_BYPASS_WRITE_"+toString(j              )+"_GPR_VAL"      );
706                   COMPONENT_MAP(_component ,src , "in_BYPASS_WRITE_"+toString(it_bypass_write)+"_GPR_NUM_REG"  ,
707                                             dest,"out_BYPASS_WRITE_"+toString(j              )+"_GPR_NUM_REG"  );
708                   COMPONENT_MAP(_component ,src , "in_BYPASS_WRITE_"+toString(it_bypass_write)+"_GPR_DATA"     ,
709                                             dest,"out_BYPASS_WRITE_"+toString(j              )+"_GPR_DATA"     );
710                   COMPONENT_MAP(_component ,src , "in_BYPASS_WRITE_"+toString(it_bypass_write)+"_SPR_VAL"      ,
711                                             dest,"out_BYPASS_WRITE_"+toString(j              )+"_SPR_VAL"      );
712                   COMPONENT_MAP(_component ,src , "in_BYPASS_WRITE_"+toString(it_bypass_write)+"_SPR_NUM_REG"  ,
713                                             dest,"out_BYPASS_WRITE_"+toString(j              )+"_SPR_NUM_REG"  );
714                   COMPONENT_MAP(_component ,src , "in_BYPASS_WRITE_"+toString(it_bypass_write)+"_SPR_DATA"     ,
715                                             dest,"out_BYPASS_WRITE_"+toString(j              )+"_SPR_DATA"     );
716
717#ifdef POSITION
718                   _component->interface_map (dest,"bypass_write_"+toString(j),
719                                              src ,"bypass_write_"+toString(it_bypass_write));
720#endif
721                   
722//                 if (_param->_have_port_ooo_engine_id)
723//                 PORT_MAP(_component ,dest,"out_BYPASS_WRITE_"+toString(j              )+"_OOO_ENGINE_ID",
724//                                      src , "in_BYPASS_WRITE_"+toString(it_bypass_write)+"_OOO_ENGINE_ID");
725//                 PORT_MAP(_component ,dest,"out_BYPASS_WRITE_"+toString(j              )+"_GPR_VAL"      ,
726//                                      src , "in_BYPASS_WRITE_"+toString(it_bypass_write)+"_GPR_VAL"      );
727//                 PORT_MAP(_component ,dest,"out_BYPASS_WRITE_"+toString(j              )+"_GPR_NUM_REG"  ,
728//                                      src , "in_BYPASS_WRITE_"+toString(it_bypass_write)+"_GPR_NUM_REG"  );
729//                 PORT_MAP(_component ,dest,"out_BYPASS_WRITE_"+toString(j              )+"_GPR_DATA"     ,
730//                                      src , "in_BYPASS_WRITE_"+toString(it_bypass_write)+"_GPR_DATA"     );
731//                 PORT_MAP(_component ,dest,"out_BYPASS_WRITE_"+toString(j              )+"_SPR_VAL"      ,
732//                                      src , "in_BYPASS_WRITE_"+toString(it_bypass_write)+"_SPR_VAL"      );
733//                 PORT_MAP(_component ,dest,"out_BYPASS_WRITE_"+toString(j              )+"_SPR_NUM_REG"  ,
734//                                      src , "in_BYPASS_WRITE_"+toString(it_bypass_write)+"_SPR_NUM_REG"  );
735//                 PORT_MAP(_component ,dest,"out_BYPASS_WRITE_"+toString(j              )+"_SPR_DATA"     ,
736//                                      src , "in_BYPASS_WRITE_"+toString(it_bypass_write)+"_SPR_DATA"     );
737
738                   it_bypass_write ++;
739                 }
740             }
741
742           // ~~~~~[ Interface "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
743           uint32_t it_bypass_memory = 0;
744           for (std::set<uint32_t>::iterator it=_param->_set_read_unit_source_bypass_memory[i].begin();
745                it!=_param->_set_read_unit_source_bypass_memory[i].end();
746                it++)
747             {
748               dest = _name+"_load_store_unit_"+toString(_param->_translate_num_execute_unit[*it]);
749
750               for (uint32_t j=0; j<_param->_nb_bypass_memory[_param->_translate_num_execute_unit[*it]]; j++)
751                 {
752#ifdef POSITION
753                   _component->interface_map (src ,"bypass_memory_"+toString(it_bypass_memory),
754                                              dest,"bypass_memory_"+toString(j));
755#endif
756                   
757                   if (_param->_have_port_ooo_engine_id)
758                   COMPONENT_MAP(_component ,src , "in_BYPASS_MEMORY_"+toString(it_bypass_memory)+"_OOO_ENGINE_ID",
759                                             dest,"out_BYPASS_MEMORY_"+toString(j               )+"_OOO_ENGINE_ID");
760                   COMPONENT_MAP(_component ,src , "in_BYPASS_MEMORY_"+toString(it_bypass_memory)+"_VAL"          ,
761                                             dest,"out_BYPASS_MEMORY_"+toString(j               )+"_VAL"          );
762                   COMPONENT_MAP(_component ,src , "in_BYPASS_MEMORY_"+toString(it_bypass_memory)+"_NUM_REG"      ,
763                                             dest,"out_BYPASS_MEMORY_"+toString(j               )+"_NUM_REG"      );
764                   COMPONENT_MAP(_component ,src , "in_BYPASS_MEMORY_"+toString(it_bypass_memory)+"_DATA"         ,
765                                             dest,"out_BYPASS_MEMORY_"+toString(j               )+"_DATA"         );
766
767                   // port map to the "load_store_unit" component
768#ifdef POSITION
769                   _component->interface_map (dest,"bypass_memory_"+toString(j),
770                                              src ,"bypass_memory_"+toString(it_bypass_memory));
771#endif
772                   
773//                 if (_param->_have_port_ooo_engine_id)
774//                 PORT_MAP(_component ,dest,"out_BYPASS_MEMORY_"+toString(j               )+"_OOO_ENGINE_ID",
775//                                      src , "in_BYPASS_MEMORY_"+toString(it_bypass_memory)+"_OOO_ENGINE_ID");
776//                 PORT_MAP(_component ,dest,"out_BYPASS_MEMORY_"+toString(j               )+"_VAL"          ,
777//                                      src , "in_BYPASS_MEMORY_"+toString(it_bypass_memory)+"_VAL"          );
778//                 PORT_MAP(_component ,dest,"out_BYPASS_MEMORY_"+toString(j               )+"_NUM_REG"      ,
779//                                      src , "in_BYPASS_MEMORY_"+toString(it_bypass_memory)+"_NUM_REG"      );
780//                 PORT_MAP(_component ,dest,"out_BYPASS_MEMORY_"+toString(j               )+"_DATA"         ,
781//                                      src , "in_BYPASS_MEMORY_"+toString(it_bypass_memory)+"_DATA"         );
782
783                   it_bypass_memory ++;
784                 }
785             }
786         }
787     }
788
789     // ===================================================================
790     // =====[ EXECUTE_UNIT ]==============================================   
791     // ===================================================================
792     for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
793       {
794         uint32_t x=_param->_translate_num_execute_unit[i];
795         
796         if (_param->_is_load_store_unit[i] == false)
797           {
798             // ===================================================================
799             // =====[ FUNCTIONNAL_UNIT ]==========================================   
800             // ===================================================================
801
802             src = _name+"_functionnal_unit_"+toString(x);
803             log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
804             
805             {
806               dest = _name;
807#ifdef POSITION
808               _component->interface_map (src ,"",
809                                          dest,"");
810#endif
811               PORT_MAP(_component ,src , "in_CLOCK" ,dest, "in_CLOCK");
812               PORT_MAP(_component ,src , "in_NRESET",dest, "in_NRESET");
813             }
814   
815             // ~~~~~[ Interface "execute_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
816             {
817               dest = _name+"_read_unit_to_execution_unit";
818
819#ifdef POSITION
820               _component->interface_map (src ,"execute_in",
821                                          dest,"execute_unit_in_"+toString(i)+"_0");
822#endif
823
824               COMPONENT_MAP(_component ,src , "in_EXECUTE_IN_VAL"                  ,
825                                         dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_0_VAL"                  );
826               COMPONENT_MAP(_component ,src ,"out_EXECUTE_IN_ACK"                  ,
827                                         dest, "in_EXECUTE_UNIT_IN_"+toString(i)+"_0_ACK"                  );
828               if (_param->_have_port_context_id)
829               COMPONENT_MAP(_component ,src , "in_EXECUTE_IN_CONTEXT_ID"           ,
830                                         dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_0_CONTEXT_ID"           );
831               if (_param->_have_port_front_end_id)
832               COMPONENT_MAP(_component ,src , "in_EXECUTE_IN_FRONT_END_ID"         ,
833                                         dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_0_FRONT_END_ID"         );
834               if (_param->_have_port_ooo_engine_id)
835               COMPONENT_MAP(_component ,src , "in_EXECUTE_IN_OOO_ENGINE_ID"        ,
836                                         dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_0_OOO_ENGINE_ID"        );
837               if (_param->_have_port_rob_ptr  )
838               COMPONENT_MAP(_component ,src , "in_EXECUTE_IN_PACKET_ID"            ,
839                                         dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_0_PACKET_ID"            );
840               COMPONENT_MAP(_component ,src , "in_EXECUTE_IN_OPERATION"            ,
841                                         dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_0_OPERATION"            );
842               COMPONENT_MAP(_component ,src , "in_EXECUTE_IN_TYPE"                 ,
843                                         dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_0_TYPE"                 );
844               COMPONENT_MAP(_component ,src , "in_EXECUTE_IN_CANCEL"               ,
845                                         dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_0_CANCEL"               );
846               COMPONENT_MAP(_component ,src , "in_EXECUTE_IN_STORE_QUEUE_PTR_WRITE",
847                                         dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_0_STORE_QUEUE_PTR_WRITE");
848               COMPONENT_MAP(_component ,src , "in_EXECUTE_IN_STORE_QUEUE_PTR_READ" ,
849                                         dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_0_STORE_QUEUE_PTR_READ" );
850               COMPONENT_MAP(_component ,src , "in_EXECUTE_IN_STORE_QUEUE_EMPTY"    ,
851                                         dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_0_STORE_QUEUE_EMPTY"    );
852               if (_param->_have_port_load_queue_ptr)
853               COMPONENT_MAP(_component ,src , "in_EXECUTE_IN_LOAD_QUEUE_PTR_WRITE" ,
854                                         dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_0_LOAD_QUEUE_PTR_WRITE" );
855               COMPONENT_MAP(_component ,src , "in_EXECUTE_IN_HAS_IMMEDIAT"         ,
856                                         dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_0_HAS_IMMEDIAT"         );
857               COMPONENT_MAP(_component ,src , "in_EXECUTE_IN_IMMEDIAT"             ,
858                                         dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_0_IMMEDIAT"             );
859               COMPONENT_MAP(_component ,src , "in_EXECUTE_IN_DATA_RA"              ,
860                                         dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_0_DATA_RA"              );
861               COMPONENT_MAP(_component ,src , "in_EXECUTE_IN_DATA_RB"              ,
862                                         dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_0_DATA_RB"              );
863               COMPONENT_MAP(_component ,src , "in_EXECUTE_IN_DATA_RC"              ,
864                                         dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_0_DATA_RC"              );
865               COMPONENT_MAP(_component ,src , "in_EXECUTE_IN_WRITE_RD"             ,
866                                         dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_0_WRITE_RD"             );
867               COMPONENT_MAP(_component ,src , "in_EXECUTE_IN_NUM_REG_RD"           ,
868                                         dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_0_NUM_REG_RD"           );
869               COMPONENT_MAP(_component ,src , "in_EXECUTE_IN_WRITE_RE"             ,
870                                         dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_0_WRITE_RE"             );
871               COMPONENT_MAP(_component ,src , "in_EXECUTE_IN_NUM_REG_RE"           ,
872                                         dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_0_NUM_REG_RE"           );
873             }
874             
875             // ~~~~~[ Interface "execute_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
876             {
877               dest = _name+"_execution_unit_to_write_unit";
878               
879#ifdef POSITION
880               _component->interface_map (src ,"execute_out",
881                                          dest,"execute_unit_out_"+toString(i)+"_0");
882#endif
883
884               COMPONENT_MAP(_component ,src ,"out_EXECUTE_OUT_VAL"          ,
885                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_0_VAL"          );
886               COMPONENT_MAP(_component ,src , "in_EXECUTE_OUT_ACK"          ,
887                                         dest,"out_EXECUTE_UNIT_OUT_"+toString(i)+"_0_ACK"          );
888               if (_param->_have_port_context_id)
889               COMPONENT_MAP(_component ,src ,"out_EXECUTE_OUT_CONTEXT_ID"   ,
890                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_0_CONTEXT_ID"   );
891               if (_param->_have_port_front_end_id)
892               COMPONENT_MAP(_component ,src ,"out_EXECUTE_OUT_FRONT_END_ID" ,
893                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_0_FRONT_END_ID" );
894               if (_param->_have_port_ooo_engine_id)
895               COMPONENT_MAP(_component ,src ,"out_EXECUTE_OUT_OOO_ENGINE_ID",
896                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_0_OOO_ENGINE_ID");
897               if (_param->_have_port_rob_ptr  )
898               COMPONENT_MAP(_component ,src ,"out_EXECUTE_OUT_PACKET_ID"    ,
899                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_0_PACKET_ID"    );
900//             COMPONENT_MAP(_component ,src ,"out_EXECUTE_OUT_OPERATION"    ,
901//                                       dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_0_OPERATION"    );
902//             COMPONENT_MAP(_component ,src ,"out_EXECUTE_OUT_TYPE"         ,
903//                                       dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_0_TYPE"         );
904               COMPONENT_MAP(_component ,src ,"out_EXECUTE_OUT_CANCEL"       ,
905                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_0_CANCEL"       );
906               COMPONENT_MAP(_component ,src ,"out_EXECUTE_OUT_WRITE_RD"     ,
907                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_0_WRITE_RD"     );
908               COMPONENT_MAP(_component ,src ,"out_EXECUTE_OUT_NUM_REG_RD"   ,
909                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_0_NUM_REG_RD"   );
910               COMPONENT_MAP(_component ,src ,"out_EXECUTE_OUT_DATA_RD"      ,
911                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_0_DATA_RD"      );
912               COMPONENT_MAP(_component ,src ,"out_EXECUTE_OUT_WRITE_RE"     ,
913                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_0_WRITE_RE"     );
914               COMPONENT_MAP(_component ,src ,"out_EXECUTE_OUT_NUM_REG_RE"   ,
915                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_0_NUM_REG_RE"   );
916               COMPONENT_MAP(_component ,src ,"out_EXECUTE_OUT_DATA_RE"      ,
917                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_0_DATA_RE"      );
918               COMPONENT_MAP(_component ,src ,"out_EXECUTE_OUT_EXCEPTION"    ,
919                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_0_EXCEPTION"    );
920               COMPONENT_MAP(_component ,src ,"out_EXECUTE_OUT_NO_SEQUENCE"  ,
921                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_0_NO_SEQUENCE"  );
922               COMPONENT_MAP(_component ,src ,"out_EXECUTE_OUT_ADDRESS"      ,
923                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_0_ADDRESS"      );
924             }
925           }
926         else
927           {
928             // ===================================================================
929             // =====[ LOAD_STORE_UNIT ]===========================================   
930             // ===================================================================
931 
932             src = _name+"_load_store_unit_"+toString(x);
933             log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
934
935             // ~~~~~[ Interface "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
936             {
937               dest = _name;
938#ifdef POSITION
939               _component->interface_map (src ,"",
940                                          dest,"");
941#endif
942               PORT_MAP(_component ,src , "in_CLOCK" ,dest, "in_CLOCK");
943               PORT_MAP(_component ,src , "in_NRESET",dest, "in_NRESET");
944             }
945         
946             // ~~~~~[ Interface "memory_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
947             for (uint32_t j=0; j<_param->_nb_inst_memory [x]; j++)
948               {
949                 dest = _name+"_read_unit_to_execution_unit";
950                 
951#ifdef POSITION
952                 _component->interface_map (src ,"memory_in_"+toString(j),
953                                            dest,"execute_unit_in_"+toString(i)+"_"+toString(j));
954#endif
955
956                 COMPONENT_MAP(_component ,src , "in_MEMORY_IN_"+toString(j)+"_VAL"                  ,
957                                           dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_"+toString(j)+"_VAL"                  );
958                 COMPONENT_MAP(_component ,src ,"out_MEMORY_IN_"+toString(j)+"_ACK"                  ,
959                                           dest, "in_EXECUTE_UNIT_IN_"+toString(i)+"_"+toString(j)+"_ACK"                  );
960                 if (_param->_have_port_context_id)
961                 COMPONENT_MAP(_component ,src , "in_MEMORY_IN_"+toString(j)+"_CONTEXT_ID"           ,
962                                           dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_"+toString(j)+"_CONTEXT_ID"           );
963                 if (_param->_have_port_front_end_id)
964                 COMPONENT_MAP(_component ,src , "in_MEMORY_IN_"+toString(j)+"_FRONT_END_ID"         ,
965                                           dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_"+toString(j)+"_FRONT_END_ID"         );
966                 if (_param->_have_port_ooo_engine_id)
967                 COMPONENT_MAP(_component ,src , "in_MEMORY_IN_"+toString(j)+"_OOO_ENGINE_ID"        ,
968                                           dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_"+toString(j)+"_OOO_ENGINE_ID"        );
969                 if (_param->_have_port_rob_ptr  )
970                 COMPONENT_MAP(_component ,src , "in_MEMORY_IN_"+toString(j)+"_PACKET_ID"            ,
971                                           dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_"+toString(j)+"_PACKET_ID"            );
972                 COMPONENT_MAP(_component ,src , "in_MEMORY_IN_"+toString(j)+"_OPERATION"            ,
973                                           dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_"+toString(j)+"_OPERATION"            );
974                 COMPONENT_MAP(_component ,src , "in_MEMORY_IN_"+toString(j)+"_TYPE"                 ,
975                                           dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_"+toString(j)+"_TYPE"                 );
976                 COMPONENT_MAP(_component ,src , "in_MEMORY_IN_"+toString(j)+"_CANCEL"               ,
977                                           dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_"+toString(j)+"_CANCEL"               );
978                 COMPONENT_MAP(_component ,src , "in_MEMORY_IN_"+toString(j)+"_STORE_QUEUE_PTR_WRITE",
979                                           dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_"+toString(j)+"_STORE_QUEUE_PTR_WRITE");
980                 COMPONENT_MAP(_component ,src , "in_MEMORY_IN_"+toString(j)+"_STORE_QUEUE_PTR_READ",
981                                           dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_"+toString(j)+"_STORE_QUEUE_PTR_READ" );
982                 COMPONENT_MAP(_component ,src , "in_MEMORY_IN_"+toString(j)+"_STORE_QUEUE_EMPTY"    ,
983                                           dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_"+toString(j)+"_STORE_QUEUE_EMPTY"    );
984                 if (_param->_have_port_load_queue_ptr)
985                 COMPONENT_MAP(_component ,src , "in_MEMORY_IN_"+toString(j)+"_LOAD_QUEUE_PTR_WRITE" ,
986                                           dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_"+toString(j)+"_LOAD_QUEUE_PTR_WRITE" );
987                 COMPONENT_MAP(_component ,src , "in_MEMORY_IN_"+toString(j)+"_HAS_IMMEDIAT"         ,
988                                           dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_"+toString(j)+"_HAS_IMMEDIAT"         );
989                 COMPONENT_MAP(_component ,src , "in_MEMORY_IN_"+toString(j)+"_IMMEDIAT"             ,
990                                           dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_"+toString(j)+"_IMMEDIAT"             );
991                 COMPONENT_MAP(_component ,src , "in_MEMORY_IN_"+toString(j)+"_DATA_RA"              ,
992                                           dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_"+toString(j)+"_DATA_RA"              );
993                 COMPONENT_MAP(_component ,src , "in_MEMORY_IN_"+toString(j)+"_DATA_RB"              ,
994                                           dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_"+toString(j)+"_DATA_RB"              );
995                 COMPONENT_MAP(_component ,src , "in_MEMORY_IN_"+toString(j)+"_DATA_RC"              ,
996                                           dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_"+toString(j)+"_DATA_RC"              );
997                 COMPONENT_MAP(_component ,src , "in_MEMORY_IN_"+toString(j)+"_WRITE_RD"             ,
998                                           dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_"+toString(j)+"_WRITE_RD"             );
999                 COMPONENT_MAP(_component ,src , "in_MEMORY_IN_"+toString(j)+"_NUM_REG_RD"           ,
1000                                           dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_"+toString(j)+"_NUM_REG_RD"           );
1001                 COMPONENT_MAP(_component ,src , "in_MEMORY_IN_"+toString(j)+"_WRITE_RE"             ,
1002                                           dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_"+toString(j)+"_WRITE_RE"             );
1003                 COMPONENT_MAP(_component ,src , "in_MEMORY_IN_"+toString(j)+"_NUM_REG_RE"           ,
1004                                           dest,"out_EXECUTE_UNIT_IN_"+toString(i)+"_"+toString(j)+"_NUM_REG_RE"           );
1005               }
1006
1007             // ~~~~~[ Interface "memory_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1008             for (uint32_t j=0; j<_param->_nb_inst_memory [x]; j++)
1009               {
1010               dest = _name+"_execution_unit_to_write_unit";
1011               
1012#ifdef POSITION
1013               _component->interface_map (src ,"memory_out_"+toString(j)
1014                                          dest,"execute_unit_out_"+toString(i)+"_"+toString(j));
1015#endif
1016
1017               COMPONENT_MAP(_component ,src ,"out_MEMORY_OUT_"+toString(j)+"_VAL"          ,
1018                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_"+toString(j)+"_VAL"          );
1019               COMPONENT_MAP(_component ,src , "in_MEMORY_OUT_"+toString(j)+"_ACK"          ,
1020                                         dest,"out_EXECUTE_UNIT_OUT_"+toString(i)+"_"+toString(j)+"_ACK"          );
1021               if (_param->_have_port_context_id)
1022               COMPONENT_MAP(_component ,src ,"out_MEMORY_OUT_"+toString(j)+"_CONTEXT_ID"   ,
1023                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_"+toString(j)+"_CONTEXT_ID"   );
1024               if (_param->_have_port_front_end_id)
1025               COMPONENT_MAP(_component ,src ,"out_MEMORY_OUT_"+toString(j)+"_FRONT_END_ID" ,
1026                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_"+toString(j)+"_FRONT_END_ID" );
1027               if (_param->_have_port_ooo_engine_id)
1028               COMPONENT_MAP(_component ,src ,"out_MEMORY_OUT_"+toString(j)+"_OOO_ENGINE_ID",
1029                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_"+toString(j)+"_OOO_ENGINE_ID");
1030               if (_param->_have_port_rob_ptr  )
1031               COMPONENT_MAP(_component ,src ,"out_MEMORY_OUT_"+toString(j)+"_PACKET_ID"    ,
1032                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_"+toString(j)+"_PACKET_ID"    );
1033//             COMPONENT_MAP(_component ,src ,"out_MEMORY_OUT_"+toString(j)+"_OPERATION"    ,
1034//                                       dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_"+toString(j)+"_OPERATION"    );
1035//             COMPONENT_MAP(_component ,src ,"out_MEMORY_OUT_"+toString(j)+"_TYPE"         ,
1036//                                       dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_"+toString(j)+"_TYPE"         );
1037               COMPONENT_MAP(_component ,src ,"out_MEMORY_OUT_"+toString(j)+"_CANCEL"       ,
1038                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_"+toString(j)+"_CANCEL"       );
1039               COMPONENT_MAP(_component ,src ,"out_MEMORY_OUT_"+toString(j)+"_WRITE_RD"     ,
1040                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_"+toString(j)+"_WRITE_RD"     );
1041               COMPONENT_MAP(_component ,src ,"out_MEMORY_OUT_"+toString(j)+"_NUM_REG_RD"   ,
1042                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_"+toString(j)+"_NUM_REG_RD"   );
1043               COMPONENT_MAP(_component ,src ,"out_MEMORY_OUT_"+toString(j)+"_DATA_RD"      ,
1044                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_"+toString(j)+"_DATA_RD"      );
1045               COMPONENT_MAP(_component ,src ,"out_MEMORY_OUT_"+toString(j)+"_WRITE_RE"     ,
1046                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_"+toString(j)+"_WRITE_RE"     );
1047               COMPONENT_MAP(_component ,src ,"out_MEMORY_OUT_"+toString(j)+"_NUM_REG_RE"   ,
1048                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_"+toString(j)+"_NUM_REG_RE"   );
1049               COMPONENT_MAP(_component ,src ,"out_MEMORY_OUT_"+toString(j)+"_DATA_RE"      ,
1050                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_"+toString(j)+"_DATA_RE"      );
1051               COMPONENT_MAP(_component ,src ,"out_MEMORY_OUT_"+toString(j)+"_EXCEPTION"    ,
1052                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_"+toString(j)+"_EXCEPTION"    );
1053               COMPONENT_MAP(_component ,src ,"out_MEMORY_OUT_"+toString(j)+"_NO_SEQUENCE"  ,
1054                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_"+toString(j)+"_NO_SEQUENCE"  );
1055               COMPONENT_MAP(_component ,src ,"out_MEMORY_OUT_"+toString(j)+"_ADDRESS"      ,
1056                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_"+toString(j)+"_ADDRESS"      );
1057             }
1058             
1059             // ~~~~~[ Interface "dcache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1060             for (uint32_t j=0; j<_param->_nb_cache_port [x]; j++)
1061             {
1062               dest = _name;
1063               
1064#ifdef POSITION
1065               _component->interface_map (src ,"dcache_req_"+toString(j),
1066                                          dest,"dcache_req_"+toString(x)+"_"+toString(j));
1067#endif
1068               PORT_MAP(_component ,src ,"out_DCACHE_REQ_"+toString(j)+"_VAL"       ,dest,"out_DCACHE_REQ_"+toString(x)+"_"+toString(j)+"_VAL"       );
1069               PORT_MAP(_component ,src , "in_DCACHE_REQ_"+toString(j)+"_ACK"       ,dest, "in_DCACHE_REQ_"+toString(x)+"_"+toString(j)+"_ACK"       );
1070               if (_param->_have_port_dcache_context_id)
1071               PORT_MAP(_component ,src ,"out_DCACHE_REQ_"+toString(j)+"_CONTEXT_ID",dest,"out_DCACHE_REQ_"+toString(x)+"_"+toString(j)+"_CONTEXT_ID");
1072               PORT_MAP(_component ,src ,"out_DCACHE_REQ_"+toString(j)+"_PACKET_ID" ,dest,"out_DCACHE_REQ_"+toString(x)+"_"+toString(j)+"_PACKET_ID" );
1073               PORT_MAP(_component ,src ,"out_DCACHE_REQ_"+toString(j)+"_ADDRESS"   ,dest,"out_DCACHE_REQ_"+toString(x)+"_"+toString(j)+"_ADDRESS"   );
1074               PORT_MAP(_component ,src ,"out_DCACHE_REQ_"+toString(j)+"_TYPE"      ,dest,"out_DCACHE_REQ_"+toString(x)+"_"+toString(j)+"_TYPE"      );
1075               PORT_MAP(_component ,src ,"out_DCACHE_REQ_"+toString(j)+"_WDATA"     ,dest,"out_DCACHE_REQ_"+toString(x)+"_"+toString(j)+"_WDATA"     );
1076             }
1077
1078             // ~~~~~[ Interface "dcache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1079             for (uint32_t j=0; j<_param->_nb_cache_port [x]; j++)
1080             {
1081               dest = _name;
1082               
1083#ifdef POSITION
1084               _component->interface_map (src ,"dcache_rsp_"+toString(j),
1085                                          dest,"dcache_rsp_"+toString(x)+"_"+toString(j));
1086#endif
1087               PORT_MAP(_component ,src , "in_DCACHE_RSP_"+toString(j)+"_VAL"       ,dest, "in_DCACHE_RSP_"+toString(x)+"_"+toString(j)+"_VAL"       );
1088               PORT_MAP(_component ,src ,"out_DCACHE_RSP_"+toString(j)+"_ACK"       ,dest,"out_DCACHE_RSP_"+toString(x)+"_"+toString(j)+"_ACK"       );
1089               if (_param->_have_port_dcache_context_id)
1090               PORT_MAP(_component ,src , "in_DCACHE_RSP_"+toString(j)+"_CONTEXT_ID",dest, "in_DCACHE_RSP_"+toString(x)+"_"+toString(j)+"_CONTEXT_ID");
1091               PORT_MAP(_component ,src , "in_DCACHE_RSP_"+toString(j)+"_PACKET_ID" ,dest, "in_DCACHE_RSP_"+toString(x)+"_"+toString(j)+"_PACKET_ID" );
1092               PORT_MAP(_component ,src , "in_DCACHE_RSP_"+toString(j)+"_RDATA"     ,dest, "in_DCACHE_RSP_"+toString(x)+"_"+toString(j)+"_RDATA"     );
1093               PORT_MAP(_component ,src , "in_DCACHE_RSP_"+toString(j)+"_ERROR"     ,dest, "in_DCACHE_RSP_"+toString(x)+"_"+toString(j)+"_ERROR"     );
1094             }
1095
1096             // ~~~~~[ Interface "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1097             {
1098               // Port map with "read_unit" is ok!
1099             }
1100           }
1101       }
1102
1103     // ===================================================================
1104     // =====[ WRITE_UNIT ]================================================
1105     // ===================================================================
1106     for (uint32_t i=0; i<_param->_nb_write_unit; i++)
1107       {
1108         src = _name+"_write_unit_"+toString(i);
1109         log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
1110         
1111         {
1112           dest = _name;
1113#ifdef POSITION
1114           _component->interface_map (src ,"",
1115                                      dest,"");
1116#endif
1117           PORT_MAP(_component ,src , "in_CLOCK" ,dest, "in_CLOCK");
1118           PORT_MAP(_component ,src , "in_NRESET",dest, "in_NRESET");
1119         }
1120
1121         // -----[ Interface "write_unit_in" ]---------------------------------   
1122         {
1123           dest = _name+"_execution_unit_to_write_unit";
1124#ifdef POSITION
1125           _component->interface_map (src ,"write_unit_in",
1126                                      dest,"execute_unit_in_"+toString(i));
1127#endif
1128           
1129           COMPONENT_MAP(_component ,src , "in_WRITE_UNIT_IN_VAL"          ,
1130                                     dest,"out_WRITE_UNIT_IN_"+toString(i)+"_VAL"          );
1131           COMPONENT_MAP(_component ,src ,"out_WRITE_UNIT_IN_ACK"          ,
1132                                     dest, "in_WRITE_UNIT_IN_"+toString(i)+"_ACK"          );
1133           if (_param->_have_port_context_id)
1134           COMPONENT_MAP(_component ,src , "in_WRITE_UNIT_IN_CONTEXT_ID"   ,
1135                                     dest,"out_WRITE_UNIT_IN_"+toString(i)+"_CONTEXT_ID"   );
1136           if (_param->_have_port_front_end_id)
1137           COMPONENT_MAP(_component ,src , "in_WRITE_UNIT_IN_FRONT_END_ID" ,
1138                                     dest,"out_WRITE_UNIT_IN_"+toString(i)+"_FRONT_END_ID" );
1139           if (_param->_have_port_ooo_engine_id)
1140           COMPONENT_MAP(_component ,src , "in_WRITE_UNIT_IN_OOO_ENGINE_ID",
1141                                     dest,"out_WRITE_UNIT_IN_"+toString(i)+"_OOO_ENGINE_ID");
1142           if (_param->_have_port_rob_ptr  )
1143           COMPONENT_MAP(_component ,src , "in_WRITE_UNIT_IN_PACKET_ID"    ,
1144                                     dest,"out_WRITE_UNIT_IN_"+toString(i)+"_PACKET_ID"    );
1145//         COMPONENT_MAP(_component ,src , "in_WRITE_UNIT_IN_OPERATION"    ,
1146//                                   dest,"out_WRITE_UNIT_IN_"+toString(i)+"_OPERATION"    );
1147//         COMPONENT_MAP(_component ,src , "in_WRITE_UNIT_IN_TYPE"         ,
1148//                                   dest,"out_WRITE_UNIT_IN_"+toString(i)+"_TYPE"         );
1149           COMPONENT_MAP(_component ,src , "in_WRITE_UNIT_IN_CANCEL"       ,
1150                                     dest,"out_WRITE_UNIT_IN_"+toString(i)+"_CANCEL"       );
1151           COMPONENT_MAP(_component ,src , "in_WRITE_UNIT_IN_WRITE_RD"     ,
1152                                     dest,"out_WRITE_UNIT_IN_"+toString(i)+"_WRITE_RD"     );
1153           COMPONENT_MAP(_component ,src , "in_WRITE_UNIT_IN_NUM_REG_RD"   ,
1154                                     dest,"out_WRITE_UNIT_IN_"+toString(i)+"_NUM_REG_RD"   );
1155           COMPONENT_MAP(_component ,src , "in_WRITE_UNIT_IN_DATA_RD"      ,
1156                                     dest,"out_WRITE_UNIT_IN_"+toString(i)+"_DATA_RD"      );
1157           COMPONENT_MAP(_component ,src , "in_WRITE_UNIT_IN_WRITE_RE"     ,
1158                                     dest,"out_WRITE_UNIT_IN_"+toString(i)+"_WRITE_RE"     );
1159           COMPONENT_MAP(_component ,src , "in_WRITE_UNIT_IN_NUM_REG_RE"   ,
1160                                     dest,"out_WRITE_UNIT_IN_"+toString(i)+"_NUM_REG_RE"   );
1161           COMPONENT_MAP(_component ,src , "in_WRITE_UNIT_IN_DATA_RE"      ,
1162                                     dest,"out_WRITE_UNIT_IN_"+toString(i)+"_DATA_RE"      );
1163           COMPONENT_MAP(_component ,src , "in_WRITE_UNIT_IN_EXCEPTION"    ,
1164                                     dest,"out_WRITE_UNIT_IN_"+toString(i)+"_EXCEPTION"    );
1165           COMPONENT_MAP(_component ,src , "in_WRITE_UNIT_IN_NO_SEQUENCE"  ,
1166                                     dest,"out_WRITE_UNIT_IN_"+toString(i)+"_NO_SEQUENCE"  );
1167           COMPONENT_MAP(_component ,src , "in_WRITE_UNIT_IN_ADDRESS"      ,
1168                                     dest,"out_WRITE_UNIT_IN_"+toString(i)+"_ADDRESS"      );
1169         }
1170
1171         // -----[ Interface "write_unit_out" ]--------------------------------   
1172         {
1173           dest = _name;
1174#ifdef POSITION
1175           _component->interface_map (src ,"write_unit_out",
1176                                      dest,"execute_loop_out_"+toString(i));
1177#endif
1178           
1179           PORT_MAP(_component ,src ,"out_WRITE_UNIT_OUT_VAL"          ,
1180                                dest,"out_EXECUTE_LOOP_OUT_"+toString(i)+"_VAL"          );
1181           PORT_MAP(_component ,src , "in_WRITE_UNIT_OUT_ACK"          ,
1182                                dest, "in_EXECUTE_LOOP_OUT_"+toString(i)+"_ACK"          );
1183           if (_param->_have_port_context_id)
1184           PORT_MAP(_component ,src ,"out_WRITE_UNIT_OUT_CONTEXT_ID"   ,
1185                                dest,"out_EXECUTE_LOOP_OUT_"+toString(i)+"_CONTEXT_ID"   );
1186           if (_param->_have_port_front_end_id)
1187           PORT_MAP(_component ,src ,"out_WRITE_UNIT_OUT_FRONT_END_ID" ,
1188                                dest,"out_EXECUTE_LOOP_OUT_"+toString(i)+"_FRONT_END_ID" );
1189           if (_param->_have_port_ooo_engine_id)
1190           PORT_MAP(_component ,src ,"out_WRITE_UNIT_OUT_OOO_ENGINE_ID",
1191                                dest,"out_EXECUTE_LOOP_OUT_"+toString(i)+"_OOO_ENGINE_ID");
1192           if (_param->_have_port_rob_ptr  )
1193           PORT_MAP(_component ,src ,"out_WRITE_UNIT_OUT_PACKET_ID"    ,
1194                                dest,"out_EXECUTE_LOOP_OUT_"+toString(i)+"_PACKET_ID"    );
1195//         PORT_MAP(_component ,src ,"out_WRITE_UNIT_OUT_OPERATION"    ,
1196//                              dest,"out_EXECUTE_LOOP_OUT_"+toString(i)+"_OPERATION"    );
1197//         PORT_MAP(_component ,src ,"out_WRITE_UNIT_OUT_TYPE"         ,
1198//                              dest,"out_EXECUTE_LOOP_OUT_"+toString(i)+"_TYPE"         );
1199           PORT_MAP(_component ,src ,"out_WRITE_UNIT_OUT_CANCEL"       ,
1200                                dest,"out_EXECUTE_LOOP_OUT_"+toString(i)+"_CANCEL"       );
1201           PORT_MAP(_component ,src ,"out_WRITE_UNIT_OUT_FLAGS"        ,
1202                                dest,"out_EXECUTE_LOOP_OUT_"+toString(i)+"_FLAGS"        );
1203           PORT_MAP(_component ,src ,"out_WRITE_UNIT_OUT_EXCEPTION"    ,
1204                                dest,"out_EXECUTE_LOOP_OUT_"+toString(i)+"_EXCEPTION"    );
1205           PORT_MAP(_component ,src ,"out_WRITE_UNIT_OUT_NO_SEQUENCE"  ,
1206                                dest,"out_EXECUTE_LOOP_OUT_"+toString(i)+"_NO_SEQUENCE"  );
1207           PORT_MAP(_component ,src ,"out_WRITE_UNIT_OUT_ADDRESS"      ,
1208                                dest,"out_EXECUTE_LOOP_OUT_"+toString(i)+"_ADDRESS"      );
1209           PORT_MAP(_component ,src ,"out_WRITE_UNIT_OUT_DATA"         ,
1210                                dest,"out_EXECUTE_LOOP_OUT_"+toString(i)+"_DATA"         );
1211         }
1212
1213         // -----[ Interface "gpr_write" ]-------------------------------------
1214         {
1215           dest = _name+"_glue";
1216#ifdef POSITION
1217           _component->interface_map (src ,"gpr_write",
1218                                      dest,"gpr_write_write_unit_"+toString(i));
1219#endif
1220
1221           COMPONENT_MAP(_component ,src ,"out_GPR_WRITE_0_VAL"          ,
1222                                     dest, "in_GPR_WRITE_WRITE_UNIT_"+toString(i)+"_VAL"          );
1223           COMPONENT_MAP(_component ,src , "in_GPR_WRITE_0_ACK"          ,
1224                                     dest,"out_GPR_WRITE_WRITE_UNIT_"+toString(i)+"_ACK"          );
1225           if (_param->_have_port_ooo_engine_id)
1226           COMPONENT_MAP(_component ,src ,"out_GPR_WRITE_0_OOO_ENGINE_ID",
1227                                     dest, "in_GPR_WRITE_WRITE_UNIT_"+toString(i)+"_OOO_ENGINE_ID");
1228           COMPONENT_MAP(_component ,src ,"out_GPR_WRITE_0_NUM_REG"      ,
1229                                     dest, "in_GPR_WRITE_WRITE_UNIT_"+toString(i)+"_NUM_REG"      );
1230           COMPONENT_MAP(_component ,src ,"out_GPR_WRITE_0_DATA"         ,
1231                                     dest, "in_GPR_WRITE_WRITE_UNIT_"+toString(i)+"_DATA"         );
1232         }
1233
1234         // -----[ Interface "spr_write" ]-------------------------------------
1235         {
1236           // Port map with "read_unit" is ok!
1237
1238           dest = _name+"_glue";
1239#ifdef POSITION
1240           _component->interface_map (src ,"spr_write",
1241                                      dest,"spr_write_write_unit_"+toString(i));
1242#endif
1243
1244           COMPONENT_MAP(_component ,src ,"out_SPR_WRITE_0_VAL"          ,
1245                                     dest, "in_SPR_WRITE_WRITE_UNIT_"+toString(i)+"_VAL"          );
1246           COMPONENT_MAP(_component ,src , "in_SPR_WRITE_0_ACK"          ,
1247                                     dest,"out_SPR_WRITE_WRITE_UNIT_"+toString(i)+"_ACK"          );
1248           if (_param->_have_port_ooo_engine_id)
1249           COMPONENT_MAP(_component ,src ,"out_SPR_WRITE_0_OOO_ENGINE_ID",
1250                                     dest, "in_SPR_WRITE_WRITE_UNIT_"+toString(i)+"_OOO_ENGINE_ID");
1251           COMPONENT_MAP(_component ,src ,"out_SPR_WRITE_0_NUM_REG"      ,
1252                                     dest, "in_SPR_WRITE_WRITE_UNIT_"+toString(i)+"_NUM_REG"      );
1253           COMPONENT_MAP(_component ,src ,"out_SPR_WRITE_0_DATA"         ,
1254                                     dest, "in_SPR_WRITE_WRITE_UNIT_"+toString(i)+"_DATA"         );
1255         }
1256
1257         // -----[ Interface "bypass_write" ]----------------------------------
1258         {
1259           // Port map with "read_unit" is ok!
1260         }
1261       }
1262
1263     // ===================================================================
1264     // =====[ REGISTER_UNIT ]=============================================
1265     // ===================================================================
1266     {
1267       src = _name+"_register_unit";
1268       log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
1269       
1270       {
1271         dest = _name;
1272#ifdef POSITION
1273         _component->interface_map (src ,"",
1274                                    dest,"");
1275#endif
1276         PORT_MAP(_component ,src , "in_CLOCK" ,dest, "in_CLOCK");
1277         PORT_MAP(_component ,src , "in_NRESET",dest, "in_NRESET");
1278       }
1279
1280       // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1281       for (uint32_t i=0; i<_param->_nb_read_unit; i++)
1282         {
1283           dest = _name+"_read_unit_"+toString(i);
1284#ifdef POSITION
1285           _component->interface_map (src ,"gpr_read_"+toString(2*)
1286                                      dest,"gpr_read_0");
1287           _component->interface_map (src ,"gpr_read_"+toString(2*i+1)
1288                                      dest,"gpr_read_1");
1289#endif
1290       
1291//       PORT_MAP(_component ,src , "in_GPR_READ_"+toString(2*i  )+"_VAL"          ,dest,"out_GPR_READ_0_VAL"          );
1292//       PORT_MAP(_component ,src ,"out_GPR_READ_"+toString(2*i  )+"_ACK"          ,dest, "in_GPR_READ_0_ACK"          );
1293//       if (_param->_have_port_context_id)
1294//       PORT_MAP(_component ,src , "in_GPR_READ_"+toString(2*i  )+"_OOO_ENGINE_ID",dest,"out_GPR_READ_0_OOO_ENGINE_ID");
1295//       PORT_MAP(_component ,src , "in_GPR_READ_"+toString(2*i  )+"_NUM_REG"      ,dest,"out_GPR_READ_0_NUM_REG"      );
1296//       PORT_MAP(_component ,src ,"out_GPR_READ_"+toString(2*i  )+"_DATA"         ,dest, "in_GPR_READ_0_DATA"         );
1297//       PORT_MAP(_component ,src ,"out_GPR_READ_"+toString(2*i  )+"_DATA_VAL"     ,dest, "in_GPR_READ_0_DATA_VAL"     );
1298
1299//       PORT_MAP(_component ,src , "in_GPR_READ_"+toString(2*i+1)+"_VAL"          ,dest,"out_GPR_READ_1_VAL"          );
1300//       PORT_MAP(_component ,src ,"out_GPR_READ_"+toString(2*i+1)+"_ACK"          ,dest, "in_GPR_READ_1_ACK"          );
1301//       if (_param->_have_port_context_id)
1302//       PORT_MAP(_component ,src , "in_GPR_READ_"+toString(2*i+1)+"_OOO_ENGINE_ID",dest,"out_GPR_READ_1_OOO_ENGINE_ID");
1303//       PORT_MAP(_component ,src , "in_GPR_READ_"+toString(2*i+1)+"_NUM_REG"      ,dest,"out_GPR_READ_1_NUM_REG"      );
1304//       PORT_MAP(_component ,src ,"out_GPR_READ_"+toString(2*i+1)+"_DATA"         ,dest, "in_GPR_READ_1_DATA"         );
1305//       PORT_MAP(_component ,src ,"out_GPR_READ_"+toString(2*i+1)+"_DATA_VAL"     ,dest, "in_GPR_READ_1_DATA_VAL"     );
1306         }
1307
1308       // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1309       for (uint32_t i=0; i<_param->_nb_write_unit; i++)
1310         {
1311           dest = _name+"_glue";
1312#ifdef POSITION
1313           _component->interface_map (src ,"gpr_write_"+toString(i),
1314                                      dest,"gpr_write_register_file_"+toString(i));
1315#endif
1316       
1317           COMPONENT_MAP(_component ,src , "in_GPR_WRITE_"+toString(i)+"_VAL"          ,
1318                                     dest,"out_GPR_WRITE_REGISTER_FILE_"+toString(i)+"_VAL"          );
1319           COMPONENT_MAP(_component ,src ,"out_GPR_WRITE_"+toString(i)+"_ACK"          ,
1320                                     dest, "in_GPR_WRITE_REGISTER_FILE_"+toString(i)+"_ACK"          );
1321           if (_param->_have_port_ooo_engine_id)
1322           COMPONENT_MAP(_component ,src , "in_GPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID",
1323                                     dest,"out_GPR_WRITE_REGISTER_FILE_"+toString(i)+"_OOO_ENGINE_ID");
1324           COMPONENT_MAP(_component ,src , "in_GPR_WRITE_"+toString(i)+"_NUM_REG"      ,
1325                                     dest,"out_GPR_WRITE_REGISTER_FILE_"+toString(i)+"_NUM_REG"      );
1326           COMPONENT_MAP(_component ,src , "in_GPR_WRITE_"+toString(i)+"_DATA"         ,
1327                                     dest,"out_GPR_WRITE_REGISTER_FILE_"+toString(i)+"_DATA"         );
1328         }
1329
1330       // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1331       for (uint32_t i=0; i<_param->_nb_read_unit; i++)
1332         {
1333           dest = _name+"_read_unit_"+toString(i);
1334#ifdef POSITION
1335           _component->interface_map (src ,"spr_read_"+toString(i),
1336                                      dest,"spr_read_0");
1337#endif
1338       
1339//         PORT_MAP(_component ,src , "in_SPR_READ_"+toString(i)+"_VAL"          ,dest,"out_SPR_READ_0_VAL"          );
1340//         PORT_MAP(_component ,src ,"out_SPR_READ_"+toString(i)+"_ACK"          ,dest, "in_SPR_READ_0_ACK"          );
1341//         if (_param->_have_port_context_id)
1342//         PORT_MAP(_component ,src , "in_SPR_READ_"+toString(i)+"_OOO_ENGINE_ID",dest,"out_SPR_READ_0_OOO_ENGINE_ID");
1343//         PORT_MAP(_component ,src , "in_SPR_READ_"+toString(i)+"_NUM_REG"      ,dest,"out_SPR_READ_0_NUM_REG"      );
1344//         PORT_MAP(_component ,src ,"out_SPR_READ_"+toString(i)+"_DATA"         ,dest, "in_SPR_READ_0_DATA"         );
1345//         PORT_MAP(_component ,src ,"out_SPR_READ_"+toString(i)+"_DATA_VAL"     ,dest, "in_SPR_READ_0_DATA_VAL"     );
1346         }
1347
1348       // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1349       for (uint32_t i=0; i<_param->_nb_write_unit; i++)
1350         {
1351           dest = _name+"_glue";
1352#ifdef POSITION
1353           _component->interface_map (src ,"spr_write_"+toString(i),
1354                                      dest,"spr_write_register_file_"+toString(i));
1355#endif
1356       
1357           COMPONENT_MAP(_component ,src , "in_SPR_WRITE_"+toString(i)+"_VAL"          ,dest,"out_SPR_WRITE_REGISTER_FILE_"+toString(i)+"_VAL"          );
1358           COMPONENT_MAP(_component ,src ,"out_SPR_WRITE_"+toString(i)+"_ACK"          ,dest, "in_SPR_WRITE_REGISTER_FILE_"+toString(i)+"_ACK"          );
1359           if (_param->_have_port_ooo_engine_id)
1360           COMPONENT_MAP(_component ,src , "in_SPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID",dest,"out_SPR_WRITE_REGISTER_FILE_"+toString(i)+"_OOO_ENGINE_ID");
1361           COMPONENT_MAP(_component ,src , "in_SPR_WRITE_"+toString(i)+"_NUM_REG"      ,dest,"out_SPR_WRITE_REGISTER_FILE_"+toString(i)+"_NUM_REG"      );
1362           COMPONENT_MAP(_component ,src , "in_SPR_WRITE_"+toString(i)+"_DATA"         ,dest,"out_SPR_WRITE_REGISTER_FILE_"+toString(i)+"_DATA"         );
1363         }
1364
1365       // ~~~~~[ Interface "issue" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1366       for (uint32_t i=0; i<_param->_nb_read_unit; i++)
1367         {
1368           dest = _name+"_glue";
1369
1370           COMPONENT_MAP(_component ,src , "in_ISSUE_"+toString(i)+"_VAL",
1371                                     dest,"out_ISSUE_"+toString(i)+"_REGISTER_UNIT_VAL");
1372           COMPONENT_MAP(_component ,src ,"out_ISSUE_"+toString(i)+"_ACK",
1373                                     dest, "in_ISSUE_"+toString(i)+"_REGISTER_UNIT_ACK");
1374
1375           dest = _name;
1376#ifdef POSITION
1377           _component->interface_map (src ,"issue_"+toString(i),
1378                                      dest,"issue_"+toString(i));
1379#endif
1380
1381           if (_param->_have_port_ooo_engine_id)
1382           PORT_MAP(_component ,src , "in_ISSUE_"          +toString(i)+"_OOO_ENGINE_ID",
1383                                dest, "in_EXECUTE_LOOP_IN_"+toString(i)+"_OOO_ENGINE_ID");
1384           PORT_MAP(_component ,src , "in_ISSUE_"          +toString(i)+"_RD_USE"    ,
1385                                dest, "in_EXECUTE_LOOP_IN_"+toString(i)+"_WRITE_RD"  );
1386           PORT_MAP(_component ,src , "in_ISSUE_"          +toString(i)+"_RE_USE"    ,
1387                                dest, "in_EXECUTE_LOOP_IN_"+toString(i)+"_WRITE_RE"  );
1388           PORT_MAP(_component ,src , "in_ISSUE_"          +toString(i)+"_RD_NUM_REG",
1389                                dest, "in_EXECUTE_LOOP_IN_"+toString(i)+"_NUM_REG_RD");
1390           PORT_MAP(_component ,src , "in_ISSUE_"          +toString(i)+"_RE_NUM_REG",
1391                                dest, "in_EXECUTE_LOOP_IN_"+toString(i)+"_NUM_REG_RE");
1392         }
1393   
1394//        // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1395//        for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
1396//       {
1397//         uint32_t x=_param->_nb_inst_insert_rob [i];
1398           
1399//         for (uint32_t j=0; j<x; j++)
1400//           {
1401//             dest = _name;
1402// #ifdef POSITION
1403//             _component->interface_map (src ,"insert_rob_"+toString(i)+"_"+toString(j),
1404//                                        dest,"insert_rob_"+toString(i)+"_"+toString(j));
1405// #endif
1406
1407//             PORT_MAP(_component ,src , "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_VAL"       ,
1408//                                  dest, "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_VAL"       );
1409//             PORT_MAP(_component ,src ,"out_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_ACK"       ,
1410//                                  dest,"out_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_ACK"       );
1411//             PORT_MAP(_component ,src , "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RD_USE"    ,
1412//                                  dest, "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RD_USE"    );
1413//             PORT_MAP(_component ,src , "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RD_NUM_REG",
1414//                                  dest, "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RD_NUM_REG");
1415//             PORT_MAP(_component ,src , "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RE_USE"    ,
1416//                                  dest, "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RE_USE"    );
1417//             PORT_MAP(_component ,src , "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RE_NUM_REG",
1418//                                  dest, "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RE_NUM_REG");
1419//           }
1420//       }
1421
1422//        // ~~~~~[ Interface "retire_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1423//        for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
1424//       {
1425//         uint32_t x=_param->_nb_inst_retire_rob [i];
1426           
1427//         for (uint32_t j=0; j<x; j++)
1428//           {
1429//             dest = _name;
1430// #ifdef POSITION
1431//             _component->interface_map (src ,"retire_rob_"+toString(i)+"_"+toString(j),
1432//                                        dest,"retire_rob_"+toString(i)+"_"+toString(j));
1433// #endif
1434
1435//             PORT_MAP(_component ,src , "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_VAL"           ,
1436//                                  dest, "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_VAL"           );
1437//             PORT_MAP(_component ,src ,"out_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_ACK"           ,
1438//                                  dest,"out_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_ACK"           );
1439//             PORT_MAP(_component ,src , "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_OLD_USE"    ,
1440//                                  dest, "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_OLD_USE"    );
1441//             PORT_MAP(_component ,src , "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_OLD_NUM_REG",
1442//                                  dest, "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_OLD_NUM_REG");
1443//             PORT_MAP(_component ,src , "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_NEW_USE"    ,
1444//                                  dest, "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_NEW_USE"    );
1445//             PORT_MAP(_component ,src , "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_NEW_NUM_REG",
1446//                                  dest, "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_NEW_NUM_REG");
1447//             PORT_MAP(_component ,src , "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_OLD_USE"    ,
1448//                                  dest, "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_OLD_USE"    );
1449//             PORT_MAP(_component ,src , "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_OLD_NUM_REG",
1450//                                  dest, "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_OLD_NUM_REG");
1451//             PORT_MAP(_component ,src , "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_NEW_USE"    ,
1452//                                  dest, "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_NEW_USE"    );
1453//             PORT_MAP(_component ,src , "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_NEW_NUM_REG",
1454//                                  dest, "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_NEW_NUM_REG");
1455//           }
1456//       }
1457     }
1458
1459     // ===================================================================
1460     // =====[ READ_UNIT_TO_EXECUTION_UNIT ]===============================
1461     // ===================================================================
1462     {
1463       src = _name+"_read_unit_to_execution_unit";
1464       log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
1465       
1466       {
1467         dest = _name;
1468#ifdef POSITION
1469         _component->interface_map (src ,"",
1470                                    dest,"");
1471#endif
1472         PORT_MAP(_component ,src , "in_CLOCK" ,dest, "in_CLOCK");
1473         PORT_MAP(_component ,src , "in_NRESET",dest, "in_NRESET");
1474       }
1475
1476       // ~~~~~[ Interface "read_unit_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1477       uint32_t it_read_unit_out =0;
1478       for (uint32_t i=0; i < _param->_nb_read_unit; i++)
1479         for (uint32_t j=0; j < _param->_nb_inst_retire[i]; j++)
1480           {
1481             dest = _name+"_read_unit_"+toString(i);
1482             
1483#ifdef POSITION
1484             _component->interface_map (src ,"read_unit_"+toString(it_read_unit_out),
1485                                        dest,"read_unit_"+toString(j));
1486#endif
1487             
1488//           PORT_MAP(_component ,src , "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_VAL"                  ,
1489//                                dest,"out_READ_UNIT_OUT_"+toString(j               )+"_VAL"                  );
1490//           PORT_MAP(_component ,src ,"out_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_ACK"                  ,
1491//                                dest, "in_READ_UNIT_OUT_"+toString(j               )+"_ACK"                  );
1492//           if (_param->_have_port_context_id)
1493//           PORT_MAP(_component ,src , "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_CONTEXT_ID"           ,
1494//                                dest,"out_READ_UNIT_OUT_"+toString(j               )+"_CONTEXT_ID"           );
1495//           if (_param->_have_port_front_end_id)
1496//           PORT_MAP(_component ,src , "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_FRONT_END_ID"         ,
1497//                                dest,"out_READ_UNIT_OUT_"+toString(j               )+"_FRONT_END_ID"         );
1498//           if (_param->_have_port_ooo_engine_id)
1499//           PORT_MAP(_component ,src , "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_OOO_ENGINE_ID"        ,
1500//                                dest,"out_READ_UNIT_OUT_"+toString(j               )+"_OOO_ENGINE_ID"        );
1501//           if (_param->_have_port_rob_ptr  )
1502//           PORT_MAP(_component ,src , "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_PACKET_ID"            ,
1503//                                dest,"out_READ_UNIT_OUT_"+toString(j               )+"_PACKET_ID"            );
1504//           PORT_MAP(_component ,src , "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_OPERATION"            ,
1505//                                dest,"out_READ_UNIT_OUT_"+toString(j               )+"_OPERATION"            );
1506//           PORT_MAP(_component ,src , "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_TYPE"                 ,
1507//                                dest,"out_READ_UNIT_OUT_"+toString(j               )+"_TYPE"                 );
1508//           PORT_MAP(_component ,src , "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_STORE_QUEUE_PTR_WRITE",
1509//                                dest,"out_READ_UNIT_OUT_"+toString(j               )+"_STORE_QUEUE_PTR_WRITE");
1510//           if (_param->_have_port_load_queue_ptr)
1511//           PORT_MAP(_component ,src , "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_LOAD_QUEUE_PTR_WRITE" ,
1512//                                dest,"out_READ_UNIT_OUT_"+toString(j               )+"_LOAD_QUEUE_PTR_WRITE" );
1513//           PORT_MAP(_component ,src , "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_HAS_IMMEDIAT"         ,
1514//                                dest,"out_READ_UNIT_OUT_"+toString(j               )+"_HAS_IMMEDIAT"         );
1515//           PORT_MAP(_component ,src , "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_IMMEDIAT"             ,
1516//                                dest,"out_READ_UNIT_OUT_"+toString(j               )+"_IMMEDIAT"             );
1517//           PORT_MAP(_component ,src , "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_DATA_RA"              ,
1518//                                dest,"out_READ_UNIT_OUT_"+toString(j               )+"_DATA_RA"              );
1519//           PORT_MAP(_component ,src , "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_DATA_RB"              ,
1520//                                dest,"out_READ_UNIT_OUT_"+toString(j               )+"_DATA_RB"              );
1521//           PORT_MAP(_component ,src , "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_DATA_RC"              ,
1522//                                dest,"out_READ_UNIT_OUT_"+toString(j               )+"_DATA_RC"              );
1523//           PORT_MAP(_component ,src , "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_WRITE_RD"             ,
1524//                                dest,"out_READ_UNIT_OUT_"+toString(j               )+"_WRITE_RD"             );
1525//           PORT_MAP(_component ,src , "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_NUM_REG_RD"           ,
1526//                                dest,"out_READ_UNIT_OUT_"+toString(j               )+"_NUM_REG_RD"           );
1527//           PORT_MAP(_component ,src , "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_WRITE_RE"             ,
1528//                                dest,"out_READ_UNIT_OUT_"+toString(j               )+"_WRITE_RE"             );
1529//           PORT_MAP(_component ,src , "in_READ_UNIT_OUT_"+toString(it_read_unit_out)+"_NUM_REG_RE"           ,
1530//                                dest,"out_READ_UNIT_OUT_"+toString(j               )+"_NUM_REG_RE"           );
1531             
1532             it_read_unit_out ++;
1533           }
1534       
1535       // ~~~~~[ Interface "execute_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1536       for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
1537         {
1538           uint32_t x=_param->_translate_num_execute_unit[i];
1539           
1540           if (_param->_is_load_store_unit[i] == false)
1541             {
1542               dest = _name+"_functionnal_unit_"+toString(x);
1543               
1544#ifdef POSITION
1545               _component->interface_map (src ,"execute_unit_in_"+toString(i),
1546                                          dest,"execute_in");
1547#endif
1548               
1549//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_VAL"                  ,
1550//                                  dest, "in_EXECUTE_IN_VAL"                  );
1551//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_IN_"+toString(i)+"_ACK"                  ,
1552//                                  dest,"out_EXECUTE_IN_ACK"                  );
1553//             if (_param->_have_port_context_id)
1554//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_CONTEXT_ID"           ,
1555//                                  dest, "in_EXECUTE_IN_CONTEXT_ID"           );
1556//             if (_param->_have_port_front_end_id)
1557//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_FRONT_END_ID"         ,
1558//                                  dest, "in_EXECUTE_IN_FRONT_END_ID"         );
1559//             if (_param->_have_port_ooo_engine_id)
1560//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_OOO_ENGINE_ID"        ,
1561//                                  dest, "in_EXECUTE_IN_OOO_ENGINE_ID"        );
1562//             if (_param->_have_port_rob_ptr  )
1563//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_PACKET_ID"            ,
1564//                                  dest, "in_EXECUTE_IN_PACKET_ID"            );
1565//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_OPERATION"            ,
1566//                                  dest, "in_EXECUTE_IN_OPERATION"            );
1567//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_TYPE"                 ,
1568//                                  dest, "in_EXECUTE_IN_TYPE"                 );
1569//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_STORE_QUEUE_PTR_WRITE",
1570//                                  dest, "in_EXECUTE_IN_STORE_QUEUE_PTR_WRITE");
1571//             if (_param->_have_port_load_queue_ptr)
1572//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_LOAD_QUEUE_PTR_WRITE" ,
1573//                                  dest, "in_EXECUTE_IN_LOAD_QUEUE_PTR_WRITE" );
1574//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_HAS_IMMEDIAT"         ,
1575//                                  dest, "in_EXECUTE_IN_HAS_IMMEDIAT"         );
1576//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_IMMEDIAT"             ,
1577//                                  dest, "in_EXECUTE_IN_IMMEDIAT"             );
1578//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_DATA_RA"              ,
1579//                                  dest, "in_EXECUTE_IN_DATA_RA"              );
1580//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_DATA_RB"              ,
1581//                                  dest, "in_EXECUTE_IN_DATA_RB"              );
1582//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_DATA_RC"              ,
1583//                                  dest, "in_EXECUTE_IN_DATA_RC"              );
1584//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_WRITE_RD"             ,
1585//                                  dest, "in_EXECUTE_IN_WRITE_RD"             );
1586//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_NUM_REG_RD"           ,
1587//                                  dest, "in_EXECUTE_IN_NUM_REG_RD"           );
1588//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_WRITE_RE"             ,
1589//                                  dest, "in_EXECUTE_IN_WRITE_RE"             );
1590//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_NUM_REG_RE"           ,
1591//                                  dest, "in_EXECUTE_IN_NUM_REG_RE"           );
1592             }
1593           else
1594             {
1595               dest = _name+"_load_store_unit_"+toString(x);
1596               
1597#ifdef POSITION
1598               _component->interface_map (src ,"execute_unit_in_"+toString(i),
1599                                          dest,"memory_in");
1600#endif
1601               
1602//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_VAL"                  ,
1603//                                  dest, "in_MEMORY_IN_VAL"                  );
1604//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_IN_"+toString(i)+"_ACK"                  ,
1605//                                  dest,"out_MEMORY_IN_ACK"                  );
1606//             if (_param->_have_port_context_id)
1607//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_CONTEXT_ID"           ,
1608//                                  dest, "in_MEMORY_IN_CONTEXT_ID"           );
1609//             if (_param->_have_port_front_end_id)
1610//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_FRONT_END_ID"         ,
1611//                                  dest, "in_MEMORY_IN_FRONT_END_ID"         );
1612//             if (_param->_have_port_ooo_engine_id)
1613//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_OOO_ENGINE_ID"        ,
1614//                                  dest, "in_MEMORY_IN_OOO_ENGINE_ID"        );
1615//             if (_param->_have_port_rob_ptr  )
1616//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_PACKET_ID"            ,
1617//                                  dest, "in_MEMORY_IN_PACKET_ID"            );
1618//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_OPERATION"            ,
1619//                                  dest, "in_MEMORY_IN_OPERATION"            );
1620//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_TYPE"                 ,
1621//                                  dest, "in_MEMORY_IN_TYPE"                 );
1622//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_STORE_QUEUE_PTR_WRITE",
1623//                                  dest, "in_MEMORY_IN_STORE_QUEUE_PTR_WRITE");
1624//             if (_param->_have_port_load_queue_ptr)
1625//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_LOAD_QUEUE_PTR_WRITE" ,
1626//                                  dest, "in_MEMORY_IN_LOAD_QUEUE_PTR_WRITE" );
1627//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_HAS_IMMEDIAT"         ,
1628//                                  dest, "in_MEMORY_IN_HAS_IMMEDIAT"         );
1629//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_IMMEDIAT"             ,
1630//                                  dest, "in_MEMORY_IN_IMMEDIAT"             );
1631//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_DATA_RA"              ,
1632//                                  dest, "in_MEMORY_IN_DATA_RA"              );
1633//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_DATA_RB"              ,
1634//                                  dest, "in_MEMORY_IN_DATA_RB"              );
1635//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_DATA_RC"              ,
1636//                                  dest, "in_MEMORY_IN_DATA_RC"              );
1637//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_WRITE_RD"             ,
1638//                                  dest, "in_MEMORY_IN_WRITE_RD"             );
1639//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_NUM_REG_RD"           ,
1640//                                  dest, "in_MEMORY_IN_NUM_REG_RD"           );
1641//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_WRITE_RE"             ,
1642//                                  dest, "in_MEMORY_IN_WRITE_RE"             );
1643//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_IN_"+toString(i)+"_NUM_REG_RE"           ,
1644//                                  dest, "in_MEMORY_IN_NUM_REG_RE"           );
1645             }
1646         }
1647     }
1648     
1649     // ===================================================================
1650     // =====[ EXECUTION_UNIT_TO_WRITE_UNIT ]==============================
1651     // ===================================================================
1652     {
1653       src = _name+"_execution_unit_to_write_unit";
1654       log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
1655
1656       {
1657         dest = _name;
1658#ifdef POSITION
1659         _component->interface_map (src ,"",
1660                                    dest,"");
1661#endif
1662         PORT_MAP(_component ,src , "in_CLOCK" ,dest, "in_CLOCK");
1663         PORT_MAP(_component ,src , "in_NRESET",dest, "in_NRESET");
1664       }
1665
1666       // ~~~~~[ Interface "execute_unit_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1667       for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
1668         {
1669           uint32_t x=_param->_translate_num_execute_unit[i];
1670           
1671           if (_param->_is_load_store_unit[i] == false)
1672             {
1673               dest = _name+"_functionnal_unit_"+toString(x);
1674               
1675#ifdef POSITION
1676               _component->interface_map (src ,"execute_unit_out_"+toString(i),
1677                                          dest,"execute_out");
1678#endif
1679//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_VAL"          ,
1680//                                  dest,"out_EXECUTE_OUT_VAL"          );
1681//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_OUT_"+toString(i)+"_ACK"          ,
1682//                                  dest, "in_EXECUTE_OUT_ACK"          );
1683//             if (_param->_have_port_context_id)
1684//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_CONTEXT_ID"   ,
1685//                                  dest,"out_EXECUTE_OUT_CONTEXT_ID"   );
1686//             if (_param->_have_port_front_end_id)
1687//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_FRONT_END_ID" ,
1688//                                  dest,"out_EXECUTE_OUT_FRONT_END_ID" );
1689//             if (_param->_have_port_ooo_engine_id)
1690//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_OOO_ENGINE_ID",
1691//                                  dest,"out_EXECUTE_OUT_OOO_ENGINE_ID");
1692//             if (_param->_have_port_rob_ptr  )
1693//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_PACKET_ID"    ,
1694//                                  dest,"out_EXECUTE_OUT_PACKET_ID"    );
1695// //          PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_OPERATION"    ,
1696// //                               dest,"out_EXECUTE_OUT_OPERATION"    );
1697// //          PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_TYPE"         ,
1698// //                               dest,"out_EXECUTE_OUT_TYPE"         );
1699//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_WRITE_RD"     ,
1700//                                  dest,"out_EXECUTE_OUT_WRITE_RD"     );
1701//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_NUM_REG_RD"   ,
1702//                                  dest,"out_EXECUTE_OUT_NUM_REG_RD"   );
1703//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_DATA_RD"      ,
1704//                                  dest,"out_EXECUTE_OUT_DATA_RD"      );
1705//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_WRITE_RE"     ,
1706//                                  dest,"out_EXECUTE_OUT_WRITE_RE"     );
1707//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_NUM_REG_RE"   ,
1708//                                  dest,"out_EXECUTE_OUT_NUM_REG_RE"   );
1709//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_DATA_RE"      ,
1710//                                  dest,"out_EXECUTE_OUT_DATA_RE"      );
1711//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_EXCEPTION"    ,
1712//                                  dest,"out_EXECUTE_OUT_EXCEPTION"    );
1713//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_NO_SEQUENCE"  ,
1714//                                  dest,"out_EXECUTE_OUT_NO_SEQUENCE"  );
1715//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_ADDRESS"      ,
1716//                                  dest,"out_EXECUTE_OUT_ADDRESS"      );
1717             }
1718           else
1719             {
1720               dest = _name+"_load_store_unit_"+toString(x);
1721               
1722#ifdef POSITION
1723               _component->interface_map (src ,"execute_unit_out_"+toString(i),
1724                                          dest,"memory_out");
1725#endif
1726//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_VAL"          ,
1727//                                  dest,"out_MEMORY_OUT_VAL"          );
1728//             PORT_MAP(_component ,src ,"out_EXECUTE_UNIT_OUT_"+toString(i)+"_ACK"          ,
1729//                                  dest, "in_MEMORY_OUT_ACK"          );
1730//             if (_param->_have_port_context_id)
1731//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_CONTEXT_ID"   ,
1732//                                  dest,"out_MEMORY_OUT_CONTEXT_ID"   );
1733//             if (_param->_have_port_front_end_id)
1734//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_FRONT_END_ID" ,
1735//                                  dest,"out_MEMORY_OUT_FRONT_END_ID" );
1736//             if (_param->_have_port_ooo_engine_id)
1737//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_OOO_ENGINE_ID",
1738//                                  dest,"out_MEMORY_OUT_OOO_ENGINE_ID");
1739//             if (_param->_have_port_rob_ptr  )
1740//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_PACKET_ID"    ,
1741//                                  dest,"out_MEMORY_OUT_PACKET_ID"    );
1742// //          PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_OPERATION"    ,
1743// //                               dest,"out_MEMORY_OUT_OPERATION"    );
1744// //          PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_TYPE"         ,
1745// //                               dest,"out_MEMORY_OUT_TYPE"         );
1746//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_WRITE_RD"     ,
1747//                                  dest,"out_MEMORY_OUT_WRITE_RD"     );
1748//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_NUM_REG_RD"   ,
1749//                                  dest,"out_MEMORY_OUT_NUM_REG_RD"   );
1750//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_DATA_RD"      ,
1751//                                  dest,"out_MEMORY_OUT_DATA_RD"      );
1752//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_WRITE_RE"     ,
1753//                                  dest,"out_MEMORY_OUT_WRITE_RE"     );
1754//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_NUM_REG_RE"   ,
1755//                                  dest,"out_MEMORY_OUT_NUM_REG_RE"   );
1756//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_DATA_RE"      ,
1757//                                  dest,"out_MEMORY_OUT_DATA_RE"      );
1758//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_EXCEPTION"    ,
1759//                                  dest,"out_MEMORY_OUT_EXCEPTION"    );
1760//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_NO_SEQUENCE"  ,
1761//                                  dest,"out_MEMORY_OUT_NO_SEQUENCE"  );
1762//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_ADDRESS"      ,
1763//                                  dest,"out_MEMORY_OUT_ADDRESS"      );
1764             }
1765         }
1766
1767       // ~~~~~[ Interface "write_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1768       for (uint32_t i=0; i<_param->_nb_write_unit; i++)
1769         {
1770           dest = _name+"_write_unit_"+toString(i);
1771           
1772#ifdef POSITION
1773           _component->interface_map (src ,"write_unit_out_"+toString(i),
1774                                      dest,"write_out");
1775#endif
1776           
1777//         PORT_MAP(_component ,src ,"out_WRITE_UNIT_IN_"+toString(i)+"_VAL"          ,
1778//                              dest, "in_WRITE_UNIT_IN_VAL"          );
1779//         PORT_MAP(_component ,src , "in_WRITE_UNIT_IN_"+toString(i)+"_ACK"          ,
1780//                              dest,"out_WRITE_UNIT_IN_ACK"          );
1781//         if (_param->_have_port_context_id)
1782//         PORT_MAP(_component ,src ,"out_WRITE_UNIT_IN_"+toString(i)+"_CONTEXT_ID"   ,
1783//                              dest, "in_WRITE_UNIT_IN_CONTEXT_ID"   );
1784//         if (_param->_have_port_front_end_id)
1785//         PORT_MAP(_component ,src ,"out_WRITE_UNIT_IN_"+toString(i)+"_FRONT_END_ID" ,
1786//                              dest, "in_WRITE_UNIT_IN_FRONT_END_ID" );
1787//         if (_param->_have_port_ooo_engine_id)
1788//         PORT_MAP(_component ,src ,"out_WRITE_UNIT_IN_"+toString(i)+"_OOO_ENGINE_ID",
1789//                              dest, "in_WRITE_UNIT_IN_OOO_ENGINE_ID");
1790//         if (_param->_have_port_rob_ptr  )
1791//         PORT_MAP(_component ,src ,"out_WRITE_UNIT_IN_"+toString(i)+"_PACKET_ID"    ,
1792//                              dest, "in_WRITE_UNIT_IN_PACKET_ID"    );
1793// //      PORT_MAP(_component ,src ,"out_WRITE_UNIT_IN_"+toString(i)+"_OPERATION"    ,
1794// //                           dest, "in_WRITE_UNIT_IN_OPERATION"    );
1795// //      PORT_MAP(_component ,src ,"out_WRITE_UNIT_IN_"+toString(i)+"_TYPE"         ,
1796// //                           dest, "in_WRITE_UNIT_IN_TYPE"         );
1797//         PORT_MAP(_component ,src ,"out_WRITE_UNIT_IN_"+toString(i)+"_WRITE_RD"     ,
1798//                              dest, "in_WRITE_UNIT_IN_WRITE_RD"     );
1799//         PORT_MAP(_component ,src ,"out_WRITE_UNIT_IN_"+toString(i)+"_NUM_REG_RD"   ,
1800//                              dest, "in_WRITE_UNIT_IN_NUM_REG_RD"   );
1801//         PORT_MAP(_component ,src ,"out_WRITE_UNIT_IN_"+toString(i)+"_DATA_RD"      ,
1802//                              dest, "in_WRITE_UNIT_IN_DATA_RD"      );
1803//         PORT_MAP(_component ,src ,"out_WRITE_UNIT_IN_"+toString(i)+"_WRITE_RE"     ,
1804//                              dest, "in_WRITE_UNIT_IN_WRITE_RE"     );
1805//         PORT_MAP(_component ,src ,"out_WRITE_UNIT_IN_"+toString(i)+"_NUM_REG_RE"   ,
1806//                              dest, "in_WRITE_UNIT_IN_NUM_REG_RE"   );
1807//         PORT_MAP(_component ,src ,"out_WRITE_UNIT_IN_"+toString(i)+"_DATA_RE"      ,
1808//                              dest, "in_WRITE_UNIT_IN_DATA_RE"      );
1809//         PORT_MAP(_component ,src ,"out_WRITE_UNIT_IN_"+toString(i)+"_EXCEPTION"    ,
1810//                              dest, "in_WRITE_UNIT_IN_EXCEPTION"    );
1811//         PORT_MAP(_component ,src ,"out_WRITE_UNIT_IN_"+toString(i)+"_NO_SEQUENCE"  ,
1812//                              dest, "in_WRITE_UNIT_IN_NO_SEQUENCE"  );
1813//         PORT_MAP(_component ,src ,"out_WRITE_UNIT_IN_"+toString(i)+"_ADDRESS"      ,
1814//                              dest, "in_WRITE_UNIT_IN_ADDRESS"      );
1815         }
1816     }
1817     
1818#if DEBUG_Execute_loop == true
1819     _component->test_map();
1820#endif
1821
1822#ifdef POSITION
1823     if (usage_is_set(_usage,USE_POSITION))
1824       _component->generate_file();
1825#endif
1826
1827    log_printf(FUNC,Execute_loop,FUNCTION,"End");
1828     };
1829
1830}; // end namespace execute_loop
1831}; // end namespace multi_execute_loop
1832}; // end namespace core
1833
1834}; // end namespace behavioural
1835}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.