source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit_allocation.cpp @ 88

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

Almost complete design
with Test and test platform

  • Property svn:keywords set to Id
File size: 42.3 KB
Line 
1/*
2 * $Id: Register_translation_unit_allocation.cpp 88 2008-12-10 18:31:39Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/include/Register_translation_unit.h"
9#include "Behavioural/include/Allocation.h"
10
11namespace morpheo                    {
12namespace behavioural {
13namespace core {
14namespace multi_ooo_engine {
15namespace ooo_engine {
16namespace rename_unit {
17namespace register_translation_unit {
18
19
20
21#undef  FUNCTION
22#define FUNCTION "Register_translation_unit::allocation"
23  void Register_translation_unit::allocation (
24#ifdef STATISTICS
25                               morpheo::behavioural::Parameters_Statistics * param_statistics
26#else
27                               void
28#endif
29                               )
30  {
31    log_printf(FUNC,Register_translation_unit,FUNCTION,"Begin");
32
33    _component   = new Component (_usage);
34
35    Entity * entity = _component->set_entity (_name       
36                                              ,"Register_translation_unit"
37#ifdef POSITION
38                                              ,COMBINATORY
39#endif
40                                              );
41
42    _interfaces = entity->set_interfaces();
43
44    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
45    {
46      Interface * interface = _interfaces->set_interface(""
47#ifdef POSITION
48                                                         ,IN
49                                                         ,SOUTH,
50                                                         "Generalist interface"
51#endif
52                                                         );
53     
54      in_CLOCK        = interface->set_signal_clk              ("clock" ,1, CLOCK_VHDL_YES);
55      in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_YES);
56    }
57
58    // ~~~~~[ Interface "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
59    {
60      ALLOC1_INTERFACE("rename", IN, EAST, "Instruction with logical register", _param->_nb_inst_insert);
61
62      ALLOC1_VALACK_IN ( in_RENAME_VAL           ,VAL);
63      ALLOC1_VALACK_OUT(out_RENAME_ACK           ,ACK);
64      ALLOC1_SIGNAL_IN ( in_RENAME_FRONT_END_ID  ,"front_end_id"  ,Tcontext_t        ,_param->_size_front_end_id          );
65      ALLOC1_SIGNAL_IN ( in_RENAME_CONTEXT_ID    ,"context_id"    ,Tcontext_t        ,_param->_size_context_id            );
66      ALLOC1_SIGNAL_IN ( in_RENAME_READ_RA       ,"read_ra"       ,Tcontrol_t        ,1                                   );
67      ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RA_LOG,"num_reg_ra_log",Tgeneral_address_t,_param->_size_general_register_logic);
68      ALLOC1_SIGNAL_IN ( in_RENAME_READ_RB       ,"read_rb"       ,Tcontrol_t        ,1                                   );
69      ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RB_LOG,"num_reg_rb_log",Tgeneral_address_t,_param->_size_general_register_logic);
70      ALLOC1_SIGNAL_IN ( in_RENAME_READ_RC       ,"read_rc"       ,Tcontrol_t        ,1                                   );
71      ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RC_LOG,"num_reg_rc_log",Tspecial_address_t,_param->_size_special_register_logic);
72      ALLOC1_SIGNAL_IN ( in_RENAME_WRITE_RD      ,"write_rd"      ,Tcontrol_t        ,1                                   );
73      ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RD_LOG,"num_reg_rd_log",Tgeneral_address_t,_param->_size_general_register_logic);
74      ALLOC1_SIGNAL_IN ( in_RENAME_WRITE_RE      ,"write_re"      ,Tcontrol_t        ,1                                   );
75      ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RE_LOG,"num_reg_re_log",Tspecial_address_t,_param->_size_special_register_logic);
76    }
77
78    // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
79    {
80      ALLOC1_INTERFACE("insert",OUT,WEST , "Instruction with physical register", _param->_nb_inst_insert);
81     
82      ALLOC1_VALACK_OUT(out_INSERT_VAL               ,VAL);
83      ALLOC1_VALACK_IN ( in_INSERT_ACK               ,ACK);
84      ALLOC1_SIGNAL_OUT(out_INSERT_FRONT_END_ID      ,"front_end_id"      ,Tcontext_t        ,_param->_size_front_end_id          );
85      ALLOC1_SIGNAL_OUT(out_INSERT_CONTEXT_ID        ,"context_id"        ,Tcontext_t        ,_param->_size_context_id            );
86      ALLOC1_SIGNAL_OUT(out_INSERT_READ_RA           ,"read_ra"           ,Tcontrol_t        ,1                                   );
87      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RA_LOG    ,"num_reg_ra_log"    ,Tgeneral_address_t,_param->_size_general_register_logic);
88      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RA_PHY    ,"num_reg_ra_phy"    ,Tgeneral_address_t,_param->_size_general_register      );
89      ALLOC1_SIGNAL_OUT(out_INSERT_READ_RB           ,"read_rb"           ,Tcontrol_t        ,1                                   );
90      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RB_LOG    ,"num_reg_rb_log"    ,Tgeneral_address_t,_param->_size_general_register_logic);
91      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RB_PHY    ,"num_reg_rb_phy"    ,Tgeneral_address_t,_param->_size_general_register      );
92      ALLOC1_SIGNAL_OUT(out_INSERT_READ_RC           ,"read_rc"           ,Tcontrol_t        ,1                                   );
93      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RC_LOG    ,"num_reg_rc_log"    ,Tspecial_address_t,_param->_size_special_register_logic);
94      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RC_PHY    ,"num_reg_rc_phy"    ,Tspecial_address_t,_param->_size_special_register      );
95      ALLOC1_SIGNAL_OUT(out_INSERT_WRITE_RD          ,"write_rd"          ,Tcontrol_t        ,1                                   );
96      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RD_LOG    ,"num_reg_rd_log"    ,Tgeneral_address_t,_param->_size_general_register_logic);
97      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RD_PHY_OLD,"num_reg_rd_phy_old",Tgeneral_address_t,_param->_size_general_register      );
98      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RD_PHY_NEW,"num_reg_rd_phy_new",Tgeneral_address_t,_param->_size_general_register      );
99      ALLOC1_SIGNAL_OUT(out_INSERT_WRITE_RE          ,"write_re"          ,Tcontrol_t        ,1                                   );
100      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_LOG    ,"num_reg_re_log"    ,Tspecial_address_t,_param->_size_special_register_logic);
101      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register      );
102      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register      );
103    }
104
105    // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
106    {
107      ALLOC1_INTERFACE("retire",IN ,NORTH, "Retire instruction, update renaming structure.", _param->_nb_inst_retire);
108      ALLOC1_VALACK_IN ( in_RETIRE_VAL               ,VAL);
109      ALLOC1_VALACK_OUT(out_RETIRE_ACK               ,ACK);
110      ALLOC1_SIGNAL_IN ( in_RETIRE_FRONT_END_ID      ,"front_end_id"      ,Tcontext_t        ,_param->_size_front_end_id          );
111      ALLOC1_SIGNAL_IN ( in_RETIRE_CONTEXT_ID        ,"context_id"        ,Tcontext_t        ,_param->_size_context_id            );
112      ALLOC1_SIGNAL_IN ( in_RETIRE_EVENT_STATE       ,"event_state"       ,Tevent_state_t    ,_param->_size_event_state           );
113      ALLOC1_SIGNAL_IN ( in_RETIRE_READ_RA           ,"read_ra"           ,Tcontrol_t        ,1                                   );
114      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RA_PHY    ,"num_reg_ra_phy"    ,Tgeneral_address_t,_param->_size_general_register      );
115      ALLOC1_SIGNAL_IN ( in_RETIRE_READ_RB           ,"read_rb"           ,Tcontrol_t        ,1                                   );
116      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RB_PHY    ,"num_reg_rb_phy"    ,Tgeneral_address_t,_param->_size_general_register      );
117      ALLOC1_SIGNAL_IN ( in_RETIRE_READ_RC           ,"read_rc"           ,Tcontrol_t        ,1                                   );
118      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RC_PHY    ,"num_reg_rc_phy"    ,Tspecial_address_t,_param->_size_special_register      );
119      ALLOC1_SIGNAL_IN ( in_RETIRE_WRITE_RD          ,"write_rd"          ,Tcontrol_t        ,1                                   );
120      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RD_LOG    ,"num_reg_rd_log"    ,Tgeneral_address_t,_param->_size_general_register_logic);
121      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RD_PHY_OLD,"num_reg_rd_phy_old",Tgeneral_address_t,_param->_size_general_register      );
122      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RD_PHY_NEW,"num_reg_rd_phy_new",Tgeneral_address_t,_param->_size_general_register      );
123      ALLOC1_SIGNAL_IN ( in_RETIRE_WRITE_RE          ,"write_re"          ,Tcontrol_t        ,1                                   );
124      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_LOG    ,"num_reg_re_log"    ,Tspecial_address_t,_param->_size_special_register_logic);
125      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register      );
126      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register      );
127    }
128    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
129    std::string name;
130     {
131       name = _name+"_dependency_checking_unit";
132       log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
133
134       _component_dependency_checking_unit = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::dependency_checking_unit::Dependency_checking_unit
135         (name.c_str()
136#ifdef STATISTICS
137          ,param_statistics
138#endif
139          ,_param->_param_dependency_checking_unit
140          ,_usage);
141       
142       _component->set_component (_component_dependency_checking_unit->_component
143#ifdef POSITION
144                                  , 50, 50, 10, 10
145#endif
146                                  );
147     }
148
149     {
150       name = _name+"_free_list_unit";
151       log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
152       
153       _component_free_list_unit = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::free_list_unit::Free_List_unit
154         (name.c_str()
155#ifdef STATISTICS
156          ,param_statistics
157#endif
158          ,_param->_param_free_list_unit
159          ,_usage);
160       
161       _component->set_component (_component_free_list_unit->_component
162#ifdef POSITION
163                                  , 50, 50, 10, 10
164#endif
165                                  );
166     }
167
168     {
169       name = _name+"_register_address_translation_unit";
170       log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
171       
172       _component_register_address_translation_unit = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_address_translation_unit::Register_Address_Translation_unit
173         (name.c_str()
174#ifdef STATISTICS
175          ,param_statistics
176#endif
177          ,_param->_param_register_address_translation_unit
178          ,_usage);
179       
180       _component->set_component (_component_register_address_translation_unit->_component
181#ifdef POSITION
182                                  , 50, 50, 10, 10
183#endif
184                                  );
185     }
186
187     {
188       name = _name+"_stat_list_unit";
189       log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
190       
191       _component_stat_list_unit = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::stat_list_unit::Stat_List_unit
192         (name.c_str()
193#ifdef STATISTICS
194          ,param_statistics
195#endif
196          ,_param->_param_stat_list_unit
197          ,_usage);
198       
199       _component->set_component (_component_stat_list_unit->_component
200#ifdef POSITION
201                                  , 50, 50, 10, 10
202#endif
203                                  );
204     }
205
206     {
207       name = _name+"_register_translation_unit_glue";
208       log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
209       
210       _component_register_translation_unit_glue = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_translation_unit_glue::Register_translation_unit_Glue
211         (name.c_str()
212#ifdef STATISTICS
213          ,param_statistics
214#endif
215          ,_param->_param_register_translation_unit_glue
216          ,_usage);
217       
218       _component->set_component (_component_register_translation_unit_glue->_component
219#ifdef POSITION
220                                  , 50, 50, 10, 10
221#endif
222                                  );
223     }
224
225    // ~~~~~[ Instanciation ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
226    std::string src,dest;
227
228    // ===================================================================
229    // =====[ register_address_translation_unit ]=========================
230    // ===================================================================
231    {
232      src = _name+"_register_address_translation_unit";
233      log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
234           
235      {
236        dest = _name;
237#ifdef POSITION
238        _component->interface_map (src ,"",
239                                   dest,"");
240#endif
241        PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
242        PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
243      }
244
245      // ~~~~~[ Interface "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
246      for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
247        {
248          dest = _name;
249#ifdef POSITION
250          _component->interface_map (src ,"rename_"+toString(i)
251                                     dest,"rename_"+toString(i));
252#endif
253         
254          PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_VAL"               ,
255                              dest, "in_RENAME_"+toString(i)+"_VAL"               );
256          if (_param->_have_port_front_end_id)
257          PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_FRONT_END_ID"      ,
258                              dest, "in_RENAME_"+toString(i)+"_FRONT_END_ID"      );
259          if (_param->_have_port_context_id)
260          PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_CONTEXT_ID"        ,
261                              dest, "in_RENAME_"+toString(i)+"_CONTEXT_ID"        );
262          PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_NUM_REG_RA_LOG"    ,
263                              dest, "in_RENAME_"+toString(i)+"_NUM_REG_RA_LOG"    );
264          PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_NUM_REG_RB_LOG"    ,
265                              dest, "in_RENAME_"+toString(i)+"_NUM_REG_RB_LOG"    );
266          PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_NUM_REG_RC_LOG"    ,
267                              dest, "in_RENAME_"+toString(i)+"_NUM_REG_RC_LOG"    );
268          PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_NUM_REG_RD_LOG"    ,
269                              dest, "in_RENAME_"+toString(i)+"_NUM_REG_RD_LOG"    );
270          PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_NUM_REG_RE_LOG"    ,
271                              dest, "in_RENAME_"+toString(i)+"_NUM_REG_RE_LOG"    );
272
273          dest = _name+"_register_translation_unit_glue";
274          COMPONENT_MAP(_component,src ,"out_RENAME_"+toString(i)+"_ACK",
275                                   dest, "in_INSERT_"+toString(i)+"_RAT_RENAME_ACK");
276         
277          dest = _name+"_dependency_checking_unit";
278          COMPONENT_MAP(_component,src ,"out_RENAME_"+toString(i)+"_NUM_REG_RA_PHY"    ,
279                                   dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RA_PHY"    );
280          COMPONENT_MAP(_component,src ,"out_RENAME_"+toString(i)+"_NUM_REG_RB_PHY"    ,
281                                   dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RB_PHY"    );
282          COMPONENT_MAP(_component,src ,"out_RENAME_"+toString(i)+"_NUM_REG_RC_PHY"    ,
283                                   dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RC_PHY"    );
284          COMPONENT_MAP(_component,src ,"out_RENAME_"+toString(i)+"_NUM_REG_RD_PHY_OLD",
285                                   dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RD_PHY_OLD");
286          COMPONENT_MAP(_component,src ,"out_RENAME_"+toString(i)+"_NUM_REG_RE_PHY_OLD",
287                                   dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RE_PHY_OLD");
288        }
289
290      // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
291      for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
292        {
293          dest = _name+"_register_translation_unit_glue";
294#ifdef POSITION
295          _component->interface_map (src ,"rename_"+toString(i)
296                                     dest,"rename_in_"+toString(i));
297#endif
298          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_VAL",
299                                   dest,"out_INSERT_"+toString(i)+"_RAT_INSERT_VAL");
300          COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_ACK",
301                                   dest, "in_INSERT_"+toString(i)+"_RAT_INSERT_ACK");
302          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_WRITE_RD"      ,
303                                   dest,"out_INSERT_"+toString(i)+"_RAT_WRITE_RD"      );
304          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_WRITE_RE"      ,
305                                   dest,"out_INSERT_"+toString(i)+"_RAT_WRITE_RE"      );
306          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RD_LOG",
307                                   dest,"out_INSERT_"+toString(i)+"_RAT_NUM_REG_RD_LOG");
308          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RE_LOG",
309                                   dest,"out_INSERT_"+toString(i)+"_RAT_NUM_REG_RE_LOG");
310          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RD_PHY",
311                                   dest,"out_INSERT_"+toString(i)+"_RAT_NUM_REG_RD_PHY_NEW");
312          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RE_PHY",
313                                   dest,"out_INSERT_"+toString(i)+"_RAT_NUM_REG_RE_PHY_NEW");
314        }
315
316      // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
317      for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
318        {
319          dest = _name;
320#ifdef POSITION
321          _component->interface_map (src ,"retire_"+toString(i)
322                                     dest,"retire_"+toString(i));
323#endif
324
325          if (_param->_have_port_front_end_id)
326          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_FRONT_END_ID"      ,
327                              dest, "in_RETIRE_"+toString(i)+"_FRONT_END_ID"      );
328          if (_param->_have_port_context_id)
329          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_CONTEXT_ID"        ,
330                              dest, "in_RETIRE_"+toString(i)+"_CONTEXT_ID"        );
331          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_EVENT_STATE"       ,
332                              dest, "in_RETIRE_"+toString(i)+"_EVENT_STATE"       );
333          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_WRITE_RD"          ,
334                              dest, "in_RETIRE_"+toString(i)+"_WRITE_RD"          );
335          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_WRITE_RE"          ,
336                              dest, "in_RETIRE_"+toString(i)+"_WRITE_RE"          );
337          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RD_LOG"    ,
338                              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RD_LOG"    );
339          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RE_LOG"    ,
340                              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RE_LOG"    );
341          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RD_PHY_OLD",
342                              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RD_PHY_OLD");
343          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RE_PHY_OLD",
344                              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RE_PHY_OLD");
345
346          dest = _name+"_register_translation_unit_glue";
347          COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_VAL"          ,
348                                   dest,"out_RETIRE_"+toString(i)+"_RAT_VAL"      );
349          COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_ACK"          ,
350                                   dest, "in_RETIRE_"+toString(i)+"_RAT_ACK"      );
351
352          dest = _name+"_stat_list_unit";
353          COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RESTORE_RD_PHY_OLD",
354                                   dest, "in_RETIRE_"+toString(i)+"_RESTORE_RD_PHY_OLD");
355          COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RESTORE_RE_PHY_OLD",
356                                   dest, "in_RETIRE_"+toString(i)+"_RESTORE_RE_PHY_OLD");
357        }
358    }
359   
360    // ===================================================================
361    // =====[ free_list_unit ]============================================
362    // ===================================================================
363    {
364      src = _name+"_free_list_unit";
365      log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
366           
367      {
368        dest = _name;
369#ifdef POSITION
370        _component->interface_map (src ,"",
371                                   dest,"");
372#endif
373        PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
374        PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
375      }
376
377      // ~~~~~[ interface : "pop" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
378      for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
379        {
380          dest = _name;
381#ifdef POSITION
382          _component->interface_map (src ,"pop_"+toString(i)
383                                     dest,"rename_"+toString(i));
384#endif
385         
386          PORT_MAP(_component,src , "in_POP_"+toString(i)+"_GPR_VAL"    ,
387                              dest,"in_RENAME_"+toString(i)+"_WRITE_RD");
388          PORT_MAP(_component,src , "in_POP_"+toString(i)+"_SPR_VAL"    ,
389                              dest,"in_RENAME_"+toString(i)+"_WRITE_RE");
390
391          dest = _name+"_register_translation_unit_glue";
392          COMPONENT_MAP(_component,src , "in_POP_"+toString(i)+"_VAL" ,
393                                   dest,"out_INSERT_"+toString(i)+"_FREE_LIST_VAL" );
394          COMPONENT_MAP(_component,src ,"out_POP_"+toString(i)+"_ACK" ,
395                                   dest, "in_INSERT_"+toString(i)+"_FREE_LIST_ACK" );
396
397          dest = _name+"_dependency_checking_unit";
398
399          COMPONENT_MAP(_component,src ,"out_POP_"+toString(i)+"_GPR_NUM_REG",
400                                   dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RD_PHY_NEW");
401          COMPONENT_MAP(_component,src ,"out_POP_"+toString(i)+"_SPR_NUM_REG",
402                                   dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RE_PHY_NEW");
403        }
404
405      // ~~~~~[ interface : "push_gpr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
406      // ~~~~~[ interface : "push_spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
407      for (uint32_t i=0; i<_param->_nb_reg_free; i++)
408        {
409          dest = _name+"_stat_list_unit";
410#ifdef POSITION
411          _component->interface_map (src ,"push_gpr_"+toString(i)
412                                     dest,"push_gpr_"+toString(i));
413#endif
414
415          COMPONENT_MAP(_component,src , "in_PUSH_GPR_"+toString(i)+"_VAL"    ,
416                                   dest,"out_PUSH_GPR_"+toString(i)+"_VAL"    );
417          COMPONENT_MAP(_component,src ,"out_PUSH_GPR_"+toString(i)+"_ACK"    ,
418                                   dest, "in_PUSH_GPR_"+toString(i)+"_ACK"    );
419          COMPONENT_MAP(_component,src , "in_PUSH_GPR_"+toString(i)+"_NUM_REG",
420                                   dest,"out_PUSH_GPR_"+toString(i)+"_NUM_REG");
421
422#ifdef POSITION
423          _component->interface_map (src ,"push_spr_"+toString(i)
424                                     dest,"push_spr_"+toString(i));
425#endif
426
427          COMPONENT_MAP(_component,src , "in_PUSH_SPR_"+toString(i)+"_VAL"    ,
428                                   dest,"out_PUSH_SPR_"+toString(i)+"_VAL"    );
429          COMPONENT_MAP(_component,src ,"out_PUSH_SPR_"+toString(i)+"_ACK"    ,
430                                   dest, "in_PUSH_SPR_"+toString(i)+"_ACK"    );
431          COMPONENT_MAP(_component,src , "in_PUSH_SPR_"+toString(i)+"_NUM_REG",
432                                   dest,"out_PUSH_SPR_"+toString(i)+"_NUM_REG");
433        }
434    }
435
436
437    // ===================================================================
438    // =====[ dependency_checking_unit ]==================================
439    // ===================================================================
440    {
441      src = _name+"_dependency_checking_unit";
442      log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
443           
444      {
445        dest = _name;
446#ifdef POSITION
447        _component->interface_map (src ,"",
448                                   dest,"");
449#endif
450        PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
451        PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
452      }
453 
454      // ~~~~~[ Interface "rename_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
455      for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
456        {
457          dest = _name;
458#ifdef POSITION
459          _component->interface_map (src ,"rename_in_"+toString(i)
460                                     dest,"rename_"+toString(i));
461#endif
462
463// //     PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_VAL"               ,dest,);
464// //     PORT_MAP(_component,src ,"out_RENAME_IN_"+toString(i)+"_ACK"               ,dest,);
465          if (_param->_have_port_front_end_id)
466          PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_FRONT_END_ID"      ,
467                              dest, "in_RENAME_"+toString(i)+"_FRONT_END_ID"      );
468          if (_param->_have_port_context_id)
469          PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_CONTEXT_ID"        ,
470                              dest, "in_RENAME_"+toString(i)+"_CONTEXT_ID"        );
471          PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_READ_RA"           ,
472                              dest, "in_RENAME_"+toString(i)+"_READ_RA"           );
473          PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_NUM_REG_RA_LOG"    ,
474                              dest, "in_RENAME_"+toString(i)+"_NUM_REG_RA_LOG"    );
475          PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_READ_RB"           ,
476                              dest, "in_RENAME_"+toString(i)+"_READ_RB"           );
477          PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_NUM_REG_RB_LOG"    ,
478                              dest, "in_RENAME_"+toString(i)+"_NUM_REG_RB_LOG"    );
479          PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_READ_RC"           ,
480                              dest, "in_RENAME_"+toString(i)+"_READ_RC"           );
481          PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_NUM_REG_RC_LOG"    ,
482                              dest, "in_RENAME_"+toString(i)+"_NUM_REG_RC_LOG"    );
483          PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_WRITE_RD"          ,
484                              dest, "in_RENAME_"+toString(i)+"_WRITE_RD"          );
485          PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_NUM_REG_RD_LOG"    ,
486                              dest, "in_RENAME_"+toString(i)+"_NUM_REG_RD_LOG"    );
487          PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_WRITE_RE"          ,
488                              dest, "in_RENAME_"+toString(i)+"_WRITE_RE"          );
489          PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_NUM_REG_RE_LOG"    ,
490                              dest, "in_RENAME_"+toString(i)+"_NUM_REG_RE_LOG"    );
491         
492          // in_RENAME_IN_NUM_REG_RA_PHY     - register_address_translation_unit
493          // in_RENAME_IN_NUM_REG_RB_PHY     - register_address_translation_unit
494          // in_RENAME_IN_NUM_REG_RC_PHY     - register_address_translation_unit
495          // in_RENAME_IN_NUM_REG_RD_PHY_OLD - register_address_translation_unit
496          // in_RENAME_IN_NUM_REG_RE_PHY_OLD - register_address_translation_unit
497         
498          // in_RENAME_IN_NUM_REG_RD_PHY_NEW - free_list_unit
499          // in_RENAME_IN_NUM_REG_RE_PHY_NEW - free_list_unit
500        }
501
502      // ~~~~~[ Interface "rename_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
503      for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
504        {
505          dest = _name;
506#ifdef POSITION
507          _component->interface_map (src ,"rename_out_"+toString(i),
508                                     dest,"insert_"+toString(i));
509#endif
510
511          if (_param->_have_port_front_end_id)
512          PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_FRONT_END_ID"      ,
513                              dest,"out_INSERT_"+toString(i)+"_FRONT_END_ID"      );
514          if (_param->_have_port_context_id)
515          PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_CONTEXT_ID"        ,
516                              dest,"out_INSERT_"+toString(i)+"_CONTEXT_ID"        );
517          PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RA_LOG"    ,
518                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RA_LOG"    );
519          PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RB_LOG"    ,
520                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RB_LOG"    );
521          PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RC_LOG"    ,
522                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RC_LOG"    );
523
524//        PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_VAL"               ,
525//                            dest,"out_INSERT_"+toString(i)+"_VAL"               );
526//        PORT_MAP(_component,src , "in_RENAME_OUT_"+toString(i)+"_ACK"               ,
527//                            dest, "in_INSERT_"+toString(i)+"_ACK"               );
528
529          dest = _name+"_register_translation_unit_glue";
530
531          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_READ_RA"           ,
532                                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_READ_RA"           );
533          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RA_PHY"    ,
534                                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_NUM_REG_RA_PHY"    );
535          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_READ_RB"           ,
536                                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_READ_RB"           );
537          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RB_PHY"    ,
538                                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_NUM_REG_RB_PHY"    );
539          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_READ_RC"           ,
540                                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_READ_RC"           );
541          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RC_PHY"    ,
542                                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_NUM_REG_RC_PHY"    );
543          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_WRITE_RD"          ,
544                                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_WRITE_RD"          );
545          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RD_LOG"    ,
546                                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_NUM_REG_RD_LOG"    );
547          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RD_PHY_OLD",
548                                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_OLD");
549          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RD_PHY_NEW",
550                                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_NEW");
551          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_WRITE_RE"          ,
552                                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_WRITE_RE"          );
553          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RE_LOG"    ,
554                                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_NUM_REG_RE_LOG"    );
555          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RE_PHY_OLD",
556                                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_OLD");
557          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RE_PHY_NEW",
558                                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW");
559        }
560    }
561
562    // ===================================================================
563    // =====[ stat_list_unit ]============================================
564    // ===================================================================
565    {
566      src = _name+"_stat_list_unit";
567      log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
568           
569      {
570        dest = _name;
571#ifdef POSITION
572        _component->interface_map (src ,"",
573                                   dest,"");
574#endif
575        PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
576        PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
577      }
578
579      // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
580      for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
581        {
582          dest = _name+"_register_translation_unit_glue";
583#ifdef POSITION
584          _component->interface_map (src ,"insert_"+toString(i)
585                                     dest,"insert_stat_list_"+toString(i));
586#endif
587
588          COMPONENT_MAP(_component,src ,  "in_INSERT_"+toString(i)+"_VAL" ,
589                                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_VAL");
590          COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_ACK" ,
591                                   dest, "in_INSERT_"+toString(i)+"_STAT_LIST_ACK" );
592          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_READ_RA"           ,
593                                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_READ_RA"           );
594          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RA_PHY"    ,
595                                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_NUM_REG_RA_PHY"    );
596          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_READ_RB"           ,
597                                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_READ_RB"           );
598          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RB_PHY"    ,
599                                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_NUM_REG_RB_PHY"    );
600          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_READ_RC"           ,
601                                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_READ_RC"           );
602          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RC_PHY"    ,
603                                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_NUM_REG_RC_PHY"    );
604          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_WRITE_RD"          ,
605                                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_WRITE_RD"          );
606          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RD_PHY_NEW",
607                                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_NUM_REG_RD_PHY_NEW");
608          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_WRITE_RE"          ,
609                                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_WRITE_RE"          );
610          COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RE_PHY_NEW",
611                                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_NUM_REG_RE_PHY_NEW");
612        }
613
614      // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
615      for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
616        {
617          dest = _name;
618#ifdef POSITION
619          _component->interface_map (src ,"retire_"+toString(i)
620                                     dest,"retire_"+toString(i));
621#endif
622
623          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_READ_RA"           ,
624                              dest, "in_RETIRE_"+toString(i)+"_READ_RA"           );
625          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RA_PHY"    ,
626                              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RA_PHY"    );
627          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_READ_RB"           ,
628                              dest, "in_RETIRE_"+toString(i)+"_READ_RB"           );
629          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RB_PHY"    ,
630                              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RB_PHY"    );
631          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_READ_RC"           ,
632                              dest, "in_RETIRE_"+toString(i)+"_READ_RC"           );
633          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RC_PHY"    ,
634                              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RC_PHY"    );
635          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_WRITE_RD"          ,
636                              dest, "in_RETIRE_"+toString(i)+"_WRITE_RD"          );
637          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RD_PHY_OLD",
638                              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RD_PHY_OLD");
639          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RD_PHY_NEW",
640                              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RD_PHY_NEW");
641          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_WRITE_RE"          ,
642                              dest, "in_RETIRE_"+toString(i)+"_WRITE_RE"          );
643          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RE_PHY_OLD",
644                              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RE_PHY_OLD");
645          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RE_PHY_NEW",
646                              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RE_PHY_NEW");
647
648          // in_RETIRE_RESTORE_RD_PHY_OLD - register_address_translation_unit.out_RETIRE_RESTORE_RD_PHY_OLD
649          // in_RETIRE_RESTORE_RE_PHY_OLD - register_address_translation_unit.out_RETIRE_RESTORE_RE_PHY_OLD
650
651          dest = _name+"_register_translation_unit_glue";
652          COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_VAL",
653                                   dest,"out_RETIRE_"+toString(i)+"_STAT_LIST_VAL");
654          COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_ACK",
655                                   dest, "in_RETIRE_"+toString(i)+"_STAT_LIST_ACK");
656        }
657
658      // ~~~~~[ interface : "push_gpr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
659      // ~~~~~[ interface : "push_spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
660      for (uint32_t i=0; i<_param->_nb_reg_free; i++)
661        {
662          dest = _name+"_free_list_unit";
663#ifdef POSITION
664          _component->interface_map (src ,"push_gpr_"+toString(i)
665                                     dest,"push_gpr_"+toString(i));
666#endif
667
668          //out_PUSH_GPR_VAL     - free_list_unit
669          // in_PUSH_GPR_ACK     - free_list_unit
670          //out_PUSH_GPR_NUM_REG - free_list_unit
671
672#ifdef POSITION
673          _component->interface_map (src ,"push_spr_"+toString(i)
674                                     dest,"push_spr_"+toString(i));
675#endif
676
677          //out_PUSH_SPR_VAL     - free_list_unit
678          // in_PUSH_SPR_ACK     - free_list_unit
679          //out_PUSH_SPR_NUM_REG - free_list_unit
680        }
681    }
682
683    // ===================================================================
684    // =====[ register_translation_unit_glue ]============================
685    // ===================================================================
686    {
687      src = _name+"_register_translation_unit_glue";
688      log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
689           
690      {
691        dest = _name;
692#ifdef POSITION
693        _component->interface_map (src ,"",
694                                   dest,"");
695#endif
696        PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
697        PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
698      }
699
700      // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
701      for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
702        {
703          dest = _name;
704#ifdef POSITION
705          _component->interface_map (src ,"insert_"+toString(i),
706                                     dest,"insert_"+toString(i));
707#endif
708
709          PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_RENAME_VAL"    ,
710                              dest, "in_RENAME_"+toString(i)+"_VAL"    );
711          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_RENAME_ACK"    ,
712                              dest,"out_RENAME_"+toString(i)+"_ACK"    );
713          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_INSERT_VAL"    ,
714                              dest,"out_INSERT_"+toString(i)+"_VAL"    );
715          PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_INSERT_ACK"    ,
716                              dest, "in_INSERT_"+toString(i)+"_ACK"    );
717
718          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_READ_RA"           ,
719                              dest,"out_INSERT_"+toString(i)+"_READ_RA"           );
720          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RA_PHY"    ,
721                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RA_PHY"    );
722          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_READ_RB"           ,
723                              dest,"out_INSERT_"+toString(i)+"_READ_RB"           );
724          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RB_PHY"    ,
725                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RB_PHY"    );
726          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_READ_RC"           ,
727                              dest,"out_INSERT_"+toString(i)+"_READ_RC"           );
728          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RC_PHY"    ,
729                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RC_PHY"    );
730          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_WRITE_RD"          ,
731                              dest,"out_INSERT_"+toString(i)+"_WRITE_RD"          );
732          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RD_LOG"    ,
733                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RD_LOG"    );
734          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RD_PHY_OLD",
735                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RD_PHY_OLD");
736          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RD_PHY_NEW",
737                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RD_PHY_NEW");
738          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_WRITE_RE"          ,
739                              dest,"out_INSERT_"+toString(i)+"_WRITE_RE"          );
740          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RE_LOG"    ,
741                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RE_LOG"    );
742          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RE_PHY_OLD",
743                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RE_PHY_OLD");
744          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RE_PHY_NEW",
745                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RE_PHY_NEW");
746
747          // out_INSERT_RAT_INSERT_VAL - register_address_translation_unit
748          //  in_INSERT_RAT_RENAME_ACK - register_address_translation_unit
749          //  in_INSERT_RAT_INSERT_ACK - register_address_translation_unit
750          // out_INSERT_FREE_LIST_VAL  - free_list_unit
751          //  in_INSERT_FREE_LIST_ACK  - free_list_unit
752          // out_INSERT_STAT_LIST_VAL  - stat_list_unit
753          //  in_INSERT_STAT_LIST_ACK  - stat_list_unit
754
755          //  in_INSERT_DEPENDENCY_CHECKING_READ_RA            - dependency_checking_unit
756          //  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RA_PHY     - dependency_checking_unit
757          //  in_INSERT_DEPENDENCY_CHECKING_READ_RB            - dependency_checking_unit
758          //  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RB_PHY     - dependency_checking_unit
759          //  in_INSERT_DEPENDENCY_CHECKING_READ_RC            - dependency_checking_unit
760          //  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RC_PHY     - dependency_checking_unit
761          //  in_INSERT_DEPENDENCY_CHECKING_WRITE_RD           - dependency_checking_unit
762          //  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_LOG     - dependency_checking_unit
763          //  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_OLD - dependency_checking_unit
764          //  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_NEW - dependency_checking_unit
765          //  in_INSERT_DEPENDENCY_CHECKING_WRITE_RE           - dependency_checking_unit
766          //  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_LOG     - dependency_checking_unit
767          //  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_OLD - dependency_checking_unit
768          //  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW - dependency_checking_unit
769
770          // out_INSERT_STAT_LIST_READ_RA                      - stat_list_unit
771          // out_INSERT_STAT_LIST_NUM_REG_RA_PHY               - stat_list_unit
772          // out_INSERT_STAT_LIST_READ_RB                      - stat_list_unit
773          // out_INSERT_STAT_LIST_NUM_REG_RB_PHY               - stat_list_unit
774          // out_INSERT_STAT_LIST_READ_RC                      - stat_list_unit
775          // out_INSERT_STAT_LIST_NUM_REG_RC_PHY               - stat_list_unit
776          // out_INSERT_STAT_LIST_WRITE_RD                     - stat_list_unit
777          // out_INSERT_STAT_LIST_NUM_REG_RD_PHY_NEW           - stat_list_unit
778          // out_INSERT_STAT_LIST_WRITE_RE                     - stat_list_unit
779          // out_INSERT_STAT_LIST_NUM_REG_RE_PHY_NEW           - stat_list_unit
780
781          // out_INSERT_RAT_WRITE_RD                           - register_address_translation_unit
782          // out_INSERT_RAT_NUM_REG_RD_LOG                     - register_address_translation_unit
783          // out_INSERT_RAT_NUM_REG_RD_PHY_NEW                 - register_address_translation_unit
784          // out_INSERT_RAT_WRITE_RE                           - register_address_translation_unit
785          // out_INSERT_RAT_NUM_REG_RE_LOG                     - register_address_translation_unit
786          // out_INSERT_RAT_NUM_REG_RE_PHY_NEW                 - register_address_translation_unit
787        }
788
789      // ~~~~~[ Interface : "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
790      for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
791        {
792          dest = _name;
793#ifdef POSITION
794          _component->interface_map (src ,"retire",
795                                     dest,"retire");
796#endif
797
798          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_VAL"          ,
799                              dest, "in_RETIRE_"+toString(i)+"_VAL"          );
800          PORT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_ACK"          ,
801                              dest,"out_RETIRE_"+toString(i)+"_ACK"          );
802
803          // out_RETIRE_RAT_VAL       - register_address_translation_unit
804          //  in_RETIRE_RAT_ACK       - register_address_translation_unit
805          // out_RETIRE_STAT_LIST_VAL - stat_list_unit
806          //  in_RETIRE_STAT_LIST_ACK - stat_list_unit
807        }
808     }
809
810
811    // ~~~~~[ Others ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
812#if (DEBUG_Register_translation_unit == true)
813    _component->test_map();
814#endif
815
816#ifdef POSITION
817    if (usage_is_set(_usage,USE_POSITION))
818      _component->generate_file();
819#endif
820
821    log_printf(FUNC,Register_translation_unit,FUNCTION,"End");
822  };
823
824}; // end namespace register_translation_unit
825}; // end namespace rename_unit
826}; // end namespace ooo_engine
827}; // end namespace multi_ooo_engine
828}; // end namespace core
829
830}; // end namespace behavioural
831}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.