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

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