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

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

1) Fix performance
2) add auto generation to SPECINT2000
3) add reset in genMoore and genMealy

  • Property svn:keywords set to Id
File size: 45.7 KB
Line 
1/*
2 * $Id: Register_translation_unit_allocation.cpp 123 2009-06-08 20:43:30Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/include/Register_translation_unit.h"
9#include "Behavioural/include/Allocation.h"
10
11namespace morpheo                    {
12namespace behavioural {
13namespace core {
14namespace multi_ooo_engine {
15namespace ooo_engine {
16namespace rename_unit {
17namespace register_translation_unit {
18
19
20
21#undef  FUNCTION
22#define FUNCTION "Register_translation_unit::allocation"
23  void Register_translation_unit::allocation (
24#ifdef STATISTICS
25                               morpheo::behavioural::Parameters_Statistics * param_statistics
26#else
27                               void
28#endif
29                               )
30  {
31    log_printf(FUNC,Register_translation_unit,FUNCTION,"Begin");
32
33    _component   = new Component (_usage);
34
35    Entity * entity = _component->set_entity (_name       
36                                              ,"Register_translation_unit"
37#ifdef POSITION
38                                              ,COMBINATORY
39#endif
40                                              );
41
42    _interfaces = entity->set_interfaces();
43
44    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
45    {
46      Interface * interface = _interfaces->set_interface(""
47#ifdef POSITION
48                                                         ,IN
49                                                         ,SOUTH,
50                                                         "Generalist interface"
51#endif
52                                                         );
53     
54      in_CLOCK        = interface->set_signal_clk              ("clock" ,1, CLOCK_VHDL_YES);
55      in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_YES);
56    }
57
58    // ~~~~~[ Interface "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
59    {
60      ALLOC1_INTERFACE_BEGIN("rename", IN, EAST, _("Instruction with logical register"), _param->_nb_inst_insert);
61
62      ALLOC1_VALACK_IN ( in_RENAME_VAL           ,VAL);
63      ALLOC1_VALACK_OUT(out_RENAME_ACK           ,ACK);
64      ALLOC1_SIGNAL_IN ( in_RENAME_FRONT_END_ID  ,"front_end_id"  ,Tcontext_t        ,_param->_size_front_end_id          );
65      ALLOC1_SIGNAL_IN ( in_RENAME_CONTEXT_ID    ,"context_id"    ,Tcontext_t        ,_param->_size_context_id            );
66      ALLOC1_SIGNAL_IN ( in_RENAME_READ_RA       ,"read_ra"       ,Tcontrol_t        ,1                                   );
67      ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RA_LOG,"num_reg_ra_log",Tgeneral_address_t,_param->_size_general_register_logic);
68      ALLOC1_SIGNAL_IN ( in_RENAME_READ_RB       ,"read_rb"       ,Tcontrol_t        ,1                                   );
69      ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RB_LOG,"num_reg_rb_log",Tgeneral_address_t,_param->_size_general_register_logic);
70      ALLOC1_SIGNAL_IN ( in_RENAME_READ_RC       ,"read_rc"       ,Tcontrol_t        ,1                                   );
71      ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RC_LOG,"num_reg_rc_log",Tspecial_address_t,_param->_size_special_register_logic);
72      ALLOC1_SIGNAL_IN ( in_RENAME_WRITE_RD      ,"write_rd"      ,Tcontrol_t        ,1                                   );
73      ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RD_LOG,"num_reg_rd_log",Tgeneral_address_t,_param->_size_general_register_logic);
74      ALLOC1_SIGNAL_IN ( in_RENAME_WRITE_RE      ,"write_re"      ,Tcontrol_t        ,1                                   );
75      ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RE_LOG,"num_reg_re_log",Tspecial_address_t,_param->_size_special_register_logic);
76
77      ALLOC1_INTERFACE_END(_param->_nb_inst_insert);
78    }
79
80    // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
81    {
82      ALLOC1_INTERFACE_BEGIN("insert",OUT,WEST , _("Instruction with physical register"), _param->_nb_inst_insert);
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                                   );
89#ifdef DEBUG
90      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RA_LOG    ,"num_reg_ra_log"    ,Tgeneral_address_t,_param->_size_general_register_logic);
91#endif
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                                   );
94#ifdef DEBUG
95      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RB_LOG    ,"num_reg_rb_log"    ,Tgeneral_address_t,_param->_size_general_register_logic);
96#endif
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                                   );
99#ifdef DEBUG
100      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RC_LOG    ,"num_reg_rc_log"    ,Tspecial_address_t,_param->_size_special_register_logic);
101#endif
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      );
111
112      ALLOC1_INTERFACE_END(_param->_nb_inst_insert);
113    }
114
115    // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
116    {
117      ALLOC1_INTERFACE_BEGIN("retire",IN ,NORTH, _("Retire instruction, update renaming structure."), _param->_nb_inst_retire);
118
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            );
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      );
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      );
137
138      ALLOC1_INTERFACE_END(_param->_nb_inst_retire);
139    }
140
141    // ~~~~~[ Interface : "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
142    {
143      ALLOC2_INTERFACE_BEGIN("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]);
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]);
148
149      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
150    }
151
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
163    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
164    std::string name;
165     {
166       name = _name+"_dependency_checking_unit";
167       log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
168
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
174          ,_param->_param_dependency_checking_unit
175          ,_usage);
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";
186       log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
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
193          ,_param->_param_free_list_unit
194          ,_usage);
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";
205       log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
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
212          ,_param->_param_register_address_translation_unit
213          ,_usage);
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";
224       log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
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
231          ,_param->_param_stat_list_unit
232          ,_usage);
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";
243       log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
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
250          ,_param->_param_register_translation_unit_glue
251          ,_usage);
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;
262
263    // ===================================================================
264    // =====[ register_address_translation_unit ]=========================
265    // ===================================================================
266    {
267      src = _name+"_register_address_translation_unit";
268      log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
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      }
279
280      // ~~~~~[ Interface "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
281      for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
282        {
283          dest = _name;
284#ifdef POSITION
285          _component->interface_map (src ,"rename_"+toString(i)
286                                     dest,"rename_"+toString(i));
287#endif
288         
289          PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_VAL"               ,
290                              dest, "in_RENAME_"+toString(i)+"_VAL"               );
291          if (_param->_have_port_front_end_id)
292          PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_FRONT_END_ID"      ,
293                              dest, "in_RENAME_"+toString(i)+"_FRONT_END_ID"      );
294          if (_param->_have_port_context_id)
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"    );
307
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");
311         
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");
323        }
324
325      // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
326      for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
327        {
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        {
354          dest = _name;
355#ifdef POSITION
356          _component->interface_map (src ,"retire_"+toString(i)
357                                     dest,"retire_"+toString(i));
358#endif
359
360          if (_param->_have_port_front_end_id)
361          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_FRONT_END_ID"      ,
362                              dest, "in_RETIRE_"+toString(i)+"_FRONT_END_ID"      );
363          if (_param->_have_port_context_id)
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"    );
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");
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");
390          COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RESTORE"           ,
391                                   dest, "in_RETIRE_"+toString(i)+"_RESTORE"           );
392        }
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          }
410    }
411   
412    // ===================================================================
413    // =====[ free_list_unit ]============================================
414    // ===================================================================
415    {
416      src = _name+"_free_list_unit";
417      log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
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";
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" );
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");
447
448          dest = _name+"_dependency_checking_unit";
449
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");
454        }
455
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
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");
472
473#ifdef POSITION
474          _component->interface_map (src ,"push_spr_"+toString(i)
475                                     dest,"push_spr_"+toString(i));
476#endif
477
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");
484        }
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
501    }
502
503    // ===================================================================
504    // =====[ dependency_checking_unit ]==================================
505    // ===================================================================
506    {
507      src = _name+"_dependency_checking_unit";
508      log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
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      }
519 
520      // ~~~~~[ Interface "rename_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
521      for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
522        {
523          dest = _name;
524#ifdef POSITION
525          _component->interface_map (src ,"rename_in_"+toString(i)
526                                     dest,"rename_"+toString(i));
527#endif
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,);
531          if (_param->_have_port_front_end_id)
532          PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_FRONT_END_ID"      ,
533                              dest, "in_RENAME_"+toString(i)+"_FRONT_END_ID"      );
534          if (_param->_have_port_context_id)
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"    );
557         
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
566        }
567
568      // ~~~~~[ Interface "rename_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
569      for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
570        {
571          dest = _name;
572#ifdef POSITION
573          _component->interface_map (src ,"rename_out_"+toString(i),
574                                     dest,"insert_"+toString(i));
575#endif
576
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"        );
583#ifdef DEBUG
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"    );
590#endif
591
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
597          dest = _name+"_register_translation_unit_glue";
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        }
628    }
629
630    // ===================================================================
631    // =====[ stat_list_unit ]============================================
632    // ===================================================================
633    {
634      src = _name+"_stat_list_unit";
635      log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
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        {
650          dest = _name+"_register_translation_unit_glue";
651#ifdef POSITION
652          _component->interface_map (src ,"insert_"+toString(i)
653                                     dest,"insert_stat_list_"+toString(i));
654#endif
655
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"          );
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");
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"          );
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");
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");
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
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"    );
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
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
722          // in_RETIRE_RESTORE            - register_address_translation_unit.out_RETIRE_RESTORE           
723
724          dest = _name+"_register_translation_unit_glue";
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");
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
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
744
745#ifdef POSITION
746          _component->interface_map (src ,"push_spr_"+toString(i)
747                                     dest,"push_spr_"+toString(i));
748#endif
749
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
753        }
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
768    }
769
770    // ===================================================================
771    // =====[ register_translation_unit_glue ]============================
772    // ===================================================================
773    {
774      src = _name+"_register_translation_unit_glue";
775      log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
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
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");
833
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
841
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
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
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
894        }
895     }
896
897
898    // ~~~~~[ Others ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
899#if (DEBUG_Register_translation_unit == true)
900    _component->test_map();
901#endif
902
903#ifdef POSITION
904    if (usage_is_set(_usage,USE_POSITION))
905      _component->generate_file();
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.