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

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

Various modif (add test, and vhdl)

  • Property svn:keywords set to Id
File size: 45.7 KB
Line 
1/*
2 * $Id: Register_translation_unit_allocation.cpp 137 2010-02-16 12:35:48Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/include/Register_translation_unit.h"
9#include "Behavioural/include/Allocation.h"
10
11namespace morpheo                    {
12namespace behavioural {
13namespace core {
14namespace multi_ooo_engine {
15namespace ooo_engine {
16namespace rename_unit {
17namespace register_translation_unit {
18
19
20
21#undef  FUNCTION
22#define FUNCTION "Register_translation_unit::allocation"
23  void Register_translation_unit::allocation (
24#ifdef STATISTICS
25                               morpheo::behavioural::Parameters_Statistics * param_statistics
26#else
27                               void
28#endif
29                               )
30  {
31    log_printf(FUNC,Register_translation_unit,FUNCTION,"Begin");
32
33    _component   = new Component (_usage);
34
35    Entity * entity = _component->set_entity (_name       
36                                              ,"Register_translation_unit"
37#ifdef POSITION
38                                              ,COMBINATORY
39#endif
40                                              );
41
42    _interfaces = entity->set_interfaces();
43
44    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
45    {
46      Interface * interface = _interfaces->set_interface(""
47#ifdef POSITION
48                                                         ,IN
49                                                         ,SOUTH,
50                                                         "Generalist interface"
51#endif
52                                                         );
53     
54      in_CLOCK        = interface->set_signal_clk              ("clock" ,1, CLOCK_VHDL_YES);
55      in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_YES);
56    }
57
58    // ~~~~~[ Interface "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
59    {
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.