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

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

Fix Bug :
1) Load Store Unit : check big endian
2) Commit unit & RAT : add retire_event interface

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