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

Last change on this file 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.