Ignore:
Timestamp:
Feb 1, 2011, 9:57:54 PM (13 years ago)
Author:
rosiere
Message:

1) Integration of RegisterFile_Internal_Banked in RegisterFile?
2) Erase "read_write" interface in RegisterFile_Monolithic component
3) Add smith predictor parameters in Load_store_pointer_unit.
4) Fix not statistics flags

Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters.cpp

    r137 r146  
    2626    _have_port_address = param->_have_port_address;
    2727
    28     _param_registerfile_monolithic   = param;
    29     _param_registerfile_multi_banked = NULL;
     28    _param_registerfile_monolithic      = param;
     29    _param_registerfile_internal_banked = NULL;
     30    _param_registerfile_multi_banked    = NULL;
     31
     32    test();
     33
     34    log_printf(FUNC,RegisterFile,"Parameters","End");
     35  };
     36
     37  Parameters::Parameters (morpheo::behavioural::generic::registerfile::registerfile_internal_banked  ::Parameters * param)
     38  {
     39    log_printf(FUNC,RegisterFile,"Parameters","Begin");
     40
     41    _instance          = instance_RegisterFile_Internal_Banked;
     42    _nb_port_read      = param->_nb_port_read ;
     43    _nb_port_write     = param->_nb_port_write;
     44    _nb_word           = param->_nb_word      ;
     45    _size_word         = param->_size_word    ;
     46    _size_address      = param->_size_address ;
     47    _have_port_address = param->_have_port_address;
     48
     49    _param_registerfile_monolithic      = NULL;
     50    _param_registerfile_internal_banked = param;
     51    _param_registerfile_multi_banked    = NULL;
    3052
    3153    test();
     
    4567    log_printf(FUNC,RegisterFile,"Parameters","Begin");
    4668
    47     _param_registerfile_monolithic   = NULL;
    48     _param_registerfile_multi_banked = param;
     69    _param_registerfile_monolithic      = NULL;
     70    _param_registerfile_internal_banked = NULL;
     71    _param_registerfile_multi_banked    = param;
    4972
    5073    test();
     
    5376  };
    5477 
    55 //   Parameters::Parameters (Parameters & param):
    56 //     _instance          (param._instance     ),
    57 //     _nb_port_read      (param._nb_port_read ),
    58 //     _nb_port_write     (param._nb_port_write),
    59 //     _nb_word           (param._nb_word      ),
    60 //     _size_word         (param._size_word    ),
    61 //     _size_address      (param._size_address ),
    62 //     _have_port_address (param._have_port_address)
    63 //   {
    64 //     log_printf(FUNC,RegisterFile,"Parameters (copy)","Begin");
    65 
    66 //     _param_registerfile_multi_banked = param._param_registerfile_multi_banked;
    67 //     _param_registerfile_monolithic   = param._param_registerfile_monolithic;
    68 //     test();
    69 //     log_printf(FUNC,RegisterFile,"Parameters (copy)","End");
    70 //   };
    71 
    7278  Parameters::~Parameters ()
    7379  {
     
    8490//     if (_instance == instance_RegisterFile_Monolithic)
    8591//       COPY(_param_registerfile_monolithic);
     92//     if (_instance == instance_RegisterFile_Internal_Banked)
     93//       COPY(_param_registerfile_internal_banked);
    8694//     if (_instance == instance_RegisterFile_Multi_Banked)
    8795//       COPY(_param_registerfile_multi_banked);
     
    92100}; // end namespace registerfile
    93101}; // end namespace generic
    94 
    95102}; // end namespace behavioural
    96103}; // end namespace morpheo             
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters_msg_error.cpp

    r81 r146  
    1010#include <sstream>
    1111
    12 namespace morpheo                    {
     12namespace morpheo {
    1313namespace behavioural {
    1414namespace generic {
    1515namespace registerfile {
    1616
    17 
    1817  Parameters_test Parameters::msg_error(void)
    1918  {
    2019    if (_instance == instance_RegisterFile_Monolithic)
    21       return _param_registerfile_monolithic  ->msg_error();
     20      return _param_registerfile_monolithic->msg_error();
    2221    else
    23       return _param_registerfile_multi_banked->msg_error();
     22      {
     23        if (_instance == instance_RegisterFile_Internal_Banked)
     24          return _param_registerfile_internal_banked->msg_error();
     25        else
     26          return _param_registerfile_multi_banked->msg_error();
     27      }
    2428  };
    2529
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters_print.cpp

    r81 r146  
    99#include "Behavioural/include/XML.h"
    1010
    11 namespace morpheo                    {
     11namespace morpheo {
    1212namespace behavioural {
    1313namespace generic {
    1414namespace registerfile {
    15 
    1615
    1716  std::string Parameters::print (uint32_t depth)
     
    2221
    2322    if (_instance == instance_RegisterFile_Monolithic)
    24       _return = _param_registerfile_monolithic  ->print(depth);
     23      _return = _param_registerfile_monolithic->print(depth);
    2524    else
    26       _return = _param_registerfile_multi_banked->print(depth);
     25      {
     26        if (_instance == instance_RegisterFile_Internal_Banked)
     27          _return = _param_registerfile_internal_banked->print(depth);
     28        else
     29          _return = _param_registerfile_multi_banked->print(depth);
     30      }
    2731
    2832    log_printf(FUNC,RegisterFile,"print","End");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile.cpp

    r82 r146  
    4343#ifdef STATISTICS
    4444    if (_param->_instance == instance_RegisterFile_Monolithic)
    45       _stat = component_RegisterFile_Monolithic  ->_stat;
     45      _stat = component_RegisterFile_Monolithic->_stat;
    4646    else
    47       _stat = component_RegisterFile_Multi_Banked->_stat;
     47      {
     48        if (_param->_instance == instance_RegisterFile_Internal_Banked)
     49          _stat = component_RegisterFile_Internal_Banked->_stat;
     50        else
     51          _stat = component_RegisterFile_Multi_Banked->_stat;
     52      }
    4853#endif
    4954
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile_allocation.cpp

    r131 r146  
    1515namespace registerfile {
    1616
    17   void RegisterFile::allocation (
    18 #ifdef STATISTICS
    19                                  morpheo::behavioural::Parameters_Statistics * param_statistics
    20 #else
    21                                  void
    22 #endif
    23                                  )
     17  void RegisterFile::allocation
     18  (
     19#ifdef STATISTICS
     20   morpheo::behavioural::Parameters_Statistics * param_statistics
     21#else
     22   void
     23#endif
     24   )
    2425  {
    2526    std::string rename;
     
    6061#endif
    6162
    62      // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                                                               
     63     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     64
    6365    if (_param->_instance == instance_RegisterFile_Monolithic)
    6466    // =====[ component_RegisterFile_Monolithic ]=========================
    6567      {
    66         component_RegisterFile_Monolithic  = new morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::RegisterFile_Monolithic  ::RegisterFile_Monolithic   (_name.c_str()
    67 #ifdef STATISTICS
    68                                                                                                                                                                                ,param_statistics
    69 #endif
    70                                                                                                                                                                                ,_param->_param_registerfile_monolithic
    71                                                                                                                                                                                ,_usage);
    72        
     68        component_RegisterFile_Monolithic  = new morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::RegisterFile_Monolithic  ::RegisterFile_Monolithic
     69          (_name.c_str()
     70#ifdef STATISTICS
     71           ,param_statistics
     72#endif
     73           ,_param->_param_registerfile_monolithic
     74           ,_usage);
    7375      }
    7476    else
    75     // =====[ component_RegisterFile_Multi_Banked ]=======================
    76       {
    77         component_RegisterFile_Multi_Banked = new morpheo::behavioural::generic::registerfile::registerfile_multi_banked::RegisterFile_Multi_Banked::RegisterFile_Multi_Banked (_name.c_str()
    78 #ifdef STATISTICS
    79                                                                                                                                                                                 ,param_statistics
    80 #endif
    81                                                                                                                                                                                 ,_param->_param_registerfile_multi_banked
    82                                                                                                                                                                                 ,_usage);
    83        
     77      {
     78        if (_param->_instance == instance_RegisterFile_Internal_Banked)
     79          // =====[ component_RegisterFile_Internal_Banked ]=========================
     80          {
     81            component_RegisterFile_Internal_Banked  = new morpheo::behavioural::generic::registerfile::registerfile_internal_banked  ::RegisterFile_Internal_Banked  ::RegisterFile_Internal_Banked
     82              (_name.c_str()
     83#ifdef STATISTICS
     84               ,param_statistics
     85#endif
     86               ,_param->_param_registerfile_internal_banked
     87               ,_usage);
     88          }
     89        else
     90          {
     91            // =====[ component_RegisterFile_Multi_Banked ]=======================
     92            component_RegisterFile_Multi_Banked = new morpheo::behavioural::generic::registerfile::registerfile_multi_banked::RegisterFile_Multi_Banked::RegisterFile_Multi_Banked
     93              (_name.c_str()
     94#ifdef STATISTICS
     95               ,param_statistics
     96#endif
     97               ,_param->_param_registerfile_multi_banked
     98               ,_usage);
     99          }
    84100      }
    85101    // ~~~~~[ Component - Instanciation ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
    125141      }
    126142    else
    127     // =====[ Component_RegisterFile_Multi_Banked - Instanciation ]=======
    128       {
    129 #ifdef SYSTEMCASS_SPECIFIC
    130         (*(component_RegisterFile_Multi_Banked->in_CLOCK )) (*(in_CLOCK ));
    131         (*(component_RegisterFile_Multi_Banked->in_NRESET)) (*(in_NRESET));
    132        
    133         for (uint32_t i=0; i<_param->_nb_port_read; i++)
    134           {
    135             (*(component_RegisterFile_Multi_Banked-> in_READ_VAL     [i])) (*( in_READ_VAL     [i]));   
    136             (*(component_RegisterFile_Multi_Banked->out_READ_ACK     [i])) (*(out_READ_ACK     [i]));
    137             if (_param->_have_port_address == true)
    138             (*(component_RegisterFile_Multi_Banked-> in_READ_ADDRESS [i])) (*( in_READ_ADDRESS [i]));
    139             (*(component_RegisterFile_Multi_Banked->out_READ_DATA    [i])) (*(out_READ_DATA    [i]));
    140           }
    141        
    142         for (uint32_t i=0; i<_param->_nb_port_write; i++)
    143           {
    144             (*(component_RegisterFile_Multi_Banked-> in_WRITE_VAL     [i])) (*( in_WRITE_VAL     [i]));
    145             (*(component_RegisterFile_Multi_Banked->out_WRITE_ACK     [i])) (*(out_WRITE_ACK     [i]));
    146             if (_param->_have_port_address == true)
    147             (*(component_RegisterFile_Multi_Banked-> in_WRITE_ADDRESS [i])) (*( in_WRITE_ADDRESS [i]));
    148             (*(component_RegisterFile_Multi_Banked-> in_WRITE_DATA    [i])) (*( in_WRITE_DATA    [i]));
    149           }
    150 #else
    151          in_CLOCK         = component_RegisterFile_Multi_Banked-> in_CLOCK        ;
    152          in_NRESET        = component_RegisterFile_Multi_Banked-> in_NRESET       ;
    153        
    154          in_READ_VAL      = component_RegisterFile_Multi_Banked-> in_READ_VAL     ;   
    155         out_READ_ACK      = component_RegisterFile_Multi_Banked->out_READ_ACK     ;
    156          in_READ_ADDRESS  = component_RegisterFile_Multi_Banked-> in_READ_ADDRESS ;
    157         out_READ_DATA     = component_RegisterFile_Multi_Banked->out_READ_DATA    ;
    158        
    159          in_WRITE_VAL     = component_RegisterFile_Multi_Banked-> in_WRITE_VAL    ;
    160         out_WRITE_ACK     = component_RegisterFile_Multi_Banked->out_WRITE_ACK    ;
    161          in_WRITE_ADDRESS = component_RegisterFile_Multi_Banked-> in_WRITE_ADDRESS;
    162          in_WRITE_DATA    = component_RegisterFile_Multi_Banked-> in_WRITE_DATA   ;
    163 #endif
    164 
     143      {
     144        if (_param->_instance == instance_RegisterFile_Internal_Banked)
     145          // =====[ Component_RegisterFile_Internal_Banked - Instanciation ]=========
     146          {
     147#ifdef SYSTEMCASS_SPECIFIC
     148            (*(component_RegisterFile_Internal_Banked  ->in_CLOCK )) (*(in_CLOCK ));
     149            (*(component_RegisterFile_Internal_Banked  ->in_NRESET)) (*(in_NRESET));
     150           
     151            for (uint32_t i=0; i<_param->_nb_port_read; i++)
     152              {
     153                (*(component_RegisterFile_Internal_Banked  -> in_READ_VAL     [i])) (*( in_READ_VAL     [i]));   
     154                (*(component_RegisterFile_Internal_Banked  ->out_READ_ACK     [i])) (*(out_READ_ACK     [i]));
     155                if (_param->_have_port_address == true)
     156                (*(component_RegisterFile_Internal_Banked  -> in_READ_ADDRESS [i])) (*( in_READ_ADDRESS [i]));
     157                (*(component_RegisterFile_Internal_Banked  ->out_READ_DATA    [i])) (*(out_READ_DATA    [i]));
     158              }
     159           
     160            for (uint32_t i=0; i<_param->_nb_port_write; i++)
     161              {
     162                (*(component_RegisterFile_Internal_Banked  -> in_WRITE_VAL     [i])) (*( in_WRITE_VAL     [i]));
     163                (*(component_RegisterFile_Internal_Banked  ->out_WRITE_ACK     [i])) (*(out_WRITE_ACK     [i]));
     164                if (_param->_have_port_address == true)
     165                (*(component_RegisterFile_Internal_Banked  -> in_WRITE_ADDRESS [i])) (*( in_WRITE_ADDRESS [i]));
     166                (*(component_RegisterFile_Internal_Banked  -> in_WRITE_DATA    [i])) (*( in_WRITE_DATA    [i]));
     167              }
     168#else
     169             in_CLOCK         = component_RegisterFile_Internal_Banked-> in_CLOCK        ;
     170             in_NRESET        = component_RegisterFile_Internal_Banked-> in_NRESET       ;
     171           
     172             in_READ_VAL      = component_RegisterFile_Internal_Banked-> in_READ_VAL     ;   
     173            out_READ_ACK      = component_RegisterFile_Internal_Banked->out_READ_ACK     ;
     174             in_READ_ADDRESS  = component_RegisterFile_Internal_Banked-> in_READ_ADDRESS ;
     175            out_READ_DATA     = component_RegisterFile_Internal_Banked->out_READ_DATA    ;
     176           
     177             in_WRITE_VAL     = component_RegisterFile_Internal_Banked-> in_WRITE_VAL    ;
     178            out_WRITE_ACK     = component_RegisterFile_Internal_Banked->out_WRITE_ACK    ;
     179             in_WRITE_ADDRESS = component_RegisterFile_Internal_Banked-> in_WRITE_ADDRESS;
     180             in_WRITE_DATA    = component_RegisterFile_Internal_Banked-> in_WRITE_DATA   ;
     181#endif
     182          }
     183        else
     184          // =====[ Component_RegisterFile_Multi_Banked - Instanciation ]=======
     185          {
     186#ifdef SYSTEMCASS_SPECIFIC
     187            (*(component_RegisterFile_Multi_Banked->in_CLOCK )) (*(in_CLOCK ));
     188            (*(component_RegisterFile_Multi_Banked->in_NRESET)) (*(in_NRESET));
     189           
     190            for (uint32_t i=0; i<_param->_nb_port_read; i++)
     191              {
     192                (*(component_RegisterFile_Multi_Banked-> in_READ_VAL     [i])) (*( in_READ_VAL     [i]));   
     193                (*(component_RegisterFile_Multi_Banked->out_READ_ACK     [i])) (*(out_READ_ACK     [i]));
     194                if (_param->_have_port_address == true)
     195                (*(component_RegisterFile_Multi_Banked-> in_READ_ADDRESS [i])) (*( in_READ_ADDRESS [i]));
     196                (*(component_RegisterFile_Multi_Banked->out_READ_DATA    [i])) (*(out_READ_DATA    [i]));
     197              }
     198           
     199            for (uint32_t i=0; i<_param->_nb_port_write; i++)
     200              {
     201                (*(component_RegisterFile_Multi_Banked-> in_WRITE_VAL     [i])) (*( in_WRITE_VAL     [i]));
     202                (*(component_RegisterFile_Multi_Banked->out_WRITE_ACK     [i])) (*(out_WRITE_ACK     [i]));
     203                if (_param->_have_port_address == true)
     204                (*(component_RegisterFile_Multi_Banked-> in_WRITE_ADDRESS [i])) (*( in_WRITE_ADDRESS [i]));
     205                (*(component_RegisterFile_Multi_Banked-> in_WRITE_DATA    [i])) (*( in_WRITE_DATA    [i]));
     206              }
     207#else
     208             in_CLOCK         = component_RegisterFile_Multi_Banked-> in_CLOCK        ;
     209             in_NRESET        = component_RegisterFile_Multi_Banked-> in_NRESET       ;
     210           
     211             in_READ_VAL      = component_RegisterFile_Multi_Banked-> in_READ_VAL     ;   
     212            out_READ_ACK      = component_RegisterFile_Multi_Banked->out_READ_ACK     ;
     213             in_READ_ADDRESS  = component_RegisterFile_Multi_Banked-> in_READ_ADDRESS ;
     214            out_READ_DATA     = component_RegisterFile_Multi_Banked->out_READ_DATA    ;
     215           
     216             in_WRITE_VAL     = component_RegisterFile_Multi_Banked-> in_WRITE_VAL    ;
     217            out_WRITE_ACK     = component_RegisterFile_Multi_Banked->out_WRITE_ACK    ;
     218             in_WRITE_ADDRESS = component_RegisterFile_Multi_Banked-> in_WRITE_ADDRESS;
     219             in_WRITE_DATA    = component_RegisterFile_Multi_Banked-> in_WRITE_DATA   ;
     220#endif
     221          }
    165222      }
    166223
    167224    if (_param->_instance == instance_RegisterFile_Monolithic)
    168       _component = component_RegisterFile_Monolithic  ->_component;
     225      _component = component_RegisterFile_Monolithic->_component;
    169226    else
    170       _component = component_RegisterFile_Multi_Banked->_component;
    171 
     227      {
     228        if (_param->_instance == instance_RegisterFile_Internal_Banked)
     229          _component = component_RegisterFile_Internal_Banked->_component;
     230        else
     231          _component = component_RegisterFile_Multi_Banked->_component;
     232      }
    172233    log_printf(FUNC,RegisterFile,"allocation","End");
    173234  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile_deallocation.cpp

    r131 r146  
    6060
    6161    if (_param->_instance == instance_RegisterFile_Monolithic)
    62       delete component_RegisterFile_Monolithic  ;
     62      delete component_RegisterFile_Monolithic;
    6363    else
    64       delete component_RegisterFile_Multi_Banked;
     64      {
     65        if (_param->_instance == instance_RegisterFile_Internal_Banked)
     66          delete component_RegisterFile_Internal_Banked;
     67        else
     68          delete component_RegisterFile_Multi_Banked;
     69      }
    6570
    6671    log_printf(FUNC,RegisterFile,"deallocation","End");
Note: See TracChangeset for help on using the changeset viewer.