Ignore:
Timestamp:
Apr 5, 2007, 4:17:30 PM (17 years ago)
Author:
rosiere
Message:

Interface normalisé
Début du banc de registres multi niveaux

File:
1 edited

Legend:

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

    r10 r15  
    66 */
    77
    8 #include "Behavioural/Generic/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Parameters.h"
     8#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Parameters.h"
    99
    1010namespace morpheo {
    1111namespace behavioural {
    1212namespace generic {
     13namespace registerfile{
    1314namespace registerfile_multi_banked {
    1415namespace registerfile_multi_banked_glue {
    1516
    16   Parameters::Parameters (uint32_t nb_port_read ,
    17                           uint32_t nb_port_write,
    18                           uint32_t size_address ,
    19                           uint32_t size_word    ,
    20                           uint32_t nb_bank      ):
     17  Parameters::Parameters (uint32_t    nb_port_read         ,
     18                          uint32_t    nb_port_write        ,
     19                          uint32_t    size_address         ,
     20                          uint32_t    size_word            ,
     21                          uint32_t    nb_bank              ,
     22                          uint32_t    nb_port_read_by_bank ,
     23                          uint32_t    nb_port_write_by_bank,
     24                          Tcrossbar_t crossbar             ):
    2125    _nb_port_read          (nb_port_read         ),
    2226    _nb_port_write         (nb_port_write        ),
     
    2428    _size_word             (size_word            ),
    2529    _nb_bank               (nb_bank              ),
    26     _nb_port_read_by_bank  (nb_port_read /nb_bank),
    27     _nb_port_write_by_bank (nb_port_write/nb_bank)
     30    _nb_port_read_by_bank  (nb_port_read_by_bank ),
     31    _nb_port_write_by_bank (nb_port_write_by_bank),
     32    _crossbar              (crossbar             ),
     33    _shift_address         (static_cast<uint32_t>(ceil(log2(_nb_bank))))
    2834  {
    2935    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters","Begin");
     36
     37    if (_crossbar == PARTIAL_CROSSBAR)
     38      {
     39        // All port_src is connected with one port_dest on each bank
     40       
     41        _link_port_read  = new uint32_t [_nb_port_read ];
     42        for (uint32_t i=0; i<_nb_port_read ; i++)
     43          _link_port_read  [i] = i%_nb_port_read_by_bank;
     44
     45        _link_port_write = new uint32_t [_nb_port_write];
     46        for (uint32_t i=0; i<_nb_port_write; i++)
     47          _link_port_write [i] = i%_nb_port_write_by_bank;
     48      }
     49    // else : don't allocate
     50
     51    _nb_port_select_by_bank_read_port  = new uint32_t [_nb_port_read_by_bank ];
     52   
     53    if (_crossbar == FULL_CROSSBAR)
     54      // All port_src is connected with all port_dest on each bank
     55      for (uint32_t i=0; i<_nb_port_read_by_bank ;i++)
     56        _nb_port_select_by_bank_read_port [i] = _nb_port_read;
     57    else
     58      // All port_src is connected with one port_dest on each bank
     59      {
     60        for (uint32_t i=0; i<_nb_port_read_by_bank ;i++)
     61          _nb_port_select_by_bank_read_port [i] = 0;
     62
     63        for (uint32_t i=0; i<_nb_port_read         ;i++)
     64          _nb_port_select_by_bank_read_port [_link_port_read [i]] ++;
     65      }
     66   
     67    _nb_port_select_by_bank_write_port = new uint32_t [_nb_port_write_by_bank];
     68
     69    if (_crossbar == FULL_CROSSBAR)
     70      // All port_src is connected with all port_dest on each bank
     71      for (uint32_t i=0; i<_nb_port_write_by_bank ;i++)
     72        _nb_port_select_by_bank_write_port [i] = _nb_port_write;
     73    else
     74      // All port_src is connected with one port_dest on each bank
     75      {
     76        for (uint32_t i=0; i<_nb_port_write_by_bank ;i++)
     77          _nb_port_select_by_bank_write_port [i] = 0;
     78
     79        for (uint32_t i=0; i<_nb_port_write         ;i++)
     80          _nb_port_select_by_bank_write_port [_link_port_write[i]] ++;
     81      }
     82   
    3083    test();
    3184    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters","End");
     
    3386 
    3487  Parameters::Parameters (Parameters & param):
    35    _nb_port_read          (param._nb_port_read ),
    36    _nb_port_write         (param._nb_port_write),
    37    _size_address          (param._size_address ),
    38    _size_word             (param._size_word    ),
    39    _nb_bank               (param._nb_bank      ),
    40    _nb_port_read_by_bank  (param._nb_port_read ),
    41    _nb_port_write_by_bank (param._nb_port_write)
     88    _nb_port_read          (param._nb_port_read         ),
     89    _nb_port_write         (param._nb_port_write        ),
     90    _size_address          (param._size_address         ),
     91    _size_word             (param._size_word            ),
     92    _nb_bank               (param._nb_bank              ),
     93    _nb_port_read_by_bank  (param._nb_port_read_by_bank ),
     94    _nb_port_write_by_bank (param._nb_port_write_by_bank),
     95    _crossbar              (param._crossbar             ),
     96    _shift_address         (param._shift_address        )
    4297   {
    43     log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters","Begin");
     98    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters (copy)","Begin");
     99
     100    _nb_port_select_by_bank_read_port  = new uint32_t [_nb_port_read_by_bank ];
     101    for (uint32_t i=0; i<_nb_port_read_by_bank; i++)
     102      _nb_port_select_by_bank_read_port [i] = param._nb_port_select_by_bank_read_port [i];
     103   
     104    _nb_port_select_by_bank_write_port = new uint32_t [_nb_port_write_by_bank ];
     105    for (uint32_t i=0; i<_nb_port_write_by_bank; i++)
     106      _nb_port_select_by_bank_write_port[i] = param._nb_port_select_by_bank_write_port [i];
     107   
    44108    test();
    45     log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters","End");
     109    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters (copy)","End");
    46110  };
    47111
     
    54118}; // end namespace registerfile_multi_banked_glue
    55119}; // end namespace registerfile_multi_banked
     120}; // end namespace registerfile
    56121}; // end namespace generic
    57122}; // end namespace behavioural
Note: See TracChangeset for help on using the changeset viewer.