Ignore:
Timestamp:
Dec 10, 2008, 7:31:39 PM (16 years ago)
Author:
rosiere
Message:

Almost complete design
with Test and test platform

Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src/Parameters.cpp

    r81 r88  
    3434                          uint32_t  * nb_special_register      ,
    3535                          uint32_t  * nb_inst_insert_rob       ,
    36                           uint32_t  * nb_inst_retire_rob       ):
    37     _nb_ooo_engine             (nb_ooo_engine            ),
    38     _size_general_data         (size_general_data        ),
    39     _size_special_data         (size_special_data        ),
    40     _nb_gpr_read               (nb_gpr_read              ),
    41     _nb_gpr_write              (nb_gpr_write             ),
    42     _nb_gpr_bank               (nb_gpr_bank              ),
    43     _nb_gpr_port_read_by_bank  (nb_gpr_port_read_by_bank ),
    44     _nb_gpr_port_write_by_bank (nb_gpr_port_write_by_bank),
    45     _nb_spr_read               (nb_spr_read              ),
    46     _nb_spr_write              (nb_spr_write             ),
    47     _nb_spr_bank               (nb_spr_bank              ),
    48     _nb_spr_port_read_by_bank  (nb_spr_port_read_by_bank ),
    49     _nb_spr_port_write_by_bank (nb_spr_port_write_by_bank),
    50     _nb_general_register       (nb_general_register      ),
    51     _nb_special_register       (nb_special_register      ),
    52     _nb_inst_insert_rob        (nb_inst_insert_rob       ),
    53     _nb_inst_retire_rob        (nb_inst_retire_rob       ),
    54     _have_port_ooo_engine_id   (nb_ooo_engine>1          )
    55    
     36                          uint32_t  * nb_inst_retire_rob       ,
     37                          bool        is_toplevel              )
    5638  {
    5739    log_printf(FUNC,Register_unit,FUNCTION,"Begin");
     40
     41
     42    _nb_ooo_engine             = nb_ooo_engine            ;
     43    _nb_gpr_read               = nb_gpr_read              ;
     44    _nb_gpr_write              = nb_gpr_write             ;
     45    _nb_gpr_bank               = nb_gpr_bank              ;
     46    _nb_gpr_port_read_by_bank  = nb_gpr_port_read_by_bank ;
     47    _nb_gpr_port_write_by_bank = nb_gpr_port_write_by_bank;
     48    _nb_spr_read               = nb_spr_read              ;
     49    _nb_spr_write              = nb_spr_write             ;
     50    _nb_spr_bank               = nb_spr_bank              ;
     51    _nb_spr_port_read_by_bank  = nb_spr_port_read_by_bank ;
     52    _nb_spr_port_write_by_bank = nb_spr_port_write_by_bank;
     53    _nb_general_register       = nb_general_register      ;
     54    _nb_special_register       = nb_special_register      ;
     55    _nb_inst_insert_rob        = nb_inst_insert_rob       ;
     56    _nb_inst_retire_rob        = nb_inst_retire_rob       ;
    5857
    5958    _size_gpr_address = log2(nb_general_register [0]);
     
    7473          _size_spr_address = new_size;
    7574      }
    76 
    7775
    7876    _param_gpr         = new morpheo::behavioural::generic::registerfile::Parameters * [_nb_ooo_engine];
     
    8684    __param_spr_status = new morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::Parameters * [_nb_ooo_engine];
    8785   
    88    for (uint32_t i=0; i<_nb_ooo_engine; i++)
    89      {
    90        Tcrossbar_t crossbar = PARTIAL_CROSSBAR;
    91  
    92        __param_gpr        [i] = new morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters
    93          (_nb_gpr_read              ,
    94           _nb_gpr_write             ,
    95           _nb_general_register[i]   ,
    96           _size_general_data        ,
    97           _nb_gpr_bank              ,
    98           _nb_gpr_port_read_by_bank ,
    99           _nb_gpr_port_write_by_bank,
    100           crossbar                  );
    101 
    102        __param_gpr_status [i] = new morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::Parameters
    103          (_nb_gpr_read ,
    104           _nb_gpr_write+_nb_inst_insert_rob[i]+2*_nb_inst_retire_rob[i],
    105           0,
    106           nb_general_register[i],
    107           1);
    108 
    109        __param_spr        [i] = new morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters
    110          (_nb_spr_read              ,
    111           _nb_spr_write             ,
    112           _nb_special_register[i]   ,
    113           _size_special_data        ,
    114           _nb_spr_bank              ,
    115           _nb_spr_port_read_by_bank ,
    116           _nb_spr_port_write_by_bank,
    117           crossbar                  );
    118 
    119        __param_spr_status [i] = new morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::Parameters
    120          (_nb_spr_read ,
    121           _nb_spr_write+_nb_inst_insert_rob[i]+2*_nb_inst_retire_rob[i],
    122           0,
    123           nb_special_register[i],
    124           1);   
    125 
    126        _param_gpr        [i] = new morpheo::behavioural::generic::registerfile::Parameters (__param_gpr        [i]);
    127        _param_gpr_status [i] = new morpheo::behavioural::generic::registerfile::Parameters (__param_gpr_status [i]);
    128        _param_spr        [i] = new morpheo::behavioural::generic::registerfile::Parameters (__param_spr        [i]);
    129        _param_spr_status [i] = new morpheo::behavioural::generic::registerfile::Parameters (__param_spr_status [i]);
    130      }
    131 
    132    _param_glue       = new morpheo::behavioural::core::multi_execute_loop::execute_loop::register_unit::register_unit_glue::Parameters  (_nb_ooo_engine        ,
    133                                                                                                                                          _size_general_data    ,
    134                                                                                                                                          _size_special_data    ,
    135                                                                                                                                          _nb_gpr_read          ,
    136                                                                                                                                          _nb_spr_read          ,   
    137                                                                                                                                          _nb_gpr_write         ,
    138                                                                                                                                          _nb_spr_write         ,
    139                                                                                                                                          _nb_inst_insert_rob   ,
    140                                                                                                                                          _nb_inst_retire_rob   );
    141      
     86    for (uint32_t i=0; i<_nb_ooo_engine; i++)
     87      {
     88        Tcrossbar_t crossbar = PARTIAL_CROSSBAR;
     89       
     90        __param_gpr        [i] = new morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters
     91          (_nb_gpr_read              ,
     92           _nb_gpr_write             ,
     93           _nb_general_register[i]   ,
     94            size_general_data        ,
     95           _nb_gpr_bank              ,
     96           _nb_gpr_port_read_by_bank ,
     97           _nb_gpr_port_write_by_bank,
     98           crossbar                  );
     99       
     100        __param_gpr_status [i] = new morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::Parameters
     101          (_nb_gpr_read ,
     102//         _nb_gpr_write+_nb_inst_insert_rob[i]+2*_nb_inst_retire_rob[i],
     103           _nb_gpr_write+_nb_inst_insert_rob[i],
     104           0,
     105           nb_general_register[i],
     106           1);
     107       
     108        __param_spr        [i] = new morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters
     109          (_nb_spr_read              ,
     110           _nb_spr_write             ,
     111           _nb_special_register[i]   ,
     112            size_special_data        ,
     113           _nb_spr_bank              ,
     114           _nb_spr_port_read_by_bank ,
     115           _nb_spr_port_write_by_bank,
     116           crossbar                  );
     117       
     118        __param_spr_status [i] = new morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::Parameters
     119          (_nb_spr_read ,
     120//         _nb_spr_write+_nb_inst_insert_rob[i]+2*_nb_inst_retire_rob[i],
     121           _nb_spr_write+_nb_inst_insert_rob[i],
     122           0,
     123           nb_special_register[i],
     124           1);   
     125       
     126        _param_gpr        [i] = new morpheo::behavioural::generic::registerfile::Parameters (__param_gpr        [i]);
     127        _param_gpr_status [i] = new morpheo::behavioural::generic::registerfile::Parameters (__param_gpr_status [i]);
     128        _param_spr        [i] = new morpheo::behavioural::generic::registerfile::Parameters (__param_spr        [i]);
     129        _param_spr_status [i] = new morpheo::behavioural::generic::registerfile::Parameters (__param_spr_status [i]);
     130      }
    142131   
    143 
    144 
     132    _param_glue       = new morpheo::behavioural::core::multi_execute_loop::execute_loop::register_unit::register_unit_glue::Parameters  (_nb_ooo_engine        ,
     133                                                                                                                                           size_general_data    ,
     134                                                                                                                                           size_special_data    ,
     135                                                                                                                                          _nb_gpr_read          ,
     136                                                                                                                                          _nb_spr_read          ,   
     137                                                                                                                                          _nb_gpr_write         ,
     138                                                                                                                                          _nb_spr_write         ,
     139                                                                                                                                          _nb_inst_insert_rob   ,
     140                                                                                                                                          _nb_inst_retire_rob   );
     141   
    145142    test();
    146     log_printf(FUNC,Register_unit,FUNCTION,"End");
     143   
     144    if (is_toplevel)
     145      {
     146        _size_ooo_engine_id        = log2(nb_ooo_engine);
     147        _size_general_data         = size_general_data;
     148        _size_special_data         = size_special_data;
     149       
     150        _have_port_ooo_engine_id   = _size_ooo_engine_id > 0;
     151
     152        copy();
     153      }
     154   
     155   log_printf(FUNC,Register_unit,FUNCTION,"End");
    147156  };
    148157 
     158// #undef  FUNCTION
     159// #define FUNCTION "Register_unit::Parameters (copy)"
     160//   Parameters::Parameters (Parameters & param):
     161//     _nb_ooo_engine             (param._nb_ooo_engine            ),
     162//     _size_general_data         (param._size_general_data        ),
     163//     _size_special_data         (param._size_special_data        ),
     164//     _nb_gpr_read               (param._nb_gpr_read              ),
     165//     _nb_gpr_write              (param._nb_gpr_write             ),
     166//     _nb_gpr_bank               (param._nb_gpr_bank              ),
     167//     _nb_gpr_port_read_by_bank  (param._nb_gpr_port_read_by_bank ),
     168//     _nb_gpr_port_write_by_bank (param._nb_gpr_port_write_by_bank),
     169//     _nb_spr_read               (param._nb_spr_read              ),
     170//     _nb_spr_write              (param._nb_spr_write             ),
     171//     _nb_spr_bank               (param._nb_spr_bank              ),
     172//     _nb_spr_port_read_by_bank  (param._nb_spr_port_read_by_bank ),
     173//     _nb_spr_port_write_by_bank (param._nb_spr_port_write_by_bank),
     174//     _nb_general_register       (param._nb_general_register      ),
     175//     _nb_special_register       (param._nb_special_register      ),
     176//     _nb_inst_insert_rob        (param._nb_inst_insert_rob       ),
     177//     _nb_inst_retire_rob        (param._nb_inst_retire_rob       ),
     178//     _have_port_ooo_engine_id   (param._have_port_ooo_engine_id  )
     179//   {
     180//     log_printf(FUNC,Register_unit,FUNCTION,"Begin");
     181
     182//     _size_gpr_address = param._size_gpr_address;
     183//     _size_spr_address = param._size_spr_address;
     184
     185//     __param_gpr        = param.__param_gpr       ;
     186//     __param_gpr_status = param.__param_gpr_status;
     187//     __param_spr        = param.__param_spr       ;
     188//     __param_spr_status = param.__param_spr_status;
     189//     _param_gpr         = param._param_gpr       ;
     190//     _param_gpr_status  = param._param_gpr_status;
     191//     _param_spr         = param._param_spr       ;
     192//     _param_spr_status  = param._param_spr_status;
     193//     _param_glue        = param._param_glue      ;
     194
     195//     test();
     196//     log_printf(FUNC,Register_unit,FUNCTION,"End");
     197//   };
     198
    149199#undef  FUNCTION
    150 #define FUNCTION "Register_unit::Parameters (copy)"
    151   Parameters::Parameters (Parameters & param):
    152     _nb_ooo_engine             (param._nb_ooo_engine            ),
    153     _size_general_data         (param._size_general_data        ),
    154     _size_special_data         (param._size_special_data        ),
    155     _nb_gpr_read               (param._nb_gpr_read              ),
    156     _nb_gpr_write              (param._nb_gpr_write             ),
    157     _nb_gpr_bank               (param._nb_gpr_bank              ),
    158     _nb_gpr_port_read_by_bank  (param._nb_gpr_port_read_by_bank ),
    159     _nb_gpr_port_write_by_bank (param._nb_gpr_port_write_by_bank),
    160     _nb_spr_read               (param._nb_spr_read              ),
    161     _nb_spr_write              (param._nb_spr_write             ),
    162     _nb_spr_bank               (param._nb_spr_bank              ),
    163     _nb_spr_port_read_by_bank  (param._nb_spr_port_read_by_bank ),
    164     _nb_spr_port_write_by_bank (param._nb_spr_port_write_by_bank),
    165     _nb_general_register       (param._nb_general_register      ),
    166     _nb_special_register       (param._nb_special_register      ),
    167     _nb_inst_insert_rob        (param._nb_inst_insert_rob       ),
    168     _nb_inst_retire_rob        (param._nb_inst_retire_rob       ),
    169     _have_port_ooo_engine_id   (param._have_port_ooo_engine_id  )
     200#define FUNCTION "Register_unit::~Parameters"
     201  Parameters::~Parameters (void)
    170202  {
    171203    log_printf(FUNC,Register_unit,FUNCTION,"Begin");
    172204
    173     _size_gpr_address = param._size_gpr_address;
    174     _size_spr_address = param._size_spr_address;
    175 
    176     __param_gpr        = param.__param_gpr       ;
    177     __param_gpr_status = param.__param_gpr_status;
    178     __param_spr        = param.__param_spr       ;
    179     __param_spr_status = param.__param_spr_status;
    180     _param_gpr         = param._param_gpr       ;
    181     _param_gpr_status  = param._param_gpr_status;
    182     _param_spr         = param._param_spr       ;
    183     _param_spr_status  = param._param_spr_status;
    184     _param_glue        = param._param_glue      ;
    185 
    186     test();
    187     log_printf(FUNC,Register_unit,FUNCTION,"End");
    188   };
    189 
    190 #undef  FUNCTION
    191 #define FUNCTION "Register_unit::~Parameters"
    192   Parameters::~Parameters ()
    193   {
    194     log_printf(FUNC,Register_unit,FUNCTION,"Begin");
    195 
    196     delete [] _param_gpr       ;
    197     delete [] _param_gpr_status;
    198     delete [] _param_spr       ;
    199     delete [] _param_spr_status;
     205    for (uint32_t i=0; i<_nb_ooo_engine; i++)
     206      {
     207        delete _param_gpr         [i];
     208        delete _param_gpr_status  [i];
     209        delete _param_spr         [i];
     210        delete _param_spr_status  [i];
     211        delete __param_gpr        [i];
     212        delete __param_gpr_status [i];
     213        delete __param_spr        [i];
     214        delete __param_spr_status [i];
     215      }
     216    delete [] _param_gpr        ;
     217    delete [] _param_gpr_status ;
     218    delete [] _param_spr        ;
     219    delete [] _param_spr_status ;
    200220    delete [] __param_gpr       ;
    201221    delete [] __param_gpr_status;
     
    207227  };
    208228
     229#undef  FUNCTION
     230#define FUNCTION "Register_unit::copy"
     231  void Parameters::copy (void)
     232  {
     233    log_printf(FUNC,Register_unit,FUNCTION,"Begin");
     234
     235    for (uint32_t i=0; i<_nb_ooo_engine; i++)
     236      {
     237        COPY(__param_gpr        [i]);
     238        COPY(__param_gpr_status [i]);
     239        COPY(__param_spr        [i]);
     240        COPY(__param_spr_status [i]);
     241      }
     242    COPY(_param_glue);
     243   
     244    log_printf(FUNC,Register_unit,FUNCTION,"End");
     245  };
     246
    209247}; // end namespace register_unit
    210248}; // end namespace execute_loop
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src/Register_unit.cpp

    r81 r88  
    3737    log_printf(FUNC,Register_unit,FUNCTION,"Begin");
    3838
     39#if DEBUG_Register_unit == true
     40    log_printf(INFO,Register_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());
     41
     42    std::cout << *param << std::endl;
     43#endif   
     44
    3945    log_printf(INFO,Register_unit,FUNCTION,"Allocation");
    4046    allocation (
     
    4551
    4652#ifdef STATISTICS
    47     log_printf(INFO,Register_unit,FUNCTION,"Allocation of statistics");
     53    if (usage_is_set(_usage,USE_STATISTICS))
     54      {
     55        log_printf(INFO,Register_unit,FUNCTION,_("<%s> : Allocation of statistics"),_name.c_str());
    4856
    49     // Allocation of statistics
    50     statistics_declaration(param_statistics);
     57        statistics_declaration(param_statistics);
     58      }
    5159#endif
    5260
    5361#ifdef VHDL
    54     // generate the vhdl
    55     log_printf(INFO,Register_unit,FUNCTION,"Generate the vhdl");
    56 
    57     vhdl();
     62    if (usage_is_set(_usage,USE_VHDL))
     63      {
     64        // generate the vhdl
     65        log_printf(INFO,Register_unit,FUNCTION,"Generate the vhdl");
     66       
     67        vhdl();
     68      }
    5869#endif
    5970
    6071#ifdef SYSTEMC
     72    if (usage_is_set(_usage,USE_SYSTEMC))
     73      {
    6174//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
    6275    log_printf(INFO,Register_unit,FUNCTION,"Method - transition");
     
    7083    // List dependency information
    7184#endif   
    72 
     85      }
    7386#endif
    7487    log_printf(FUNC,Register_unit,FUNCTION,"End");
     
    8295
    8396#ifdef STATISTICS
    84     log_printf(INFO,Register_unit,FUNCTION,"Generate Statistics file");
    85     delete _stat;
     97    if (usage_is_set(_usage,USE_STATISTICS))
     98      {
     99        log_printf(INFO,Register_unit,FUNCTION,"Generate Statistics file");
     100        delete _stat;
     101      }
    86102#endif
    87103
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src/Register_unit_allocation.cpp

    r82 r88  
    22 * $Id$
    33 *
    4  * [ Description ]
     4 * [ Description ]
    55 *
    66 */
     
    88#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/include/Register_unit.h"
    99
    10 namespace morpheo                    {
     10namespace morpheo {
    1111namespace behavioural {
    1212namespace core {
     
    1414namespace execute_loop {
    1515namespace register_unit {
    16 
    17 
    1816
    1917#undef  FUNCTION
     
    4038    _interfaces = entity->set_interfaces();
    4139
    42     // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     40    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    4341
    4442    Interface * interface = _interfaces->set_interface(""
     
    5351    in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_YES);
    5452
    55     // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     53    // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5654    in_GPR_READ_VAL                 = new SC_IN (Tcontrol_t        )   * [_param->_nb_gpr_read];
    5755    out_GPR_READ_ACK                 = new SC_OUT(Tcontrol_t        )   * [_param->_nb_gpr_read];
     
    7573        out_GPR_READ_ACK           [i]= interface->set_signal_valack_out (ACK);
    7674        if (_param->_have_port_ooo_engine_id == true)
    77           in_GPR_READ_OOO_ENGINE_ID [i]= interface->set_signal_in <Tcontext_t        > ("ooo_engine_id" , log2(_param->_nb_ooo_engine));
     75          in_GPR_READ_OOO_ENGINE_ID [i]= interface->set_signal_in <Tcontext_t        > ("ooo_engine_id" , _param->_size_ooo_engine_id);
    7876        in_GPR_READ_NUM_REG       [i]= interface->set_signal_in <Tgeneral_address_t> ("num_reg"       , _param->_size_gpr_address);
    7977        out_GPR_READ_DATA          [i]= interface->set_signal_out<Tgeneral_data_t   > ("data"          , _param->_size_general_data);
     
    8179      }
    8280
    83     // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     81    // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8482    in_GPR_WRITE_VAL                 = new SC_IN (Tcontrol_t        )   * [_param->_nb_gpr_write];
    8583    out_GPR_WRITE_ACK                 = new SC_OUT(Tcontrol_t        )   * [_param->_nb_gpr_write];
     
    102100        out_GPR_WRITE_ACK           [i]= interface->set_signal_valack_out (ACK);
    103101        if (_param->_have_port_ooo_engine_id == true)
    104           in_GPR_WRITE_OOO_ENGINE_ID [i]= interface->set_signal_in <Tcontext_t        > ("ooo_engine_id" , log2(_param->_nb_ooo_engine));
     102          in_GPR_WRITE_OOO_ENGINE_ID [i]= interface->set_signal_in <Tcontext_t        > ("ooo_engine_id" , _param->_size_ooo_engine_id);
    105103        in_GPR_WRITE_NUM_REG       [i]= interface->set_signal_in <Tgeneral_address_t> ("num_reg"       , _param->_size_gpr_address);
    106104        in_GPR_WRITE_DATA          [i]= interface->set_signal_in <Tgeneral_data_t   > ("data"          , _param->_size_general_data);
    107105      }
    108106
    109     // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     107    // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    110108    in_SPR_READ_VAL                 = new SC_IN (Tcontrol_t        )   * [_param->_nb_spr_read];
    111109    out_SPR_READ_ACK                 = new SC_OUT(Tcontrol_t        )   * [_param->_nb_spr_read];
     
    129127        out_SPR_READ_ACK           [i]= interface->set_signal_valack_out (ACK);
    130128        if (_param->_have_port_ooo_engine_id == true)
    131           in_SPR_READ_OOO_ENGINE_ID [i]= interface->set_signal_in <Tcontext_t        > ("ooo_engine_id" , log2(_param->_nb_ooo_engine));
     129          in_SPR_READ_OOO_ENGINE_ID [i]= interface->set_signal_in <Tcontext_t        > ("ooo_engine_id" , _param->_size_ooo_engine_id);
    132130        in_SPR_READ_NUM_REG       [i]= interface->set_signal_in <Tspecial_address_t> ("num_reg"       , _param->_size_spr_address);
    133131        out_SPR_READ_DATA          [i]= interface->set_signal_out<Tspecial_data_t   > ("data"          , _param->_size_special_data);
     
    135133      }
    136134
    137     // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     135    // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    138136    in_SPR_WRITE_VAL                 = new SC_IN (Tcontrol_t        )   * [_param->_nb_spr_write];
    139137    out_SPR_WRITE_ACK                 = new SC_OUT(Tcontrol_t        )   * [_param->_nb_spr_write];
     
    156154        out_SPR_WRITE_ACK           [i]= interface->set_signal_valack_out (ACK);
    157155        if (_param->_have_port_ooo_engine_id == true)
    158           in_SPR_WRITE_OOO_ENGINE_ID [i]= interface->set_signal_in <Tcontext_t        > ("ooo_engine_id" , log2(_param->_nb_ooo_engine));
     156          in_SPR_WRITE_OOO_ENGINE_ID [i]= interface->set_signal_in <Tcontext_t        > ("ooo_engine_id" , _param->_size_ooo_engine_id);
    159157        in_SPR_WRITE_NUM_REG       [i]= interface->set_signal_in <Tspecial_address_t> ("num_reg"       , _param->_size_spr_address);
    160158        in_SPR_WRITE_DATA          [i]= interface->set_signal_in <Tspecial_data_t   > ("data"          , _param->_size_special_data);
    161159      }
    162160
    163     // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     161    // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    164162    in_INSERT_ROB_VAL        = new SC_IN (Tcontrol_t        )  ** [_param->_nb_ooo_engine];
    165163    out_INSERT_ROB_ACK        = new SC_OUT(Tcontrol_t        )  ** [_param->_nb_ooo_engine];
     
    201199      }
    202200
    203     // ~~~~~[ Interface "retire_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    204     in_RETIRE_ROB_VAL            = new SC_IN (Tcontrol_t        )  ** [_param->_nb_ooo_engine];
    205     out_RETIRE_ROB_ACK            = new SC_OUT(Tcontrol_t        )  ** [_param->_nb_ooo_engine];
    206     in_RETIRE_ROB_RD_OLD_USE     = new SC_IN (Tcontrol_t        )  ** [_param->_nb_ooo_engine];
    207     in_RETIRE_ROB_RD_OLD_NUM_REG = new SC_IN (Tgeneral_address_t)  ** [_param->_nb_ooo_engine];
    208     in_RETIRE_ROB_RE_OLD_USE     = new SC_IN (Tcontrol_t        )  ** [_param->_nb_ooo_engine];
    209     in_RETIRE_ROB_RE_OLD_NUM_REG = new SC_IN (Tspecial_address_t)  ** [_param->_nb_ooo_engine];
    210     in_RETIRE_ROB_RD_NEW_USE     = new SC_IN (Tcontrol_t        )  ** [_param->_nb_ooo_engine];
    211     in_RETIRE_ROB_RD_NEW_NUM_REG = new SC_IN (Tgeneral_address_t)  ** [_param->_nb_ooo_engine];
    212     in_RETIRE_ROB_RE_NEW_USE     = new SC_IN (Tcontrol_t        )  ** [_param->_nb_ooo_engine];
    213     in_RETIRE_ROB_RE_NEW_NUM_REG = new SC_IN (Tspecial_address_t)  ** [_param->_nb_ooo_engine];
    214 
    215     for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
    216       {
    217         uint32_t x=_param->_nb_inst_retire_rob [i];
    218 
    219         in_RETIRE_ROB_VAL            [i] = new SC_IN (Tcontrol_t        )  * [x];
    220         out_RETIRE_ROB_ACK            [i] = new SC_OUT(Tcontrol_t        )  * [x];
    221         in_RETIRE_ROB_RD_OLD_USE     [i] = new SC_IN (Tcontrol_t        )  * [x];
    222         in_RETIRE_ROB_RD_OLD_NUM_REG [i] = new SC_IN (Tgeneral_address_t)  * [x];
    223         in_RETIRE_ROB_RE_OLD_USE     [i] = new SC_IN (Tcontrol_t        )  * [x];
    224         in_RETIRE_ROB_RE_OLD_NUM_REG [i] = new SC_IN (Tspecial_address_t)  * [x];
    225         in_RETIRE_ROB_RD_NEW_USE     [i] = new SC_IN (Tcontrol_t        )  * [x];
    226         in_RETIRE_ROB_RD_NEW_NUM_REG [i] = new SC_IN (Tgeneral_address_t)  * [x];
    227         in_RETIRE_ROB_RE_NEW_USE     [i] = new SC_IN (Tcontrol_t        )  * [x];
    228         in_RETIRE_ROB_RE_NEW_NUM_REG [i] = new SC_IN (Tspecial_address_t)  * [x];
    229 
    230         for (uint32_t j=0; j<x; j++)
    231           {
    232             Interface_fifo * interface = _interfaces->set_interface("retire_rob_"+toString(i)+"_"+toString(j)
    233 #ifdef POSITION
    234                                                                     ,IN
    235                                                                     ,WEST
    236                                                                     ,"Interface to update status (retire)"
    237 #endif
    238                                                                     );
    239 
    240 
    241             in_RETIRE_ROB_VAL            [i][j] = interface->set_signal_valack_in  (VAL);
    242            out_RETIRE_ROB_ACK            [i][j] = interface->set_signal_valack_out (ACK);
    243             in_RETIRE_ROB_RD_OLD_USE     [i][j] = interface->set_signal_in <Tcontrol_t        > ("rd_old_use"    , 1);
    244             in_RETIRE_ROB_RD_OLD_NUM_REG [i][j] = interface->set_signal_in <Tgeneral_address_t> ("rd_old_num_reg", _param->_size_gpr_address);
    245             in_RETIRE_ROB_RE_OLD_USE     [i][j] = interface->set_signal_in <Tcontrol_t        > ("re_old_use"    , 1);
    246             in_RETIRE_ROB_RE_OLD_NUM_REG [i][j] = interface->set_signal_in <Tspecial_address_t> ("re_old_num_reg", _param->_size_spr_address);
    247             in_RETIRE_ROB_RD_NEW_USE     [i][j] = interface->set_signal_in <Tcontrol_t        > ("rd_new_use"    , 1);
    248             in_RETIRE_ROB_RD_NEW_NUM_REG [i][j] = interface->set_signal_in <Tgeneral_address_t> ("rd_new_num_reg", _param->_size_gpr_address);
    249             in_RETIRE_ROB_RE_NEW_USE     [i][j] = interface->set_signal_in <Tcontrol_t        > ("re_new_use"    , 1);
    250             in_RETIRE_ROB_RE_NEW_NUM_REG [i][j] = interface->set_signal_in <Tspecial_address_t> ("re_new_num_reg", _param->_size_spr_address);
    251           }
    252       }
    253     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     201//     // ~~~~~[ Interface "retire_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     202//     in_RETIRE_ROB_VAL            = new SC_IN (Tcontrol_t        )  ** [_param->_nb_ooo_engine];
     203//     out_RETIRE_ROB_ACK            = new SC_OUT(Tcontrol_t        )  ** [_param->_nb_ooo_engine];
     204//     in_RETIRE_ROB_RD_OLD_USE     = new SC_IN (Tcontrol_t        )  ** [_param->_nb_ooo_engine];
     205//     in_RETIRE_ROB_RD_OLD_NUM_REG = new SC_IN (Tgeneral_address_t)  ** [_param->_nb_ooo_engine];
     206//     in_RETIRE_ROB_RE_OLD_USE     = new SC_IN (Tcontrol_t        )  ** [_param->_nb_ooo_engine];
     207//     in_RETIRE_ROB_RE_OLD_NUM_REG = new SC_IN (Tspecial_address_t)  ** [_param->_nb_ooo_engine];
     208//     in_RETIRE_ROB_RD_NEW_USE     = new SC_IN (Tcontrol_t        )  ** [_param->_nb_ooo_engine];
     209//     in_RETIRE_ROB_RD_NEW_NUM_REG = new SC_IN (Tgeneral_address_t)  ** [_param->_nb_ooo_engine];
     210//     in_RETIRE_ROB_RE_NEW_USE     = new SC_IN (Tcontrol_t        )  ** [_param->_nb_ooo_engine];
     211//     in_RETIRE_ROB_RE_NEW_NUM_REG = new SC_IN (Tspecial_address_t)  ** [_param->_nb_ooo_engine];
     212
     213//     for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
     214//       {
     215//      uint32_t x=_param->_nb_inst_retire_rob [i];
     216
     217//      in_RETIRE_ROB_VAL            [i] = new SC_IN (Tcontrol_t        )  * [x];
     218//      out_RETIRE_ROB_ACK            [i] = new SC_OUT(Tcontrol_t        )  * [x];
     219//      in_RETIRE_ROB_RD_OLD_USE     [i] = new SC_IN (Tcontrol_t        )  * [x];
     220//      in_RETIRE_ROB_RD_OLD_NUM_REG [i] = new SC_IN (Tgeneral_address_t)  * [x];
     221//      in_RETIRE_ROB_RE_OLD_USE     [i] = new SC_IN (Tcontrol_t        )  * [x];
     222//      in_RETIRE_ROB_RE_OLD_NUM_REG [i] = new SC_IN (Tspecial_address_t)  * [x];
     223//      in_RETIRE_ROB_RD_NEW_USE     [i] = new SC_IN (Tcontrol_t        )  * [x];
     224//      in_RETIRE_ROB_RD_NEW_NUM_REG [i] = new SC_IN (Tgeneral_address_t)  * [x];
     225//      in_RETIRE_ROB_RE_NEW_USE     [i] = new SC_IN (Tcontrol_t        )  * [x];
     226//      in_RETIRE_ROB_RE_NEW_NUM_REG [i] = new SC_IN (Tspecial_address_t)  * [x];
     227
     228//      for (uint32_t j=0; j<x; j++)
     229//        {
     230//          Interface_fifo * interface = _interfaces->set_interface("retire_rob_"+toString(i)+"_"+toString(j)
     231// #ifdef POSITION
     232//                                                                  ,IN
     233//                                                                  ,WEST
     234//                                                                  ,"Interface to update status (retire)"
     235// #endif
     236//                                                                  );
     237
     238
     239//          in_RETIRE_ROB_VAL            [i][j] = interface->set_signal_valack_in  (VAL);
     240//         out_RETIRE_ROB_ACK            [i][j] = interface->set_signal_valack_out (ACK);
     241//          in_RETIRE_ROB_RD_OLD_USE     [i][j] = interface->set_signal_in <Tcontrol_t        > ("rd_old_use"    , 1);
     242//          in_RETIRE_ROB_RD_OLD_NUM_REG [i][j] = interface->set_signal_in <Tgeneral_address_t> ("rd_old_num_reg", _param->_size_gpr_address);
     243//          in_RETIRE_ROB_RE_OLD_USE     [i][j] = interface->set_signal_in <Tcontrol_t        > ("re_old_use"    , 1);
     244//          in_RETIRE_ROB_RE_OLD_NUM_REG [i][j] = interface->set_signal_in <Tspecial_address_t> ("re_old_num_reg", _param->_size_spr_address);
     245//          in_RETIRE_ROB_RD_NEW_USE     [i][j] = interface->set_signal_in <Tcontrol_t        > ("rd_new_use"    , 1);
     246//          in_RETIRE_ROB_RD_NEW_NUM_REG [i][j] = interface->set_signal_in <Tgeneral_address_t> ("rd_new_num_reg", _param->_size_gpr_address);
     247//          in_RETIRE_ROB_RE_NEW_USE     [i][j] = interface->set_signal_in <Tcontrol_t        > ("re_new_use"    , 1);
     248//          in_RETIRE_ROB_RE_NEW_NUM_REG [i][j] = interface->set_signal_in <Tspecial_address_t> ("re_new_num_reg", _param->_size_spr_address);
     249//        }
     250//       }
     251
     252    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    254253
    255254    std::string name;
     
    263262      {
    264263        name = _name+"_gpr_"+toString(i);
     264        log_printf(INFO,Register_unit,FUNCTION,_("Create   : %s"),name.c_str());
    265265
    266266        component_gpr        [i] = new morpheo::behavioural::generic::registerfile::RegisterFile::RegisterFile
     
    284284
    285285        name = _name+"_gpr_status_"+toString(i);
     286        log_printf(INFO,Register_unit,FUNCTION,_("Create   : %s"),name.c_str());
    286287
    287288        component_gpr_status [i] = new morpheo::behavioural::generic::registerfile::RegisterFile::RegisterFile
     
    305306
    306307        name = _name+"_spr_"+toString(i);
     308        log_printf(INFO,Register_unit,FUNCTION,_("Create   : %s"),name.c_str());
    307309         
    308310        component_spr        [i] = new morpheo::behavioural::generic::registerfile::RegisterFile::RegisterFile
     
    325327
    326328        name = _name+"_spr_status_"+toString(i);
     329        log_printf(INFO,Register_unit,FUNCTION,_("Create   : %s"),name.c_str());
    327330
    328331        component_spr_status [i] = new morpheo::behavioural::generic::registerfile::RegisterFile::RegisterFile
     
    347350
    348351    name = _name+"_glue";
     352    log_printf(INFO,Register_unit,FUNCTION,_("Create   : %s"),name.c_str());
    349353     
    350354    component_glue       = new morpheo::behavioural::core::multi_execute_loop::execute_loop::register_unit::register_unit_glue::Register_unit_Glue::Register_unit_Glue     
     
    373377        name_component = _name+"_gpr_"+toString(i);
    374378       
    375         std::cout << "Instance : " << name_component << std::endl;
     379        log_printf(INFO,Register_unit,FUNCTION,_("Instance : %s"),name_component.c_str());
    376380       
    377381#ifdef POSITION
     
    430434          name_component = _name+"_gpr_status_"+toString(i);
    431435         
    432           std::cout << "Instance : " << name_component << std::endl;
     436          log_printf(INFO,Register_unit,FUNCTION,_("Instance : %s"),name_component.c_str());
    433437         
    434438#ifdef POSITION
     
    516520            }
    517521
    518           for (uint32_t j=0; j<_param->_nb_inst_retire_rob [i]; j++)
    519             {
    520               _component->port_map(name_component,
    521                                    "in_WRITE_"+toString(x)+"_VAL" ,
    522                                    _name+"_glue",
    523                                    "out_RETIRE_ROB_GPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_VAL");
    524               _component->port_map(name_component,
    525                                    "out_WRITE_"+toString(x)+"_ACK",
    526                                    _name+"_glue",
    527                                    "in_RETIRE_ROB_GPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK" );
    528 
    529               _component->port_map(name_component,
    530                                    "in_WRITE_"+toString(x)+"_DATA" ,
    531                                    _name+"_glue",
    532                                    "out_CONST_0");
    533               _component->port_map(_name+"_glue",
    534                                    "out_CONST_0",
    535                                    name_component,
    536                                    "in_WRITE_"+toString(x)+"_DATA" );
    537 
    538               _component->port_map(name_component,
    539                                    "in_WRITE_"+toString(x++)+"_ADDRESS",
    540                                    _name,
    541                                    "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_OLD_NUM_REG");
     522//        for (uint32_t j=0; j<_param->_nb_inst_retire_rob [i]; j++)
     523//          {
     524//            _component->port_map(name_component,
     525//                                 "in_WRITE_"+toString(x)+"_VAL" ,
     526//                                 _name+"_glue",
     527//                                 "out_RETIRE_ROB_GPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_VAL");
     528//            _component->port_map(name_component,
     529//                                 "out_WRITE_"+toString(x)+"_ACK",
     530//                                 _name+"_glue",
     531//                                 "in_RETIRE_ROB_GPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK" );
     532
     533//            _component->port_map(name_component,
     534//                                 "in_WRITE_"+toString(x)+"_DATA" ,
     535//                                 _name+"_glue",
     536//                                 "out_CONST_0");
     537//            _component->port_map(_name+"_glue",
     538//                                 "out_CONST_0",
     539//                                 name_component,
     540//                                 "in_WRITE_"+toString(x)+"_DATA" );
     541
     542//            _component->port_map(name_component,
     543//                                 "in_WRITE_"+toString(x++)+"_ADDRESS",
     544//                                 _name,
     545//                                 "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_OLD_NUM_REG");
    542546             
    543               _component->port_map(name_component,
    544                                    "in_WRITE_"+toString(x)+"_VAL" ,
    545                                    _name+"_glue",
    546                                    "out_RETIRE_ROB_GPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_VAL");
    547               _component->port_map(name_component,
    548                                    "out_WRITE_"+toString(x)+"_ACK",
    549                                    _name+"_glue",
    550                                    "in_RETIRE_ROB_GPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK" );
    551 
    552               _component->port_map(name_component,
    553                                    "in_WRITE_"+toString(x)+"_DATA" ,
    554                                    _name+"_glue",
    555                                    "out_CONST_1"
    556                                    );
    557               _component->port_map(_name+"_glue",
    558                                    "out_CONST_1",
    559                                    name_component,
    560                                    "in_WRITE_"+toString(x)+"_DATA"
    561                                    );
    562 
    563               _component->port_map(name_component,
    564                                    "in_WRITE_"+toString(x++)+"_ADDRESS",
    565                                    _name,
    566                                    "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_NEW_NUM_REG");
    567             }
     547//            _component->port_map(name_component,
     548//                                 "in_WRITE_"+toString(x)+"_VAL" ,
     549//                                 _name+"_glue",
     550//                                 "out_RETIRE_ROB_GPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_VAL");
     551//            _component->port_map(name_component,
     552//                                 "out_WRITE_"+toString(x)+"_ACK",
     553//                                 _name+"_glue",
     554//                                 "in_RETIRE_ROB_GPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK" );
     555
     556//            _component->port_map(name_component,
     557//                                 "in_WRITE_"+toString(x)+"_DATA" ,
     558//                                 _name+"_glue",
     559//                                 "out_CONST_1"
     560//                                 );
     561//            _component->port_map(_name+"_glue",
     562//                                 "out_CONST_1",
     563//                                 name_component,
     564//                                 "in_WRITE_"+toString(x)+"_DATA"
     565//                                 );
     566
     567//            _component->port_map(name_component,
     568//                                 "in_WRITE_"+toString(x++)+"_ADDRESS",
     569//                                 _name,
     570//                                 "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_NEW_NUM_REG");
     571//          }
    568572
    569573        }
     
    574578        name_component = _name+"_spr_"+toString(i);
    575579       
    576         std::cout << "Instance : " << name_component << std::endl;
     580        log_printf(INFO,Register_unit,FUNCTION,_("Instance : %s"),name_component.c_str());
    577581       
    578582#ifdef POSITION
     
    631635          name_component = _name+"_spr_status_"+toString(i);
    632636         
    633           std::cout << "Instance : " << name_component << std::endl;
    634          
     637          log_printf(INFO,Register_unit,FUNCTION,_("Instance : %s"),name_component.c_str());   
     638 
    635639#ifdef POSITION
    636640          _component->interface_map (name_component,"",
     
    717721            }
    718722
    719           for (uint32_t j=0; j<_param->_nb_inst_retire_rob [i]; j++)
    720             {
    721               _component->port_map(name_component,
    722                                    "in_WRITE_"+toString(x)+"_VAL" ,
    723                                    _name+"_glue",
    724                                    "out_RETIRE_ROB_SPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_VAL");
    725               _component->port_map(name_component,
    726                                    "out_WRITE_"+toString(x)+"_ACK",
    727                                    _name+"_glue",
    728                                    "in_RETIRE_ROB_SPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK" );
    729 
    730               _component->port_map(name_component,
    731                                    "in_WRITE_"+toString(x)+"_DATA" ,
    732                                    _name+"_glue",
    733                                    "out_CONST_0");
    734               _component->port_map(_name+"_glue",
    735                                    "out_CONST_0",
    736                                    name_component,
    737                                    "in_WRITE_"+toString(x)+"_DATA"
    738                                    );
    739 
    740               _component->port_map(name_component,
    741                                    "in_WRITE_"+toString(x++)+"_ADDRESS",
    742                                    _name,
    743                                    "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_OLD_NUM_REG");
     723//        for (uint32_t j=0; j<_param->_nb_inst_retire_rob [i]; j++)
     724//          {
     725//            _component->port_map(name_component,
     726//                                 "in_WRITE_"+toString(x)+"_VAL" ,
     727//                                 _name+"_glue",
     728//                                 "out_RETIRE_ROB_SPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_VAL");
     729//            _component->port_map(name_component,
     730//                                 "out_WRITE_"+toString(x)+"_ACK",
     731//                                 _name+"_glue",
     732//                                 "in_RETIRE_ROB_SPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK" );
     733
     734//            _component->port_map(name_component,
     735//                                 "in_WRITE_"+toString(x)+"_DATA" ,
     736//                                 _name+"_glue",
     737//                                 "out_CONST_0");
     738//            _component->port_map(_name+"_glue",
     739//                                 "out_CONST_0",
     740//                                 name_component,
     741//                                 "in_WRITE_"+toString(x)+"_DATA"
     742//                                 );
     743
     744//            _component->port_map(name_component,
     745//                                 "in_WRITE_"+toString(x++)+"_ADDRESS",
     746//                                 _name,
     747//                                 "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_OLD_NUM_REG");
    744748             
    745               _component->port_map(name_component,
    746                                    "in_WRITE_"+toString(x)+"_VAL" ,
    747                                    _name+"_glue",
    748                                    "out_RETIRE_ROB_SPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_VAL");
    749               _component->port_map(name_component,
    750                                    "out_WRITE_"+toString(x)+"_ACK",
    751                                    _name+"_glue",
    752                                    "in_RETIRE_ROB_SPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK" );
    753 
    754               _component->port_map(name_component,
    755                                    "in_WRITE_"+toString(x)+"_DATA" ,
    756                                    _name+"_glue",
    757                                    "out_CONST_1"
    758                                    );
    759               _component->port_map(_name+"_glue",
    760                                    "out_CONST_1",
    761                                    name_component,
    762                                    "in_WRITE_"+toString(x)+"_DATA"
    763                                    );
    764 
    765               _component->port_map(name_component,
    766                                    "in_WRITE_"+toString(x++)+"_ADDRESS",
    767                                    _name,
    768                                    "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_NEW_NUM_REG");
    769             }
     749//            _component->port_map(name_component,
     750//                                 "in_WRITE_"+toString(x)+"_VAL" ,
     751//                                 _name+"_glue",
     752//                                 "out_RETIRE_ROB_SPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_VAL");
     753//            _component->port_map(name_component,
     754//                                 "out_WRITE_"+toString(x)+"_ACK",
     755//                                 _name+"_glue",
     756//                                 "in_RETIRE_ROB_SPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK" );
     757
     758//            _component->port_map(name_component,
     759//                                 "in_WRITE_"+toString(x)+"_DATA" ,
     760//                                 _name+"_glue",
     761//                                 "out_CONST_1"
     762//                                 );
     763//            _component->port_map(_name+"_glue",
     764//                                 "out_CONST_1",
     765//                                 name_component,
     766//                                 "in_WRITE_"+toString(x)+"_DATA"
     767//                                 );
     768
     769//            _component->port_map(name_component,
     770//                                 "in_WRITE_"+toString(x++)+"_ADDRESS",
     771//                                 _name,
     772//                                 "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_NEW_NUM_REG");
     773//          }
    770774
    771775        }
     
    775779      name_component = _name+"_glue";
    776780     
    777       std::cout << "Instance : " << name_component << std::endl;
    778     
     781      log_printf(INFO,Register_unit,FUNCTION,_("Instance : %s"),name_component.c_str()); 
     782   
    779783#ifdef POSITION
    780784      _component->interface_map (name_component,"",
     
    10101014        }
    10111015
    1012       for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
    1013         {
    1014           uint32_t x     =_param->_nb_inst_retire_rob [i];
    1015           uint32_t gpr_j = _param->_nb_gpr_write + _param->_nb_inst_insert_rob [i];
    1016           uint32_t spr_j = _param->_nb_spr_write + _param->_nb_inst_insert_rob [i];
    1017 
    1018           for (uint32_t j=0; j<x; j++)
    1019             {
    1020               _component->port_map(name_component,
    1021                                    "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_VAL",
    1022                                    _name,
    1023                                    "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_VAL");
    1024               _component->port_map(name_component,
    1025                                    "out_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_ACK",
    1026                                    _name,
    1027                                    "out_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_ACK");
    1028               _component->port_map(name_component,
    1029                                    "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_OLD_USE",
    1030                                    _name,
    1031                                    "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_OLD_USE");
    1032               _component->port_map(name_component,
    1033                                    "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_NEW_USE",
    1034                                    _name,
    1035                                    "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_NEW_USE");
    1036               _component->port_map(name_component,
    1037                                    "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_OLD_USE",
    1038                                    _name,
    1039                                    "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_OLD_USE");
    1040               _component->port_map(name_component,
    1041                                    "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_NEW_USE",
    1042                                    _name,
    1043                                    "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_NEW_USE");
     1016//       for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
     1017//      {
     1018//        uint32_t x     =_param->_nb_inst_retire_rob [i];
     1019//        uint32_t gpr_j = _param->_nb_gpr_write + _param->_nb_inst_insert_rob [i];
     1020//        uint32_t spr_j = _param->_nb_spr_write + _param->_nb_inst_insert_rob [i];
     1021
     1022//        for (uint32_t j=0; j<x; j++)
     1023//          {
     1024//            _component->port_map(name_component,
     1025//                                 "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_VAL",
     1026//                                 _name,
     1027//                                 "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_VAL");
     1028//            _component->port_map(name_component,
     1029//                                 "out_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_ACK",
     1030//                                 _name,
     1031//                                 "out_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_ACK");
     1032//            _component->port_map(name_component,
     1033//                                 "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_OLD_USE",
     1034//                                 _name,
     1035//                                 "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_OLD_USE");
     1036//            _component->port_map(name_component,
     1037//                                 "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_NEW_USE",
     1038//                                 _name,
     1039//                                 "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_NEW_USE");
     1040//            _component->port_map(name_component,
     1041//                                 "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_OLD_USE",
     1042//                                 _name,
     1043//                                 "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_OLD_USE");
     1044//            _component->port_map(name_component,
     1045//                                 "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_NEW_USE",
     1046//                                 _name,
     1047//                                 "in_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_NEW_USE");
    10441048           
    1045               _component->port_map(name_component,
    1046                                    "out_RETIRE_ROB_GPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_VAL",
    1047                                    _name+"_gpr_status_"+toString(i),
    1048                                    "in_WRITE_"+toString(gpr_j)+"_VAL");
    1049               _component->port_map(name_component,
    1050                                    "in_RETIRE_ROB_GPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK",
    1051                                    _name+"_gpr_status_"+toString(i),
    1052                                    "out_WRITE_"+toString(gpr_j++)+"_ACK");
    1053               _component->port_map(name_component,
    1054                                    "out_RETIRE_ROB_GPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_VAL",
    1055                                    _name+"_gpr_status_"+toString(i),
    1056                                    "in_WRITE_"+toString(gpr_j)+"_VAL");
    1057               _component->port_map(name_component,
    1058                                    "in_RETIRE_ROB_GPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK",
    1059                                    _name+"_gpr_status_"+toString(i),
    1060                                    "out_WRITE_"+toString(gpr_j++)+"_ACK");
    1061               _component->port_map(name_component,
    1062                                    "out_RETIRE_ROB_SPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_VAL",
    1063                                    _name+"_spr_status_"+toString(i),
    1064                                    "in_WRITE_"+toString(spr_j)+"_VAL");
    1065               _component->port_map(name_component,
    1066                                    "in_RETIRE_ROB_SPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK",
    1067                                    _name+"_spr_status_"+toString(i),
    1068                                    "out_WRITE_"+toString(spr_j++)+"_ACK");
    1069               _component->port_map(name_component,
    1070                                    "out_RETIRE_ROB_SPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_VAL",
    1071                                    _name+"_spr_status_"+toString(i),
    1072                                    "in_WRITE_"+toString(spr_j)+"_VAL");
    1073               _component->port_map(name_component,
    1074                                    "in_RETIRE_ROB_SPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK",
    1075                                    _name+"_spr_status_"+toString(i),
    1076                                    "out_WRITE_"+toString(spr_j++)+"_ACK");
    1077             }
    1078         }
     1049//            _component->port_map(name_component,
     1050//                                 "out_RETIRE_ROB_GPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_VAL",
     1051//                                 _name+"_gpr_status_"+toString(i),
     1052//                                 "in_WRITE_"+toString(gpr_j)+"_VAL");
     1053//            _component->port_map(name_component,
     1054//                                 "in_RETIRE_ROB_GPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK",
     1055//                                 _name+"_gpr_status_"+toString(i),
     1056//                                 "out_WRITE_"+toString(gpr_j++)+"_ACK");
     1057//            _component->port_map(name_component,
     1058//                                 "out_RETIRE_ROB_GPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_VAL",
     1059//                                 _name+"_gpr_status_"+toString(i),
     1060//                                 "in_WRITE_"+toString(gpr_j)+"_VAL");
     1061//            _component->port_map(name_component,
     1062//                                 "in_RETIRE_ROB_GPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK",
     1063//                                 _name+"_gpr_status_"+toString(i),
     1064//                                 "out_WRITE_"+toString(gpr_j++)+"_ACK");
     1065//            _component->port_map(name_component,
     1066//                                 "out_RETIRE_ROB_SPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_VAL",
     1067//                                 _name+"_spr_status_"+toString(i),
     1068//                                 "in_WRITE_"+toString(spr_j)+"_VAL");
     1069//            _component->port_map(name_component,
     1070//                                 "in_RETIRE_ROB_SPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK",
     1071//                                 _name+"_spr_status_"+toString(i),
     1072//                                 "out_WRITE_"+toString(spr_j++)+"_ACK");
     1073//            _component->port_map(name_component,
     1074//                                 "out_RETIRE_ROB_SPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_VAL",
     1075//                                 _name+"_spr_status_"+toString(i),
     1076//                                 "in_WRITE_"+toString(spr_j)+"_VAL");
     1077//            _component->port_map(name_component,
     1078//                                 "in_RETIRE_ROB_SPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK",
     1079//                                 _name+"_spr_status_"+toString(i),
     1080//                                 "out_WRITE_"+toString(spr_j++)+"_ACK");
     1081//          }
     1082//      }
    10791083    }// glue
    10801084
    1081 //     _component->test_map ();
    1082 
    1083 #ifdef POSITION
    1084     _component->generate_file();
     1085#if DEBUG_Register_unit == true
     1086    _component->test_map ();
     1087#endif
     1088
     1089#ifdef POSITION
     1090    if (usage_is_set(_usage,USE_POSITION))
     1091      _component->generate_file();
    10851092#endif
    10861093
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src/Register_unit_deallocation.cpp

    r81 r88  
    2222    log_printf(FUNC,Register_unit,FUNCTION,"Begin");
    2323
     24    if (usage_is_set(_usage,USE_SYSTEMC))
     25      {
    2426//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
    2527    delete     in_CLOCK ;
     
    5961    delete []  in_INSERT_ROB_RE_USE            ;
    6062    delete []  in_INSERT_ROB_RE_NUM_REG        ;
    61     delete []  in_RETIRE_ROB_VAL               ;
    62     delete [] out_RETIRE_ROB_ACK               ;
    63     delete []  in_RETIRE_ROB_RD_OLD_USE        ;
    64     delete []  in_RETIRE_ROB_RD_OLD_NUM_REG    ;
    65     delete []  in_RETIRE_ROB_RD_NEW_USE        ;
    66     delete []  in_RETIRE_ROB_RD_NEW_NUM_REG    ;
    67     delete []  in_RETIRE_ROB_RE_OLD_USE        ;
    68     delete []  in_RETIRE_ROB_RE_OLD_NUM_REG    ;
    69     delete []  in_RETIRE_ROB_RE_NEW_USE        ;
    70     delete []  in_RETIRE_ROB_RE_NEW_NUM_REG    ;
     63//     delete []  in_RETIRE_ROB_VAL               ;
     64//     delete [] out_RETIRE_ROB_ACK               ;
     65//     delete []  in_RETIRE_ROB_RD_OLD_USE        ;
     66//     delete []  in_RETIRE_ROB_RD_OLD_NUM_REG    ;
     67//     delete []  in_RETIRE_ROB_RD_NEW_USE        ;
     68//     delete []  in_RETIRE_ROB_RD_NEW_NUM_REG    ;
     69//     delete []  in_RETIRE_ROB_RE_OLD_USE        ;
     70//     delete []  in_RETIRE_ROB_RE_OLD_NUM_REG    ;
     71//     delete []  in_RETIRE_ROB_RE_NEW_USE        ;
     72//     delete []  in_RETIRE_ROB_RE_NEW_NUM_REG    ;
     73      }
    7174
    7275    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src/Register_unit_end_cycle.cpp

    r81 r88  
    2323
    2424#ifdef STATISTICS
    25     _stat->end_cycle();
     25    if (usage_is_set(_usage,USE_STATISTICS))
     26      _stat->end_cycle();
    2627#endif   
    2728
     
    2930    // Evaluation before read the ouput signal
    3031//  sc_start(0);
    31     _interfaces->testbench();
     32    if (usage_is_set(_usage,USE_VHDL_TESTBENCH))
     33      _interfaces->testbench();
    3234#endif
    3335
Note: See TracChangeset for help on using the changeset viewer.