source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src/Register_unit_allocation.cpp @ 82

Last change on this file since 82 was 82, checked in by rosiere, 16 years ago
  • support locale (now must "just" translate)
  • update all component with new test format
  • update all component with usage
  • New component : decod queue and prediction_unit
  • Property svn:keywords set to Id
File size: 40.9 KB
Line 
1/*
2 * $Id: Register_unit_allocation.cpp 82 2008-05-01 16:48:45Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/include/Register_unit.h"
9
10namespace morpheo                    {
11namespace behavioural {
12namespace core {
13namespace multi_execute_loop {
14namespace execute_loop {
15namespace register_unit {
16
17
18
19#undef  FUNCTION
20#define FUNCTION "Register_unit::allocation"
21  void Register_unit::allocation (
22#ifdef STATISTICS
23                                  morpheo::behavioural::Parameters_Statistics * param_statistics
24#else
25                                  void
26#endif
27                                  )
28  {
29    log_printf(FUNC,Register_unit,FUNCTION,"Begin");
30
31    _component   = new Component (_usage);
32
33    Entity * entity = _component->set_entity (_name       
34                                              ,"Register_unit"
35#ifdef POSITION
36                                              ,COMBINATORY
37#endif
38                                              );
39
40    _interfaces = entity->set_interfaces();
41
42    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
43
44    Interface * interface = _interfaces->set_interface(""
45#ifdef POSITION
46                                                       ,IN
47                                                       ,SOUTH,
48                                                       "Generalist interface"
49#endif
50                                                       );
51
52    in_CLOCK        = interface->set_signal_clk              ("clock" ,1, CLOCK_VHDL_YES);
53    in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_YES);
54
55    // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
56    in_GPR_READ_VAL                 = new SC_IN (Tcontrol_t        )   * [_param->_nb_gpr_read];
57    out_GPR_READ_ACK                 = new SC_OUT(Tcontrol_t        )   * [_param->_nb_gpr_read];
58    if (_param->_have_port_ooo_engine_id == true)
59      in_GPR_READ_OOO_ENGINE_ID       = new SC_IN (Tcontext_t        )   * [_param->_nb_gpr_read];
60    in_GPR_READ_NUM_REG             = new SC_IN (Tgeneral_address_t)   * [_param->_nb_gpr_read];
61    out_GPR_READ_DATA                = new SC_OUT(Tgeneral_data_t   )   * [_param->_nb_gpr_read];
62    out_GPR_READ_DATA_VAL            = new SC_OUT(Tcontrol_t        )   * [_param->_nb_gpr_read];
63     
64    for (uint32_t i=0; i<_param->_nb_gpr_read; i++)
65      {
66        Interface_fifo * interface = _interfaces->set_interface("gpr_read_"+toString(i)
67#ifdef POSITION
68                                                                ,IN
69                                                                ,NORTH
70                                                                ,"Interface to read the register file"
71#endif
72                                                                );
73         
74        in_GPR_READ_VAL           [i]= interface->set_signal_valack_in  (VAL);
75        out_GPR_READ_ACK           [i]= interface->set_signal_valack_out (ACK);
76        if (_param->_have_port_ooo_engine_id == true)
77          in_GPR_READ_OOO_ENGINE_ID [i]= interface->set_signal_in <Tcontext_t        > ("ooo_engine_id" , log2(_param->_nb_ooo_engine));
78        in_GPR_READ_NUM_REG       [i]= interface->set_signal_in <Tgeneral_address_t> ("num_reg"       , _param->_size_gpr_address);
79        out_GPR_READ_DATA          [i]= interface->set_signal_out<Tgeneral_data_t   > ("data"          , _param->_size_general_data);
80        out_GPR_READ_DATA_VAL      [i]= interface->set_signal_out<Tcontrol_t        > ("data_val"      , 1);
81      }
82
83    // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
84    in_GPR_WRITE_VAL                 = new SC_IN (Tcontrol_t        )   * [_param->_nb_gpr_write];
85    out_GPR_WRITE_ACK                 = new SC_OUT(Tcontrol_t        )   * [_param->_nb_gpr_write];
86    if (_param->_have_port_ooo_engine_id == true)
87      in_GPR_WRITE_OOO_ENGINE_ID       = new SC_IN (Tcontext_t        )   * [_param->_nb_gpr_write];
88    in_GPR_WRITE_NUM_REG             = new SC_IN (Tgeneral_address_t)   * [_param->_nb_gpr_write];
89    in_GPR_WRITE_DATA                = new SC_IN (Tgeneral_data_t   )   * [_param->_nb_gpr_write];
90     
91    for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
92      {
93        Interface_fifo * interface = _interfaces->set_interface("gpr_write_"+toString(i)
94#ifdef POSITION
95                                                                ,IN
96                                                                ,NORTH,
97                                                                "Interface to write the register file"
98#endif
99                                                                );
100         
101        in_GPR_WRITE_VAL           [i]= interface->set_signal_valack_in  (VAL);
102        out_GPR_WRITE_ACK           [i]= interface->set_signal_valack_out (ACK);
103        if (_param->_have_port_ooo_engine_id == true)
104          in_GPR_WRITE_OOO_ENGINE_ID [i]= interface->set_signal_in <Tcontext_t        > ("ooo_engine_id" , log2(_param->_nb_ooo_engine));
105        in_GPR_WRITE_NUM_REG       [i]= interface->set_signal_in <Tgeneral_address_t> ("num_reg"       , _param->_size_gpr_address);
106        in_GPR_WRITE_DATA          [i]= interface->set_signal_in <Tgeneral_data_t   > ("data"          , _param->_size_general_data);
107      }
108
109    // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
110    in_SPR_READ_VAL                 = new SC_IN (Tcontrol_t        )   * [_param->_nb_spr_read];
111    out_SPR_READ_ACK                 = new SC_OUT(Tcontrol_t        )   * [_param->_nb_spr_read];
112    if (_param->_have_port_ooo_engine_id == true)
113      in_SPR_READ_OOO_ENGINE_ID       = new SC_IN (Tcontext_t        )   * [_param->_nb_spr_read];
114    in_SPR_READ_NUM_REG             = new SC_IN (Tspecial_address_t)   * [_param->_nb_spr_read];
115    out_SPR_READ_DATA                = new SC_OUT(Tspecial_data_t   )   * [_param->_nb_spr_read];
116    out_SPR_READ_DATA_VAL            = new SC_OUT(Tcontrol_t        )   * [_param->_nb_spr_read];
117     
118    for (uint32_t i=0; i<_param->_nb_spr_read; i++)
119      {
120        Interface_fifo * interface = _interfaces->set_interface("spr_read_"+toString(i)
121#ifdef POSITION
122                                                                ,IN
123                                                                ,NORTH,
124                                                                "Interface to read the register file"
125#endif
126                                                                );
127         
128        in_SPR_READ_VAL           [i]= interface->set_signal_valack_in  (VAL);
129        out_SPR_READ_ACK           [i]= interface->set_signal_valack_out (ACK);
130        if (_param->_have_port_ooo_engine_id == true)
131          in_SPR_READ_OOO_ENGINE_ID [i]= interface->set_signal_in <Tcontext_t        > ("ooo_engine_id" , log2(_param->_nb_ooo_engine));
132        in_SPR_READ_NUM_REG       [i]= interface->set_signal_in <Tspecial_address_t> ("num_reg"       , _param->_size_spr_address);
133        out_SPR_READ_DATA          [i]= interface->set_signal_out<Tspecial_data_t   > ("data"          , _param->_size_special_data);
134        out_SPR_READ_DATA_VAL      [i]= interface->set_signal_out<Tcontrol_t        > ("data_val"      , 1);
135      }
136
137    // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
138    in_SPR_WRITE_VAL                 = new SC_IN (Tcontrol_t        )   * [_param->_nb_spr_write];
139    out_SPR_WRITE_ACK                 = new SC_OUT(Tcontrol_t        )   * [_param->_nb_spr_write];
140    if (_param->_have_port_ooo_engine_id == true)
141      in_SPR_WRITE_OOO_ENGINE_ID       = new SC_IN (Tcontext_t        )   * [_param->_nb_spr_write];
142    in_SPR_WRITE_NUM_REG             = new SC_IN (Tspecial_address_t)   * [_param->_nb_spr_write];
143    in_SPR_WRITE_DATA                = new SC_IN (Tspecial_data_t   )   * [_param->_nb_spr_write];
144     
145    for (uint32_t i=0; i<_param->_nb_spr_write; i++)
146      {
147        Interface_fifo * interface = _interfaces->set_interface("spr_write_"+toString(i)
148#ifdef POSITION
149                                                                ,IN
150                                                                ,NORTH,
151                                                                "Interface to write the register file"
152#endif
153                                                                );
154         
155        in_SPR_WRITE_VAL           [i]= interface->set_signal_valack_in  (VAL);
156        out_SPR_WRITE_ACK           [i]= interface->set_signal_valack_out (ACK);
157        if (_param->_have_port_ooo_engine_id == true)
158          in_SPR_WRITE_OOO_ENGINE_ID [i]= interface->set_signal_in <Tcontext_t        > ("ooo_engine_id" , log2(_param->_nb_ooo_engine));
159        in_SPR_WRITE_NUM_REG       [i]= interface->set_signal_in <Tspecial_address_t> ("num_reg"       , _param->_size_spr_address);
160        in_SPR_WRITE_DATA          [i]= interface->set_signal_in <Tspecial_data_t   > ("data"          , _param->_size_special_data);
161      }
162
163    // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
164    in_INSERT_ROB_VAL        = new SC_IN (Tcontrol_t        )  ** [_param->_nb_ooo_engine];
165    out_INSERT_ROB_ACK        = new SC_OUT(Tcontrol_t        )  ** [_param->_nb_ooo_engine];
166    in_INSERT_ROB_RD_USE     = new SC_IN (Tcontrol_t        )  ** [_param->_nb_ooo_engine];
167    in_INSERT_ROB_RD_NUM_REG = new SC_IN (Tgeneral_address_t)  ** [_param->_nb_ooo_engine];
168    in_INSERT_ROB_RE_USE     = new SC_IN (Tcontrol_t        )  ** [_param->_nb_ooo_engine];
169    in_INSERT_ROB_RE_NUM_REG = new SC_IN (Tspecial_address_t)  ** [_param->_nb_ooo_engine];
170
171    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
172      {
173        uint32_t x=_param->_nb_inst_insert_rob [i];
174
175        in_INSERT_ROB_VAL        [i] = new SC_IN (Tcontrol_t        )  * [x];
176        out_INSERT_ROB_ACK        [i] = new SC_OUT(Tcontrol_t        )  * [x];
177        in_INSERT_ROB_RD_USE     [i] = new SC_IN (Tcontrol_t        )  * [x];
178        in_INSERT_ROB_RD_NUM_REG [i] = new SC_IN (Tgeneral_address_t)  * [x];
179        in_INSERT_ROB_RE_USE     [i] = new SC_IN (Tcontrol_t        )  * [x];
180        in_INSERT_ROB_RE_NUM_REG [i] = new SC_IN (Tspecial_address_t)  * [x];
181
182        for (uint32_t j=0; j<x; j++)
183          {
184            Interface_fifo * interface = _interfaces->set_interface("insert_rob_"+toString(i)+"_"+toString(j)
185#ifdef POSITION
186                                                                    ,IN
187                                                                    ,WEST
188                                                                    ,"Interface to update status (insert)"
189#endif
190                                                                    );
191
192
193            in_INSERT_ROB_VAL        [i][j] = interface->set_signal_valack_in  (VAL);
194            out_INSERT_ROB_ACK        [i][j] = interface->set_signal_valack_out (ACK);
195            in_INSERT_ROB_RD_USE     [i][j] = interface->set_signal_in <Tcontrol_t        > ("rd_use"    , 1);
196            in_INSERT_ROB_RD_NUM_REG [i][j] = interface->set_signal_in <Tgeneral_address_t> ("rd_num_reg", _param->_size_gpr_address);
197            in_INSERT_ROB_RE_USE     [i][j] = interface->set_signal_in <Tcontrol_t        > ("re_use"    , 1);
198            in_INSERT_ROB_RE_NUM_REG [i][j] = interface->set_signal_in <Tspecial_address_t> ("re_num_reg", _param->_size_spr_address);
199             
200          }
201      }
202
203    // ~~~~~[ Interface "retire_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
204    in_RETIRE_ROB_VAL            = new SC_IN (Tcontrol_t        )  ** [_param->_nb_ooo_engine];
205    out_RETIRE_ROB_ACK            = new SC_OUT(Tcontrol_t        )  ** [_param->_nb_ooo_engine];
206    in_RETIRE_ROB_RD_OLD_USE     = new SC_IN (Tcontrol_t        )  ** [_param->_nb_ooo_engine];
207    in_RETIRE_ROB_RD_OLD_NUM_REG = new SC_IN (Tgeneral_address_t)  ** [_param->_nb_ooo_engine];
208    in_RETIRE_ROB_RE_OLD_USE     = new SC_IN (Tcontrol_t        )  ** [_param->_nb_ooo_engine];
209    in_RETIRE_ROB_RE_OLD_NUM_REG = new SC_IN (Tspecial_address_t)  ** [_param->_nb_ooo_engine];
210    in_RETIRE_ROB_RD_NEW_USE     = new SC_IN (Tcontrol_t        )  ** [_param->_nb_ooo_engine];
211    in_RETIRE_ROB_RD_NEW_NUM_REG = new SC_IN (Tgeneral_address_t)  ** [_param->_nb_ooo_engine];
212    in_RETIRE_ROB_RE_NEW_USE     = new SC_IN (Tcontrol_t        )  ** [_param->_nb_ooo_engine];
213    in_RETIRE_ROB_RE_NEW_NUM_REG = new SC_IN (Tspecial_address_t)  ** [_param->_nb_ooo_engine];
214
215    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
216      {
217        uint32_t x=_param->_nb_inst_retire_rob [i];
218
219        in_RETIRE_ROB_VAL            [i] = new SC_IN (Tcontrol_t        )  * [x];
220        out_RETIRE_ROB_ACK            [i] = new SC_OUT(Tcontrol_t        )  * [x];
221        in_RETIRE_ROB_RD_OLD_USE     [i] = new SC_IN (Tcontrol_t        )  * [x];
222        in_RETIRE_ROB_RD_OLD_NUM_REG [i] = new SC_IN (Tgeneral_address_t)  * [x];
223        in_RETIRE_ROB_RE_OLD_USE     [i] = new SC_IN (Tcontrol_t        )  * [x];
224        in_RETIRE_ROB_RE_OLD_NUM_REG [i] = new SC_IN (Tspecial_address_t)  * [x];
225        in_RETIRE_ROB_RD_NEW_USE     [i] = new SC_IN (Tcontrol_t        )  * [x];
226        in_RETIRE_ROB_RD_NEW_NUM_REG [i] = new SC_IN (Tgeneral_address_t)  * [x];
227        in_RETIRE_ROB_RE_NEW_USE     [i] = new SC_IN (Tcontrol_t        )  * [x];
228        in_RETIRE_ROB_RE_NEW_NUM_REG [i] = new SC_IN (Tspecial_address_t)  * [x];
229
230        for (uint32_t j=0; j<x; j++)
231          {
232            Interface_fifo * interface = _interfaces->set_interface("retire_rob_"+toString(i)+"_"+toString(j)
233#ifdef POSITION
234                                                                    ,IN
235                                                                    ,WEST
236                                                                    ,"Interface to update status (retire)"
237#endif
238                                                                    );
239
240
241            in_RETIRE_ROB_VAL            [i][j] = interface->set_signal_valack_in  (VAL);
242           out_RETIRE_ROB_ACK            [i][j] = interface->set_signal_valack_out (ACK);
243            in_RETIRE_ROB_RD_OLD_USE     [i][j] = interface->set_signal_in <Tcontrol_t        > ("rd_old_use"    , 1);
244            in_RETIRE_ROB_RD_OLD_NUM_REG [i][j] = interface->set_signal_in <Tgeneral_address_t> ("rd_old_num_reg", _param->_size_gpr_address);
245            in_RETIRE_ROB_RE_OLD_USE     [i][j] = interface->set_signal_in <Tcontrol_t        > ("re_old_use"    , 1);
246            in_RETIRE_ROB_RE_OLD_NUM_REG [i][j] = interface->set_signal_in <Tspecial_address_t> ("re_old_num_reg", _param->_size_spr_address);
247            in_RETIRE_ROB_RD_NEW_USE     [i][j] = interface->set_signal_in <Tcontrol_t        > ("rd_new_use"    , 1);
248            in_RETIRE_ROB_RD_NEW_NUM_REG [i][j] = interface->set_signal_in <Tgeneral_address_t> ("rd_new_num_reg", _param->_size_gpr_address);
249            in_RETIRE_ROB_RE_NEW_USE     [i][j] = interface->set_signal_in <Tcontrol_t        > ("re_new_use"    , 1);
250            in_RETIRE_ROB_RE_NEW_NUM_REG [i][j] = interface->set_signal_in <Tspecial_address_t> ("re_new_num_reg", _param->_size_spr_address);
251          }
252      }
253    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
254
255    std::string name;
256     
257    component_gpr        = new morpheo::behavioural::generic::registerfile::RegisterFile::RegisterFile * [_param->_nb_ooo_engine];
258    component_gpr_status = new morpheo::behavioural::generic::registerfile::RegisterFile::RegisterFile * [_param->_nb_ooo_engine];
259    component_spr        = new morpheo::behavioural::generic::registerfile::RegisterFile::RegisterFile * [_param->_nb_ooo_engine];
260    component_spr_status = new morpheo::behavioural::generic::registerfile::RegisterFile::RegisterFile * [_param->_nb_ooo_engine];
261     
262    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
263      {
264        name = _name+"_gpr_"+toString(i);
265
266        component_gpr        [i] = new morpheo::behavioural::generic::registerfile::RegisterFile::RegisterFile
267          (name.c_str()
268#ifdef STATISTICS
269           ,param_statistics
270#endif
271           ,_param->_param_gpr [i]
272           ,_usage
273           );
274         
275        _component->set_component (component_gpr[i]->_component
276#ifdef POSITION
277                                   , 50
278                                   , 50
279                                   , 10
280                                   , 10
281#endif
282                                   );
283
284
285        name = _name+"_gpr_status_"+toString(i);
286
287        component_gpr_status [i] = new morpheo::behavioural::generic::registerfile::RegisterFile::RegisterFile
288          (name.c_str()
289#ifdef STATISTICS
290           ,param_statistics
291#endif
292           ,_param->_param_gpr_status [i]
293           ,_usage
294           );
295
296        _component->set_component (component_gpr_status[i]->_component
297#ifdef POSITION
298                                   , 50
299                                   , 50
300                                   , 10
301                                   , 10
302#endif
303                                   );
304
305
306        name = _name+"_spr_"+toString(i);
307         
308        component_spr        [i] = new morpheo::behavioural::generic::registerfile::RegisterFile::RegisterFile
309          (name.c_str()
310#ifdef STATISTICS
311           ,param_statistics
312#endif
313           ,_param->_param_spr [i]
314           ,_usage
315           );
316
317        _component->set_component (component_spr[i]->_component
318#ifdef POSITION
319                                   , 50
320                                   , 50
321                                   , 10
322                                   , 10
323#endif
324                                   );
325
326        name = _name+"_spr_status_"+toString(i);
327
328        component_spr_status [i] = new morpheo::behavioural::generic::registerfile::RegisterFile::RegisterFile
329          (name.c_str()
330#ifdef STATISTICS
331           ,param_statistics
332#endif
333           ,_param->_param_spr_status [i]
334           ,_usage
335           );
336
337        _component->set_component (component_spr_status[i]->_component
338#ifdef POSITION
339                                   , 50
340                                   , 50
341                                   , 10
342                                   , 10
343#endif
344                                   );
345      }
346
347
348    name = _name+"_glue";
349     
350    component_glue       = new morpheo::behavioural::core::multi_execute_loop::execute_loop::register_unit::register_unit_glue::Register_unit_Glue::Register_unit_Glue     
351      (name.c_str()
352#ifdef STATISTICS
353       ,param_statistics
354#endif
355       ,_param->_param_glue
356       ,_usage
357       );
358
359    _component->set_component (component_glue->_component
360#ifdef POSITION
361                               , 50
362                               , 50
363                               , 10
364                               , 10
365#endif
366                               );
367     
368    // ~~~~~[ Instanciation ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
369    std::string name_component;
370   
371    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
372      {
373        name_component = _name+"_gpr_"+toString(i);
374       
375        std::cout << "Instance : " << name_component << std::endl;
376       
377#ifdef POSITION
378        _component->interface_map (name_component,"",
379                                   _name         ,"");
380#endif
381       
382        _component->port_map(name_component,"in_CLOCK"   , _name, "in_CLOCK");
383        _component->port_map(name_component,"in_NRESET"  , _name, "in_NRESET");
384
385        for (uint32_t j=0; j<_param->_nb_gpr_read; j++)
386          {
387            _component->port_map(name_component,
388                                 "in_READ_"+toString(j)+"_VAL",
389                                 _name+"_glue",
390                                 "out_GPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL");
391            _component->port_map(name_component,
392                                 "out_READ_"+toString(j)+"_ACK",
393                                 _name+"_glue",
394                                 "in_GPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK");
395            _component->port_map(name_component,
396                                 "out_READ_"+toString(j)+"_DATA",
397                                 _name+"_glue",
398                                 "in_GPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_DATA");
399            _component->port_map(name_component,
400                                 "in_READ_"+toString(j)+"_ADDRESS",
401                                 _name,
402                                 "in_GPR_READ_"+toString(j)+"_NUM_REG");
403          }
404        for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
405          {
406            _component->port_map(name_component,
407                                 "in_WRITE_"+toString(j)+"_VAL",
408                                 _name+"_glue",
409                                 "out_GPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL");
410            _component->port_map(name_component,
411                                 "out_WRITE_"+toString(j)+"_ACK",
412                                 _name+"_glue",
413                                 "in_GPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK");
414            _component->port_map(name_component,
415                                 "in_WRITE_"+toString(j)+"_ADDRESS",
416                                 _name,
417                                 "in_GPR_WRITE_"+toString(j)+"_NUM_REG"
418                                 );
419            _component->port_map(name_component,
420                                 "in_WRITE_"+toString(j)+"_DATA",
421                                 _name,
422                                 "in_GPR_WRITE_"+toString(j)+"_DATA");
423          }
424
425      }// gpr
426   
427    {
428      for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
429        {
430          name_component = _name+"_gpr_status_"+toString(i);
431         
432          std::cout << "Instance : " << name_component << std::endl;
433         
434#ifdef POSITION
435          _component->interface_map (name_component,"",
436                                     _name         ,"");
437#endif
438         
439          _component->port_map(name_component,"in_CLOCK" , _name, "in_CLOCK");
440          _component->port_map(name_component,"in_NRESET", _name, "in_NRESET");
441         
442          for (uint32_t j=0; j<_param->_nb_gpr_read; j++)
443            {
444              _component->port_map(name_component,
445                                   "in_READ_"+toString(j)+"_VAL" ,
446                                   _name+"_glue",
447                                   "out_GPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_VAL"        );
448              _component->port_map(name_component,
449                                   "out_READ_"+toString(j)+"_ACK",
450                                   _name+"_glue",
451                                   "in_GPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_ACK" );
452              _component->port_map(name_component,
453                                   "out_READ_"+toString(j)+"_DATA",
454                                   _name+"_glue",
455                                   "in_GPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_DATA_VAL"   );
456              _component->port_map(name_component,
457                                   "in_READ_"+toString(j)+"_ADDRESS",
458                                   _name,
459                                   "in_GPR_READ_"+toString(j)+"_NUM_REG");
460            }
461
462          uint32_t x=0;
463          for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
464            {
465              _component->port_map(name_component,
466                                   "in_WRITE_"+toString(x)+"_VAL" ,
467                                   _name+"_glue",
468                                   "out_GPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_VAL");
469              _component->port_map(name_component,
470                                   "out_WRITE_"+toString(x)+"_ACK",
471                                   _name+"_glue",
472                                   "in_GPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_ACK" );
473              _component->port_map(name_component,
474                                   "in_WRITE_"+toString(x)+"_DATA" ,
475                                   _name+"_glue",
476                                   "out_CONST_1");
477
478              _component->port_map(_name+"_glue",
479                                   "out_CONST_1",
480                                   name_component,
481                                   "in_WRITE_"+toString(x)+"_DATA" );
482
483
484              _component->port_map(name_component,
485                                   "in_WRITE_"+toString(x++)+"_ADDRESS",
486                                   _name,
487                                   "in_GPR_WRITE_"+toString(j)+"_NUM_REG");
488            }
489         
490          for (uint32_t j=0; j<_param->_nb_inst_insert_rob [i]; j++)
491            {
492              _component->port_map(name_component,
493                                   "in_WRITE_"+toString(x)+"_VAL" ,
494                                   _name+"_glue",
495                                   "out_INSERT_ROB_GPR_STATUS_"+toString(i)+"_"+toString(j)+"_VAL");
496              _component->port_map(name_component,
497                                   "out_WRITE_"+toString(x)+"_ACK",
498                                   _name+"_glue",
499                                   "in_INSERT_ROB_GPR_STATUS_"+toString(i)+"_"+toString(j)+"_ACK" );
500
501              _component->port_map(name_component,
502                                   "in_WRITE_"+toString(x)+"_DATA",
503                                    _name+"_glue",
504                                   "out_CONST_0"
505                                   );
506              _component->port_map( _name+"_glue",
507                                    "out_CONST_0",
508                                    name_component,
509                                   "in_WRITE_"+toString(x)+"_DATA");
510
511              _component->port_map(name_component,
512                                   "in_WRITE_"+toString(x++)+"_ADDRESS",
513                                   _name,
514                                   "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RD_NUM_REG");
515
516            }
517
518          for (uint32_t j=0; j<_param->_nb_inst_retire_rob [i]; j++)
519            {
520              _component->port_map(name_component,
521                                   "in_WRITE_"+toString(x)+"_VAL" ,
522                                   _name+"_glue",
523                                   "out_RETIRE_ROB_GPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_VAL");
524              _component->port_map(name_component,
525                                   "out_WRITE_"+toString(x)+"_ACK",
526                                   _name+"_glue",
527                                   "in_RETIRE_ROB_GPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK" );
528
529              _component->port_map(name_component,
530                                   "in_WRITE_"+toString(x)+"_DATA" ,
531                                   _name+"_glue",
532                                   "out_CONST_0");
533              _component->port_map(_name+"_glue",
534                                   "out_CONST_0",
535                                   name_component,
536                                   "in_WRITE_"+toString(x)+"_DATA" );
537
538              _component->port_map(name_component,
539                                   "in_WRITE_"+toString(x++)+"_ADDRESS",
540                                   _name,
541                                   "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_OLD_NUM_REG");
542             
543              _component->port_map(name_component,
544                                   "in_WRITE_"+toString(x)+"_VAL" ,
545                                   _name+"_glue",
546                                   "out_RETIRE_ROB_GPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_VAL");
547              _component->port_map(name_component,
548                                   "out_WRITE_"+toString(x)+"_ACK",
549                                   _name+"_glue",
550                                   "in_RETIRE_ROB_GPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK" );
551
552              _component->port_map(name_component,
553                                   "in_WRITE_"+toString(x)+"_DATA" ,
554                                   _name+"_glue",
555                                   "out_CONST_1"
556                                   );
557              _component->port_map(_name+"_glue",
558                                   "out_CONST_1",
559                                   name_component,
560                                   "in_WRITE_"+toString(x)+"_DATA"
561                                   );
562
563              _component->port_map(name_component,
564                                   "in_WRITE_"+toString(x++)+"_ADDRESS",
565                                   _name,
566                                   "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_NEW_NUM_REG");
567            }
568
569        }
570    }// gpr_status
571
572    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
573      {
574        name_component = _name+"_spr_"+toString(i);
575       
576        std::cout << "Instance : " << name_component << std::endl;
577       
578#ifdef POSITION
579        _component->interface_map (name_component,"",
580                                   _name         ,"");
581#endif
582       
583        _component->port_map(name_component,"in_CLOCK" , _name, "in_CLOCK");
584        _component->port_map(name_component,"in_NRESET", _name, "in_NRESET");
585
586        for (uint32_t j=0; j<_param->_nb_spr_read; j++)
587          {
588            _component->port_map(name_component,
589                                 "in_READ_"+toString(j)+"_VAL",
590                                 _name+"_glue",
591                                 "out_SPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL");
592            _component->port_map(name_component,
593                                 "out_READ_"+toString(j)+"_ACK",
594                                 _name+"_glue",
595                                 "in_SPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK");
596            _component->port_map(name_component,
597                                 "out_READ_"+toString(j)+"_DATA",
598                                 _name+"_glue",
599                                 "in_SPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_DATA");
600            _component->port_map(name_component,
601                                 "in_READ_"+toString(j)+"_ADDRESS",
602                                 _name,
603                                 "in_SPR_READ_"+toString(j)+"_NUM_REG");
604          }
605        for (uint32_t j=0; j<_param->_nb_spr_write; j++)
606          {
607            _component->port_map(name_component,
608                                 "in_WRITE_"+toString(j)+"_VAL",
609                                 _name+"_glue",
610                                 "out_SPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL");
611            _component->port_map(name_component,
612                                 "out_WRITE_"+toString(j)+"_ACK",
613                                 _name+"_glue",
614                                 "in_SPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK");
615            _component->port_map(name_component,
616                                 "in_WRITE_"+toString(j)+"_ADDRESS",
617                                 _name,
618                                 "in_SPR_WRITE_"+toString(j)+"_NUM_REG"
619                                 );
620            _component->port_map(name_component,
621                                 "in_WRITE_"+toString(j)+"_DATA",
622                                 _name,
623                                 "in_SPR_WRITE_"+toString(j)+"_DATA");
624          }
625
626      }// spr
627   
628    {
629      for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
630        {
631          name_component = _name+"_spr_status_"+toString(i);
632         
633          std::cout << "Instance : " << name_component << std::endl;
634         
635#ifdef POSITION
636          _component->interface_map (name_component,"",
637                                     _name         ,"");
638#endif
639         
640          _component->port_map(name_component,"in_CLOCK" , _name, "in_CLOCK");
641          _component->port_map(name_component,"in_NRESET", _name, "in_NRESET");
642         
643          for (uint32_t j=0; j<_param->_nb_spr_read; j++)
644            {
645              _component->port_map(name_component,
646                                   "in_READ_"+toString(j)+"_VAL" ,
647                                   _name+"_glue",
648                                   "out_SPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_VAL"        );
649              _component->port_map(name_component,
650                                   "out_READ_"+toString(j)+"_ACK",
651                                   _name+"_glue",
652                                   "in_SPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_ACK" );
653              _component->port_map(name_component,
654                                   "out_READ_"+toString(j)+"_DATA",
655                                   _name+"_glue",
656                                   "in_SPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_DATA_VAL"   );
657              _component->port_map(name_component,
658                                   "in_READ_"+toString(j)+"_ADDRESS",
659                                   _name,
660                                   "in_SPR_READ_"+toString(j)+"_NUM_REG");
661            }
662
663          uint32_t x=0;
664          for (uint32_t j=0; j<_param->_nb_spr_write; j++)
665            {
666              _component->port_map(name_component,
667                                   "in_WRITE_"+toString(x)+"_VAL" ,
668                                   _name+"_glue",
669                                   "out_SPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_VAL");
670              _component->port_map(name_component,
671                                   "out_WRITE_"+toString(x)+"_ACK",
672                                   _name+"_glue",
673                                   "in_SPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_ACK" );
674              _component->port_map(name_component,
675                                   "in_WRITE_"+toString(x)+"_DATA" ,
676                                   _name+"_glue",
677                                   "out_CONST_1");
678              _component->port_map(_name+"_glue",
679                                   "out_CONST_1",
680                                   name_component,
681                                   "in_WRITE_"+toString(x)+"_DATA"
682                                   );
683
684              _component->port_map(name_component,
685                                   "in_WRITE_"+toString(x++)+"_ADDRESS",
686                                   _name,
687                                   "in_SPR_WRITE_"+toString(j)+"_NUM_REG");
688            }
689         
690          for (uint32_t j=0; j<_param->_nb_inst_insert_rob [i]; j++)
691            {
692              _component->port_map(name_component,
693                                   "in_WRITE_"+toString(x)+"_VAL" ,
694                                   _name+"_glue",
695                                   "out_INSERT_ROB_SPR_STATUS_"+toString(i)+"_"+toString(j)+"_VAL");
696              _component->port_map(name_component,
697                                   "out_WRITE_"+toString(x)+"_ACK",
698                                   _name+"_glue",
699                                   "in_INSERT_ROB_SPR_STATUS_"+toString(i)+"_"+toString(j)+"_ACK" );
700
701              _component->port_map(name_component,
702                                   "in_WRITE_"+toString(x)+"_DATA",
703                                    _name+"_glue",
704                                   "out_CONST_0"
705                                   );
706              _component->port_map( _name+"_glue",
707                                    "out_CONST_0",
708                                   name_component,
709                                   "in_WRITE_"+toString(x)+"_DATA"
710                                   );
711
712              _component->port_map(name_component,
713                                   "in_WRITE_"+toString(x++)+"_ADDRESS",
714                                   _name,
715                                   "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RE_NUM_REG");
716
717            }
718
719          for (uint32_t j=0; j<_param->_nb_inst_retire_rob [i]; j++)
720            {
721              _component->port_map(name_component,
722                                   "in_WRITE_"+toString(x)+"_VAL" ,
723                                   _name+"_glue",
724                                   "out_RETIRE_ROB_SPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_VAL");
725              _component->port_map(name_component,
726                                   "out_WRITE_"+toString(x)+"_ACK",
727                                   _name+"_glue",
728                                   "in_RETIRE_ROB_SPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK" );
729
730              _component->port_map(name_component,
731                                   "in_WRITE_"+toString(x)+"_DATA" ,
732                                   _name+"_glue",
733                                   "out_CONST_0");
734              _component->port_map(_name+"_glue",
735                                   "out_CONST_0",
736                                   name_component,
737                                   "in_WRITE_"+toString(x)+"_DATA"
738                                   );
739
740              _component->port_map(name_component,
741                                   "in_WRITE_"+toString(x++)+"_ADDRESS",
742                                   _name,
743                                   "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_OLD_NUM_REG");
744             
745              _component->port_map(name_component,
746                                   "in_WRITE_"+toString(x)+"_VAL" ,
747                                   _name+"_glue",
748                                   "out_RETIRE_ROB_SPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_VAL");
749              _component->port_map(name_component,
750                                   "out_WRITE_"+toString(x)+"_ACK",
751                                   _name+"_glue",
752                                   "in_RETIRE_ROB_SPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK" );
753
754              _component->port_map(name_component,
755                                   "in_WRITE_"+toString(x)+"_DATA" ,
756                                   _name+"_glue",
757                                   "out_CONST_1"
758                                   );
759              _component->port_map(_name+"_glue",
760                                   "out_CONST_1",
761                                   name_component,
762                                   "in_WRITE_"+toString(x)+"_DATA"
763                                   );
764
765              _component->port_map(name_component,
766                                   "in_WRITE_"+toString(x++)+"_ADDRESS",
767                                   _name,
768                                   "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_NEW_NUM_REG");
769            }
770
771        }
772    }// spr_status
773
774    {
775      name_component = _name+"_glue";
776     
777      std::cout << "Instance : " << name_component << std::endl;
778     
779#ifdef POSITION
780      _component->interface_map (name_component,"",
781                                 _name         ,"");
782#endif
783   
784      _component->port_map(name_component,"in_CLOCK" , _name, "in_CLOCK" );
785      _component->port_map(name_component,"in_NRESET", _name, "in_NRESET");
786//       _component->port_map(name_component,"out_CONST_0",_name,"out_CONST_0");
787//       _component->port_map(name_component,"out_CONST_1",_name,"out_CONST_1");
788
789      for (uint32_t j=0; j<_param->_nb_gpr_read; j++)
790        {
791          _component->port_map(name_component,
792                               "in_GPR_READ_"+toString(j)+"_VAL",
793                               _name, 
794                               "in_GPR_READ_"+toString(j)+"_VAL");
795          _component->port_map(name_component,
796                               "out_GPR_READ_"+toString(j)+"_ACK",
797                               _name,
798                               "out_GPR_READ_"+toString(j)+"_ACK"           );
799          if (_param->_have_port_ooo_engine_id == true)
800            _component->port_map(name_component,
801                                 "in_GPR_READ_"+toString(j)+"_OOO_ENGINE_ID" , 
802                                 _name,
803                                 "in_GPR_READ_"+toString(j)+"_OOO_ENGINE_ID");
804          _component->port_map(name_component,
805                               "out_GPR_READ_"+toString(j)+"_DATA"          , 
806                               _name,
807                               "out_GPR_READ_"+toString(j)+"_DATA");
808          _component->port_map(name_component,
809                               "out_GPR_READ_"+toString(j)+"_DATA_VAL"      , 
810                               _name,
811                               "out_GPR_READ_"+toString(j)+"_DATA_VAL");
812
813          for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
814            {
815              _component->port_map(name_component ,
816                                   "out_GPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL",
817                                   _name+"_gpr_"+toString(i),
818                                   "in_READ_"+toString(j)+"_VAL"  );
819              _component->port_map(name_component,
820                                   "in_GPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK"  ,
821                                   _name+"_gpr_"+toString(i),
822                                   "out_READ_"+toString(j)+"_ACK" );
823              _component->port_map(name_component,
824                                   "in_GPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_DATA" ,
825                                   _name+"_gpr_"+toString(i),
826                                   "out_READ_"+toString(j)+"_DATA");
827              _component->port_map(name_component,
828                                   "out_GPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_VAL"        ,
829                                   _name+"_gpr_status_"+toString(i),
830                                   "in_READ_"+toString(j)+"_VAL" );
831              _component->port_map(name_component,
832                                   "in_GPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_ACK" ,
833                                   _name+"_gpr_status_"+toString(i),
834                                   "out_READ_"+toString(j)+"_ACK");
835              _component->port_map(name_component,
836                                   "in_GPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_DATA_VAL"   ,
837                                   _name+"_gpr_status_"+toString(i),
838                                   "out_READ_"+toString(j)+"_DATA");
839            }
840        }
841
842      for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
843        {
844          _component->port_map(name_component,
845                               "in_GPR_WRITE_"+toString(j)+"_VAL",
846                               _name, 
847                               "in_GPR_WRITE_"+toString(j)+"_VAL"           );
848          _component->port_map(name_component,
849                               "out_GPR_WRITE_"+toString(j)+"_ACK", 
850                               _name,
851                               "out_GPR_WRITE_"+toString(j)+"_ACK"           );
852          if (_param->_have_port_ooo_engine_id == true)
853            _component->port_map(name_component,
854                                 "in_GPR_WRITE_"+toString(j)+"_OOO_ENGINE_ID", 
855                                 _name,
856                                 "in_GPR_WRITE_"+toString(j)+"_OOO_ENGINE_ID" );
857         
858          for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
859            {
860              _component->port_map(name_component,
861                                   "out_GPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL"  ,
862                                   _name+"_gpr_"+toString(i),
863                                   "in_WRITE_"+toString(j)+"_VAL" );
864              _component->port_map(name_component,
865                                   "in_GPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK"  ,
866                                   _name+"_gpr_"+toString(i),
867                                   "out_WRITE_"+toString(j)+"_ACK" );
868              _component->port_map(name_component,
869                                   "out_GPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_VAL"        ,
870                                   _name+"_gpr_status_"+toString(i),
871                                   "in_WRITE_"+toString(j)+"_VAL" );
872              _component->port_map(name_component,
873                                   "in_GPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_ACK"        ,
874                                   _name+"_gpr_status_"+toString(i),
875                                   "out_WRITE_"+toString(j)+"_ACK" );
876            }
877        }
878     
879      for (uint32_t j=0; j<_param->_nb_spr_read; j++)
880        {
881          _component->port_map(name_component,
882                               "in_SPR_READ_"+toString(j)+"_VAL",
883                               _name, 
884                               "in_SPR_READ_"+toString(j)+"_VAL");
885          _component->port_map(name_component,
886                               "out_SPR_READ_"+toString(j)+"_ACK",
887                               _name,
888                               "out_SPR_READ_"+toString(j)+"_ACK"           );
889          if (_param->_have_port_ooo_engine_id == true)
890            _component->port_map(name_component,
891                                 "in_SPR_READ_"+toString(j)+"_OOO_ENGINE_ID" , 
892                                 _name,
893                                 "in_SPR_READ_"+toString(j)+"_OOO_ENGINE_ID");
894          _component->port_map(name_component,
895                               "out_SPR_READ_"+toString(j)+"_DATA"          , 
896                               _name,
897                               "out_SPR_READ_"+toString(j)+"_DATA");
898          _component->port_map(name_component,
899                               "out_SPR_READ_"+toString(j)+"_DATA_VAL"      , 
900                               _name,
901                               "out_SPR_READ_"+toString(j)+"_DATA_VAL");
902
903          for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
904            {
905              _component->port_map(name_component ,
906                                   "out_SPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL",
907                                   _name+"_spr_"+toString(i),
908                                   "in_READ_"+toString(j)+"_VAL"  );
909              _component->port_map(name_component,
910                                   "in_SPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK"  ,
911                                   _name+"_spr_"+toString(i),
912                                   "out_READ_"+toString(j)+"_ACK" );
913              _component->port_map(name_component,
914                                   "in_SPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_DATA" ,
915                                   _name+"_spr_"+toString(i),
916                                   "out_READ_"+toString(j)+"_DATA");
917              _component->port_map(name_component,
918                                   "out_SPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_VAL"        ,
919                                   _name+"_spr_status_"+toString(i),
920                                   "in_READ_"+toString(j)+"_VAL" );
921              _component->port_map(name_component,
922                                   "in_SPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_ACK" ,
923                                   _name+"_spr_status_"+toString(i),
924                                   "out_READ_"+toString(j)+"_ACK");
925              _component->port_map(name_component,
926                                   "in_SPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_DATA_VAL"   ,
927                                   _name+"_spr_status_"+toString(i),
928                                   "out_READ_"+toString(j)+"_DATA");
929            }
930        }
931
932      for (uint32_t j=0; j<_param->_nb_spr_write; j++)
933        {
934          _component->port_map(name_component,
935                               "in_SPR_WRITE_"+toString(j)+"_VAL",
936                               _name, 
937                               "in_SPR_WRITE_"+toString(j)+"_VAL"           );
938          _component->port_map(name_component,
939                               "out_SPR_WRITE_"+toString(j)+"_ACK", 
940                               _name,
941                               "out_SPR_WRITE_"+toString(j)+"_ACK"           );
942          if (_param->_have_port_ooo_engine_id == true)
943            _component->port_map(name_component,
944                                 "in_SPR_WRITE_"+toString(j)+"_OOO_ENGINE_ID", 
945                                 _name,
946                                 "in_SPR_WRITE_"+toString(j)+"_OOO_ENGINE_ID" );
947         
948          for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
949            {
950              _component->port_map(name_component,
951                                   "out_SPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL"  ,
952                                   _name+"_spr_"+toString(i),
953                                   "in_WRITE_"+toString(j)+"_VAL" );
954              _component->port_map(name_component,
955                                   "in_SPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK"  ,
956                                   _name+"_spr_"+toString(i),
957                                   "out_WRITE_"+toString(j)+"_ACK" );
958              _component->port_map(name_component,
959                                   "out_SPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_VAL"        ,
960                                   _name+"_spr_status_"+toString(i),
961                                   "in_WRITE_"+toString(j)+"_VAL" );
962              _component->port_map(name_component,
963                                   "in_SPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_ACK"        ,
964                                   _name+"_spr_status_"+toString(i),
965                                   "out_WRITE_"+toString(j)+"_ACK" );
966            }
967        }
968
969      for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
970        {
971          uint32_t x     =_param->_nb_inst_insert_rob [i];
972          uint32_t gpr_j = _param->_nb_gpr_write;
973          uint32_t spr_j = _param->_nb_spr_write;
974
975          for (uint32_t j=0; j<x; j++)
976            {
977              _component->port_map(name_component,
978                                   "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_VAL",
979                                   _name,
980                                   "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_VAL");
981              _component->port_map(name_component,
982                                   "out_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_ACK",
983                                   _name,
984                                   "out_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_ACK");
985              _component->port_map(name_component,
986                                   "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RD_USE",
987                                   _name,
988                                   "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RD_USE");
989              _component->port_map(name_component,
990                                   "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RE_USE",
991                                   _name,
992                                   "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RE_USE");
993              _component->port_map(name_component,
994                                   "out_INSERT_ROB_GPR_STATUS_"+toString(i)+"_"+toString(j)+"_VAL",
995                                   _name+"_gpr_status_"+toString(i),
996                                   "in_WRITE_"+toString(gpr_j)+"_VAL");
997              _component->port_map(name_component,
998                                   "in_INSERT_ROB_GPR_STATUS_"+toString(i)+"_"+toString(j)+"_ACK",
999                                   _name+"_gpr_status_"+toString(i),
1000                                   "out_WRITE_"+toString(gpr_j++)+"_ACK");
1001              _component->port_map(name_component,
1002                                   "out_INSERT_ROB_SPR_STATUS_"+toString(i)+"_"+toString(j)+"_VAL",
1003                                   _name+"_spr_status_"+toString(i),
1004                                   "in_WRITE_"+toString(spr_j)+"_VAL");
1005              _component->port_map(name_component,
1006                                   "in_INSERT_ROB_SPR_STATUS_"+toString(i)+"_"+toString(j)+"_ACK",
1007                                   _name+"_spr_status_"+toString(i),
1008                                   "out_WRITE_"+toString(spr_j++)+"_ACK");
1009            }
1010        }
1011
1012      for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
1013        {
1014          uint32_t x     =_param->_nb_inst_retire_rob [i];
1015          uint32_t gpr_j = _param->_nb_gpr_write + _param->_nb_inst_insert_rob [i];
1016          uint32_t spr_j = _param->_nb_spr_write + _param->_nb_inst_insert_rob [i];
1017
1018          for (uint32_t j=0; j<x; j++)
1019            {
1020              _component->port_map(name_component,
1021                                   "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_VAL",
1022                                   _name,
1023                                   "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_VAL");
1024              _component->port_map(name_component,
1025                                   "out_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_ACK",
1026                                   _name,
1027                                   "out_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_ACK");
1028              _component->port_map(name_component,
1029                                   "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_OLD_USE",
1030                                   _name,
1031                                   "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_OLD_USE");
1032              _component->port_map(name_component,
1033                                   "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_NEW_USE",
1034                                   _name,
1035                                   "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_NEW_USE");
1036              _component->port_map(name_component,
1037                                   "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_OLD_USE",
1038                                   _name, 
1039                                   "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_OLD_USE");
1040              _component->port_map(name_component,
1041                                   "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_NEW_USE",
1042                                   _name,
1043                                   "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_NEW_USE");
1044           
1045              _component->port_map(name_component,
1046                                   "out_RETIRE_ROB_GPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_VAL",
1047                                   _name+"_gpr_status_"+toString(i),
1048                                   "in_WRITE_"+toString(gpr_j)+"_VAL");
1049              _component->port_map(name_component,
1050                                   "in_RETIRE_ROB_GPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK",
1051                                   _name+"_gpr_status_"+toString(i),
1052                                   "out_WRITE_"+toString(gpr_j++)+"_ACK");
1053              _component->port_map(name_component,
1054                                   "out_RETIRE_ROB_GPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_VAL",
1055                                   _name+"_gpr_status_"+toString(i),
1056                                   "in_WRITE_"+toString(gpr_j)+"_VAL");
1057              _component->port_map(name_component,
1058                                   "in_RETIRE_ROB_GPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK",
1059                                   _name+"_gpr_status_"+toString(i),
1060                                   "out_WRITE_"+toString(gpr_j++)+"_ACK");
1061              _component->port_map(name_component,
1062                                   "out_RETIRE_ROB_SPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_VAL",
1063                                   _name+"_spr_status_"+toString(i),
1064                                   "in_WRITE_"+toString(spr_j)+"_VAL");
1065              _component->port_map(name_component,
1066                                   "in_RETIRE_ROB_SPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK",
1067                                   _name+"_spr_status_"+toString(i),
1068                                   "out_WRITE_"+toString(spr_j++)+"_ACK");
1069              _component->port_map(name_component,
1070                                   "out_RETIRE_ROB_SPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_VAL",
1071                                   _name+"_spr_status_"+toString(i),
1072                                   "in_WRITE_"+toString(spr_j)+"_VAL");
1073              _component->port_map(name_component,
1074                                   "in_RETIRE_ROB_SPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK",
1075                                   _name+"_spr_status_"+toString(i),
1076                                   "out_WRITE_"+toString(spr_j++)+"_ACK");
1077            }
1078        }
1079    }// glue
1080
1081//     _component->test_map ();
1082
1083#ifdef POSITION
1084    _component->generate_file();
1085#endif
1086
1087//     std::cout << *_component << std::endl;
1088
1089    log_printf(FUNC,Register_unit,FUNCTION,"End");
1090  };
1091
1092}; // end namespace register_unit
1093}; // end namespace execute_loop
1094}; // end namespace multi_execute_loop
1095}; // end namespace core
1096
1097}; // end namespace behavioural
1098}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.