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

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

1) Fix bug (read unit, RAT -> write in R0, SPR desallocation ...)
2) Change VHDL Execute_queue -> use Generic/Queue?
3) Complete document on VHDL generation
4) Add soc test

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