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

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

Various modif (add test, and vhdl)

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