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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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  };
Note: See TracChangeset for help on using the changeset viewer.