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_Multi_Banked
Files:
1 added
12 edited

Legend:

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

    r58 r62  
    8080      (*(_RegisterFile_Multi_Banked-> in_READ_VAL      [i]))        (READ_VAL      [i]);
    8181      (*(_RegisterFile_Multi_Banked->out_READ_ACK      [i]))        (READ_ACK      [i]);
     82      if (_param->_have_port_address==true)
    8283      (*(_RegisterFile_Multi_Banked-> in_READ_ADDRESS  [i]))        (READ_ADDRESS  [i]);
    8384      (*(_RegisterFile_Multi_Banked->out_READ_DATA     [i]))        (READ_DATA     [i]);
     
    8889      (*(_RegisterFile_Multi_Banked-> in_WRITE_VAL     [i]))        (WRITE_VAL     [i]);
    8990      (*(_RegisterFile_Multi_Banked->out_WRITE_ACK     [i]))        (WRITE_ACK     [i]);
     91      if (_param->_have_port_address==true)
    9092      (*(_RegisterFile_Multi_Banked-> in_WRITE_ADDRESS [i]))        (WRITE_ADDRESS [i]);
    9193      (*(_RegisterFile_Multi_Banked-> in_WRITE_DATA    [i]))        (WRITE_DATA    [i]);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Parameters.h

    r57 r62  
    7171  public : const uint32_t    _nb_word_by_bank      ;
    7272
     73  public : const bool        _have_port_address     ;
     74  public : const bool        _have_bank_port_address;
     75
    7376    // A lot of table to the partial crossbar
    7477  public :       uint32_t  * _link_port_read_to_bank_read  ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Parameters.cpp

    r57 r62  
    4242    _num_reg_shift         (0),
    4343    _num_reg_mask          (gen_mask<Taddress_t>(_size_address_by_bank)),
    44     _nb_word_by_bank       (_nb_word / _nb_bank)
     44    _nb_word_by_bank       (_nb_word / _nb_bank),
     45    _have_port_address     (_size_address         != 0),
     46    _have_bank_port_address(_size_address_by_bank != 0)
    4547  {
    4648    log_printf(FUNC,RegisterFile_Multi_Banked,"Parameters","Begin");
     
    4850    if (_crossbar == PARTIAL_CROSSBAR)
    4951      {
    50         log_printf(NONE,RegisterFile_Multi_Banked,"Parameters","Case : _crossbar == PARTIAL_CROSSBAR");
     52        log_printf(TRACE,RegisterFile_Multi_Banked,"Parameters","Case : _crossbar == PARTIAL_CROSSBAR");
    5153
    5254        // All port_src is connected with one port_dest on each bank
     
    6870
    6971
    70         log_printf(NONE,RegisterFile_Multi_Banked,"Parameters"," * _link_port_read_to_bank_read");
     72        log_printf(TRACE,RegisterFile_Multi_Banked,"Parameters"," * _link_port_read_to_bank_read");
    7173        for (uint32_t i=0; i<_nb_port_read         ;i++)
    7274          {
    73           log_printf(NONE,RegisterFile_Multi_Banked,"Parameters","   * Read  in  [%d] to out    [%d]",i,_link_port_read_to_bank_read          [i]);
    74           printf("   * Read  in  [%d] to out    [%d]\n",i,_link_port_read_to_bank_read          [i]);
     75            log_printf(TRACE,RegisterFile_Multi_Banked,"Parameters","   * Read  in  [%d] to out    [%d]",i,_link_port_read_to_bank_read          [i]);
    7576          }
    76         log_printf(NONE,RegisterFile_Multi_Banked,"Parameters"," * _link_port_write_to_bank_write");
     77        log_printf(TRACE,RegisterFile_Multi_Banked,"Parameters"," * _link_port_write_to_bank_write");
    7778        for (uint32_t i=0; i<_nb_port_write        ;i++)
    7879          {
    79             log_printf(NONE,RegisterFile_Multi_Banked,"Parameters","   * Write in  [%d] to out    [%d]",i,_link_port_write_to_bank_write          [i]);
    80             printf("   * Write in  [%d] to out    [%d]\n",i,_link_port_write_to_bank_write          [i]);
     80            log_printf(TRACE,RegisterFile_Multi_Banked,"Parameters","   * Write in  [%d] to out    [%d]",i,_link_port_write_to_bank_write          [i]);
    8181          }
    8282      }
     
    102102    _num_reg_shift         (param._num_reg_shift        ),
    103103    _num_reg_mask          (param._num_reg_mask         ),
    104     _nb_word_by_bank       (param._nb_word_by_bank      )
     104    _nb_word_by_bank       (param._nb_word_by_bank      ),
     105    _have_port_address     (param._have_port_address     ),
     106    _have_bank_port_address(param._have_bank_port_address)
    105107  {
    106108    log_printf(FUNC,RegisterFile_Multi_Banked,"Parameters (copy)","Begin");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked.cpp

    r57 r62  
    8585    sensitive_neg << *(in_CLOCK);
    8686    for (uint32_t i=0; i<_param->_nb_port_read; i++)
    87       sensitive << *( in_READ_VAL     [i])
    88                 << *( in_READ_ADDRESS [i]);
     87      {
     88        sensitive << *( in_READ_VAL     [i]);
     89        if (_param->_have_port_address == true)
     90          sensitive << *( in_READ_ADDRESS [i]);
     91      }
    8992
    9093#ifdef SYSTEMCASS_SPECIFIC
     
    9396      {
    9497        (*(out_READ_ACK  [i])) (*( in_READ_VAL     [i]));
     98        if (_param->_have_port_address == true)
    9599        (*(out_READ_ACK  [i])) (*( in_READ_ADDRESS [i]));
    96100        (*(out_READ_DATA [i])) (*( in_READ_VAL     [i]));
     101        if (_param->_have_port_address == true)
    97102        (*(out_READ_DATA [i])) (*( in_READ_ADDRESS [i]));
    98103      }
     
    109114    sensitive_neg << *(in_CLOCK);
    110115    for (uint32_t i=0; i<_param->_nb_port_write; i++)
    111       sensitive << *( in_WRITE_VAL     [i])
    112                 << *( in_WRITE_ADDRESS [i])
    113                 << *( in_WRITE_DATA    [i]);
     116      {
     117        sensitive << *( in_WRITE_VAL     [i])
     118                  << *( in_WRITE_DATA    [i]);
     119        if (_param->_have_port_address == true)
     120          sensitive << *( in_WRITE_ADDRESS [i]);
     121      }
    114122
    115123#ifdef SYSTEMCASS_SPECIFIC
     
    118126      {
    119127        (*(out_WRITE_ACK  [i])) (*( in_WRITE_VAL     [i]));
     128        if (_param->_have_port_address == true)
    120129        (*(out_WRITE_ACK  [i])) (*( in_WRITE_ADDRESS [i]));
    121130        (*(out_WRITE_ACK  [i])) (*( in_WRITE_DATA    [i]));
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_allocation.cpp

    r57 r62  
    5050     in_READ_VAL         = new SC_IN (Tcontrol_t) * [_param->_nb_port_read];
    5151    out_READ_ACK         = new SC_OUT(Tcontrol_t) * [_param->_nb_port_read];
     52    if (_param->_have_port_address == true)
    5253     in_READ_ADDRESS     = new SC_IN (Taddress_t) * [_param->_nb_port_read];
    5354    out_READ_DATA        = new SC_OUT(Tdata_t   ) * [_param->_nb_port_read];
     
    6566         in_READ_VAL     [i]  = interface->set_signal_valack_in        ("val"    , VAL);
    6667        out_READ_ACK     [i]  = interface->set_signal_valack_out       ("ack"    , ACK);
     68        if (_param->_have_port_address == true)
    6769         in_READ_ADDRESS [i]  = interface->set_signal_in  <Taddress_t> ("address", static_cast<uint32_t>(log2(_param->_nb_word)));
    6870        out_READ_DATA    [i]  = interface->set_signal_out <Tdata_t   > ("data"   , _param->_size_word);
     
    7375     in_WRITE_VAL        = new SC_IN (Tcontrol_t) * [_param->_nb_port_write];
    7476    out_WRITE_ACK        = new SC_OUT(Tcontrol_t) * [_param->_nb_port_write];
     77    if (_param->_have_port_address == true)
    7578     in_WRITE_ADDRESS    = new SC_IN (Taddress_t) * [_param->_nb_port_write];
    7679     in_WRITE_DATA       = new SC_IN (Tdata_t   ) * [_param->_nb_port_write];
     
    8891         in_WRITE_VAL     [i]  = interface->set_signal_valack_in        ("val"    , VAL);
    8992        out_WRITE_ACK     [i]  = interface->set_signal_valack_out       ("ack"    , ACK);
     93        if (_param->_have_port_address == true)
    9094         in_WRITE_ADDRESS [i]  = interface->set_signal_in  <Taddress_t> ("address", static_cast<uint32_t>(log2(_param->_nb_word)));
    9195         in_WRITE_DATA    [i]  = interface->set_signal_in  <Tdata_t   > ("data"   , _param->_size_word);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_deallocation.cpp

    r53 r62  
    2626    delete []  in_READ_VAL    ;
    2727    delete [] out_READ_ACK    ;
     28    if (_param->_have_port_address == true)
    2829    delete []  in_READ_ADDRESS;
    2930    delete [] out_READ_DATA   ;
     
    3233    delete []  in_WRITE_VAL    ;
    3334    delete [] out_WRITE_ACK    ;
     35    if (_param->_have_port_address == true)
    3436    delete []  in_WRITE_ADDRESS;
    3537    delete []  in_WRITE_DATA   ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_full_crossbar_genMealy_read.cpp

    r57 r62  
    3737          {
    3838            // Compute the adress of the bank
    39             Taddress_t address = PORT_READ(in_READ_ADDRESS[i]);
     39            Taddress_t address;
     40            if (_param->_have_port_address == true)
     41              address = PORT_READ(in_READ_ADDRESS[i]);
     42            else
     43              address = 0;
     44
    4045            log_printf(TRACE,RegisterFile_Multi_Banked,"full_crossbar_genMealy_read"," * address   : %d",address);
    4146            Taddress_t bank    = address_bank    (address);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_full_crossbar_genMealy_write.cpp

    r57 r62  
    3838            val                = false;
    3939            // Compute the adress of the bank
    40             Taddress_t address = PORT_READ(in_WRITE_ADDRESS[i]);
     40            Taddress_t address;
     41            if (_param->_have_port_address == true)
     42              address = PORT_READ(in_WRITE_ADDRESS[i]);
     43            else
     44              address = 0;
    4145            log_printf(TRACE,RegisterFile_Multi_Banked,"full_crossbar_genMealy_write"," * address   : %d",address);
    4246            Taddress_t bank    = address_bank    (address);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_partial_crossbar_genMealy_read.cpp

    r57 r62  
    3737          {
    3838            // Compute the adress of the bank
    39             Taddress_t address = PORT_READ(in_READ_ADDRESS[i]);
     39            Taddress_t address;
     40            if (_param->_have_port_address == true)
     41              address = PORT_READ(in_READ_ADDRESS[i]);
     42            else
     43              address = 0;
    4044            log_printf(TRACE,RegisterFile_Multi_Banked,"full_crossbar_genMealy_read"," * address   : %d",address);
    4145            Taddress_t bank    = address_bank    (address);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_partial_crossbar_genMealy_write.cpp

    r57 r62  
    3737            val                = false;
    3838            // Compute the adress of the bank
    39             Taddress_t address = PORT_READ(in_WRITE_ADDRESS[i]);
     39            Taddress_t address;
     40            if (_param->_have_port_address == true)
     41              address = PORT_READ(in_WRITE_ADDRESS[i]);
     42            else
     43              address = 0;
    4044            log_printf(TRACE,RegisterFile_Multi_Banked,"partial_crossbar_genMealy_write"," * address   : %d",address);
    4145            Taddress_t bank    = address_bank    (address);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_body.cpp

    r58 r62  
    5151            vhdl->set_body("\t, in_READ_"+toString(j)+"_VAL     \t=>\tinternal_BANK_READ_"+toString(i)+"_"+toString(j)+"_VAL");
    5252            vhdl->set_body("\t,out_READ_"+toString(j)+"_ACK     \t=>\tinternal_BANK_READ_"+toString(i)+"_"+toString(j)+"_ACK");
     53            if (_param->_have_bank_port_address == true)
    5354            vhdl->set_body("\t, in_READ_"+toString(j)+"_ADDRESS \t=>\tinternal_BANK_READ_"+toString(i)+"_"+toString(j)+"_ADDRESS");
    5455            vhdl->set_body("\t,out_READ_"+toString(j)+"_DATA    \t=>\tinternal_BANK_READ_"+toString(i)+"_"+toString(j)+"_DATA");
     
    5859            vhdl->set_body("\t, in_WRITE_"+toString(j)+"_VAL     \t=>\tinternal_BANK_WRITE_"+toString(i)+"_"+toString(j)+"_VAL");
    5960            vhdl->set_body("\t,out_WRITE_"+toString(j)+"_ACK     \t=>\tinternal_BANK_WRITE_"+toString(i)+"_"+toString(j)+"_ACK");
     61            if (_param->_have_bank_port_address == true)
    6062            vhdl->set_body("\t, in_WRITE_"+toString(j)+"_ADDRESS \t=>\tinternal_BANK_WRITE_"+toString(i)+"_"+toString(j)+"_ADDRESS");
    6163            vhdl->set_body("\t, in_WRITE_"+toString(j)+"_DATA    \t=>\tinternal_BANK_WRITE_"+toString(i)+"_"+toString(j)+"_DATA");
     
    154156    vhdl->set_body("-----------------------------------");
    155157    vhdl->set_body("");
     158
     159    if (_param->_have_bank_port_address == true)
    156160    for (uint32_t i=0; i<_param->_nb_bank; i++)
    157161      {
     
    221225        for (uint32_t j=0; j<_param->_nb_port_read; j ++)
    222226          {
    223             string address = (_param->_nb_bank==1)?"":("and (in_READ_"+toString(j)+"_ADDRESS"+std_logic_range(_param->_size_address-1,_param->_size_address_by_bank)+"="+std_logic_conv( _param->_size_address-_param->_size_address_by_bank,i)+") ");
    224 
    225             vhdl->set_body("internal_READ_"+toString(i)+"_"+toString(j)+"_VAL  <= '1' when (in_READ_"+toString(j)+"_VAL ='1') "+address+"else '0';");
     227            string str_address;
     228
     229            if (_param->_have_bank_port_address == true)
     230              str_address = (_param->_nb_bank==1)?"":("and (in_READ_"+toString(j)+"_ADDRESS"+std_logic_range(_param->_size_address-1,_param->_size_address_by_bank)+"="+std_logic_conv( _param->_size_address-_param->_size_address_by_bank,i)+") ");
     231            else
     232              str_address = "";
     233
     234            vhdl->set_body("internal_READ_"+toString(i)+"_"+toString(j)+"_VAL  <= '1' when (in_READ_"+toString(j)+"_VAL ='1') "+str_address+"else '0';");
    226235          }
    227236        for (uint32_t j=0; j<_param->_nb_port_write; j ++)
    228237          {
    229             string address = (_param->_nb_bank==1)?"":("and (in_WRITE_"+toString(j)+"_ADDRESS"+std_logic_range(_param->_size_address-1,_param->_size_address_by_bank)+"="+std_logic_conv( _param->_size_address-_param->_size_address_by_bank,i)+") ");
    230             vhdl->set_body("internal_WRITE_"+toString(i)+"_"+toString(j)+"_VAL <= '1' when (in_WRITE_"+toString(j)+"_VAL='1') "+address+"else '0';");
     238            string str_address;
     239
     240            if (_param->_have_port_address == true)
     241              str_address = (_param->_nb_bank==1)?"":("and (in_WRITE_"+toString(j)+"_ADDRESS"+std_logic_range(_param->_size_address-1,_param->_size_address_by_bank)+"="+std_logic_conv( _param->_size_address-_param->_size_address_by_bank,i)+") ");
     242            else
     243              str_address = "";
     244
     245            vhdl->set_body("internal_WRITE_"+toString(i)+"_"+toString(j)+"_VAL <= '1' when (in_WRITE_"+toString(j)+"_VAL='1') "+str_address+"else '0';");
    231246          }
    232247      }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_declaration.cpp

    r58 r62  
    4141            vhdl->set_signal ("internal_BANK_READ_"+toString(i)+"_"+toString(j)+"_VAL" ,1);
    4242            vhdl->set_signal ("internal_BANK_READ_"+toString(i)+"_"+toString(j)+"_ACK"    ,1);
     43            if (_param->_have_bank_port_address == true)
    4344            vhdl->set_signal ("internal_BANK_READ_"+toString(i)+"_"+toString(j)+"_ADDRESS",_param->_size_address_by_bank);
    4445            vhdl->set_signal ("internal_BANK_READ_"+toString(i)+"_"+toString(j)+"_DATA"   ,_param->_size_word);
     
    6465            vhdl->set_signal ("internal_BANK_WRITE_"+toString(i)+"_"+toString(j)+"_VAL"    ,1);
    6566            vhdl->set_signal ("internal_BANK_WRITE_"+toString(i)+"_"+toString(j)+"_ACK"    ,1);
     67            if (_param->_have_bank_port_address == true)
    6668            vhdl->set_signal ("internal_BANK_WRITE_"+toString(i)+"_"+toString(j)+"_ADDRESS",_param->_size_address_by_bank);
    6769            vhdl->set_signal ("internal_BANK_WRITE_"+toString(i)+"_"+toString(j)+"_DATA"   ,_param->_size_word);
Note: See TracChangeset for help on using the changeset viewer.