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

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

1) Add new algo in ifetch queue
2) Add Cancel bit
3) new config

  • Property svn:keywords set to Id
File size: 40.6 KB
RevLine 
[60]1/*
2 * $Id: Register_unit_allocation.cpp 136 2009-10-20 18:52:15Z rosiere $
3 *
[88]4 * [ Description ]
[60]5 *
6 */
7
8#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/include/Register_unit.h"
[112]9#include "Behavioural/include/Allocation.h"
[60]10
[88]11namespace morpheo {
[60]12namespace behavioural {
13namespace core {
14namespace multi_execute_loop {
15namespace execute_loop {
16namespace register_unit {
17
18#undef  FUNCTION
19#define FUNCTION "Register_unit::allocation"
[75]20  void Register_unit::allocation (
21#ifdef STATISTICS
22                                  morpheo::behavioural::Parameters_Statistics * param_statistics
23#else
24                                  void
25#endif
26                                  )
[60]27  {
28    log_printf(FUNC,Register_unit,FUNCTION,"Begin");
29
[82]30    _component   = new Component (_usage);
[60]31
32    Entity * entity = _component->set_entity (_name       
33                                              ,"Register_unit"
34#ifdef POSITION
35                                              ,COMBINATORY
36#endif
37                                              );
38
39    _interfaces = entity->set_interfaces();
40
[88]41    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[60]42
43    Interface * interface = _interfaces->set_interface(""
44#ifdef POSITION
45                                                       ,IN
46                                                       ,SOUTH,
47                                                       "Generalist interface"
48#endif
49                                                       );
50
51    in_CLOCK        = interface->set_signal_clk              ("clock" ,1, CLOCK_VHDL_YES);
52    in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_YES);
53
[88]54    // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[112]55    {
56      ALLOC1_INTERFACE_BEGIN("gpr_read",IN,NORTH,_("Interface to read the register file"),_param->_nb_gpr_read);
57     
58      ALLOC1_VALACK_IN ( in_GPR_READ_VAL          ,VAL);
59      ALLOC1_VALACK_OUT(out_GPR_READ_ACK          ,ACK);
60      ALLOC1_SIGNAL_IN ( in_GPR_READ_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id);
61      ALLOC1_SIGNAL_IN ( in_GPR_READ_NUM_REG      ,"num_reg"      ,Tgeneral_address_t,_param->_size_gpr_address);
62      ALLOC1_SIGNAL_OUT(out_GPR_READ_DATA         ,"data"         ,Tgeneral_data_t   ,_param->_size_general_data);
63      ALLOC1_SIGNAL_OUT(out_GPR_READ_DATA_VAL     ,"data_val"     ,Tcontrol_t        ,1);
[60]64
[112]65      ALLOC1_INTERFACE_END(_param->_nb_gpr_read);
66    }
67
[88]68    // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[112]69    {
70      ALLOC1_INTERFACE_BEGIN("gpr_write",IN,NORTH,_("Interface to write the register file"),_param->_nb_gpr_write);
[60]71
[112]72      ALLOC1_VALACK_IN ( in_GPR_WRITE_VAL          ,VAL);
73      ALLOC1_VALACK_OUT(out_GPR_WRITE_ACK          ,ACK);
74      ALLOC1_SIGNAL_IN ( in_GPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id);
75      ALLOC1_SIGNAL_IN ( in_GPR_WRITE_NUM_REG      ,"num_reg"      ,Tgeneral_address_t,_param->_size_gpr_address);
76      ALLOC1_SIGNAL_IN ( in_GPR_WRITE_DATA         ,"data"         ,Tgeneral_data_t   ,_param->_size_general_data);
[60]77
[112]78      ALLOC1_INTERFACE_END(_param->_nb_gpr_write);
79    }
[60]80
[112]81    // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
82    {
83      ALLOC1_INTERFACE_BEGIN("spr_read",IN,NORTH,_("Interface to read the register file"),_param->_nb_spr_read);
84     
85      ALLOC1_VALACK_IN ( in_SPR_READ_VAL          ,VAL);
86      ALLOC1_VALACK_OUT(out_SPR_READ_ACK          ,ACK);
87      ALLOC1_SIGNAL_IN ( in_SPR_READ_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id);
88      ALLOC1_SIGNAL_IN ( in_SPR_READ_NUM_REG      ,"num_reg"      ,Tspecial_address_t,_param->_size_spr_address);
89      ALLOC1_SIGNAL_OUT(out_SPR_READ_DATA         ,"data"         ,Tspecial_data_t   ,_param->_size_special_data);
90      ALLOC1_SIGNAL_OUT(out_SPR_READ_DATA_VAL     ,"data_val"     ,Tcontrol_t        ,1);
[60]91
[112]92      ALLOC1_INTERFACE_END(_param->_nb_spr_read);
93    }
[60]94
[112]95    // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
96    {
97      ALLOC1_INTERFACE_BEGIN("spr_write",IN,NORTH,_("Interface to write the register file"),_param->_nb_spr_write);
[60]98
[112]99      ALLOC1_VALACK_IN ( in_SPR_WRITE_VAL          ,VAL);
100      ALLOC1_VALACK_OUT(out_SPR_WRITE_ACK          ,ACK);
101      ALLOC1_SIGNAL_IN ( in_SPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id);
102      ALLOC1_SIGNAL_IN ( in_SPR_WRITE_NUM_REG      ,"num_reg"      ,Tspecial_address_t,_param->_size_spr_address);
103      ALLOC1_SIGNAL_IN ( in_SPR_WRITE_DATA         ,"data"         ,Tspecial_data_t   ,_param->_size_special_data);
[60]104
[112]105      ALLOC1_INTERFACE_END(_param->_nb_spr_write);
106    }
[60]107
[136]108    // ~~~~~[ Interface "issue" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[112]109    {
[136]110      ALLOC1_INTERFACE_BEGIN("issue",IN,WEST,_("Interface to update status (issue)"),_param->_nb_inst_issue);
[112]111     
[136]112      ALLOC1_VALACK_IN ( in_ISSUE_VAL          ,VAL);
113      ALLOC1_VALACK_OUT(out_ISSUE_ACK          ,ACK);
114      ALLOC1_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id);
115      ALLOC1_SIGNAL_IN ( in_ISSUE_RD_USE       ,"rd_use"       ,Tcontrol_t        ,1                          );
116      ALLOC1_SIGNAL_IN ( in_ISSUE_RD_NUM_REG   ,"rd_num_reg"   ,Tgeneral_address_t,_param->_size_gpr_address  );
117      ALLOC1_SIGNAL_IN ( in_ISSUE_RE_USE       ,"re_use"       ,Tcontrol_t        ,1                          );
118      ALLOC1_SIGNAL_IN ( in_ISSUE_RE_NUM_REG   ,"re_num_reg"   ,Tspecial_address_t,_param->_size_spr_address  );
[112]119     
[136]120      ALLOC1_INTERFACE_END(_param->_nb_inst_issue);
[112]121    }
[60]122
[136]123//     // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
124//     {
125//       ALLOC2_INTERFACE_BEGIN("insert_rob",IN,WEST,_("Interface to update status (insert)"),_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
126     
127//       _ALLOC2_VALACK_IN ( in_INSERT_ROB_VAL       ,VAL                                                      ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
128//       _ALLOC2_VALACK_OUT(out_INSERT_ROB_ACK       ,ACK                                                      ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
129//       _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RD_USE    ,"rd_use"    ,Tcontrol_t        ,1                        ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
130//       _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RD_NUM_REG,"rd_num_reg",Tgeneral_address_t,_param->_size_gpr_address,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
131//       _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RE_USE    ,"re_use"    ,Tcontrol_t        ,1                        ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
132//       _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RE_NUM_REG,"re_num_reg",Tspecial_address_t,_param->_size_spr_address,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
133     
134//       ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
135//     }
136
[88]137//     // ~~~~~[ Interface "retire_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
138//     in_RETIRE_ROB_VAL            = new SC_IN (Tcontrol_t        )  ** [_param->_nb_ooo_engine];
139//     out_RETIRE_ROB_ACK            = new SC_OUT(Tcontrol_t        )  ** [_param->_nb_ooo_engine];
140//     in_RETIRE_ROB_RD_OLD_USE     = new SC_IN (Tcontrol_t        )  ** [_param->_nb_ooo_engine];
141//     in_RETIRE_ROB_RD_OLD_NUM_REG = new SC_IN (Tgeneral_address_t)  ** [_param->_nb_ooo_engine];
142//     in_RETIRE_ROB_RE_OLD_USE     = new SC_IN (Tcontrol_t        )  ** [_param->_nb_ooo_engine];
143//     in_RETIRE_ROB_RE_OLD_NUM_REG = new SC_IN (Tspecial_address_t)  ** [_param->_nb_ooo_engine];
144//     in_RETIRE_ROB_RD_NEW_USE     = new SC_IN (Tcontrol_t        )  ** [_param->_nb_ooo_engine];
145//     in_RETIRE_ROB_RD_NEW_NUM_REG = new SC_IN (Tgeneral_address_t)  ** [_param->_nb_ooo_engine];
146//     in_RETIRE_ROB_RE_NEW_USE     = new SC_IN (Tcontrol_t        )  ** [_param->_nb_ooo_engine];
147//     in_RETIRE_ROB_RE_NEW_NUM_REG = new SC_IN (Tspecial_address_t)  ** [_param->_nb_ooo_engine];
[60]148
[88]149//     for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
150//       {
151//      uint32_t x=_param->_nb_inst_retire_rob [i];
[60]152
[88]153//      in_RETIRE_ROB_VAL            [i] = new SC_IN (Tcontrol_t        )  * [x];
154//      out_RETIRE_ROB_ACK            [i] = new SC_OUT(Tcontrol_t        )  * [x];
155//      in_RETIRE_ROB_RD_OLD_USE     [i] = new SC_IN (Tcontrol_t        )  * [x];
156//      in_RETIRE_ROB_RD_OLD_NUM_REG [i] = new SC_IN (Tgeneral_address_t)  * [x];
157//      in_RETIRE_ROB_RE_OLD_USE     [i] = new SC_IN (Tcontrol_t        )  * [x];
158//      in_RETIRE_ROB_RE_OLD_NUM_REG [i] = new SC_IN (Tspecial_address_t)  * [x];
159//      in_RETIRE_ROB_RD_NEW_USE     [i] = new SC_IN (Tcontrol_t        )  * [x];
160//      in_RETIRE_ROB_RD_NEW_NUM_REG [i] = new SC_IN (Tgeneral_address_t)  * [x];
161//      in_RETIRE_ROB_RE_NEW_USE     [i] = new SC_IN (Tcontrol_t        )  * [x];
162//      in_RETIRE_ROB_RE_NEW_NUM_REG [i] = new SC_IN (Tspecial_address_t)  * [x];
[60]163
[88]164//      for (uint32_t j=0; j<x; j++)
165//        {
166//          Interface_fifo * interface = _interfaces->set_interface("retire_rob_"+toString(i)+"_"+toString(j)
167// #ifdef POSITION
168//                                                                  ,IN
169//                                                                  ,WEST
170//                                                                  ,"Interface to update status (retire)"
171// #endif
172//                                                                  );
[60]173
174
[88]175//          in_RETIRE_ROB_VAL            [i][j] = interface->set_signal_valack_in  (VAL);
176//         out_RETIRE_ROB_ACK            [i][j] = interface->set_signal_valack_out (ACK);
177//          in_RETIRE_ROB_RD_OLD_USE     [i][j] = interface->set_signal_in <Tcontrol_t        > ("rd_old_use"    , 1);
178//          in_RETIRE_ROB_RD_OLD_NUM_REG [i][j] = interface->set_signal_in <Tgeneral_address_t> ("rd_old_num_reg", _param->_size_gpr_address);
179//          in_RETIRE_ROB_RE_OLD_USE     [i][j] = interface->set_signal_in <Tcontrol_t        > ("re_old_use"    , 1);
180//          in_RETIRE_ROB_RE_OLD_NUM_REG [i][j] = interface->set_signal_in <Tspecial_address_t> ("re_old_num_reg", _param->_size_spr_address);
181//          in_RETIRE_ROB_RD_NEW_USE     [i][j] = interface->set_signal_in <Tcontrol_t        > ("rd_new_use"    , 1);
182//          in_RETIRE_ROB_RD_NEW_NUM_REG [i][j] = interface->set_signal_in <Tgeneral_address_t> ("rd_new_num_reg", _param->_size_gpr_address);
183//          in_RETIRE_ROB_RE_NEW_USE     [i][j] = interface->set_signal_in <Tcontrol_t        > ("re_new_use"    , 1);
184//          in_RETIRE_ROB_RE_NEW_NUM_REG [i][j] = interface->set_signal_in <Tspecial_address_t> ("re_new_num_reg", _param->_size_spr_address);
185//        }
186//       }
[60]187
[88]188    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
189
[75]190    std::string name;
[60]191     
192    component_gpr        = new morpheo::behavioural::generic::registerfile::RegisterFile::RegisterFile * [_param->_nb_ooo_engine];
193    component_gpr_status = new morpheo::behavioural::generic::registerfile::RegisterFile::RegisterFile * [_param->_nb_ooo_engine];
194    component_spr        = new morpheo::behavioural::generic::registerfile::RegisterFile::RegisterFile * [_param->_nb_ooo_engine];
195    component_spr_status = new morpheo::behavioural::generic::registerfile::RegisterFile::RegisterFile * [_param->_nb_ooo_engine];
[131]196
197//     component_gpr        = new morpheo::behavioural::generic::registerfile::registerfile_multi_banked::RegisterFile_Multi_Banked::RegisterFile_Multi_Banked * [_param->_nb_ooo_engine];
198//     component_gpr_status = new morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::RegisterFile_Monolithic  ::RegisterFile_Monolithic   * [_param->_nb_ooo_engine];
199//     component_spr        = new morpheo::behavioural::generic::registerfile::registerfile_multi_banked::RegisterFile_Multi_Banked::RegisterFile_Multi_Banked * [_param->_nb_ooo_engine];
200//     component_spr_status = new morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::RegisterFile_Monolithic  ::RegisterFile_Monolithic   * [_param->_nb_ooo_engine];
[60]201     
202    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
203      {
204        name = _name+"_gpr_"+toString(i);
[88]205        log_printf(INFO,Register_unit,FUNCTION,_("Create   : %s"),name.c_str());
[60]206
[131]207        component_gpr [i] = new morpheo::behavioural::generic::registerfile::RegisterFile::RegisterFile
208//      component_gpr [i] = new morpheo::behavioural::generic::registerfile::registerfile_multi_banked::RegisterFile_Multi_Banked::RegisterFile_Multi_Banked
[60]209          (name.c_str()
210#ifdef STATISTICS
[75]211           ,param_statistics
[60]212#endif
[131]213           ,_param->_param_gpr [i]//->_param_registerfile_multi_banked
[82]214           ,_usage
[60]215           );
216         
217        _component->set_component (component_gpr[i]->_component
218#ifdef POSITION
219                                   , 50
220                                   , 50
221                                   , 10
222                                   , 10
223#endif
224                                   );
225
226
227        name = _name+"_gpr_status_"+toString(i);
[88]228        log_printf(INFO,Register_unit,FUNCTION,_("Create   : %s"),name.c_str());
[60]229
[131]230        component_gpr_status [i] = new morpheo::behavioural::generic::registerfile::RegisterFile::RegisterFile
231//      component_gpr_status [i] = new morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::RegisterFile_Monolithic  ::RegisterFile_Monolithic
[60]232          (name.c_str()
233#ifdef STATISTICS
[75]234           ,param_statistics
[60]235#endif
[131]236           ,_param->_param_gpr_status [i]//->_param_registerfile_monolithic
[82]237           ,_usage
[60]238           );
239
240        _component->set_component (component_gpr_status[i]->_component
241#ifdef POSITION
242                                   , 50
243                                   , 50
244                                   , 10
245                                   , 10
246#endif
247                                   );
248
249
250        name = _name+"_spr_"+toString(i);
[88]251        log_printf(INFO,Register_unit,FUNCTION,_("Create   : %s"),name.c_str());
[60]252         
[131]253        component_spr [i] = new morpheo::behavioural::generic::registerfile::RegisterFile::RegisterFile
254//      component_spr [i] = new morpheo::behavioural::generic::registerfile::registerfile_multi_banked::RegisterFile_Multi_Banked::RegisterFile_Multi_Banked
[60]255          (name.c_str()
256#ifdef STATISTICS
[75]257           ,param_statistics
[60]258#endif
[131]259           ,_param->_param_spr [i]//->_param_registerfile_multi_banked
[82]260           ,_usage
[60]261           );
262
263        _component->set_component (component_spr[i]->_component
264#ifdef POSITION
265                                   , 50
266                                   , 50
267                                   , 10
268                                   , 10
269#endif
270                                   );
271
272        name = _name+"_spr_status_"+toString(i);
[88]273        log_printf(INFO,Register_unit,FUNCTION,_("Create   : %s"),name.c_str());
[60]274
[131]275        component_spr_status [i] = new morpheo::behavioural::generic::registerfile::RegisterFile::RegisterFile
276//      component_spr_status [i] = new morpheo::behavioural::generic::registerfile::registerfile_monolithic::RegisterFile_Monolithic::RegisterFile_Monolithic
[60]277          (name.c_str()
278#ifdef STATISTICS
[75]279           ,param_statistics
[60]280#endif
[131]281           ,_param->_param_spr_status [i]//->_param_registerfile_monolithic
[82]282           ,_usage
[60]283           );
284
285        _component->set_component (component_spr_status[i]->_component
286#ifdef POSITION
287                                   , 50
288                                   , 50
289                                   , 10
290                                   , 10
291#endif
292                                   );
293      }
294
[131]295    {
296      name = _name+"_glue";
297      log_printf(INFO,Register_unit,FUNCTION,_("Create   : %s"),name.c_str());
298     
299      component_glue = new morpheo::behavioural::core::multi_execute_loop::execute_loop::register_unit::register_unit_glue::Register_unit_Glue::Register_unit_Glue     
300        (name.c_str()
[60]301#ifdef STATISTICS
[131]302         ,param_statistics
[60]303#endif
[131]304         ,_param->_param_glue
305         ,_usage
306         );
307     
308      _component->set_component (component_glue->_component
[60]309#ifdef POSITION
[131]310                                 , 50
311                                 , 50
312                                 , 10
313                                 , 10
[60]314#endif
[131]315                                 );
316    }
[60]317     
318    // ~~~~~[ Instanciation ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
[128]319    std::string src,dest;
[131]320
321    // -------------------------------------------------------------------   
322    // -----[ gpr ]-------------------------------------------------------   
323    // -------------------------------------------------------------------   
[60]324    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
325      {
[128]326        src = _name+"_gpr_"+toString(i);
[60]327       
[128]328        log_printf(INFO,Register_unit,FUNCTION,_("Instance : %s"),src.c_str());
[60]329       
[131]330        // -----[ instance "" ]-----------------------------------------------   
[128]331        {
332          dest = _name;
[60]333#ifdef POSITION
[128]334          _component->interface_map (src ,"",
335                                     dest,"");
[60]336#endif
[128]337          PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
338          PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
339        }
[60]340
[131]341        // -----[ instance "read" ]-------------------------------------------   
[60]342        for (uint32_t j=0; j<_param->_nb_gpr_read; j++)
343          {
[128]344            dest = _name+"_glue";
345           
346#ifdef POSITION
347            _component->interface_map (src ,    "read_"+toString(j),
348                                       dest,"gpr_read_registerfile_"+toString(i)+"_"+toString(j));
349#endif
350
351            COMPONENT_MAP(_component,src , "in_READ_"                                 +toString(j)+"_VAL",
352                                     dest,"out_GPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL");
353            COMPONENT_MAP(_component,src ,"out_READ_"                                 +toString(j)+"_ACK",
354                                     dest, "in_GPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK");
355            COMPONENT_MAP(_component,src ,"out_READ_"                                 +toString(j)+"_DATA",
356                                     dest, "in_GPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_DATA");
357
358            dest = _name;
359
360            PORT_MAP     (_component,src , "in_READ_"    +toString(j)+"_ADDRESS",
361                                     dest, "in_GPR_READ_"+toString(j)+"_NUM_REG");
[60]362          }
[128]363
[131]364        // -----[ instance "write" ]------------------------------------------   
[60]365        for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
366          {
[128]367            dest = _name+"_glue";
368           
369#ifdef POSITION
370            _component->interface_map (src ,    "write_"+toString(j),
371                                       dest,"gpr_write_registerfile_"+toString(i)+"_"+toString(j));
372#endif
373
374            COMPONENT_MAP(_component,src , "in_WRITE_"                                 +toString(j)+"_VAL",
375                                     dest,"out_GPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL");
376            COMPONENT_MAP(_component,src ,"out_WRITE_"                                 +toString(j)+"_ACK",
377                                     dest, "in_GPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK");
378
379            dest = _name;
380
381            PORT_MAP     (_component,src , "in_WRITE_"    +toString(j)+"_ADDRESS",
382                                     dest, "in_GPR_WRITE_"+toString(j)+"_NUM_REG");
383            PORT_MAP     (_component,src , "in_WRITE_"    +toString(j)+"_DATA",
384                                     dest, "in_GPR_WRITE_"+toString(j)+"_DATA");
[60]385          }
386      }// gpr
387   
[131]388    // -------------------------------------------------------------------   
389    // -----[ gpr_status ]------------------------------------------------
390    // -------------------------------------------------------------------   
[60]391    {
[136]392      uint32_t x=0;
393
[60]394      for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
395        {
[128]396          src = _name+"_gpr_status_"+toString(i);
[60]397         
[128]398          log_printf(INFO,Register_unit,FUNCTION,_("Instance : %s"),src.c_str());
399
400          {
401            dest = _name;
[60]402#ifdef POSITION
[128]403            _component->interface_map (src ,"",
404                                       dest,"");
[60]405#endif
[128]406            PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
407            PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
408          }
409         
[60]410          for (uint32_t j=0; j<_param->_nb_gpr_read; j++)
411            {
[128]412              dest = _name+"_glue";
413             
414#ifdef POSITION
415              _component->interface_map (src ,    "read_"+toString(j),
416                                         dest,"gpr_read_status_"+toString(i)+"_"+toString(j));
417#endif
418
419              COMPONENT_MAP(_component,src , "in_READ_"                           +toString(j)+"_VAL",
420                                       dest,"out_GPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_VAL");
421              COMPONENT_MAP(_component,src ,"out_READ_"                           +toString(j)+"_ACK",
422                                       dest, "in_GPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_ACK");
423              COMPONENT_MAP(_component,src ,"out_READ_"                           +toString(j)+"_DATA",
424                                       dest, "in_GPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_DATA_VAL");
425
426              dest = _name;
427             
428              PORT_MAP     (_component,src , "in_READ_"    +toString(j)+"_ADDRESS",
429                                       dest, "in_GPR_READ_"+toString(j)+"_NUM_REG");
[60]430            }
431
432          for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
433            {
[128]434              dest = _name+"_glue";
435             
436#ifdef POSITION
[131]437              _component->interface_map (src ,    "write_"+toString(x),
[128]438                                         dest,"gpr_write_status_"+toString(i)+"_"+toString(j));
439#endif
[78]440
[128]441              COMPONENT_MAP(_component,src , "in_WRITE_"                           +toString(x)+"_VAL",
442                                       dest,"out_GPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_VAL");
443              COMPONENT_MAP(_component,src ,"out_WRITE_"                           +toString(x)+"_ACK",
444                                       dest, "in_GPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_ACK");
445              COMPONENT_MAP(_component,src , "in_WRITE_"                           +toString(x)+"_DATA",
446                                       dest,"out_GPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_DATA");
447//                                     dest,"out_CONST_1");
448             
449              dest = _name;
450             
451              PORT_MAP     (_component,src , "in_WRITE_"    +toString(x)+"_ADDRESS",
452                                       dest, "in_GPR_WRITE_"+toString(j)+"_NUM_REG");
[78]453
[128]454              x++;
[60]455            }
456         
[136]457//        for (uint32_t j=0; j<_param->_nb_inst_insert_rob [i]; j++)
458//          {
459//               dest = _name+"_glue";
[128]460             
[136]461// #ifdef POSITION
462//               _component->interface_map (src ,    "write_"+toString(j),
463//                                          dest,"insert_rob_gpr_status_"+toString(i)+"_"+toString(j));
464// #endif
465
466//               COMPONENT_MAP(_component,src , "in_WRITE_"                                +toString(x)+"_VAL",
467//                                        dest,"out_INSERT_ROB_GPR_STATUS_"+toString(i)+"_"+toString(j)+"_VAL");
468//               COMPONENT_MAP(_component,src ,"out_WRITE_"                                +toString(x)+"_ACK",
469//                                        dest, "in_INSERT_ROB_GPR_STATUS_"+toString(i)+"_"+toString(j)+"_ACK");
470//               COMPONENT_MAP(_component,src , "in_WRITE_"                                +toString(x)+"_DATA",
471//                                        dest,"out_INSERT_ROB_GPR_STATUS_"+toString(i)+"_"+toString(j)+"_DATA");
472// //                                     dest,"out_CONST_0");
473             
474//               dest = _name;
475             
476//               PORT_MAP     (_component,src , "in_WRITE_"                     +toString(x)+"_ADDRESS",
477//                                        dest, "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RD_NUM_REG");
478
479//               x++;
480//          }
481
482      for (uint32_t j=0; j<_param->_nb_inst_issue; j++)
483        {
484          dest = _name+"_glue";
485         
[128]486#ifdef POSITION
[136]487          _component->interface_map (src ,"write_"+toString(j),
488                                     dest,"issue_gpr_status_"+toString(i)+"_"+toString(j));
[128]489#endif
[60]490
[136]491          COMPONENT_MAP(_component,src , "in_WRITE_"                           +toString(x)+"_VAL",
492                                   dest,"out_ISSUE_GPR_STATUS_"+toString(i)+"_"+toString(j)+"_VAL");
493          COMPONENT_MAP(_component,src ,"out_WRITE_"                           +toString(x)+"_ACK",
494                                   dest, "in_ISSUE_GPR_STATUS_"+toString(i)+"_"+toString(j)+"_ACK");
495          COMPONENT_MAP(_component,src , "in_WRITE_"                           +toString(x)+"_DATA",
496                                   dest,"out_ISSUE_GPR_STATUS_"+toString(i)+"_"+toString(j)+"_DATA");
497//                                 dest,"out_CONST_0");
[128]498             
[136]499          dest = _name;
[128]500             
[136]501          PORT_MAP     (_component,src , "in_WRITE_"+toString(x)+"_ADDRESS",
502                                   dest, "in_ISSUE_"+toString(j)+"_RD_NUM_REG");
[60]503
[136]504          x++;
[60]505        }
[136]506        }
[60]507    }// gpr_status
508
[131]509    // -------------------------------------------------------------------   
510    // -----[ spr ]-------------------------------------------------------
511    // -------------------------------------------------------------------   
[60]512    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
513      {
[128]514        src = _name+"_spr_"+toString(i);
[60]515       
[128]516        log_printf(INFO,Register_unit,FUNCTION,_("Instance : %s"),src.c_str());
[60]517       
[128]518        {
519          dest = _name;
[60]520#ifdef POSITION
[128]521          _component->interface_map (src ,"",
522                                     dest,"");
[60]523#endif
[128]524          PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
525          PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
526        }
[60]527
528        for (uint32_t j=0; j<_param->_nb_spr_read; j++)
529          {
[128]530            dest = _name+"_glue";
531           
532#ifdef POSITION
533            _component->interface_map (src ,    "read_"+toString(j),
534                                       dest,"spr_read_registerfile_"+toString(i)+"_"+toString(j));
535#endif
536
537            COMPONENT_MAP(_component,src , "in_READ_"                                 +toString(j)+"_VAL",
538                                     dest,"out_SPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL");
539            COMPONENT_MAP(_component,src ,"out_READ_"                                 +toString(j)+"_ACK",
540                                     dest, "in_SPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK");
541            COMPONENT_MAP(_component,src ,"out_READ_"                                 +toString(j)+"_DATA",
542                                     dest, "in_SPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_DATA");
543
544            dest = _name;
545
546            PORT_MAP     (_component,src , "in_READ_"    +toString(j)+"_ADDRESS",
547                                     dest, "in_SPR_READ_"+toString(j)+"_NUM_REG");
[60]548          }
[128]549
[60]550        for (uint32_t j=0; j<_param->_nb_spr_write; j++)
551          {
[128]552            dest = _name+"_glue";
553           
554#ifdef POSITION
555            _component->interface_map (src ,    "write_"+toString(j),
556                                       dest,"spr_write_registerfile_"+toString(i)+"_"+toString(j));
557#endif
558
559            COMPONENT_MAP(_component,src , "in_WRITE_"                                 +toString(j)+"_VAL",
560                                     dest,"out_SPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL");
561            COMPONENT_MAP(_component,src ,"out_WRITE_"                                 +toString(j)+"_ACK",
562                                     dest, "in_SPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK");
563
564            dest = _name;
565
566            PORT_MAP     (_component,src , "in_WRITE_"    +toString(j)+"_ADDRESS",
567                                     dest, "in_SPR_WRITE_"+toString(j)+"_NUM_REG");
568            PORT_MAP     (_component,src , "in_WRITE_"    +toString(j)+"_DATA",
569                                     dest, "in_SPR_WRITE_"+toString(j)+"_DATA");
[60]570          }
571      }// spr
572   
[131]573    // -------------------------------------------------------------------   
574    // -----[ spr_status ]------------------------------------------------
575    // -------------------------------------------------------------------   
[60]576    {
[136]577      uint32_t x=0;
[60]578      for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
579        {
[128]580          src = _name+"_spr_status_"+toString(i);
[60]581         
[128]582          log_printf(INFO,Register_unit,FUNCTION,_("Instance : %s"),src.c_str());       
[88]583 
[128]584          {
585            dest = _name;
[60]586#ifdef POSITION
[128]587            _component->interface_map (src ,"",
588                                       dest,"");
[60]589#endif
[128]590            PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
591            PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
592          }
593
[60]594          for (uint32_t j=0; j<_param->_nb_spr_read; j++)
595            {
[128]596              dest = _name+"_glue";
597             
598#ifdef POSITION
599              _component->interface_map (src ,    "read_"+toString(j),
600                                         dest,"spr_read_status_"+toString(i)+"_"+toString(j));
601#endif
602
603              COMPONENT_MAP(_component,src , "in_READ_"                           +toString(j)+"_VAL",
604                                       dest,"out_SPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_VAL");
605              COMPONENT_MAP(_component,src ,"out_READ_"                           +toString(j)+"_ACK",
606                                       dest, "in_SPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_ACK");
607              COMPONENT_MAP(_component,src ,"out_READ_"                           +toString(j)+"_DATA",
608                                       dest, "in_SPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_DATA_VAL");
609
610              dest = _name;
611             
612              PORT_MAP     (_component,src , "in_READ_"    +toString(j)+"_ADDRESS",
613                                       dest, "in_SPR_READ_"+toString(j)+"_NUM_REG");
[60]614            }
615
616          for (uint32_t j=0; j<_param->_nb_spr_write; j++)
617            {
[128]618              dest = _name+"_glue";
619             
620#ifdef POSITION
[131]621              _component->interface_map (src ,    "write_"+toString(x),
[128]622                                         dest,"spr_write_status_"+toString(i)+"_"+toString(j));
623#endif
[78]624
[128]625              COMPONENT_MAP(_component,src , "in_WRITE_"                           +toString(x)+"_VAL",
626                                       dest,"out_SPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_VAL");
627              COMPONENT_MAP(_component,src ,"out_WRITE_"                           +toString(x)+"_ACK",
628                                       dest, "in_SPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_ACK");
629              COMPONENT_MAP(_component,src , "in_WRITE_"                           +toString(x)+"_DATA",
630                                       dest,"out_SPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_DATA");
631//                                     dest,"out_CONST_1");
632             
633              dest = _name;
634             
635              PORT_MAP     (_component,src , "in_WRITE_"    +toString(x)+"_ADDRESS",
636                                       dest, "in_SPR_WRITE_"+toString(j)+"_NUM_REG");
637
638              x++;
[60]639            }
[136]640
641//        for (uint32_t j=0; j<_param->_nb_inst_insert_rob [i]; j++)
642//          {
643//               dest = _name+"_glue";
644             
645// #ifdef POSITION
646//               _component->interface_map (src ,    "write_"+toString(x),
647//                                          dest,"insert_rob_spr_status_"+toString(i)+"_"+toString(j));
648// #endif
649
650//               COMPONENT_MAP(_component,src , "in_WRITE_"                                +toString(x)+"_VAL",
651//                                        dest,"out_INSERT_ROB_SPR_STATUS_"+toString(i)+"_"+toString(j)+"_VAL");
652//               COMPONENT_MAP(_component,src ,"out_WRITE_"                                +toString(x)+"_ACK",
653//                                        dest, "in_INSERT_ROB_SPR_STATUS_"+toString(i)+"_"+toString(j)+"_ACK");
654//               COMPONENT_MAP(_component,src , "in_WRITE_"                                +toString(x)+"_DATA",
655//                                        dest,"out_INSERT_ROB_SPR_STATUS_"+toString(i)+"_"+toString(j)+"_DATA");
656// //                                     dest,"out_CONST_0");
657
658//               dest = _name;
659             
660//               PORT_MAP     (_component,src , "in_WRITE_"                     +toString(x)+"_ADDRESS",
661//                                        dest, "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RE_NUM_REG");
662
663//               x++;
664//          }
[60]665         
[136]666      for (uint32_t j=0; j<_param->_nb_inst_issue; j++)
667        {
668          dest = _name+"_glue";
669         
[128]670#ifdef POSITION
[136]671          _component->interface_map (src ,    "write_"+toString(x),
672                                     dest,"issue_spr_status_"+toString(i)+"_"+toString(j));
[128]673#endif
[136]674         
675          COMPONENT_MAP(_component,src , "in_WRITE_"                           +toString(x)+"_VAL",
676                                   dest,"out_ISSUE_SPR_STATUS_"+toString(i)+"_"+toString(j)+"_VAL");
677          COMPONENT_MAP(_component,src ,"out_WRITE_"                           +toString(x)+"_ACK",
678                                   dest, "in_ISSUE_SPR_STATUS_"+toString(i)+"_"+toString(j)+"_ACK");
679          COMPONENT_MAP(_component,src , "in_WRITE_"                           +toString(x)+"_DATA",
680                                   dest,"out_ISSUE_SPR_STATUS_"+toString(i)+"_"+toString(j)+"_DATA");
681//                                 dest,"out_CONST_0");
[60]682
[136]683          dest = _name;
[128]684             
[136]685          PORT_MAP     (_component,src , "in_WRITE_"+toString(x)+"_ADDRESS",
686                                   dest, "in_ISSUE_"+toString(j)+"_RE_NUM_REG");
687         
688          x++;
689        }
[60]690
691        }
692    }// spr_status
693
[131]694    // -------------------------------------------------------------------   
695    // -----[ glue ]------------------------------------------------------
696    // -------------------------------------------------------------------   
[60]697    {
[128]698      src = _name+"_glue";
[60]699     
[128]700      log_printf(INFO,Register_unit,FUNCTION,_("Instance : %s"),src.c_str()); 
[88]701   
[128]702        {
703          dest = _name;
[60]704#ifdef POSITION
[128]705          _component->interface_map (src ,"",
706                                     dest,"");
[60]707#endif
[128]708          PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
709          PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
710        }
[62]711
[60]712      for (uint32_t j=0; j<_param->_nb_gpr_read; j++)
713        {
[128]714          dest = _name;
715             
716#ifdef POSITION
717          _component->interface_map (src ,"gpr_read_"+toString(j),
718                                     dest,"gpr_read_"+toString(j));
719#endif
720
721          PORT_MAP(_component,src , "in_GPR_READ_"+toString(j)+"_VAL",
722                              dest, "in_GPR_READ_"+toString(j)+"_VAL");
723          PORT_MAP(_component,src ,"out_GPR_READ_"+toString(j)+"_ACK",
724                              dest,"out_GPR_READ_"+toString(j)+"_ACK");
[60]725          if (_param->_have_port_ooo_engine_id == true)
[128]726          PORT_MAP(_component,src , "in_GPR_READ_"+toString(j)+"_OOO_ENGINE_ID",
727                              dest, "in_GPR_READ_"+toString(j)+"_OOO_ENGINE_ID");
728          PORT_MAP(_component,src ,"out_GPR_READ_"+toString(j)+"_DATA",
729                              dest,"out_GPR_READ_"+toString(j)+"_DATA");
730          PORT_MAP(_component,src ,"out_GPR_READ_"+toString(j)+"_DATA_VAL",
731                              dest,"out_GPR_READ_"+toString(j)+"_DATA_VAL");
[60]732
[128]733          // out_GPR_READ_REGISTERFILE_VAL   - gpr. in_READ_VAL
734          //  in_GPR_READ_REGISTERFILE_ACK   - gpr.out_READ_ACK
735          //  in_GPR_READ_REGISTERFILE_DATA  - gpr.out_READ_DATA
736         
737          // out_GPR_READ_STATUS_VAL         - gpr. in_READ_VAL
738          //  in_GPR_READ_STATUS_ACK         - gpr.out_READ_ACK
739          //  in_GPR_READ_STATUS_DATA_VAL    - gpr.out_READ_DATA
[60]740        }
741
742      for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
743        {
[128]744          dest = _name;
745
746#ifdef POSITION
747          _component->interface_map (src ,"gpr_write_"+toString(j),
748                                     dest,"gpr_write_"+toString(j));
749#endif
750
751          PORT_MAP(_component,src , "in_GPR_WRITE_"+toString(j)+"_VAL",
752                              dest, "in_GPR_WRITE_"+toString(j)+"_VAL");
753          PORT_MAP(_component,src ,"out_GPR_WRITE_"+toString(j)+"_ACK",
754                              dest,"out_GPR_WRITE_"+toString(j)+"_ACK");
[60]755          if (_param->_have_port_ooo_engine_id == true)
[128]756          PORT_MAP(_component,src , "in_GPR_WRITE_"+toString(j)+"_OOO_ENGINE_ID",
757                              dest, "in_GPR_WRITE_"+toString(j)+"_OOO_ENGINE_ID");
758
759          // out_GPR_WRITE_REGISTERFILE_VAL - gpr. in_WRITE_VAL
760          //  in_GPR_WRITE_REGISTERFILE_ACK - gpr.out_WRITE_ACK
761          // out_GPR_WRITE_STATUS_VAL       - gpr. in_WRITE_VAL
762          //  in_GPR_WRITE_STATUS_ACK       - gpr.out_WRITE_ACK
763          // out_GPR_WRITE_STATUS_DATA      - gpr. in_WRITE_DATA
[60]764        }
[128]765
[60]766      for (uint32_t j=0; j<_param->_nb_spr_read; j++)
767        {
[128]768          dest = _name;
769             
770#ifdef POSITION
771          _component->interface_map (src ,"spr_read_"+toString(j),
772                                     dest,"spr_read_"+toString(j));
773#endif
774
775          PORT_MAP(_component,src , "in_SPR_READ_"+toString(j)+"_VAL",
776                              dest, "in_SPR_READ_"+toString(j)+"_VAL");
777          PORT_MAP(_component,src ,"out_SPR_READ_"+toString(j)+"_ACK",
778                              dest,"out_SPR_READ_"+toString(j)+"_ACK");
[60]779          if (_param->_have_port_ooo_engine_id == true)
[128]780          PORT_MAP(_component,src , "in_SPR_READ_"+toString(j)+"_OOO_ENGINE_ID",
781                              dest, "in_SPR_READ_"+toString(j)+"_OOO_ENGINE_ID");
782          PORT_MAP(_component,src ,"out_SPR_READ_"+toString(j)+"_DATA",
783                              dest,"out_SPR_READ_"+toString(j)+"_DATA");
784          PORT_MAP(_component,src ,"out_SPR_READ_"+toString(j)+"_DATA_VAL",
785                              dest,"out_SPR_READ_"+toString(j)+"_DATA_VAL");
[60]786
[128]787          // out_SPR_READ_REGISTERFILE_VAL   - spr. in_READ_VAL
788          //  in_SPR_READ_REGISTERFILE_ACK   - spr.out_READ_ACK
789          //  in_SPR_READ_REGISTERFILE_DATA  - spr.out_READ_DATA
790         
791          // out_SPR_READ_STATUS_VAL         - spr. in_READ_VAL
792          //  in_SPR_READ_STATUS_ACK         - spr.out_READ_ACK
793          //  in_SPR_READ_STATUS_DATA_VAL    - spr.out_READ_DATA
[60]794        }
795
796      for (uint32_t j=0; j<_param->_nb_spr_write; j++)
797        {
[128]798          dest = _name;
799
800#ifdef POSITION
801          _component->interface_map (src ,"spr_write_"+toString(j),
802                                     dest,"spr_write_"+toString(j));
803#endif
804
805          PORT_MAP(_component,src , "in_SPR_WRITE_"+toString(j)+"_VAL",
806                              dest, "in_SPR_WRITE_"+toString(j)+"_VAL");
807          PORT_MAP(_component,src ,"out_SPR_WRITE_"+toString(j)+"_ACK",
808                              dest,"out_SPR_WRITE_"+toString(j)+"_ACK");
[60]809          if (_param->_have_port_ooo_engine_id == true)
[128]810          PORT_MAP(_component,src , "in_SPR_WRITE_"+toString(j)+"_OOO_ENGINE_ID",
811                              dest, "in_SPR_WRITE_"+toString(j)+"_OOO_ENGINE_ID");
812
813          // out_SPR_WRITE_REGISTERFILE_VAL - spr. in_WRITE_VAL
814          //  in_SPR_WRITE_REGISTERFILE_ACK - spr.out_WRITE_ACK
815          // out_SPR_WRITE_STATUS_VAL       - spr. in_WRITE_VAL
816          //  in_SPR_WRITE_STATUS_ACK       - spr.out_WRITE_ACK
817          // out_SPR_WRITE_STATUS_DATA      - spr. in_WRITE_DATA
[60]818        }
819
[136]820//       for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
821//      {
822//        uint32_t x = _param->_nb_inst_insert_rob [i];
[60]823
[136]824//        for (uint32_t j=0; j<x; j++)
825//          {
826//               dest = _name;
[128]827
[136]828// #ifdef POSITION
829//               _component->interface_map (src ,"insert_rob_"+toString(i)+"_"+toString(j),
830//                                          dest,"insert_rob_"+toString(i)+"_"+toString(j));
831// #endif
832
833//            PORT_MAP(_component,src , "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_VAL",
834//                                   dest, "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_VAL");
835//            PORT_MAP(_component,src ,"out_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_ACK",
836//                                   dest,"out_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_ACK");
837//            PORT_MAP(_component,src , "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RD_USE",
838//                                   dest, "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RD_USE");
839//            PORT_MAP(_component,src , "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RE_USE",
840//                                   dest, "in_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RE_USE");
841             
842//               // out_INSERT_ROB_GPR_STATUS_VAL - gpr_status.  in_WRITE_VAL
843//               //  in_INSERT_ROB_GPR_STATUS_ACK - gpr_status. out_WRITE_ACK
844//               // out_INSERT_ROB_GPR_STATUS_DATA- gpr_status.  in_WRITE_DATA
845//               // out_INSERT_ROB_SPR_STATUS_VAL - spr_status.  in_WRITE_VAL
846//               //  in_INSERT_ROB_SPR_STATUS_ACK - spr_status. out_WRITE_ACK
847//               //  in_INSERT_ROB_SPR_STATUS_DATA- spr_status. out_WRITE_DATA
848//          }
849//      }
850
851      for (uint32_t i=0; i<_param->_nb_inst_issue; i++)
852        {
853          dest = _name;
854         
[128]855#ifdef POSITION
[136]856          _component->interface_map (src ,"issue_"+toString(i),
857                                     dest,"issue_"+toString(i));
[128]858#endif
859
[136]860          PORT_MAP(_component,src , "in_ISSUE_"+toString(i)+"_VAL",
861                              dest, "in_ISSUE_"+toString(i)+"_VAL");
862          PORT_MAP(_component,src ,"out_ISSUE_"+toString(i)+"_ACK",
863                              dest,"out_ISSUE_"+toString(i)+"_ACK");
864          if (_param->_have_port_ooo_engine_id == true)
865          PORT_MAP(_component,src , "in_ISSUE_"+toString(i)+"_OOO_ENGINE_ID",
866                              dest, "in_ISSUE_"+toString(i)+"_OOO_ENGINE_ID");
867          PORT_MAP(_component,src , "in_ISSUE_"+toString(i)+"_RD_USE",
868                              dest, "in_ISSUE_"+toString(i)+"_RD_USE");
869          PORT_MAP(_component,src , "in_ISSUE_"+toString(i)+"_RE_USE",
870                              dest, "in_ISSUE_"+toString(i)+"_RE_USE");
[128]871             
[136]872          // out_ISSUE_GPR_STATUS_VAL - gpr_status. in_WRITE_VAL
873          //  in_ISSUE_GPR_STATUS_ACK - gpr_status.out_WRITE_ACK
874          // out_ISSUE_GPR_STATUS_DATA- gpr_status. in_WRITE_DATA
875          // out_ISSUE_SPR_STATUS_VAL - spr_status. in_WRITE_VAL
876          //  in_ISSUE_SPR_STATUS_ACK - spr_status.out_WRITE_ACK
877          //  in_ISSUE_SPR_STATUS_DATA- spr_status.out_WRITE_DATA
[60]878        }
[136]879
[60]880    }// glue
881
[88]882#if DEBUG_Register_unit == true
883    _component->test_map ();
884#endif
[60]885
886#ifdef POSITION
[88]887    if (usage_is_set(_usage,USE_POSITION))
888      _component->generate_file();
[60]889#endif
890
[75]891//     std::cout << *_component << std::endl;
[60]892
893    log_printf(FUNC,Register_unit,FUNCTION,"End");
894  };
895
896}; // end namespace register_unit
897}; // end namespace execute_loop
898}; // end namespace multi_execute_loop
899}; // end namespace core
900
901}; // end namespace behavioural
902}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.