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

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

1) Platforms : add new organization for test
2) Load_Store_Unit : add array to count nb_check in store_queue
3) Issue_queue and Core_Glue : rewrite the issue network
4) Special_Register_Unit : add reset value to register CID
5) Softwares : add multicontext test
6) Softwares : add SPECINT
7) Softwares : add MiBench?
7) Read_queue : inhib access for r0
8) Change Core_Glue (network) - dont yet support priority and load balancing scheme

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