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

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

1) Commit_unit : remove read information of ROB

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