Ignore:
Timestamp:
Sep 28, 2007, 2:58:08 PM (17 years ago)
Author:
rosiere
Message:
  • VHDL - RegisterFile_Multi_Banked (only partial_crossbar)
  • SystemC - modif Component, interface and co -> ajout du type Tusage_T pour instancier un coposant mais ne demander que le VHDL ou le systemC.
  • Séminaire interne
File:
1 edited

Legend:

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

    r55 r57  
    1414namespace registerfile_monolithic    {
    1515
    16   RegisterFile_Monolithic::RegisterFile_Monolithic (
     16  RegisterFile_Monolithic::RegisterFile_Monolithic
     17  (
    1718#ifdef SYSTEMC
    18                                                     sc_module_name name,
     19   sc_module_name name,
    1920#else
    20                                                     string name        ,
     21   string name        ,
    2122#endif
    2223#ifdef STATISTICS
    23                                                     morpheo::behavioural::Parameters_Statistics            * param_statistics,
     24   morpheo::behavioural::Parameters_Statistics            * param_statistics,
    2425#endif
    25                                                     morpheo::behavioural::generic::registerfile::registerfile_monolithic::Parameters * param ):
    26     _name   (name),
    27     _param (param)
     26   morpheo::behavioural::generic::registerfile::registerfile_monolithic::Parameters * param,
     27   morpheo::behavioural::Tusage_t usage
     28   ):
     29    _name  (name),
     30    _param (param),
     31    _usage (usage)
    2832  {
    2933    log_printf(FUNC,RegisterFile_Monolithic,"RegisterFile_Monolithic","Begin");
    3034
    31 #ifdef SYSTEMC
    3235    log_printf(INFO,RegisterFile_Monolithic,"RegisterFile_Monolithic","Allocation");
    33 
    3436    allocation ();
    35 #endif
    3637
    3738#ifdef STATISTICS
     
    4748
    4849#ifdef SYSTEMC
    49     SC_METHOD (transition);
    50     dont_initialize ();
    51     sensitive_pos << *(in_CLOCK);
     50    if (_usage & USE_SYSTEMC)
     51      {
     52        SC_METHOD (transition);
     53        dont_initialize ();
     54        sensitive_pos << *(in_CLOCK);
     55       
     56        SC_METHOD (genMealy_read);
     57        dont_initialize ();
     58        sensitive_neg << *(in_CLOCK);
     59        for (uint32_t i=0; i<_param->_nb_port_read; i++)
     60          sensitive << *(in_READ_VAL     [i])
     61                    << *(in_READ_ADDRESS [i]);
     62        for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
     63          sensitive << *(in_READ_WRITE_VAL     [i])
     64                    << *(in_READ_WRITE_RW      [i])
     65                    << *(in_READ_WRITE_ADDRESS [i]);
     66       
     67#  ifdef SYSTEMCASS_SPECIFIC
     68        // List dependency information
     69        for (uint32_t i=0; i<_param->_nb_port_read; i++)
     70          {
     71            (*(out_READ_DATA  [i])) (*( in_READ_VAL     [i]));
     72            (*(out_READ_DATA  [i])) (*( in_READ_ADDRESS [i]));
     73          }
     74        for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
     75          { 
     76            (*(out_READ_WRITE_RDATA [i])) (*( in_READ_WRITE_VAL     [i]));
     77            (*(out_READ_WRITE_RDATA [i])) (*( in_READ_WRITE_RW      [i]));
     78            (*(out_READ_WRITE_RDATA [i])) (*( in_READ_WRITE_ADDRESS [i]));
     79          }
     80#  endif   
     81       
     82        for (uint32_t i=0; i<_param->_nb_port_read       ; i++)
     83          PORT_WRITE(out_READ_ACK        [i], 1);
     84        for (uint32_t i=0; i<_param->_nb_port_write      ; i++)
     85          PORT_WRITE(out_WRITE_ACK       [i], 1);
     86        for (uint32_t i=0; i<_param->_nb_port_read_write ; i++)
     87          PORT_WRITE(out_READ_WRITE_ACK  [i], 1);
     88      }
     89#endif
    5290   
    53     SC_METHOD (genMealy_read);
    54     dont_initialize ();
    55     sensitive_neg << *(in_CLOCK);
    56     for (uint32_t i=0; i<_param->_nb_port_read; i++)
    57       sensitive << *(in_READ_VAL     [i])
    58                 << *(in_READ_ADDRESS [i]);
    59     for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
    60       sensitive << *(in_READ_WRITE_VAL     [i])
    61                 << *(in_READ_WRITE_RW      [i])
    62                 << *(in_READ_WRITE_ADDRESS [i]);
    63 
    64 #ifdef SYSTEMCASS_SPECIFIC
    65     // List dependency information
    66     for (uint32_t i=0; i<_param->_nb_port_read; i++)
    67       {
    68         (*(out_READ_DATA  [i])) (*( in_READ_VAL     [i]));
    69         (*(out_READ_DATA  [i])) (*( in_READ_ADDRESS [i]));
    70       }
    71     for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
    72       { 
    73         (*(out_READ_WRITE_RDATA [i])) (*( in_READ_WRITE_VAL     [i]));
    74         (*(out_READ_WRITE_RDATA [i])) (*( in_READ_WRITE_RW      [i]));
    75         (*(out_READ_WRITE_RDATA [i])) (*( in_READ_WRITE_ADDRESS [i]));
    76       }
    77 #endif   
    78 
    79     for (uint32_t i=0; i<_param->_nb_port_read       ; i++)
    80       PORT_WRITE(out_READ_ACK        [i], 1);
    81     for (uint32_t i=0; i<_param->_nb_port_write      ; i++)
    82       PORT_WRITE(out_WRITE_ACK       [i], 1);
    83     for (uint32_t i=0; i<_param->_nb_port_read_write ; i++)
    84       PORT_WRITE(out_READ_WRITE_ACK  [i], 1);
    85 #endif
    86 
    8791    log_printf(FUNC,RegisterFile_Monolithic,"RegisterFile_Monolithic","End");
    8892  };
     
    9599#endif
    96100
    97 #ifdef SYSTEMC
    98101    deallocation ();
    99 #endif
    100102  };
    101103
Note: See TracChangeset for help on using the changeset viewer.