Ignore:
Timestamp:
Feb 1, 2011, 9:57:54 PM (14 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

Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile
Files:
1 deleted
29 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/Makefile.deps

    r142 r146  
    1919include                         $(DIR_MORPHEO)/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/Makefile.deps
    2020endif
     21ifndef RegisterFile_Internal_Banked
     22include                         $(DIR_MORPHEO)/Behavioural/Generic/RegisterFile/RegisterFile_Internal_Banked/Makefile.deps
     23endif
    2124
    2225#-----[ Library ]------------------------------------------
     
    2528                                        $(RegisterFile_Monolithic_LIBRARY)      \
    2629                                        $(RegisterFile_Multi_Banked_LIBRARY)    \
     30                                        $(RegisterFile_Internal_Banked_LIBRARY) \
    2731                                        $(Behavioural_LIBRARY) 
    2832
     
    4145                                $(MAKE) Behavioural_library; \
    4246                                $(MAKE) RegisterFile_Monolithic_library;\
    43                                 $(MAKE) RegisterFile_Multi_Banked_library;
     47                                $(MAKE) RegisterFile_Multi_Banked_library;\
     48                                $(MAKE) RegisterFile_Internal_Banked_library;
    4449       
    4550RegisterFile_library_clean      : RegisterFile_library_clean_only
     
    4752                                $(MAKE) Behavioural_library_clean; \
    4853                                $(MAKE) RegisterFile_Monolithic_library_clean;\
    49                                 $(MAKE) RegisterFile_Multi_Banked_library_clean;
     54                                $(MAKE) RegisterFile_Multi_Banked_library_clean;\
     55                                $(MAKE) RegisterFile_Internal_Banked_library_clean;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Internal_Banked/include/Types.h

    r145 r146  
    1818
    1919//typedef uint32_t Taddress_t;
    20 typedef uint64_t Tdata_t;
    21   // typedef Tgeneral_data_t Tdata_t;
     20//typedef uint64_t Tdata_t;
     21typedef Tgeneral_data_t Tdata_t;
    2222 
    2323}; // end namespace registerfile_internal_banked
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/configuration/config_read.gen

    r145 r146  
    221       8       *2      # nb_port_read
    331       1       *2      # nb_port_write
    4 0       0       *2      # nb_port_read_write
    54512     512     *2      # nb_word
    6532      32      *2      # size_word
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/configuration/config_size.gen

    r145 r146  
    224       4       *2      # nb_port_read
    332       2       *2      # nb_port_write
    4 0       0       *2      # nb_port_read_write
    541       128     *2      # nb_word
    6532      32      *2      # size_word
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/configuration/config_write.gen

    r145 r146  
    221       1       *2      # nb_port_read
    332       8       *2      # nb_port_write
    4 0       0       *2      # nb_port_read_write
    54512     512     *2      # nb_word
    6532      32      *2      # size_word
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/src/main.cpp

    r81 r146  
    88#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/include/test.h"
    99
    10 #define NB_PARAMS 5
     10#define NB_PARAMS 4
    1111
    1212void usage (string exec)
     
    1616       << " - nb_port_read       (unsigned int)" << endl
    1717       << " - nb_port_write      (unsigned int)" << endl
    18        << " - nb_port_read_write (unsigned int)" << endl
    1918       << " - nb_word            (unsigned int)" << endl
    2019       << " - size_word          (unsigned int)" << endl;
     
    3433  const uint32_t nb_port_read       = atoi(argv[2]);
    3534  const uint32_t nb_port_write      = atoi(argv[3]);
    36   const uint32_t nb_port_read_write = atoi(argv[4]);
    37   const uint32_t nb_word            = atoi(argv[5]);
    38   const uint32_t size_word          = atoi(argv[6]);
     35  const uint32_t nb_word            = atoi(argv[4]);
     36  const uint32_t size_word          = atoi(argv[5]);
    3937 
    4038  morpheo::behavioural::generic::registerfile::registerfile_monolithic::Parameters * param = new morpheo::behavioural::generic::registerfile::registerfile_monolithic::Parameters
    4139    (nb_port_read ,
    4240     nb_port_write,
    43      nb_port_read_write,
    4441     nb_word      ,
    4542     size_word    );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/src/test.cpp

    r131 r146  
    7373  sc_signal<Tdata_t>                       WRITE_DATA    [_param->_nb_port_write];
    7474
    75   sc_signal<Tcontrol_t>                    READ_WRITE_VAL     [_param->_nb_port_read_write];
    76   sc_signal<Tcontrol_t>                    READ_WRITE_ACK     [_param->_nb_port_read_write];
    77   sc_signal<Tcontrol_t>                    READ_WRITE_RW      [_param->_nb_port_read_write];
    78   sc_signal<Taddress_t>                    READ_WRITE_ADDRESS [_param->_nb_port_read_write];
    79   sc_signal<Tdata_t>                       READ_WRITE_RDATA   [_param->_nb_port_read_write];
    80   sc_signal<Tdata_t>                       READ_WRITE_WDATA   [_param->_nb_port_read_write];
    81 
    8275  /********************************************************
    8376   * Instanciation
     
    10598      (*(registerfile-> in_WRITE_DATA    [i]))        (WRITE_DATA    [i]);
    10699    }
    107   for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
    108     {
    109       (*(registerfile-> in_READ_WRITE_VAL     [i])) (READ_WRITE_VAL      [i]);
    110       (*(registerfile->out_READ_WRITE_ACK     [i])) (READ_WRITE_ACK      [i]);
    111       (*(registerfile-> in_READ_WRITE_RW      [i])) (READ_WRITE_RW       [i]);
    112       if (_param->_have_port_address)
    113       (*(registerfile-> in_READ_WRITE_ADDRESS [i])) (READ_WRITE_ADDRESS  [i]);
    114       (*(registerfile-> in_READ_WRITE_WDATA   [i])) (READ_WRITE_WDATA    [i]);
    115       (*(registerfile->out_READ_WRITE_RDATA   [i])) (READ_WRITE_RDATA    [i]);
    116     }
    117100 
    118101  cout << "<" << name << "> Start Simulation ............" << endl;
     
    131114  for (uint32_t i=0; i<_param->_nb_port_read; i++)
    132115    READ_VAL  [i] .write (0);
    133   for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
    134     READ_WRITE_VAL  [i] .write (0);
    135116
    136117  NRESET.write(0);
     
    144125  for (uint32_t i=0; i<_param->_nb_port_read; i++)
    145126    TEST(Tcontrol_t,READ_ACK  [i],1);
    146   for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
    147     TEST(Tcontrol_t,READ_WRITE_ACK  [i],1);
    148127
    149128  for (uint32_t nb_iteration=0; nb_iteration < NB_ITERATION; nb_iteration ++)
     
    187166            }
    188167
    189           for (uint32_t num_port=0; num_port < _param->_nb_port_read_write; num_port ++)
    190             {
    191               if ((address_next < _param->_nb_word) and
    192                   (READ_WRITE_VAL [num_port].read() == 0))
    193                 {
    194                   cout << "(" << num_port << ") [" << address_next << "] <= " << tab[address_next] << endl;
    195                  
    196                   READ_WRITE_VAL     [num_port] .write(1);
    197                   READ_WRITE_RW      [num_port] .write(RW_WRITE);
    198                   READ_WRITE_WDATA   [num_port] .write(tab[address_next]);
    199                   READ_WRITE_ADDRESS [num_port] .write(address_next++);
    200                  
    201                   // Address can be not a multiple of nb_port_write
    202                   if (address_next >= _param->_nb_word)
    203                     break;
    204                 }
    205             }
    206          
    207168          SC_START(1);
    208169
     
    217178                }
    218179            }
    219           // reset write_val port
    220           for (uint32_t num_port=0; num_port < _param->_nb_port_read_write; num_port ++)
    221             {
    222               if ((READ_WRITE_ACK [num_port].read() == 1) and
    223                   (READ_WRITE_VAL [num_port].read() == 1))
    224                 {
    225                   READ_WRITE_VAL  [num_port] .write(0);
    226                   nb_ack ++;
    227                 }
    228             }
    229180
    230181//        SC_START(0);
     
    237188     
    238189      Tdata_t read_address       [_param->_nb_port_read];
    239       Tdata_t read_write_address [_param->_nb_port_read_write];
    240190
    241191      while (nb_ack < _param->_nb_word)
     
    258208            }
    259209
    260           for (uint32_t num_port=0; num_port < _param->_nb_port_read_write; num_port ++)
    261             {
    262               if ((address_next < _param->_nb_word) and
    263                   (READ_WRITE_VAL [num_port].read() == 0))
    264                 {
    265                   read_write_address [num_port] = address_next++;
    266 
    267                   READ_WRITE_VAL     [num_port].write(1);
    268                   READ_WRITE_RW      [num_port].write(RW_READ);
    269                   READ_WRITE_ADDRESS [num_port].write(read_write_address [num_port]);
    270 
    271                   if (address_next >= _param->_nb_word)
    272                     break;
    273                 }
    274             }
    275 
    276210
    277211          SC_START(1);
     
    288222
    289223                  TEST(Tdata_t,READ_DATA [num_port].read(), tab[read_address [num_port]]);
    290                   nb_ack ++;
    291                 }
    292             }
    293 
    294           for (uint32_t num_port=0; num_port < _param->_nb_port_read_write; num_port ++)
    295             {
    296               if ((READ_WRITE_ACK [num_port].read() == 1) and
    297                   (READ_WRITE_VAL [num_port].read() == 1))
    298                 {
    299                   READ_WRITE_VAL  [num_port] .write(0);
    300 
    301                   cout << "(" << num_port << ") [" << read_write_address [num_port] << "] => " << READ_WRITE_RDATA [num_port].read() << endl;
    302 
    303                   TEST(Tdata_t,READ_WRITE_RDATA [num_port].read(), tab[read_write_address [num_port]]);
    304224                  nb_ack ++;
    305225                }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Parameters.h

    r137 r146  
    2323  public : uint32_t    _nb_port_read ;
    2424  public : uint32_t    _nb_port_write;
    25   public : uint32_t    _nb_port_read_write;
    2625  public : uint32_t    _nb_word      ;
    2726  public : uint32_t    _size_word    ;
     
    3433  public : Parameters (uint32_t    nb_port_read ,
    3534                       uint32_t    nb_port_write,
    36                        uint32_t    nb_port_read_write,
    3735                       uint32_t    nb_word      ,
    3836                       uint32_t    size_word    ,
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h

    r145 r146  
    55 * $Id$
    66 *
    7  * [ Description ]
     7 * [ Description ]
    88 *
    99 */
     
    2222#include "Behavioural/include/Stat.h"
    2323#endif
    24 // #include "Behavioural/include/Component.h"
     24#include "Behavioural/include/Component.h"
    2525#ifdef VHDL
    2626#include "Behavioural/include/Vhdl.h"
     
    2828#include "Behavioural/include/Usage.h"
    2929
    30 
    31 
    3230namespace morpheo                    {
    3331namespace behavioural                {
    34 
    35   class Component;
    36   class Interfaces;
    37 
    3832namespace generic                    {
    3933namespace registerfile               {
     
    6256  private   : counters_t                     * _stat_port_read;
    6357  private   : counters_t                     * _stat_port_write;
    64   private   : counters_t                     * _stat_port_read_write;
    6558#endif
    6659
     
    8578  public    : SC_IN       (Taddress_t)     **  in_WRITE_ADDRESS;
    8679  public    : SC_IN       (Tdata_t)        **  in_WRITE_DATA   ;
    87 
    88     // ----- Interface Read_Write
    89   public    : SC_IN       (Tcontrol_t)     **  in_READ_WRITE_VAL    ;
    90   public    : SC_OUT      (Tcontrol_t)     ** out_READ_WRITE_ACK    ;
    91   public    : SC_IN       (Tcontrol_t)     **  in_READ_WRITE_RW     ;
    92   public    : SC_IN       (Taddress_t)     **  in_READ_WRITE_ADDRESS;
    93   public    : SC_OUT      (Tdata_t)        ** out_READ_WRITE_RDATA  ;
    94   public    : SC_IN       (Tdata_t)        **  in_READ_WRITE_WDATA  ;
    9580
    9681    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters.cpp

    r137 r146  
    1717  Parameters::Parameters (uint32_t    nb_port_read ,
    1818                          uint32_t    nb_port_write,
    19                           uint32_t    nb_port_read_write ,
    2019                          uint32_t    nb_word      ,
    2120                          uint32_t    size_word    ,
     
    2524    _nb_port_read       = nb_port_read ;
    2625    _nb_port_write      = nb_port_write;
    27     _nb_port_read_write = nb_port_read_write;
    2826    _nb_word            = nb_word      ;
    2927    _size_word          = size_word    ;
     
    4038//     _nb_port_read      (param._nb_port_read ),
    4139//     _nb_port_write     (param._nb_port_write),
    42 //     _nb_port_read_write(param._nb_port_read_write),
    4340//     _nb_word           (param._nb_word      ),
    4441//     _size_word         (param._size_word    ),
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters_msg_error.cpp

    r101 r146  
    2727      test.error("type \"Taddress_t\" is too little to the size defined by nb_word");
    2828
    29     if ((_nb_port_read + _nb_port_read_write) < 1)
     29    if (_nb_port_read < 1)
    3030      test.error("you need a read port");
    3131
    32     if ((_nb_port_write + _nb_port_read_write) < 1)
     32    if (_nb_port_write < 1)
    3333      test.error("you need a write port");
    3434
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters_print.cpp

    r81 r146  
    2323    xml.singleton_begin("nb_port_read      "); xml.attribut("value",toString(_nb_port_read      )); xml.singleton_end();
    2424    xml.singleton_begin("nb_port_write     "); xml.attribut("value",toString(_nb_port_write     )); xml.singleton_end();
    25     xml.singleton_begin("nb_port_read_write"); xml.attribut("value",toString(_nb_port_read_write)); xml.singleton_end();
    2625    xml.singleton_begin("nb_word           "); xml.attribut("value",toString(_nb_word           )); xml.singleton_end();
    2726    xml.singleton_begin("size_word         "); xml.attribut("value",toString(_size_word         )); xml.singleton_end();
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic.cpp

    r132 r146  
    7979              sensitive << *(in_READ_ADDRESS [i]);
    8080          }
    81         for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
    82           {
    83             sensitive << *(in_READ_WRITE_VAL     [i])
    84                       << *(in_READ_WRITE_RW      [i]);
    85             if (_param->_have_port_address)
    86               sensitive << *(in_READ_WRITE_ADDRESS [i]);
    87           }
    8881       
    8982# ifdef SYSTEMCASS_SPECIFIC
     
    9487            if (_param->_have_port_address)
    9588              (*(out_READ_DATA  [i])) (*( in_READ_ADDRESS [i]));
    96           }
    97         for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
    98           { 
    99             (*(out_READ_WRITE_RDATA [i])) (*( in_READ_WRITE_VAL     [i]));
    100             (*(out_READ_WRITE_RDATA [i])) (*( in_READ_WRITE_RW      [i]));
    101             if (_param->_have_port_address)
    102               (*(out_READ_WRITE_RDATA [i])) (*( in_READ_WRITE_ADDRESS [i]));
    10389          }
    10490# endif   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_allocation.cpp

    r145 r146  
    88#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h"
    99#include "Behavioural/include/Allocation.h"
    10 #include "Behavioural/include/Component.h"
    1110
    1211namespace morpheo                    {
     
    6766    }
    6867
    69     // ~~~~~[ Interface : "read_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    70     {
    71       ALLOC1_INTERFACE_BEGIN("read_write",IN,WEST,_("Interface Read_Write"),_param->_nb_port_read_write);
    72 
    73       ALLOC1_VALACK_IN ( in_READ_WRITE_VAL    ,VAL);
    74       ALLOC1_VALACK_OUT(out_READ_WRITE_ACK    ,ACK);
    75       ALLOC1_SIGNAL_IN ( in_READ_WRITE_RW     ,"rw"     ,Tcontrol_t,1);
    76       ALLOC1_SIGNAL_IN ( in_READ_WRITE_ADDRESS,"address",Taddress_t,_param->_size_address);
    77       ALLOC1_SIGNAL_IN ( in_READ_WRITE_WDATA  ,"wdata"  ,Tdata_t   ,_param->_size_word);
    78       ALLOC1_SIGNAL_OUT(out_READ_WRITE_RDATA  ,"rdata"  ,Tdata_t   ,_param->_size_word);
    79 
    80       ALLOC1_INTERFACE_END(_param->_nb_port_read_write);
    81     }
    82 
    8368    if (usage_is_set(_usage,USE_SYSTEMC))
    8469      ALLOC1(reg_DATA,Tdata_t,_param->_nb_word);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_constant.cpp

    r131 r146  
    2626    for (uint32_t i=0; i<_param->_nb_port_write      ; i++)
    2727      PORT_WRITE(out_WRITE_ACK       [i], 1);
    28     for (uint32_t i=0; i<_param->_nb_port_read_write ; i++)
    29       PORT_WRITE(out_READ_WRITE_ACK  [i], 1);
    3028
    3129    log_end(RegisterFile_Monolithic,FUNCTION);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_deallocation.cpp

    r145 r146  
    88#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h"
    99#include "Behavioural/include/Allocation.h"
    10 #include "Behavioural/include/Component.h"
    1110
    1211namespace morpheo                    {
     
    3433        DELETE1_SIGNAL( in_WRITE_ADDRESS,_param->_nb_port_write,_param->_size_address);
    3534        DELETE1_SIGNAL( in_WRITE_DATA   ,_param->_nb_port_write,_param->_size_word);
    36        
    37         DELETE1_SIGNAL( in_READ_WRITE_VAL    ,_param->_nb_port_read_write,1);
    38         DELETE1_SIGNAL(out_READ_WRITE_ACK    ,_param->_nb_port_read_write,1);
    39         DELETE1_SIGNAL( in_READ_WRITE_RW     ,_param->_nb_port_read_write,1);
    40         DELETE1_SIGNAL( in_READ_WRITE_ADDRESS,_param->_nb_port_read_write,_param->_size_address);
    41         DELETE1_SIGNAL( in_READ_WRITE_WDATA  ,_param->_nb_port_read_write,_param->_size_word);
    42         DELETE1_SIGNAL(out_READ_WRITE_RDATA  ,_param->_nb_port_read_write,_param->_size_word);
    43        
     35               
    4436        DELETE1(reg_DATA,_param->_nb_word);
    4537      }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_genMealy_read.cpp

    r123 r146  
    4747          }
    4848      }
    49 
    50     for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
    51       {
    52         Tdata_t data;
    53 
    54         // Have a write?
    55         if ( (PORT_READ(in_READ_WRITE_VAL [i]) == 1) and
    56              (PORT_READ(in_READ_WRITE_RW  [i]) == RW_READ)
    57              )
    58           {
    59             Taddress_t address;
    60             if (_param->_have_port_address)
    61               address = PORT_READ(in_READ_WRITE_ADDRESS[i]);
    62             else
    63               address = 0;
    64            
    65             data = reg_DATA[address];
    66 
    67             log_printf(TRACE,RegisterFile,FUNCTION,"  * [%d] -> %.8x",static_cast<uint32_t>(address),static_cast<uint32_t>(data));
    68           }
    69         else
    70           {
    71             //log_printf(TRACE,RegisterFile,FUNCTION,"Read  [%d] : No   transaction",i);
    72             data = 0;
    73           }
    74 
    75         PORT_WRITE(out_READ_WRITE_RDATA[i],data);
    76       }
    7749      }
    7850
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_statistics_declaration.cpp

    r141 r146  
    3434                                                     _("Average of write per cycle.")
    3535                                                     );
    36     if (_param->_nb_port_read_write>0)
    37     _stat_port_read_write   = _stat->create_counters("port_read_write",_param->_nb_port_read_write,"",
    38                                                      _("Cycle number cycle with %d read_write(s)."),
    39                                                      _("Percent of cycle number cycle with %d read_write(s)."),
    40                                                      _("Average of read_write per cycle.")
    41                                                      );
    42 
    43     // _stat_nb_read           = _stat->create_variable("nb_read" );
    44     // _stat_nb_write          = _stat->create_variable("nb_write");
    45 
    46     // _stat->create_expr_average_by_cycle("average_read" , "nb_read" , "", _("Average read by cycle" ));
    47     // _stat->create_expr_average_by_cycle("average_write", "nb_write", "", _("Average write by cycle"));
    48 
    49     // _stat->create_expr_percent         ("percent_use_read" , "average_read" , toString(_param->_nb_port_read +_param->_nb_port_read_write), _("Percent read by cycle" ));
    50     // _stat->create_expr_percent         ("percent_use_write", "average_write", toString(_param->_nb_port_write+_param->_nb_port_read_write), _("Percent write by cycle"));
    51 
    5236  };
    5337
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_transition.cpp

    r138 r146  
    4040        uint32_t stat_nb_read      =0;
    4141        uint32_t stat_nb_write     =0;
    42         uint32_t stat_nb_read_write=0;
    4342#endif
    4443        for (uint32_t i=0; i<_param->_nb_port_write; i++)
     
    7675              }
    7776          }
    78         for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
    79           {
    80             log_printf(TRACE,RegisterFile,FUNCTION,"  * READ_WRITE [%d] : %d",i,PORT_READ(in_READ_WRITE_VAL[i]));
    81 
    82             // Have a read_write?
    83             if (PORT_READ(in_READ_WRITE_VAL[i]) == true)
    84               {
    85 #ifdef STATISTICS
    86                 stat_nb_read_write++;
    87 #endif
    88 
    89                 if (PORT_READ(in_READ_WRITE_RW [i]) == RW_WRITE)
    90                   {
    91 // #ifdef STATISTICS
    92 //                     if (usage_is_set(_usage,USE_STATISTICS))
    93 //                       (*_stat_nb_write) ++;
    94 // #endif   
    95                    
    96                     Taddress_t address = (_param->_have_port_address)?PORT_READ(in_READ_WRITE_ADDRESS[i]):0;
    97                     Tdata_t    data    = PORT_READ(in_READ_WRITE_WDATA  [i]);
    98                    
    99                     log_printf(TRACE,RegisterFile,FUNCTION,"  * [%d] <- %.8x",static_cast<uint32_t>(address),static_cast<uint32_t>(data));
    100                    
    101 
    102 #ifdef DEBUG_TEST
    103                 if (address >= _param->_nb_word)
    104                   throw ERRORMORPHEO(FUNCTION,toString(_("Address (%d) is invalid (size : %d).\n"),address,_param->_nb_word));
    105 #endif
    106 
    107                     // Write in registerFile
    108                     reg_DATA[address] = data;
    109                   }
    110 // #ifdef STATISTICS
    111 //                 else
    112 //                   {
    113 //                     if (usage_is_set(_usage,USE_STATISTICS))
    114 //                       (*_stat_nb_read) ++;
    115 //                   }
    116 // #endif   
    117               }
    118           }
    119 
    12077       
    12178#ifdef STATISTICS
     
    13390            if (_param->_nb_port_write>0)
    13491            (*_stat_port_write     ) += stat_nb_write;
    135             if (_param->_nb_port_read_write>0)
    136             (*_stat_port_read_write) += stat_nb_read_write;
    13792          }
    13893#endif   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl.cpp

    r145 r146  
    1010#include "Behavioural/include/Vhdl.h"
    1111#include "Common/include/ToString.h"
    12 #include "Behavioural/include/Component.h"
    1312
    1413namespace morpheo                    {
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_body.cpp

    r145 r146  
    2929    for (uint32_t i = 0; i < _param->_nb_port_write; i++)
    3030      vhdl->set_body   (0,"out_WRITE_"+toString(i)+"_ACK <= '1';");
    31     for (uint32_t i = 0; i < _param->_nb_port_read_write; i++)
    32       vhdl->set_body   (0,"out_READ_WRITE_"+toString(i)+"_ACK  <= '1';");
    3331
    3432    vhdl->set_body   (0,"");
     
    4745
    4846        vhdl->set_body   (0,"out_READ_"+toString(i)+"_DATA <= reg_DATA ("+str_address+") when in_READ_"+toString(i)+"_VAL = '1' else "+std_logic_others(_param->_size_word,0)+";");
    49       }
    50     for (uint32_t i = 0; i < _param->_nb_port_read_write; i++)
    51       {
    52         std::string str_address;
    53         if (_param->_have_port_address)
    54           str_address = "conv_integer(in_READ_WRITE_"+toString(i)+"_ADDRESS)";
    55         else
    56           str_address = "0";
    57         vhdl->set_body   (0,"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)+";");
    5847      }
    5948
     
    9281        vhdl->set_body   (2,"end if;");
    9382      }
    94     for (uint32_t i = 0; i < _param->_nb_port_read_write; i++)
    95       {
    96         std::string str_address;
    97         if (_param->_have_port_address)
    98           str_address = "conv_integer(in_READ_WRITE_"+toString(i)+"_ADDRESS)";
    99         else
    100           str_address = "0";
    101        
    102         vhdl->set_body   (2,"if (in_READ_WRITE_"+toString(i)+"_VAL = '1' and in_READ_WRITE_"+toString(i)+"_RW = '"+toString(RW_WRITE)+"') then");
    103         vhdl->set_body   (3,"reg_DATA("+str_address+") <= in_READ_WRITE_"+toString(i)+"_WDATA;");
    104         vhdl->set_body   (2,"end if;");
    105       }
    10683
    10784    vhdl->set_body   (1,"end if;");
     
    12299    // for (uint32_t i = 0; i < _param->_nb_port_write; i++)
    123100    //   vhdl->set_body   (0,"out_WRITE_"+toString(i)+"_ACK <= '1';");
    124     // for (uint32_t i = 0; i < _param->_nb_port_read_write; i++)
    125     //   vhdl->set_body   (0,"out_READ_WRITE_"+toString(i)+"_ACK  <= '1';");
    126101
    127102    // vhdl->set_body   (0,"");
     
    195170    for (uint32_t i = 0; i < _param->_nb_port_write; i++)
    196171      vhdl->set_body   (1,"out_WRITE_"+toString(i)+"_ACK <= '1';");
    197     for (uint32_t i = 0; i < _param->_nb_port_read_write; i++)
    198       vhdl->set_body   (1,"out_READ_WRITE_"+toString(i)+"_ACK  <= '1';");
    199172    vhdl->set_body   (1,"");
    200173    vhdl->set_body   (1," -- Read");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/Parameters.h

    r137 r146  
    1212#include "Behavioural/include/Parameters.h"
    1313#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Parameters.h"
     14#include "Behavioural/Generic/RegisterFile/RegisterFile_Internal_Banked/include/Parameters.h"
    1415#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Parameters.h"
    1516#include <math.h>
     
    2021namespace registerfile {
    2122
    22   typedef enum {instance_RegisterFile_Monolithic  ,
     23  typedef enum {instance_RegisterFile_Monolithic,
     24                instance_RegisterFile_Internal_Banked,
    2325                instance_RegisterFile_Multi_Banked} Tinstance_t;
    2426
     
    3436  public : bool        _have_port_address;
    3537
    36   public : morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::Parameters * _param_registerfile_monolithic;
    37   public : morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters * _param_registerfile_multi_banked;
     38  public : morpheo::behavioural::generic::registerfile::registerfile_monolithic     ::Parameters * _param_registerfile_monolithic;
     39  public : morpheo::behavioural::generic::registerfile::registerfile_internal_banked::Parameters * _param_registerfile_internal_banked;
     40  public : morpheo::behavioural::generic::registerfile::registerfile_multi_banked   ::Parameters * _param_registerfile_multi_banked;
    3841
    3942    //-----[ methods ]-----------------------------------------------------------
    40   public : Parameters  (morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::Parameters * param);
    41   public : Parameters  (morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters * param);
     43  public : Parameters  (morpheo::behavioural::generic::registerfile::registerfile_monolithic     ::Parameters * param);
     44  public : Parameters  (morpheo::behavioural::generic::registerfile::registerfile_internal_banked::Parameters * param);
     45  public : Parameters  (morpheo::behavioural::generic::registerfile::registerfile_multi_banked   ::Parameters * param);
    4246//   public : Parameters  (Parameters & param) ;
    4347  public : ~Parameters () ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/RegisterFile.h

    r112 r146  
    1818
    1919#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h"
     20#include "Behavioural/Generic/RegisterFile/RegisterFile_Internal_Banked/include/RegisterFile_Internal_Banked.h"
    2021#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
    2122
     
    7677
    7778    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    78   protected : morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::RegisterFile_Monolithic  ::RegisterFile_Monolithic   * component_RegisterFile_Monolithic  ;
    79   protected : morpheo::behavioural::generic::registerfile::registerfile_multi_banked::RegisterFile_Multi_Banked::RegisterFile_Multi_Banked * component_RegisterFile_Multi_Banked;
     79  protected : morpheo::behavioural::generic::registerfile::registerfile_monolithic     ::RegisterFile_Monolithic     ::RegisterFile_Monolithic      * component_RegisterFile_Monolithic;
     80  protected : morpheo::behavioural::generic::registerfile::registerfile_internal_banked::RegisterFile_Internal_Banked::RegisterFile_Internal_Banked * component_RegisterFile_Internal_Banked;
     81  protected : morpheo::behavioural::generic::registerfile::registerfile_multi_banked   ::RegisterFile_Multi_Banked   ::RegisterFile_Multi_Banked    * component_RegisterFile_Multi_Banked;
    8082
    8183    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters.cpp

    r137 r146  
    2626    _have_port_address = param->_have_port_address;
    2727
    28     _param_registerfile_monolithic   = param;
    29     _param_registerfile_multi_banked = NULL;
     28    _param_registerfile_monolithic      = param;
     29    _param_registerfile_internal_banked = NULL;
     30    _param_registerfile_multi_banked    = NULL;
     31
     32    test();
     33
     34    log_printf(FUNC,RegisterFile,"Parameters","End");
     35  };
     36
     37  Parameters::Parameters (morpheo::behavioural::generic::registerfile::registerfile_internal_banked  ::Parameters * param)
     38  {
     39    log_printf(FUNC,RegisterFile,"Parameters","Begin");
     40
     41    _instance          = instance_RegisterFile_Internal_Banked;
     42    _nb_port_read      = param->_nb_port_read ;
     43    _nb_port_write     = param->_nb_port_write;
     44    _nb_word           = param->_nb_word      ;
     45    _size_word         = param->_size_word    ;
     46    _size_address      = param->_size_address ;
     47    _have_port_address = param->_have_port_address;
     48
     49    _param_registerfile_monolithic      = NULL;
     50    _param_registerfile_internal_banked = param;
     51    _param_registerfile_multi_banked    = NULL;
    3052
    3153    test();
     
    4567    log_printf(FUNC,RegisterFile,"Parameters","Begin");
    4668
    47     _param_registerfile_monolithic   = NULL;
    48     _param_registerfile_multi_banked = param;
     69    _param_registerfile_monolithic      = NULL;
     70    _param_registerfile_internal_banked = NULL;
     71    _param_registerfile_multi_banked    = param;
    4972
    5073    test();
     
    5376  };
    5477 
    55 //   Parameters::Parameters (Parameters & param):
    56 //     _instance          (param._instance     ),
    57 //     _nb_port_read      (param._nb_port_read ),
    58 //     _nb_port_write     (param._nb_port_write),
    59 //     _nb_word           (param._nb_word      ),
    60 //     _size_word         (param._size_word    ),
    61 //     _size_address      (param._size_address ),
    62 //     _have_port_address (param._have_port_address)
    63 //   {
    64 //     log_printf(FUNC,RegisterFile,"Parameters (copy)","Begin");
    65 
    66 //     _param_registerfile_multi_banked = param._param_registerfile_multi_banked;
    67 //     _param_registerfile_monolithic   = param._param_registerfile_monolithic;
    68 //     test();
    69 //     log_printf(FUNC,RegisterFile,"Parameters (copy)","End");
    70 //   };
    71 
    7278  Parameters::~Parameters ()
    7379  {
     
    8490//     if (_instance == instance_RegisterFile_Monolithic)
    8591//       COPY(_param_registerfile_monolithic);
     92//     if (_instance == instance_RegisterFile_Internal_Banked)
     93//       COPY(_param_registerfile_internal_banked);
    8694//     if (_instance == instance_RegisterFile_Multi_Banked)
    8795//       COPY(_param_registerfile_multi_banked);
     
    92100}; // end namespace registerfile
    93101}; // end namespace generic
    94 
    95102}; // end namespace behavioural
    96103}; // end namespace morpheo             
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters_msg_error.cpp

    r81 r146  
    1010#include <sstream>
    1111
    12 namespace morpheo                    {
     12namespace morpheo {
    1313namespace behavioural {
    1414namespace generic {
    1515namespace registerfile {
    1616
    17 
    1817  Parameters_test Parameters::msg_error(void)
    1918  {
    2019    if (_instance == instance_RegisterFile_Monolithic)
    21       return _param_registerfile_monolithic  ->msg_error();
     20      return _param_registerfile_monolithic->msg_error();
    2221    else
    23       return _param_registerfile_multi_banked->msg_error();
     22      {
     23        if (_instance == instance_RegisterFile_Internal_Banked)
     24          return _param_registerfile_internal_banked->msg_error();
     25        else
     26          return _param_registerfile_multi_banked->msg_error();
     27      }
    2428  };
    2529
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters_print.cpp

    r81 r146  
    99#include "Behavioural/include/XML.h"
    1010
    11 namespace morpheo                    {
     11namespace morpheo {
    1212namespace behavioural {
    1313namespace generic {
    1414namespace registerfile {
    15 
    1615
    1716  std::string Parameters::print (uint32_t depth)
     
    2221
    2322    if (_instance == instance_RegisterFile_Monolithic)
    24       _return = _param_registerfile_monolithic  ->print(depth);
     23      _return = _param_registerfile_monolithic->print(depth);
    2524    else
    26       _return = _param_registerfile_multi_banked->print(depth);
     25      {
     26        if (_instance == instance_RegisterFile_Internal_Banked)
     27          _return = _param_registerfile_internal_banked->print(depth);
     28        else
     29          _return = _param_registerfile_multi_banked->print(depth);
     30      }
    2731
    2832    log_printf(FUNC,RegisterFile,"print","End");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile.cpp

    r82 r146  
    4343#ifdef STATISTICS
    4444    if (_param->_instance == instance_RegisterFile_Monolithic)
    45       _stat = component_RegisterFile_Monolithic  ->_stat;
     45      _stat = component_RegisterFile_Monolithic->_stat;
    4646    else
    47       _stat = component_RegisterFile_Multi_Banked->_stat;
     47      {
     48        if (_param->_instance == instance_RegisterFile_Internal_Banked)
     49          _stat = component_RegisterFile_Internal_Banked->_stat;
     50        else
     51          _stat = component_RegisterFile_Multi_Banked->_stat;
     52      }
    4853#endif
    4954
  • 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  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile_deallocation.cpp

    r131 r146  
    6060
    6161    if (_param->_instance == instance_RegisterFile_Monolithic)
    62       delete component_RegisterFile_Monolithic  ;
     62      delete component_RegisterFile_Monolithic;
    6363    else
    64       delete component_RegisterFile_Multi_Banked;
     64      {
     65        if (_param->_instance == instance_RegisterFile_Internal_Banked)
     66          delete component_RegisterFile_Internal_Banked;
     67        else
     68          delete component_RegisterFile_Multi_Banked;
     69      }
    6570
    6671    log_printf(FUNC,RegisterFile,"deallocation","End");
Note: See TracChangeset for help on using the changeset viewer.