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

Last change on this file since 145 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.