Ignore:
Timestamp:
Dec 4, 2007, 2:31:54 PM (17 years ago)
Author:
rosiere
Message:

Modification en profondeur de Component-port_map.
Compilation ok pour Register_unit ... a tester (systemC et vhdl)

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

Legend:

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

    r55 r62  
    2525    _nb_word           (nb_word      ),
    2626    _size_word         (size_word    ),
    27     _size_address      (static_cast<uint32_t>(log2(_nb_word)))
     27    _size_address      (static_cast<uint32_t>(log2(_nb_word))),
     28    _have_port_address (_size_address != 0)
     29
    2830  {
    2931    test();
     
    3638    _nb_word           (param._nb_word      ),
    3739    _size_word         (param._size_word    ),
    38     _size_address      (param._size_address )
     40    _size_address      (param._size_address ),
     41    _have_port_address (param._have_port_address)
    3942  {
    4043    test();
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters_msg_error.cpp

    r55 r62  
    5050        msg += "    * nb_port_read_write              : " + toString(_nb_port_read_write) + "\n";
    5151      }
    52     if (_nb_word < 2)
    53       {
    54         msg += "  - nb_word must be >= 2\n";
    55         msg += "    * nb_word                         : " + toString(_nb_word)    + "\n";
    56       }
     52//     if (_nb_word < 2)
     53//       {
     54//         msg += "  - nb_word must be >= 2\n";
     55//         msg += "    * nb_word                         : " + toString(_nb_word)    + "\n";
     56//       }
    5757
    5858    return msg;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic.cpp

    r58 r62  
    5858        sensitive_neg << *(in_CLOCK);
    5959        for (uint32_t i=0; i<_param->_nb_port_read; i++)
    60           sensitive << *(in_READ_VAL     [i])
    61                     << *(in_READ_ADDRESS [i]);
     60          {
     61            sensitive << *(in_READ_VAL     [i]);
     62            if (_param->_have_port_address)
     63              sensitive << *(in_READ_ADDRESS [i]);
     64          }
    6265        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            sensitive << *(in_READ_WRITE_VAL     [i])
     68                      << *(in_READ_WRITE_RW      [i]);
     69            if (_param->_have_port_address)
     70              sensitive << *(in_READ_WRITE_ADDRESS [i]);
     71          }
    6672       
    6773#  ifdef SYSTEMCASS_SPECIFIC
     
    7076          {
    7177            (*(out_READ_DATA  [i])) (*( in_READ_VAL     [i]));
    72             (*(out_READ_DATA  [i])) (*( in_READ_ADDRESS [i]));
     78            if (_param->_have_port_address)
     79              (*(out_READ_DATA  [i])) (*( in_READ_ADDRESS [i]));
    7380          }
    7481        for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
     
    7683            (*(out_READ_WRITE_RDATA [i])) (*( in_READ_WRITE_VAL     [i]));
    7784            (*(out_READ_WRITE_RDATA [i])) (*( in_READ_WRITE_RW      [i]));
    78             (*(out_READ_WRITE_RDATA [i])) (*( in_READ_WRITE_ADDRESS [i]));
     85            if (_param->_have_port_address)
     86              (*(out_READ_WRITE_RDATA [i])) (*( in_READ_WRITE_ADDRESS [i]));
    7987          }
    8088#  endif   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_allocation.cpp

    r57 r62  
    4444     in_READ_VAL         = new SC_IN (Tcontrol_t) * [_param->_nb_port_read];
    4545    out_READ_ACK         = new SC_OUT(Tcontrol_t) * [_param->_nb_port_read];
     46    if (_param->_have_port_address)
    4647     in_READ_ADDRESS     = new SC_IN (Taddress_t) * [_param->_nb_port_read];
    4748    out_READ_DATA        = new SC_OUT(Tdata_t   ) * [_param->_nb_port_read];
     
    5960         in_READ_VAL     [i]  = interface->set_signal_valack_in        ("val"    , VAL);
    6061        out_READ_ACK     [i]  = interface->set_signal_valack_out       ("ack"    , ACK);
     62        if (_param->_have_port_address)
    6163         in_READ_ADDRESS [i]  = interface->set_signal_in  <Taddress_t> ("address", _param->_size_address);
    6264        out_READ_DATA    [i]  = interface->set_signal_out <Tdata_t   > ("data"   , _param->_size_word);
     
    6769     in_WRITE_VAL        = new SC_IN (Tcontrol_t) * [_param->_nb_port_write];
    6870    out_WRITE_ACK        = new SC_OUT(Tcontrol_t) * [_param->_nb_port_write];
     71    if (_param->_have_port_address)
    6972     in_WRITE_ADDRESS    = new SC_IN (Taddress_t) * [_param->_nb_port_write];
    7073     in_WRITE_DATA       = new SC_IN (Tdata_t   ) * [_param->_nb_port_write];
     
    8285         in_WRITE_VAL     [i]  = interface->set_signal_valack_in        ("val"    , VAL);
    8386        out_WRITE_ACK     [i]  = interface->set_signal_valack_out       ("ack"    , ACK);
     87        if (_param->_have_port_address)
    8488         in_WRITE_ADDRESS [i]  = interface->set_signal_in  <Taddress_t> ("address", _param->_size_address);
    8589         in_WRITE_DATA    [i]  = interface->set_signal_in  <Tdata_t   > ("data"   , _param->_size_word);
     
    9195    out_READ_WRITE_ACK         = new SC_OUT(Tcontrol_t) * [_param->_nb_port_read_write];
    9296     in_READ_WRITE_RW          = new SC_IN (Tcontrol_t) * [_param->_nb_port_read_write];
     97    if (_param->_have_port_address)
    9398     in_READ_WRITE_ADDRESS     = new SC_IN (Taddress_t) * [_param->_nb_port_read_write];
    9499     in_READ_WRITE_WDATA       = new SC_IN (Tdata_t   ) * [_param->_nb_port_read_write];
     
    108113        out_READ_WRITE_ACK     [i]  = interface->set_signal_valack_out       ("ack"    , ACK);
    109114         in_READ_WRITE_RW      [i]  = interface->set_signal_valack_in        ("rw"     , VAL);
     115        if (_param->_have_port_address)
    110116         in_READ_WRITE_ADDRESS [i]  = interface->set_signal_in  <Taddress_t> ("address", _param->_size_address);
    111117         in_READ_WRITE_WDATA   [i]  = interface->set_signal_in  <Tdata_t   > ("wdata"  , _param->_size_word);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_deallocation.cpp

    r57 r62  
    2525        delete []  in_READ_VAL    ;
    2626        delete [] out_READ_ACK    ;
     27        if (_param->_have_port_address)
    2728        delete []  in_READ_ADDRESS;
    2829        delete [] out_READ_DATA   ;
     
    3132        delete []  in_WRITE_VAL    ;
    3233        delete [] out_WRITE_ACK    ;
     34        if (_param->_have_port_address)
    3335        delete []  in_WRITE_ADDRESS;
    3436        delete []  in_WRITE_DATA   ;
     
    3840        delete [] out_READ_WRITE_ACK    ;
    3941        delete []  in_READ_WRITE_RW     ;
     42        if (_param->_have_port_address)
    4043        delete []  in_READ_WRITE_ADDRESS;
    4144        delete []  in_READ_WRITE_WDATA  ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_genMealy_read.cpp

    r55 r62  
    2828        if ( PORT_READ(in_READ_VAL [i]) == 1)
    2929          {
    30             Taddress_t address = PORT_READ(in_READ_ADDRESS[i]);
     30            Taddress_t address;
     31            if (_param->_have_port_address)
     32              address = PORT_READ(in_READ_ADDRESS[i]);
     33            else
     34              address = 0;
    3135            Tdata_t    data    = REGISTER_READ(reg_DATA[address]);
    3236
     
    5559             )
    5660          {
    57             Taddress_t address = PORT_READ(in_READ_WRITE_ADDRESS[i]);
     61            Taddress_t address;
     62            if (_param->_have_port_address)
     63              address = PORT_READ(in_READ_WRITE_ADDRESS[i]);
     64            else
     65              address = 0;
    5866           
    5967            data = REGISTER_READ(reg_DATA[address]);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_transition.cpp

    r55 r62  
    3030#endif   
    3131
    32             Taddress_t address = PORT_READ(in_WRITE_ADDRESS[i]);
     32            Taddress_t address;
     33            if (_param->_have_port_address)
     34              address = PORT_READ(in_WRITE_ADDRESS[i]);
     35            else
     36              address = 0;
     37
    3338            Tdata_t    data    = PORT_READ(in_WRITE_DATA   [i]);
    3439           
     
    4954#endif   
    5055
    51             Taddress_t address = PORT_READ(in_READ_WRITE_ADDRESS[i]);
     56            Taddress_t address;
     57            if (_param->_have_port_address)
     58              address = PORT_READ(in_READ_WRITE_ADDRESS[i]);
     59            else
     60              address = 0;
    5261            Tdata_t    data    = PORT_READ(in_READ_WRITE_WDATA  [i]);
    5362           
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_body.cpp

    r55 r62  
    3737   
    3838    for (uint32_t i = 0; i < _param->_nb_port_read; i++)
    39         vhdl->set_body ("out_READ_"+toString(i)+"_DATA <= reg_DATA (conv_integer(in_READ_"+toString(i)+"_ADDRESS)) when in_READ_"+toString(i)+"_VAL = '1' else "+std_logic_others(_param->_size_word,0)+";");
     39      {
     40        string str_address;
     41        if (_param->_have_port_address)
     42          str_address = "conv_integer(in_READ_"+toString(i)+"_ADDRESS)";
     43        else
     44          str_address = "0";
    4045
     46        vhdl->set_body ("out_READ_"+toString(i)+"_DATA <= reg_DATA ("+str_address+") when in_READ_"+toString(i)+"_VAL = '1' else "+std_logic_others(_param->_size_word,0)+";");
     47      }
    4148    for (uint32_t i = 0; i < _param->_nb_port_read_write; i++)
    42       vhdl->set_body ("out_READ_WRITE_"+toString(i)+"_RDATA <= reg_DATA (conv_integer(in_READ_WRITE_"+toString(i)+"_ADDRESS)) when in_READ_WRITE_"+toString(i)+"_VAL = '1' and in_READ_WRITE_"+toString(i)+"_RW = '"+toString(RW_READ)+"' else "+std_logic_others(_param->_size_word,0)+";");
     49      {
     50        string str_address;
     51        if (_param->_have_port_address)
     52          str_address = "conv_integer(in_READ_WRITE_"+toString(i)+"_ADDRESS)";
     53        else
     54          str_address = "0";
     55        vhdl->set_body ("out_READ_WRITE_"+toString(i)+"_RDATA <= reg_DATA ("+str_address+") when in_READ_WRITE_"+toString(i)+"_VAL = '1' and in_READ_WRITE_"+toString(i)+"_RW = '"+toString(RW_READ)+"' else "+std_logic_others(_param->_size_word,0)+";");
     56      }
    4357
    4458    vhdl->set_body ("");
     
    5468    for (uint32_t i = 0; i < _param->_nb_port_write; i++)
    5569      {
    56       vhdl->set_body ("\t\tif (in_WRITE_"+toString(i)+"_VAL = '1') then");
    57       vhdl->set_body ("\t\t\treg_DATA(conv_integer(in_WRITE_"+toString(i)+"_ADDRESS)) <= in_WRITE_"+toString(i)+"_DATA;");
    58       vhdl->set_body ("\t\tend if;");
     70        string str_address;
     71        if (_param->_have_port_address)
     72          str_address = "conv_integer(in_WRITE_"+toString(i)+"_ADDRESS)";
     73        else
     74          str_address = "0";
     75
     76        vhdl->set_body ("\t\tif (in_WRITE_"+toString(i)+"_VAL = '1') then");
     77        vhdl->set_body ("\t\t\treg_DATA("+str_address+") <= in_WRITE_"+toString(i)+"_DATA;");
     78        vhdl->set_body ("\t\tend if;");
    5979      }
    6080    for (uint32_t i = 0; i < _param->_nb_port_read_write; i++)
    6181      {
    62       vhdl->set_body ("\t\tif (in_READ_WRITE_"+toString(i)+"_VAL = '1' and in_READ_WRITE_"+toString(i)+"_RW = '"+toString(RW_WRITE)+"') then");
    63       vhdl->set_body ("\t\t\treg_DATA(conv_integer(in_READ_WRITE_"+toString(i)+"_ADDRESS)) <= in_READ_WRITE_"+toString(i)+"_WDATA;");
    64       vhdl->set_body ("\t\tend if;");
     82        string str_address;
     83        if (_param->_have_port_address)
     84          str_address = "conv_integer(in_READ_WRITE_"+toString(i)+"_ADDRESS)";
     85        else
     86          str_address = "0";
     87       
     88        vhdl->set_body ("\t\tif (in_READ_WRITE_"+toString(i)+"_VAL = '1' and in_READ_WRITE_"+toString(i)+"_RW = '"+toString(RW_WRITE)+"') then");
     89        vhdl->set_body ("\t\t\treg_DATA("+str_address+") <= in_READ_WRITE_"+toString(i)+"_WDATA;");
     90        vhdl->set_body ("\t\tend if;");
    6591      }
    6692
Note: See TracChangeset for help on using the changeset viewer.