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

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

Modif for performance :
1) Load Store Unit : store send request to valid exeception
2) Commit_unit : retire can bypass store
3) Commit_unit : add stat to manage store instruction
4) Load Store Unit and Load Store Pointer Manager : add store_queue_ptr_read
5) Fix lot of bug

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