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

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