Changeset 55


Ignore:
Timestamp:
Sep 24, 2007, 2:00:35 PM (17 years ago)
Author:
rosiere
Message:

Ajout SystemC read_queue et reservation_station
Ajout port au bloc registerfile_monolithic (à ajouter également au bloc registerfile et registerfile_multi_banked)
Modif param : passage de pointeur (attention, tous les composants n'ont pas été tous modifier)

Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural
Files:
52 added
49 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Constant/Constant_OpenRISC.h

    r53 r55  
    11#ifndef morpheo_behavioural_constant_Constant_h
    2 
    32/*
    43 * $Id$
     
    113112}; // end namespace behavioural
    114113}; // end namespace morpheo             
    115 
    116114#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config0.cfg

    r54 r55  
    11Read_queue
    2 2       8       *2      # size_read_queue   
     22       8       *2      # size_queue   
    334       4       *2      # nb_context         
    4432      32      *2      # nb_packet         
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config1.cfg

    r54 r55  
    11Read_queue
    2 4       4       *2      # size_read_queue   
     24       4       *2      # size_queue   
    334       4       *2      # nb_context         
    4432      32      *2      # nb_packet         
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/src/main.cpp

    r54 r55  
    1414  cerr << "<Usage> " << argv[0] << " name_instance list_params" << endl
    1515       << "list_params is :" << endl
    16        << " - size_read_queue     (unsigned int)" << endl
     16       << " - size_queue          (unsigned int)" << endl
    1717       << " - nb_context          (unsigned int)" << endl
    1818       << " - nb_packet           (unsigned int)" << endl
     
    4444
    4545  const string   name                = argv[1];
    46   const uint32_t size_read_queue     = atoi(argv[ 2]);
     46  const uint32_t size_queue          = atoi(argv[ 2]);
    4747  const uint32_t nb_context          = atoi(argv[ 3]);
    4848  const uint32_t nb_packet           = atoi(argv[ 4]);
     
    5959    {
    6060      morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::read_queue::Parameters * param = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::read_queue::Parameters
    61         ( size_read_queue   
     61        ( size_queue   
    6262         ,nb_context         
    6363         ,nb_packet         
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/src/test.cpp

    r54 r55  
    1111#include "Common/include/Test.h"
    1212
    13 #define NB_ITERATION  512
    14 #define CYCLE_MAX     (128*NB_ITERATION)
     13#define NB_ITERATION  64
     14#define CYCLE_MAX     (1024*NB_ITERATION)
    1515
    1616#define LABEL(str)                                                                       \
     
    7171  sc_signal<Tcontext_t         >         * READ_QUEUE_IN_CONTEXT_ID   = new sc_signal<Tcontext_t         >         ("READ_QUEUE_IN_CONTEXT_ID  ");
    7272  sc_signal<Tpacket_t          >         * READ_QUEUE_IN_PACKET_ID    = new sc_signal<Tpacket_t          >         ("READ_QUEUE_IN_PACKET_ID   ");
    73   sc_signal<uint32_t           >         * READ_QUEUE_IN_OPERATION    = new sc_signal<uint32_t           >         ("READ_QUEUE_IN_OPERATION   ");
     73  sc_signal<Toperation_t       >         * READ_QUEUE_IN_OPERATION    = new sc_signal<Toperation_t       >         ("READ_QUEUE_IN_OPERATION   ");
    7474  sc_signal<Ttype_t            >         * READ_QUEUE_IN_TYPE         = new sc_signal<Ttype_t            >         ("READ_QUEUE_IN_TYPE        ");
    7575  sc_signal<Tcontrol_t         >         * READ_QUEUE_IN_HAS_IMMEDIAT = new sc_signal<Tcontrol_t         >         ("READ_QUEUE_IN_HAS_IMMEDIAT");
     
    9292  sc_signal<Tcontext_t         >         * READ_QUEUE_OUT_CONTEXT_ID  = new sc_signal<Tcontext_t         >         ("READ_QUEUE_OUT_CONTEXT_ID  ");
    9393  sc_signal<Tpacket_t          >         * READ_QUEUE_OUT_PACKET_ID   = new sc_signal<Tpacket_t          >         ("READ_QUEUE_OUT_PACKET_ID   ");
    94   sc_signal<uint32_t           >         * READ_QUEUE_OUT_OPERATION   = new sc_signal<uint32_t           >         ("READ_QUEUE_OUT_OPERATION   ");
     94  sc_signal<Toperation_t       >         * READ_QUEUE_OUT_OPERATION   = new sc_signal<Toperation_t       >         ("READ_QUEUE_OUT_OPERATION   ");
    9595  sc_signal<Ttype_t            >         * READ_QUEUE_OUT_TYPE        = new sc_signal<Ttype_t            >         ("READ_QUEUE_OUT_TYPE        ");
    9696  sc_signal<Tcontrol_t         >         * READ_QUEUE_OUT_HAS_IMMEDIAT= new sc_signal<Tcontrol_t         >         ("READ_QUEUE_OUT_HAS_IMMEDIAT");
     
    163163    }
    164164
    165     // ~~~~~[ Interface "bypass_gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    166 
    167   sc_signal<Tcontrol_t         > ** BYPASS_GPR_WRITE_VAL        = new sc_signal<Tcontrol_t         > * [_param->_nb_gpr_write];
    168   sc_signal<Tcontext_t         > ** BYPASS_GPR_WRITE_CONTEXT_ID = new sc_signal<Tcontext_t         > * [_param->_nb_gpr_write];
    169   sc_signal<Tgeneral_address_t > ** BYPASS_GPR_WRITE_NUM_REG    = new sc_signal<Tgeneral_address_t > * [_param->_nb_gpr_write];
    170   sc_signal<Tgeneral_data_t    > ** BYPASS_GPR_WRITE_DATA       = new sc_signal<Tgeneral_data_t    > * [_param->_nb_gpr_write];
     165    // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     166
     167  sc_signal<Tcontrol_t         > ** GPR_WRITE_VAL        = new sc_signal<Tcontrol_t         > * [_param->_nb_gpr_write];
     168  sc_signal<Tcontext_t         > ** GPR_WRITE_CONTEXT_ID = new sc_signal<Tcontext_t         > * [_param->_nb_gpr_write];
     169  sc_signal<Tgeneral_address_t > ** GPR_WRITE_NUM_REG    = new sc_signal<Tgeneral_address_t > * [_param->_nb_gpr_write];
     170  sc_signal<Tgeneral_data_t    > ** GPR_WRITE_DATA       = new sc_signal<Tgeneral_data_t    > * [_param->_nb_gpr_write];
    171171
    172172  for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
    173173    {
    174       rename = "BYPASS_GPR_WRITE_"+toString(i)+"_VAL"       ;
    175       BYPASS_GPR_WRITE_VAL        [i] = new sc_signal<Tcontrol_t         > (rename.c_str());
    176       rename = "BYPASS_GPR_WRITE_"+toString(i)+"_CONTEXT_ID";
    177       BYPASS_GPR_WRITE_CONTEXT_ID [i] = new sc_signal<Tcontext_t         > (rename.c_str());
    178       rename = "BYPASS_GPR_WRITE_"+toString(i)+"_NUM_REG"   ;
    179       BYPASS_GPR_WRITE_NUM_REG    [i] = new sc_signal<Tgeneral_address_t > (rename.c_str());
    180       rename = "BYPASS_GPR_WRITE_"+toString(i)+"_DATA"      ;
    181       BYPASS_GPR_WRITE_DATA       [i] = new sc_signal<Tgeneral_data_t    > (rename.c_str());
    182     }
    183 
    184     // ~~~~~[ Interface "bypass_spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    185 
    186   sc_signal<Tcontrol_t         > ** BYPASS_SPR_WRITE_VAL        = new sc_signal<Tcontrol_t         > * [_param->_nb_spr_write];
    187   sc_signal<Tcontext_t         > ** BYPASS_SPR_WRITE_CONTEXT_ID = new sc_signal<Tcontext_t         > * [_param->_nb_spr_write];
    188   sc_signal<Tspecial_address_t > ** BYPASS_SPR_WRITE_NUM_REG    = new sc_signal<Tspecial_address_t > * [_param->_nb_spr_write];
    189   sc_signal<Tspecial_data_t    > ** BYPASS_SPR_WRITE_DATA       = new sc_signal<Tspecial_data_t    > * [_param->_nb_spr_write];
     174      rename = "GPR_WRITE_"+toString(i)+"_VAL"       ;
     175      GPR_WRITE_VAL        [i] = new sc_signal<Tcontrol_t         > (rename.c_str());
     176      rename = "GPR_WRITE_"+toString(i)+"_CONTEXT_ID";
     177      GPR_WRITE_CONTEXT_ID [i] = new sc_signal<Tcontext_t         > (rename.c_str());
     178      rename = "GPR_WRITE_"+toString(i)+"_NUM_REG"   ;
     179      GPR_WRITE_NUM_REG    [i] = new sc_signal<Tgeneral_address_t > (rename.c_str());
     180      rename = "GPR_WRITE_"+toString(i)+"_DATA"      ;
     181      GPR_WRITE_DATA       [i] = new sc_signal<Tgeneral_data_t    > (rename.c_str());
     182    }
     183
     184    // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     185
     186  sc_signal<Tcontrol_t         > ** SPR_WRITE_VAL        = new sc_signal<Tcontrol_t         > * [_param->_nb_spr_write];
     187  sc_signal<Tcontext_t         > ** SPR_WRITE_CONTEXT_ID = new sc_signal<Tcontext_t         > * [_param->_nb_spr_write];
     188  sc_signal<Tspecial_address_t > ** SPR_WRITE_NUM_REG    = new sc_signal<Tspecial_address_t > * [_param->_nb_spr_write];
     189  sc_signal<Tspecial_data_t    > ** SPR_WRITE_DATA       = new sc_signal<Tspecial_data_t    > * [_param->_nb_spr_write];
    190190
    191191  for (uint32_t i=0; i<_param->_nb_spr_write; i++)
    192192    {
    193       rename = "BYPASS_SPR_WRITE_"+toString(i)+"_VAL"       ;
    194       BYPASS_SPR_WRITE_VAL        [i] = new sc_signal<Tcontrol_t         > (rename.c_str());
    195       rename = "BYPASS_SPR_WRITE_"+toString(i)+"_CONTEXT_ID";
    196       BYPASS_SPR_WRITE_CONTEXT_ID [i] = new sc_signal<Tcontext_t         > (rename.c_str());
    197       rename = "BYPASS_SPR_WRITE_"+toString(i)+"_NUM_REG"   ;
    198       BYPASS_SPR_WRITE_NUM_REG    [i] = new sc_signal<Tspecial_address_t > (rename.c_str());
    199       rename = "BYPASS_SPR_WRITE_"+toString(i)+"_DATA"      ;
    200       BYPASS_SPR_WRITE_DATA       [i] = new sc_signal<Tspecial_data_t    > (rename.c_str());
     193      rename = "SPR_WRITE_"+toString(i)+"_VAL"       ;
     194      SPR_WRITE_VAL        [i] = new sc_signal<Tcontrol_t         > (rename.c_str());
     195      rename = "SPR_WRITE_"+toString(i)+"_CONTEXT_ID";
     196      SPR_WRITE_CONTEXT_ID [i] = new sc_signal<Tcontext_t         > (rename.c_str());
     197      rename = "SPR_WRITE_"+toString(i)+"_NUM_REG"   ;
     198      SPR_WRITE_NUM_REG    [i] = new sc_signal<Tspecial_address_t > (rename.c_str());
     199      rename = "SPR_WRITE_"+toString(i)+"_DATA"      ;
     200      SPR_WRITE_DATA       [i] = new sc_signal<Tspecial_data_t    > (rename.c_str());
    201201    }
    202202
     
    277277  for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
    278278    {
    279       (*(_Read_queue-> in_BYPASS_GPR_WRITE_VAL        [i])) (*(BYPASS_GPR_WRITE_VAL        [i]));
    280       (*(_Read_queue-> in_BYPASS_GPR_WRITE_CONTEXT_ID [i])) (*(BYPASS_GPR_WRITE_CONTEXT_ID [i]));
    281       (*(_Read_queue-> in_BYPASS_GPR_WRITE_NUM_REG    [i])) (*(BYPASS_GPR_WRITE_NUM_REG    [i]));
    282       (*(_Read_queue-> in_BYPASS_GPR_WRITE_DATA       [i])) (*(BYPASS_GPR_WRITE_DATA       [i]));
     279      (*(_Read_queue-> in_GPR_WRITE_VAL        [i])) (*(GPR_WRITE_VAL        [i]));
     280      (*(_Read_queue-> in_GPR_WRITE_CONTEXT_ID [i])) (*(GPR_WRITE_CONTEXT_ID [i]));
     281      (*(_Read_queue-> in_GPR_WRITE_NUM_REG    [i])) (*(GPR_WRITE_NUM_REG    [i]));
     282      (*(_Read_queue-> in_GPR_WRITE_DATA       [i])) (*(GPR_WRITE_DATA       [i]));
    283283    }
    284284 
    285285  for (uint32_t i=0; i<_param->_nb_spr_write; i++)
    286286    {
    287       (*(_Read_queue-> in_BYPASS_SPR_WRITE_VAL        [i])) (*(BYPASS_SPR_WRITE_VAL        [i]));
    288       (*(_Read_queue-> in_BYPASS_SPR_WRITE_CONTEXT_ID [i])) (*(BYPASS_SPR_WRITE_CONTEXT_ID [i]));
    289       (*(_Read_queue-> in_BYPASS_SPR_WRITE_NUM_REG    [i])) (*(BYPASS_SPR_WRITE_NUM_REG    [i]));
    290       (*(_Read_queue-> in_BYPASS_SPR_WRITE_DATA       [i])) (*(BYPASS_SPR_WRITE_DATA       [i]));
     287      (*(_Read_queue-> in_SPR_WRITE_VAL        [i])) (*(SPR_WRITE_VAL        [i]));
     288      (*(_Read_queue-> in_SPR_WRITE_CONTEXT_ID [i])) (*(SPR_WRITE_CONTEXT_ID [i]));
     289      (*(_Read_queue-> in_SPR_WRITE_NUM_REG    [i])) (*(SPR_WRITE_NUM_REG    [i]));
     290      (*(_Read_queue-> in_SPR_WRITE_DATA       [i])) (*(SPR_WRITE_DATA       [i]));
    291291    }
    292292
     
    321321
    322322//   for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
    323 //     BYPASS_GPR_WRITE_VAL    [i]->write (0);
     323//     GPR_WRITE_VAL    [i]->write (0);
    324324//   for (uint32_t i=0; i<_param->_nb_spr_write; i++)
    325 //     BYPASS_SPR_WRITE_VAL    [i]->write (0);
     325//     SPR_WRITE_VAL    [i]->write (0);
    326326
    327327  NRESET->write(0);
     
    337337      int32_t percent_transaction_queue_out    = (rand()%50)+25;
    338338      int32_t percent_registerfile_valid       = (rand()%50)+25;
    339       int32_t percent_transaction_registerfile = (rand()%50)+25;
     339      int32_t percent_transaction_registerfile = (rand()%74)+25;
    340340      int32_t percent_transaction_bypass       = (rand()%50)+25;
    341341     
     
    368368        }
    369369      // End initialisation .......
    370 
     370     
    371371      uint32_t request_in  = 0;
    372372      uint32_t request_out = 0;
     
    437437              Tgeneral_data_t    data    = rand()%(1<<_param->_size_general_data);
    438438             
    439               BYPASS_GPR_WRITE_VAL        [i]->write(val);           
    440               BYPASS_GPR_WRITE_CONTEXT_ID [i]->write(context);
    441               BYPASS_GPR_WRITE_NUM_REG    [i]->write(num_reg);
    442               BYPASS_GPR_WRITE_DATA       [i]->write(data);
     439              GPR_WRITE_VAL        [i]->write(val);           
     440              GPR_WRITE_CONTEXT_ID [i]->write(context);
     441              GPR_WRITE_NUM_REG    [i]->write(num_reg);
     442              GPR_WRITE_DATA       [i]->write(data);
    443443
    444444              if (val)
     
    455455              Tspecial_data_t    data    = rand()%(1<<_param->_size_special_data);
    456456             
    457               BYPASS_SPR_WRITE_VAL        [i]->write(val);           
    458               BYPASS_SPR_WRITE_CONTEXT_ID [i]->write(context);
    459               BYPASS_SPR_WRITE_NUM_REG    [i]->write(num_reg);
    460               BYPASS_SPR_WRITE_DATA       [i]->write(data);
     457              SPR_WRITE_VAL        [i]->write(val);           
     458              SPR_WRITE_CONTEXT_ID [i]->write(context);
     459              SPR_WRITE_NUM_REG    [i]->write(num_reg);
     460              SPR_WRITE_DATA       [i]->write(data);
    461461
    462462              if (val)
     
    483483
    484484              LABEL("Accepted READ_QUEUE_OUT ["+toString(packet_id)+"]");
    485 
     485             
    486486              TEST(uint32_t          , packet_id ,request_out);
    487487             
     
    579579  delete [] SPR_READ_DATA_VAL;
    580580
    581   delete [] BYPASS_GPR_WRITE_VAL        ;
    582   delete [] BYPASS_GPR_WRITE_CONTEXT_ID ;
    583   delete [] BYPASS_GPR_WRITE_NUM_REG    ;
    584   delete [] BYPASS_GPR_WRITE_DATA       ;
    585 
    586   delete [] BYPASS_SPR_WRITE_VAL        ;
    587   delete [] BYPASS_SPR_WRITE_CONTEXT_ID ;
    588   delete [] BYPASS_SPR_WRITE_NUM_REG    ;
    589   delete [] BYPASS_SPR_WRITE_DATA       ;
     581  delete [] GPR_WRITE_VAL        ;
     582  delete [] GPR_WRITE_CONTEXT_ID ;
     583  delete [] GPR_WRITE_NUM_REG    ;
     584  delete [] GPR_WRITE_DATA       ;
     585
     586  delete [] SPR_WRITE_VAL        ;
     587  delete [] SPR_WRITE_CONTEXT_ID ;
     588  delete [] SPR_WRITE_NUM_REG    ;
     589  delete [] SPR_WRITE_DATA       ;
    590590#endif
    591591
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Parameters.h

    r54 r55  
    2626  {
    2727    //-----[ fields ]------------------------------------------------------------
    28   public : const uint32_t    _size_read_queue      ;
     28  public : const uint32_t    _size_queue           ;
    2929  public : const uint32_t    _nb_context           ;
    3030  public : const uint32_t    _nb_packet            ;
     
    4848
    4949    //-----[ methods ]-----------------------------------------------------------
    50   public : Parameters  (  uint32_t size_read_queue    ,
    51                           uint32_t nb_context         ,
    52                           uint32_t nb_packet          ,
    53                           uint32_t size_general_data  ,
    54                           uint32_t size_special_data  ,
    55                           uint32_t nb_general_register,
    56                           uint32_t nb_special_register,
    57                           uint32_t nb_operation       ,
    58                           uint32_t nb_type            ,
    59                           uint32_t nb_gpr_write       ,
    60                           uint32_t nb_spr_write       );
     50  public : Parameters  (uint32_t size_queue         ,
     51                        uint32_t nb_context         ,
     52                        uint32_t nb_packet          ,
     53                        uint32_t size_general_data  ,
     54                        uint32_t size_special_data  ,
     55                        uint32_t nb_general_register,
     56                        uint32_t nb_special_register,
     57                        uint32_t nb_operation       ,
     58                        uint32_t nb_type            ,
     59                        uint32_t nb_gpr_write       ,
     60                        uint32_t nb_spr_write       );
    6161  public : Parameters  (Parameters & param) ;
    6262  public : ~Parameters () ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h

    r54 r55  
    270270  public    : SC_IN (Tcontrol_t        )   **  in_SPR_READ_DATA_VAL  ;
    271271
    272     // ~~~~~[ Interface "bypass_gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    273 
    274   public    : SC_IN (Tcontrol_t        )   **  in_BYPASS_GPR_WRITE_VAL       ;
    275   public    : SC_IN (Tcontext_t        )   **  in_BYPASS_GPR_WRITE_CONTEXT_ID;
    276   public    : SC_IN (Tgeneral_address_t)   **  in_BYPASS_GPR_WRITE_NUM_REG   ;
    277   public    : SC_IN (Tgeneral_data_t   )   **  in_BYPASS_GPR_WRITE_DATA      ;
    278 
    279     // ~~~~~[ Interface "bypass_spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    280 
    281   public    : SC_IN (Tcontrol_t        )   **  in_BYPASS_SPR_WRITE_VAL       ;
    282   public    : SC_IN (Tcontext_t        )   **  in_BYPASS_SPR_WRITE_CONTEXT_ID;
    283   public    : SC_IN (Tspecial_address_t)   **  in_BYPASS_SPR_WRITE_NUM_REG   ;
    284   public    : SC_IN (Tspecial_data_t   )   **  in_BYPASS_SPR_WRITE_DATA      ;
     272    // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     273
     274  public    : SC_IN (Tcontrol_t        )   **  in_GPR_WRITE_VAL       ;
     275  public    : SC_IN (Tcontext_t        )   **  in_GPR_WRITE_CONTEXT_ID;
     276  public    : SC_IN (Tgeneral_address_t)   **  in_GPR_WRITE_NUM_REG   ;
     277  public    : SC_IN (Tgeneral_data_t   )   **  in_GPR_WRITE_DATA      ;
     278
     279    // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     280
     281  public    : SC_IN (Tcontrol_t        )   **  in_SPR_WRITE_VAL       ;
     282  public    : SC_IN (Tcontext_t        )   **  in_SPR_WRITE_CONTEXT_ID;
     283  public    : SC_IN (Tspecial_address_t)   **  in_SPR_WRITE_NUM_REG   ;
     284  public    : SC_IN (Tspecial_data_t   )   **  in_SPR_WRITE_DATA      ;
    285285
    286286    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Types.h

    r54 r55  
    2626  typedef uint32_t Tcontext_t        ;
    2727  typedef uint32_t Tpacket_t         ;
    28   typedef uint32_t Toperation_t      ;
     28//typedef uint32_t Toperation_t      ; // cf Constant_OpenRISC.h
    2929  typedef uint32_t Ttype_t           ;
    3030
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters.cpp

    r54 r55  
    1818
    1919
    20   Parameters::Parameters (uint32_t size_read_queue    ,
     20  Parameters::Parameters (uint32_t size_queue         ,
    2121                          uint32_t nb_context         ,
    2222                          uint32_t nb_packet          ,
     
    2929                          uint32_t nb_gpr_write       ,
    3030                          uint32_t nb_spr_write       ):
    31     _size_read_queue       (size_read_queue      ),
     31    _size_queue            (size_queue           ),
    3232    _nb_context            (nb_context           ),
    3333    _nb_packet             (nb_packet            ),
     
    5656 
    5757  Parameters::Parameters (Parameters & param):
    58     _size_read_queue       (param._size_read_queue       ),
     58    _size_queue            (param._size_queue            ),
    5959    _nb_context            (param._nb_context            ),
    6060    _nb_packet             (param._nb_packet             ),
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters_msg_error.cpp

    r54 r55  
    2727    string msg = "";
    2828
    29     if (_size_read_queue < 2)
     29    if (_size_queue < 2)
    3030      {
    3131        msg += "  - The read_queue must be have less a depth of 2";
    32         msg += "    * size_read_queue                 : " + toString(_size_read_queue)    + "\n";
     32        msg += "    * size_queue                      : " + toString(_size_queue)    + "\n";
    3333      }
    3434   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters_print.cpp

    r54 r55  
    2727
    2828    xml.balise_open("read_queue");
    29     xml.singleton_begin("size_read_queue    "); xml.attribut("value",toString(_size_read_queue    )); xml.singleton_end();
     29    xml.singleton_begin("size_queue         "); xml.attribut("value",toString(_size_queue         )); xml.singleton_end();
    3030    xml.singleton_begin("nb_context         "); xml.attribut("value",toString(_nb_context         )); xml.singleton_end();
    3131    xml.singleton_begin("nb_packet          "); xml.attribut("value",toString(_nb_packet          )); xml.singleton_end();
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue.cpp

    r54 r55  
    7777      sensitive << *(in_SPR_READ_ACK      [i]);
    7878    for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
    79       sensitive << *(in_BYPASS_GPR_WRITE_VAL        [i])
    80                 << *(in_BYPASS_GPR_WRITE_CONTEXT_ID [i])
    81                 << *(in_BYPASS_GPR_WRITE_NUM_REG    [i]);
     79      sensitive << *(in_GPR_WRITE_VAL        [i])
     80                << *(in_GPR_WRITE_CONTEXT_ID [i])
     81                << *(in_GPR_WRITE_NUM_REG    [i]);
    8282    for (uint32_t i=0; i<_param->_nb_spr_write; i++)
    83       sensitive << *(in_BYPASS_SPR_WRITE_VAL        [i])
    84                 << *(in_BYPASS_SPR_WRITE_CONTEXT_ID [i])
    85                 << *(in_BYPASS_SPR_WRITE_NUM_REG    [i]);
     83      sensitive << *(in_SPR_WRITE_VAL        [i])
     84                << *(in_SPR_WRITE_CONTEXT_ID [i])
     85                << *(in_SPR_WRITE_NUM_REG    [i]);
    8686
    8787#ifdef SYSTEMCASS_SPECIFIC
     
    9393    for (uint32_t i=0; i<_param->_nb_gpr_write ; i++)
    9494      {
    95         (*(out_READ_QUEUE_OUT_VAL)) (*(in_BYPASS_GPR_WRITE_VAL        [i]));
    96         (*(out_READ_QUEUE_OUT_VAL)) (*(in_BYPASS_GPR_WRITE_CONTEXT_ID [i]));
    97         (*(out_READ_QUEUE_OUT_VAL)) (*(in_BYPASS_GPR_WRITE_NUM_REG    [i]));
     95        (*(out_READ_QUEUE_OUT_VAL)) (*(in_GPR_WRITE_VAL        [i]));
     96        (*(out_READ_QUEUE_OUT_VAL)) (*(in_GPR_WRITE_CONTEXT_ID [i]));
     97        (*(out_READ_QUEUE_OUT_VAL)) (*(in_GPR_WRITE_NUM_REG    [i]));
    9898      }
    9999    for (uint32_t i=0; i<_param->_nb_spr_write ; i++)
    100100      {
    101         (*(out_READ_QUEUE_OUT_VAL)) (*(in_BYPASS_SPR_WRITE_VAL        [i]));
    102         (*(out_READ_QUEUE_OUT_VAL)) (*(in_BYPASS_SPR_WRITE_CONTEXT_ID [i]));
    103         (*(out_READ_QUEUE_OUT_VAL)) (*(in_BYPASS_SPR_WRITE_NUM_REG    [i]));
     101        (*(out_READ_QUEUE_OUT_VAL)) (*(in_SPR_WRITE_VAL        [i]));
     102        (*(out_READ_QUEUE_OUT_VAL)) (*(in_SPR_WRITE_CONTEXT_ID [i]));
     103        (*(out_READ_QUEUE_OUT_VAL)) (*(in_SPR_WRITE_NUM_REG    [i]));
    104104      }
    105105#endif   
     
    115115                << *(in_GPR_READ_DATA_VAL [i]);
    116116    for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
    117       sensitive << *(in_BYPASS_GPR_WRITE_VAL        [i])
    118                 << *(in_BYPASS_GPR_WRITE_CONTEXT_ID [i])
    119                 << *(in_BYPASS_GPR_WRITE_NUM_REG    [i])
    120                 << *(in_BYPASS_GPR_WRITE_DATA       [i]);
     117      sensitive << *(in_GPR_WRITE_VAL        [i])
     118                << *(in_GPR_WRITE_CONTEXT_ID [i])
     119                << *(in_GPR_WRITE_NUM_REG    [i])
     120                << *(in_GPR_WRITE_DATA       [i]);
    121121
    122122#ifdef SYSTEMCASS_SPECIFIC
     
    133133    for (uint32_t i=0; i<_param->_nb_gpr_write ; i++)
    134134      {
    135         (*(out_READ_QUEUE_OUT_DATA_RA_VAL)) (*(in_BYPASS_GPR_WRITE_VAL        [i]));
    136         (*(out_READ_QUEUE_OUT_DATA_RA_VAL)) (*(in_BYPASS_GPR_WRITE_CONTEXT_ID [i]));
    137         (*(out_READ_QUEUE_OUT_DATA_RA_VAL)) (*(in_BYPASS_GPR_WRITE_NUM_REG    [i]));
    138         (*(out_READ_QUEUE_OUT_DATA_RB_VAL)) (*(in_BYPASS_GPR_WRITE_VAL        [i]));
    139         (*(out_READ_QUEUE_OUT_DATA_RB_VAL)) (*(in_BYPASS_GPR_WRITE_CONTEXT_ID [i]));
    140         (*(out_READ_QUEUE_OUT_DATA_RB_VAL)) (*(in_BYPASS_GPR_WRITE_NUM_REG    [i]));
    141 
    142         (*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_BYPASS_GPR_WRITE_VAL        [i]));
    143         (*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_BYPASS_GPR_WRITE_CONTEXT_ID [i]));
    144         (*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_BYPASS_GPR_WRITE_NUM_REG    [i]));
    145         (*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_BYPASS_GPR_WRITE_DATA       [i]));
    146         (*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_BYPASS_GPR_WRITE_VAL        [i]));
    147         (*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_BYPASS_GPR_WRITE_CONTEXT_ID [i]));
    148         (*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_BYPASS_GPR_WRITE_NUM_REG    [i]));
    149         (*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_BYPASS_GPR_WRITE_DATA       [i]));
     135        (*(out_READ_QUEUE_OUT_DATA_RA_VAL)) (*(in_GPR_WRITE_VAL        [i]));
     136        (*(out_READ_QUEUE_OUT_DATA_RA_VAL)) (*(in_GPR_WRITE_CONTEXT_ID [i]));
     137        (*(out_READ_QUEUE_OUT_DATA_RA_VAL)) (*(in_GPR_WRITE_NUM_REG    [i]));
     138        (*(out_READ_QUEUE_OUT_DATA_RB_VAL)) (*(in_GPR_WRITE_VAL        [i]));
     139        (*(out_READ_QUEUE_OUT_DATA_RB_VAL)) (*(in_GPR_WRITE_CONTEXT_ID [i]));
     140        (*(out_READ_QUEUE_OUT_DATA_RB_VAL)) (*(in_GPR_WRITE_NUM_REG    [i]));
     141
     142        (*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_GPR_WRITE_VAL        [i]));
     143        (*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_GPR_WRITE_CONTEXT_ID [i]));
     144        (*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_GPR_WRITE_NUM_REG    [i]));
     145        (*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_GPR_WRITE_DATA       [i]));
     146        (*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_GPR_WRITE_VAL        [i]));
     147        (*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_GPR_WRITE_CONTEXT_ID [i]));
     148        (*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_GPR_WRITE_NUM_REG    [i]));
     149        (*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_GPR_WRITE_DATA       [i]));
    150150      }
    151151#endif   
     
    161161                << *(in_SPR_READ_DATA_VAL [i]);
    162162    for (uint32_t i=0; i<_param->_nb_spr_write; i++)
    163       sensitive << *(in_BYPASS_SPR_WRITE_VAL        [i])
    164                 << *(in_BYPASS_SPR_WRITE_CONTEXT_ID [i])
    165                 << *(in_BYPASS_SPR_WRITE_NUM_REG    [i])
    166                 << *(in_BYPASS_SPR_WRITE_DATA       [i]);
     163      sensitive << *(in_SPR_WRITE_VAL        [i])
     164                << *(in_SPR_WRITE_CONTEXT_ID [i])
     165                << *(in_SPR_WRITE_NUM_REG    [i])
     166                << *(in_SPR_WRITE_DATA       [i]);
    167167
    168168#ifdef SYSTEMCASS_SPECIFIC
     
    176176    for (uint32_t i=0; i<_param->_nb_spr_write ; i++)
    177177      {
    178         (*(out_READ_QUEUE_OUT_DATA_RC_VAL)) (*(in_BYPASS_SPR_WRITE_VAL        [i]));
    179         (*(out_READ_QUEUE_OUT_DATA_RC_VAL)) (*(in_BYPASS_SPR_WRITE_CONTEXT_ID [i]));
    180         (*(out_READ_QUEUE_OUT_DATA_RC_VAL)) (*(in_BYPASS_SPR_WRITE_NUM_REG    [i]));
    181 
    182         (*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_BYPASS_SPR_WRITE_VAL        [i]));
    183         (*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_BYPASS_SPR_WRITE_CONTEXT_ID [i]));
    184         (*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_BYPASS_SPR_WRITE_NUM_REG    [i]));
    185         (*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_BYPASS_SPR_WRITE_DATA       [i]));
     178        (*(out_READ_QUEUE_OUT_DATA_RC_VAL)) (*(in_SPR_WRITE_VAL        [i]));
     179        (*(out_READ_QUEUE_OUT_DATA_RC_VAL)) (*(in_SPR_WRITE_CONTEXT_ID [i]));
     180        (*(out_READ_QUEUE_OUT_DATA_RC_VAL)) (*(in_SPR_WRITE_NUM_REG    [i]));
     181
     182        (*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_SPR_WRITE_VAL        [i]));
     183        (*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_SPR_WRITE_CONTEXT_ID [i]));
     184        (*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_SPR_WRITE_NUM_REG    [i]));
     185        (*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_SPR_WRITE_DATA       [i]));
    186186      }
    187187#endif   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_allocation.cpp

    r54 r55  
    170170      }
    171171
    172     // ~~~~~[ Interface : "bypass_gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    173    
    174      in_BYPASS_GPR_WRITE_VAL       = new SC_IN (Tcontrol_t        ) * [_param->_nb_gpr_write];
    175      in_BYPASS_GPR_WRITE_CONTEXT_ID= new SC_IN (Tcontext_t        ) * [_param->_nb_gpr_write];
    176      in_BYPASS_GPR_WRITE_NUM_REG   = new SC_IN (Tgeneral_address_t) * [_param->_nb_gpr_write];
    177      in_BYPASS_GPR_WRITE_DATA      = new SC_IN (Tgeneral_data_t   ) * [_param->_nb_gpr_write];
     172    // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     173   
     174     in_GPR_WRITE_VAL       = new SC_IN (Tcontrol_t        ) * [_param->_nb_gpr_write];
     175     in_GPR_WRITE_CONTEXT_ID= new SC_IN (Tcontext_t        ) * [_param->_nb_gpr_write];
     176     in_GPR_WRITE_NUM_REG   = new SC_IN (Tgeneral_address_t) * [_param->_nb_gpr_write];
     177     in_GPR_WRITE_DATA      = new SC_IN (Tgeneral_data_t   ) * [_param->_nb_gpr_write];
    178178
    179179    for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
    180180      {
    181         Interface_fifo * interface = _interfaces->set_interface("bypass_gpr_write_"+toString(i)
     181        Interface_fifo * interface = _interfaces->set_interface("gpr_write_"+toString(i)
    182182#ifdef POSITION
    183183                                                                , IN 
     
    187187                                                                );
    188188
    189          in_BYPASS_GPR_WRITE_VAL        [i] = interface->set_signal_valack_in        ("val"    , VAL);
    190          in_BYPASS_GPR_WRITE_CONTEXT_ID [i] = interface->set_signal_in  <Tcontext_t        > ("context_id",_param->_size_context_id);
    191          in_BYPASS_GPR_WRITE_NUM_REG    [i] = interface->set_signal_in  <Tgeneral_address_t> ("num_reg"   ,_param->_size_general_register);
    192          in_BYPASS_GPR_WRITE_DATA       [i] = interface->set_signal_in  <Tgeneral_data_t   > ("data"      ,_param->_size_general_data);
    193       }
    194 
    195     // ~~~~~[ Interface : "bypass_spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    196    
    197      in_BYPASS_SPR_WRITE_VAL       = new SC_IN (Tcontrol_t        ) * [_param->_nb_spr_write];
    198      in_BYPASS_SPR_WRITE_CONTEXT_ID= new SC_IN (Tcontext_t        ) * [_param->_nb_spr_write];
    199      in_BYPASS_SPR_WRITE_NUM_REG   = new SC_IN (Tspecial_address_t) * [_param->_nb_spr_write];
    200      in_BYPASS_SPR_WRITE_DATA      = new SC_IN (Tspecial_data_t   ) * [_param->_nb_spr_write];
     189         in_GPR_WRITE_VAL        [i] = interface->set_signal_valack_in        ("val"    , VAL);
     190         in_GPR_WRITE_CONTEXT_ID [i] = interface->set_signal_in  <Tcontext_t        > ("context_id",_param->_size_context_id);
     191         in_GPR_WRITE_NUM_REG    [i] = interface->set_signal_in  <Tgeneral_address_t> ("num_reg"   ,_param->_size_general_register);
     192         in_GPR_WRITE_DATA       [i] = interface->set_signal_in  <Tgeneral_data_t   > ("data"      ,_param->_size_general_data);
     193      }
     194
     195    // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     196   
     197     in_SPR_WRITE_VAL       = new SC_IN (Tcontrol_t        ) * [_param->_nb_spr_write];
     198     in_SPR_WRITE_CONTEXT_ID= new SC_IN (Tcontext_t        ) * [_param->_nb_spr_write];
     199     in_SPR_WRITE_NUM_REG   = new SC_IN (Tspecial_address_t) * [_param->_nb_spr_write];
     200     in_SPR_WRITE_DATA      = new SC_IN (Tspecial_data_t   ) * [_param->_nb_spr_write];
    201201
    202202    for (uint32_t i=0; i<_param->_nb_spr_write; i++)
    203203      {
    204         Interface_fifo * interface = _interfaces->set_interface("bypass_spr_write_"+toString(i)
     204        Interface_fifo * interface = _interfaces->set_interface("spr_write_"+toString(i)
    205205#ifdef POSITION
    206206                                                                , IN 
     
    210210                                                                );
    211211
    212          in_BYPASS_SPR_WRITE_VAL        [i] = interface->set_signal_valack_in        ("val"    , VAL);
    213          in_BYPASS_SPR_WRITE_CONTEXT_ID [i] = interface->set_signal_in  <Tcontext_t        > ("context_id",_param->_size_context_id);
    214          in_BYPASS_SPR_WRITE_NUM_REG    [i] = interface->set_signal_in  <Tspecial_address_t> ("num_reg"   ,_param->_size_special_register);
    215          in_BYPASS_SPR_WRITE_DATA       [i] = interface->set_signal_in  <Tspecial_data_t   > ("data"      ,_param->_size_special_data);
     212         in_SPR_WRITE_VAL        [i] = interface->set_signal_valack_in        ("val"    , VAL);
     213         in_SPR_WRITE_CONTEXT_ID [i] = interface->set_signal_in  <Tcontext_t        > ("context_id",_param->_size_context_id);
     214         in_SPR_WRITE_NUM_REG    [i] = interface->set_signal_in  <Tspecial_address_t> ("num_reg"   ,_param->_size_special_register);
     215         in_SPR_WRITE_DATA       [i] = interface->set_signal_in  <Tspecial_data_t   > ("data"      ,_param->_size_special_data);
    216216      }
    217217
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_deallocation.cpp

    r54 r55  
    9191    delete []  in_SPR_READ_DATA_VAL  ;
    9292
    93     // ~~~~~[ Interface : "bypass_gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     93    // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    9494   
    95     delete []  in_BYPASS_GPR_WRITE_VAL       ;
    96     delete []  in_BYPASS_GPR_WRITE_CONTEXT_ID;
    97     delete []  in_BYPASS_GPR_WRITE_NUM_REG   ;
    98     delete []  in_BYPASS_GPR_WRITE_DATA      ;
     95    delete []  in_GPR_WRITE_VAL       ;
     96    delete []  in_GPR_WRITE_CONTEXT_ID;
     97    delete []  in_GPR_WRITE_NUM_REG   ;
     98    delete []  in_GPR_WRITE_DATA      ;
    9999
    100     // ~~~~~[ Interface : "bypass_spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     100    // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    101101   
    102     delete []  in_BYPASS_SPR_WRITE_VAL       ;
    103     delete []  in_BYPASS_SPR_WRITE_CONTEXT_ID;
    104     delete []  in_BYPASS_SPR_WRITE_NUM_REG   ;
    105     delete []  in_BYPASS_SPR_WRITE_DATA      ;
     102    delete []  in_SPR_WRITE_VAL       ;
     103    delete []  in_SPR_WRITE_CONTEXT_ID;
     104    delete []  in_SPR_WRITE_NUM_REG   ;
     105    delete []  in_SPR_WRITE_DATA      ;
    106106
    107107    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMealy_read_queue_out_gpr.cpp

    r54 r55  
    6666      {
    6767        // Test if this bypass is valid
    68         if ( (PORT_READ (in_BYPASS_GPR_WRITE_VAL        [i]) == 1) and
    69              (PORT_READ (in_BYPASS_GPR_WRITE_CONTEXT_ID [i]) == _queue_head->_context_id)
     68        if ( (PORT_READ (in_GPR_WRITE_VAL        [i]) == 1) and
     69             (PORT_READ (in_GPR_WRITE_CONTEXT_ID [i]) == _queue_head->_context_id)
    7070             )
    7171          {
    72             Tgeneral_address_t bypass_gpr_write_num_reg = PORT_READ(in_BYPASS_GPR_WRITE_NUM_REG [i]);
    73             Tgeneral_data_t    bypass_gpr_write_data    = PORT_READ(in_BYPASS_GPR_WRITE_DATA    [i]);
     72            Tgeneral_address_t gpr_write_num_reg = PORT_READ(in_GPR_WRITE_NUM_REG [i]);
     73            Tgeneral_data_t    gpr_write_data    = PORT_READ(in_GPR_WRITE_DATA    [i]);
    7474           
    75             if (_queue_head->_num_reg_ra == bypass_gpr_write_num_reg)
     75            if (_queue_head->_num_reg_ra == gpr_write_num_reg)
    7676              {
    7777                log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RA_VAL   - bypass hit (%d)",i);
    7878
    7979                internal_READ_QUEUE_OUT_DATA_RA_VAL = 1;
    80                 internal_READ_QUEUE_OUT_DATA_RA     = bypass_gpr_write_data;
     80                internal_READ_QUEUE_OUT_DATA_RA     = gpr_write_data;
    8181              }
    82             if (_queue_head->_num_reg_rb == bypass_gpr_write_num_reg)
     82            if (_queue_head->_num_reg_rb == gpr_write_num_reg)
    8383              {
    8484                log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RB_VAL   - bypass hit (%d)",i);
    8585                internal_READ_QUEUE_OUT_DATA_RB_VAL = 1;
    86                 internal_READ_QUEUE_OUT_DATA_RB     = bypass_gpr_write_data;
     86                internal_READ_QUEUE_OUT_DATA_RB     = gpr_write_data;
    8787              }
    8888          }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMealy_read_queue_out_spr.cpp

    r54 r55  
    5151      {
    5252        // Test if this bypass is valid
    53         if ( (PORT_READ (in_BYPASS_SPR_WRITE_VAL        [i]) == 1) and
    54              (PORT_READ (in_BYPASS_SPR_WRITE_CONTEXT_ID [i]) == _queue_head->_context_id)
     53        if ( (PORT_READ (in_SPR_WRITE_VAL        [i]) == 1) and
     54             (PORT_READ (in_SPR_WRITE_CONTEXT_ID [i]) == _queue_head->_context_id)
    5555             )
    5656          {
    57             if (_queue_head->_num_reg_rc == PORT_READ(in_BYPASS_SPR_WRITE_NUM_REG [i]))
     57            if (_queue_head->_num_reg_rc == PORT_READ(in_SPR_WRITE_NUM_REG [i]))
    5858              {
    5959                log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RC_VAL   - bypass hit (%d)",i);
    6060                internal_READ_QUEUE_OUT_DATA_RC_VAL = 1;
    61                 internal_READ_QUEUE_OUT_DATA_RC     = PORT_READ(in_BYPASS_SPR_WRITE_DATA [i]);
     61                internal_READ_QUEUE_OUT_DATA_RC     = PORT_READ(in_SPR_WRITE_DATA [i]);
    6262              }
    6363          }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMealy_read_queue_out_val.cpp

    r54 r55  
    4242      {
    4343        // Test if this bypass is valid
    44         if ( (PORT_READ (in_BYPASS_GPR_WRITE_VAL        [i]) == 1) and
    45              (PORT_READ (in_BYPASS_GPR_WRITE_CONTEXT_ID [i]) == _queue_head->_context_id)
     44        if ( (PORT_READ (in_GPR_WRITE_VAL        [i]) == 1) and
     45             (PORT_READ (in_GPR_WRITE_CONTEXT_ID [i]) == _queue_head->_context_id)
    4646             )
    4747          {
    48             Tgeneral_address_t bypass_gpr_write_num_reg = PORT_READ(in_BYPASS_GPR_WRITE_NUM_REG [i]);
     48            Tgeneral_address_t gpr_write_num_reg = PORT_READ(in_GPR_WRITE_NUM_REG [i]);
    4949           
    50             if (_queue_head->_num_reg_ra == bypass_gpr_write_num_reg)
     50            if (_queue_head->_num_reg_ra == gpr_write_num_reg)
    5151              internal_READ_QUEUE_OUT_READ_RA_VAL = 0;
    5252
    53             if (_queue_head->_num_reg_rb == bypass_gpr_write_num_reg)
     53            if (_queue_head->_num_reg_rb == gpr_write_num_reg)
    5454              internal_READ_QUEUE_OUT_READ_RB_VAL = 0;
    5555          }
     
    5959      {
    6060        // Test if this bypass is valid
    61         if ( (PORT_READ (in_BYPASS_SPR_WRITE_VAL        [i]) == 1) and
    62              (PORT_READ (in_BYPASS_SPR_WRITE_CONTEXT_ID [i]) == _queue_head->_context_id)
     61        if ( (PORT_READ (in_SPR_WRITE_VAL        [i]) == 1) and
     62             (PORT_READ (in_SPR_WRITE_CONTEXT_ID [i]) == _queue_head->_context_id)
    6363             )
    6464          {
    65             Tspecial_address_t bypass_spr_write_num_reg = PORT_READ(in_BYPASS_SPR_WRITE_NUM_REG [i]);
     65            Tspecial_address_t spr_write_num_reg = PORT_READ(in_SPR_WRITE_NUM_REG [i]);
    6666           
    67             if (_queue_head->_num_reg_rc == bypass_spr_write_num_reg)
     67            if (_queue_head->_num_reg_rc == spr_write_num_reg)
    6868              internal_READ_QUEUE_OUT_READ_RC_VAL = 0;
    6969          }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMoore.cpp

    r54 r55  
    2424    log_printf(FUNC,Read_queue,FUNCTION,"Begin");
    2525
    26     bool not_full  = not (_queue->size() == _param->_size_read_queue);
     26    bool not_full  = not (_queue->size() == _param->_size_queue);
    2727    bool not_empty = not _queue->empty();
    2828
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_transition.cpp

    r54 r55  
    4747        // Write to read_queue
    4848
    49         bool not_full      = not (_queue->size() == _param->_size_read_queue);
     49        bool not_full      = not (_queue->size() == _param->_size_queue);
    5050        bool     empty     =     _queue->empty();
    5151        bool nead_new_head = false;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Group/include/Statistics.h

    r2 r55  
    2424  {
    2525    // -----[ fields ]----------------------------------------------------
    26   private  : const Parameters            _parameters;
     26  private  : const Parameters          * _parameters;
    2727  private  : Counters                 ** _counters;
    2828
    2929
    3030    // -----[ methods ]---------------------------------------------------
    31   public   : Statistics (string                                      name                       ,
    32                          morpheo::behavioural::Parameters_Statistics parameters_statistics      ,
    33                          Parameters                                  parameters
     31  public   : Statistics (string                                        name                       ,
     32                         morpheo::behavioural::Parameters_Statistics * parameters_statistics      ,
     33                         Parameters                                  * parameters
    3434                         );
    3535//public   : Statistics (Statistics & stat);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Group/src/Statistics.cpp

    r2 r55  
    1414namespace group                      {
    1515
    16   Statistics::Statistics (string                                      name                       ,
    17                           morpheo::behavioural::Parameters_Statistics parameters_statistics      ,
    18                           Parameters                                  parameters
     16  Statistics::Statistics (string                                        name                       ,
     17                          morpheo::behavioural::Parameters_Statistics * parameters_statistics      ,
     18                          Parameters                                  * parameters
    1919                          ) :
    2020    morpheo::behavioural::Statistics(name                  ,
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Group/src/Statistics_add.cpp

    r2 r55  
    3232  void Statistics::add (uint32_t nb_use)
    3333  {
    34     test_if_save<Counters,Parameters>(_counters,_parameters);
     34    test_if_save<Counters,Parameters>(_counters,*_parameters);
    3535
    3636    if (_nb_statistics>0)
     
    4242          _counters[i]->_nb_cycle_none_use   ++;
    4343        else
    44           if (nb_use == _parameters._nb_elt)
     44          if (nb_use == _parameters->_nb_elt)
    4545            _counters[i]->_nb_cycle_full_use   ++;
    4646          else
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Group/src/Statistics_print_body.cpp

    r2 r55  
    4444                          << _counters[i]->_nb_use                                << "\" /> <!-- average : "
    4545                          << average(_counters[i]->_nb_use,                    nb_cycle)      << " - "
    46                           << percent(_counters[i]->_nb_use,_parameters._nb_elt*nb_cycle)      << "% -->" << endl
     46                          << percent(_counters[i]->_nb_use,_parameters->_nb_elt*nb_cycle)      << "% -->" << endl
    4747            << tab << "\t</cycle>" << endl;
    4848      }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/configuration.cfg

    r23 r55  
    11RegisterFile_Monolithic
    2 2       8       *2      # nb_port_read
    3 1       4       *2      # nb_port_write
    4 32      256     *2      # nb_word
     20       0       *2      # nb_port_read
     30       0       *2      # nb_port_write
     41       8       *2      # nb_port_read_write
     532      32      *2      # nb_word
    5632      32      *2      # size_word
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/include/test.h

    r50 r55  
    2424
    2525void test   (string name,
    26              morpheo::behavioural::generic::registerfile::registerfile_monolithic::Parameters param);
     26             morpheo::behavioural::generic::registerfile::registerfile_monolithic::Parameters * param);
    2727
    2828class Time
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/mkf.info

    r23 r55  
    55target_dep      RegisterFile_Monolithic_0.prj   RegisterFile_Monolithic_0_Pack.vhdl RegisterFile_Monolithic_0.vhdl
    66
    7 # RegisterFile_Monolithic_10
    8 target_dep      all     RegisterFile_Monolithic_10.ngc
    9 target_dep      RegisterFile_Monolithic_10.ngc  RegisterFile_Monolithic_10.prj
    10 target_dep      RegisterFile_Monolithic_10.prj  RegisterFile_Monolithic_10_Pack.vhdl RegisterFile_Monolithic_10.vhdl
    11 
    12 # RegisterFile_Monolithic_11
    13 target_dep      all     RegisterFile_Monolithic_11.ngc
    14 target_dep      RegisterFile_Monolithic_11.ngc  RegisterFile_Monolithic_11.prj
    15 target_dep      RegisterFile_Monolithic_11.prj  RegisterFile_Monolithic_11_Pack.vhdl RegisterFile_Monolithic_11.vhdl
    16 
    17 # RegisterFile_Monolithic_12
    18 target_dep      all     RegisterFile_Monolithic_12.ngc
    19 target_dep      RegisterFile_Monolithic_12.ngc  RegisterFile_Monolithic_12.prj
    20 target_dep      RegisterFile_Monolithic_12.prj  RegisterFile_Monolithic_12_Pack.vhdl RegisterFile_Monolithic_12.vhdl
    21 
    22 # RegisterFile_Monolithic_13
    23 target_dep      all     RegisterFile_Monolithic_13.ngc
    24 target_dep      RegisterFile_Monolithic_13.ngc  RegisterFile_Monolithic_13.prj
    25 target_dep      RegisterFile_Monolithic_13.prj  RegisterFile_Monolithic_13_Pack.vhdl RegisterFile_Monolithic_13.vhdl
    26 
    27 # RegisterFile_Monolithic_14
    28 target_dep      all     RegisterFile_Monolithic_14.ngc
    29 target_dep      RegisterFile_Monolithic_14.ngc  RegisterFile_Monolithic_14.prj
    30 target_dep      RegisterFile_Monolithic_14.prj  RegisterFile_Monolithic_14_Pack.vhdl RegisterFile_Monolithic_14.vhdl
    31 
    32 # RegisterFile_Monolithic_15
    33 target_dep      all     RegisterFile_Monolithic_15.ngc
    34 target_dep      RegisterFile_Monolithic_15.ngc  RegisterFile_Monolithic_15.prj
    35 target_dep      RegisterFile_Monolithic_15.prj  RegisterFile_Monolithic_15_Pack.vhdl RegisterFile_Monolithic_15.vhdl
    36 
    37 # RegisterFile_Monolithic_16
    38 target_dep      all     RegisterFile_Monolithic_16.ngc
    39 target_dep      RegisterFile_Monolithic_16.ngc  RegisterFile_Monolithic_16.prj
    40 target_dep      RegisterFile_Monolithic_16.prj  RegisterFile_Monolithic_16_Pack.vhdl RegisterFile_Monolithic_16.vhdl
    41 
    42 # RegisterFile_Monolithic_17
    43 target_dep      all     RegisterFile_Monolithic_17.ngc
    44 target_dep      RegisterFile_Monolithic_17.ngc  RegisterFile_Monolithic_17.prj
    45 target_dep      RegisterFile_Monolithic_17.prj  RegisterFile_Monolithic_17_Pack.vhdl RegisterFile_Monolithic_17.vhdl
    46 
    47 # RegisterFile_Monolithic_18
    48 target_dep      all     RegisterFile_Monolithic_18.ngc
    49 target_dep      RegisterFile_Monolithic_18.ngc  RegisterFile_Monolithic_18.prj
    50 target_dep      RegisterFile_Monolithic_18.prj  RegisterFile_Monolithic_18_Pack.vhdl RegisterFile_Monolithic_18.vhdl
    51 
    52 # RegisterFile_Monolithic_19
    53 target_dep      all     RegisterFile_Monolithic_19.ngc
    54 target_dep      RegisterFile_Monolithic_19.ngc  RegisterFile_Monolithic_19.prj
    55 target_dep      RegisterFile_Monolithic_19.prj  RegisterFile_Monolithic_19_Pack.vhdl RegisterFile_Monolithic_19.vhdl
    56 
    577# RegisterFile_Monolithic_1
    588target_dep      all     RegisterFile_Monolithic_1.ngc
    599target_dep      RegisterFile_Monolithic_1.ngc   RegisterFile_Monolithic_1.prj
    60 target_dep      RegisterFile_Monolithic_1.prj   RegisterFile_Monolithic_10_Pack.vhdl RegisterFile_Monolithic_10.vhdl RegisterFile_Monolithic_11_Pack.vhdl RegisterFile_Monolithic_11.vhdl RegisterFile_Monolithic_12_Pack.vhdl RegisterFile_Monolithic_12.vhdl RegisterFile_Monolithic_13_Pack.vhdl RegisterFile_Monolithic_13.vhdl RegisterFile_Monolithic_14_Pack.vhdl RegisterFile_Monolithic_14.vhdl RegisterFile_Monolithic_15_Pack.vhdl RegisterFile_Monolithic_15.vhdl RegisterFile_Monolithic_16_Pack.vhdl RegisterFile_Monolithic_16.vhdl RegisterFile_Monolithic_17_Pack.vhdl RegisterFile_Monolithic_17.vhdl RegisterFile_Monolithic_18_Pack.vhdl RegisterFile_Monolithic_18.vhdl RegisterFile_Monolithic_19_Pack.vhdl RegisterFile_Monolithic_19.vhdl RegisterFile_Monolithic_1_Pack.vhdl RegisterFile_Monolithic_1.vhdl
    61 
    62 # RegisterFile_Monolithic_20
    63 target_dep      all     RegisterFile_Monolithic_20.ngc
    64 target_dep      RegisterFile_Monolithic_20.ngc  RegisterFile_Monolithic_20.prj
    65 target_dep      RegisterFile_Monolithic_20.prj  RegisterFile_Monolithic_20_Pack.vhdl RegisterFile_Monolithic_20.vhdl
    66 
    67 # RegisterFile_Monolithic_21
    68 target_dep      all     RegisterFile_Monolithic_21.ngc
    69 target_dep      RegisterFile_Monolithic_21.ngc  RegisterFile_Monolithic_21.prj
    70 target_dep      RegisterFile_Monolithic_21.prj  RegisterFile_Monolithic_21_Pack.vhdl RegisterFile_Monolithic_21.vhdl
    71 
    72 # RegisterFile_Monolithic_22
    73 target_dep      all     RegisterFile_Monolithic_22.ngc
    74 target_dep      RegisterFile_Monolithic_22.ngc  RegisterFile_Monolithic_22.prj
    75 target_dep      RegisterFile_Monolithic_22.prj  RegisterFile_Monolithic_22_Pack.vhdl RegisterFile_Monolithic_22.vhdl
    76 
    77 # RegisterFile_Monolithic_23
    78 target_dep      all     RegisterFile_Monolithic_23.ngc
    79 target_dep      RegisterFile_Monolithic_23.ngc  RegisterFile_Monolithic_23.prj
    80 target_dep      RegisterFile_Monolithic_23.prj  RegisterFile_Monolithic_23_Pack.vhdl RegisterFile_Monolithic_23.vhdl
    81 
    82 # RegisterFile_Monolithic_24
    83 target_dep      all     RegisterFile_Monolithic_24.ngc
    84 target_dep      RegisterFile_Monolithic_24.ngc  RegisterFile_Monolithic_24.prj
    85 target_dep      RegisterFile_Monolithic_24.prj  RegisterFile_Monolithic_24_Pack.vhdl RegisterFile_Monolithic_24.vhdl
    86 
    87 # RegisterFile_Monolithic_25
    88 target_dep      all     RegisterFile_Monolithic_25.ngc
    89 target_dep      RegisterFile_Monolithic_25.ngc  RegisterFile_Monolithic_25.prj
    90 target_dep      RegisterFile_Monolithic_25.prj  RegisterFile_Monolithic_25_Pack.vhdl RegisterFile_Monolithic_25.vhdl
    91 
    92 # RegisterFile_Monolithic_26
    93 target_dep      all     RegisterFile_Monolithic_26.ngc
    94 target_dep      RegisterFile_Monolithic_26.ngc  RegisterFile_Monolithic_26.prj
    95 target_dep      RegisterFile_Monolithic_26.prj  RegisterFile_Monolithic_26_Pack.vhdl RegisterFile_Monolithic_26.vhdl
    96 
    97 # RegisterFile_Monolithic_27
    98 target_dep      all     RegisterFile_Monolithic_27.ngc
    99 target_dep      RegisterFile_Monolithic_27.ngc  RegisterFile_Monolithic_27.prj
    100 target_dep      RegisterFile_Monolithic_27.prj  RegisterFile_Monolithic_27_Pack.vhdl RegisterFile_Monolithic_27.vhdl
    101 
    102 # RegisterFile_Monolithic_28
    103 target_dep      all     RegisterFile_Monolithic_28.ngc
    104 target_dep      RegisterFile_Monolithic_28.ngc  RegisterFile_Monolithic_28.prj
    105 target_dep      RegisterFile_Monolithic_28.prj  RegisterFile_Monolithic_28_Pack.vhdl RegisterFile_Monolithic_28.vhdl
    106 
    107 # RegisterFile_Monolithic_29
    108 target_dep      all     RegisterFile_Monolithic_29.ngc
    109 target_dep      RegisterFile_Monolithic_29.ngc  RegisterFile_Monolithic_29.prj
    110 target_dep      RegisterFile_Monolithic_29.prj  RegisterFile_Monolithic_29_Pack.vhdl RegisterFile_Monolithic_29.vhdl
     10target_dep      RegisterFile_Monolithic_1.prj   RegisterFile_Monolithic_1_Pack.vhdl RegisterFile_Monolithic_1.vhdl
    11111
    11212# RegisterFile_Monolithic_2
    11313target_dep      all     RegisterFile_Monolithic_2.ngc
    11414target_dep      RegisterFile_Monolithic_2.ngc   RegisterFile_Monolithic_2.prj
    115 target_dep      RegisterFile_Monolithic_2.prj   RegisterFile_Monolithic_20_Pack.vhdl RegisterFile_Monolithic_20.vhdl RegisterFile_Monolithic_21_Pack.vhdl RegisterFile_Monolithic_21.vhdl RegisterFile_Monolithic_22_Pack.vhdl RegisterFile_Monolithic_22.vhdl RegisterFile_Monolithic_23_Pack.vhdl RegisterFile_Monolithic_23.vhdl RegisterFile_Monolithic_24_Pack.vhdl RegisterFile_Monolithic_24.vhdl RegisterFile_Monolithic_25_Pack.vhdl RegisterFile_Monolithic_25.vhdl RegisterFile_Monolithic_26_Pack.vhdl RegisterFile_Monolithic_26.vhdl RegisterFile_Monolithic_27_Pack.vhdl RegisterFile_Monolithic_27.vhdl RegisterFile_Monolithic_28_Pack.vhdl RegisterFile_Monolithic_28.vhdl RegisterFile_Monolithic_29_Pack.vhdl RegisterFile_Monolithic_29.vhdl RegisterFile_Monolithic_2_Pack.vhdl RegisterFile_Monolithic_2.vhdl
    116 
    117 # RegisterFile_Monolithic_30
    118 target_dep      all     RegisterFile_Monolithic_30.ngc
    119 target_dep      RegisterFile_Monolithic_30.ngc  RegisterFile_Monolithic_30.prj
    120 target_dep      RegisterFile_Monolithic_30.prj  RegisterFile_Monolithic_30_Pack.vhdl RegisterFile_Monolithic_30.vhdl
    121 
    122 # RegisterFile_Monolithic_31
    123 target_dep      all     RegisterFile_Monolithic_31.ngc
    124 target_dep      RegisterFile_Monolithic_31.ngc  RegisterFile_Monolithic_31.prj
    125 target_dep      RegisterFile_Monolithic_31.prj  RegisterFile_Monolithic_31_Pack.vhdl RegisterFile_Monolithic_31.vhdl
    126 
    127 # RegisterFile_Monolithic_32
    128 target_dep      all     RegisterFile_Monolithic_32.ngc
    129 target_dep      RegisterFile_Monolithic_32.ngc  RegisterFile_Monolithic_32.prj
    130 target_dep      RegisterFile_Monolithic_32.prj  RegisterFile_Monolithic_32_Pack.vhdl RegisterFile_Monolithic_32.vhdl
    131 
    132 # RegisterFile_Monolithic_33
    133 target_dep      all     RegisterFile_Monolithic_33.ngc
    134 target_dep      RegisterFile_Monolithic_33.ngc  RegisterFile_Monolithic_33.prj
    135 target_dep      RegisterFile_Monolithic_33.prj  RegisterFile_Monolithic_33_Pack.vhdl RegisterFile_Monolithic_33.vhdl
    136 
    137 # RegisterFile_Monolithic_34
    138 target_dep      all     RegisterFile_Monolithic_34.ngc
    139 target_dep      RegisterFile_Monolithic_34.ngc  RegisterFile_Monolithic_34.prj
    140 target_dep      RegisterFile_Monolithic_34.prj  RegisterFile_Monolithic_34_Pack.vhdl RegisterFile_Monolithic_34.vhdl
    141 
    142 # RegisterFile_Monolithic_35
    143 target_dep      all     RegisterFile_Monolithic_35.ngc
    144 target_dep      RegisterFile_Monolithic_35.ngc  RegisterFile_Monolithic_35.prj
    145 target_dep      RegisterFile_Monolithic_35.prj  RegisterFile_Monolithic_35_Pack.vhdl RegisterFile_Monolithic_35.vhdl
     15target_dep      RegisterFile_Monolithic_2.prj   RegisterFile_Monolithic_2_Pack.vhdl RegisterFile_Monolithic_2.vhdl
    14616
    14717# RegisterFile_Monolithic_3
    14818target_dep      all     RegisterFile_Monolithic_3.ngc
    14919target_dep      RegisterFile_Monolithic_3.ngc   RegisterFile_Monolithic_3.prj
    150 target_dep      RegisterFile_Monolithic_3.prj   RegisterFile_Monolithic_30_Pack.vhdl RegisterFile_Monolithic_30.vhdl RegisterFile_Monolithic_31_Pack.vhdl RegisterFile_Monolithic_31.vhdl RegisterFile_Monolithic_32_Pack.vhdl RegisterFile_Monolithic_32.vhdl RegisterFile_Monolithic_33_Pack.vhdl RegisterFile_Monolithic_33.vhdl RegisterFile_Monolithic_34_Pack.vhdl RegisterFile_Monolithic_34.vhdl RegisterFile_Monolithic_35_Pack.vhdl RegisterFile_Monolithic_35.vhdl RegisterFile_Monolithic_3_Pack.vhdl RegisterFile_Monolithic_3.vhdl
     20target_dep      RegisterFile_Monolithic_3.prj   RegisterFile_Monolithic_3_Pack.vhdl RegisterFile_Monolithic_3.vhdl
    15121
    152 # RegisterFile_Monolithic_4
    153 target_dep      all     RegisterFile_Monolithic_4.ngc
    154 target_dep      RegisterFile_Monolithic_4.ngc   RegisterFile_Monolithic_4.prj
    155 target_dep      RegisterFile_Monolithic_4.prj   RegisterFile_Monolithic_4_Pack.vhdl RegisterFile_Monolithic_4.vhdl
    156 
    157 # RegisterFile_Monolithic_5
    158 target_dep      all     RegisterFile_Monolithic_5.ngc
    159 target_dep      RegisterFile_Monolithic_5.ngc   RegisterFile_Monolithic_5.prj
    160 target_dep      RegisterFile_Monolithic_5.prj   RegisterFile_Monolithic_5_Pack.vhdl RegisterFile_Monolithic_5.vhdl
    161 
    162 # RegisterFile_Monolithic_6
    163 target_dep      all     RegisterFile_Monolithic_6.ngc
    164 target_dep      RegisterFile_Monolithic_6.ngc   RegisterFile_Monolithic_6.prj
    165 target_dep      RegisterFile_Monolithic_6.prj   RegisterFile_Monolithic_6_Pack.vhdl RegisterFile_Monolithic_6.vhdl
    166 
    167 # RegisterFile_Monolithic_7
    168 target_dep      all     RegisterFile_Monolithic_7.ngc
    169 target_dep      RegisterFile_Monolithic_7.ngc   RegisterFile_Monolithic_7.prj
    170 target_dep      RegisterFile_Monolithic_7.prj   RegisterFile_Monolithic_7_Pack.vhdl RegisterFile_Monolithic_7.vhdl
    171 
    172 # RegisterFile_Monolithic_8
    173 target_dep      all     RegisterFile_Monolithic_8.ngc
    174 target_dep      RegisterFile_Monolithic_8.ngc   RegisterFile_Monolithic_8.prj
    175 target_dep      RegisterFile_Monolithic_8.prj   RegisterFile_Monolithic_8_Pack.vhdl RegisterFile_Monolithic_8.vhdl
    176 
    177 # RegisterFile_Monolithic_9
    178 target_dep      all     RegisterFile_Monolithic_9.ngc
    179 target_dep      RegisterFile_Monolithic_9.ngc   RegisterFile_Monolithic_9.prj
    180 target_dep      RegisterFile_Monolithic_9.prj   RegisterFile_Monolithic_9_Pack.vhdl RegisterFile_Monolithic_9.vhdl
    181 
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/src/main.cpp

    r15 r55  
    88#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/include/test.h"
    99
    10 #define NB_PARAMS 4
     10#define NB_PARAMS 5
    1111
    1212void usage (string exec)
     
    1414  cerr << "<Usage> " << exec << " name_instance list_params" << endl
    1515       << "list_params is :" << endl
    16        << " - nb_port_read  (unsigned int)" << endl
    17        << " - nb_port_write (unsigned int)" << endl
    18        << " - nb_word       (unsigned int)" << endl
    19        << " - size_word     (unsigned int)" << endl;
     16       << " - nb_port_read       (unsigned int)" << endl
     17       << " - nb_port_write      (unsigned int)" << endl
     18       << " - nb_port_read_write (unsigned int)" << endl
     19       << " - nb_word            (unsigned int)" << endl
     20       << " - size_word          (unsigned int)" << endl;
    2021  exit (1);
    2122}
     
    3031    usage (argv[0]);
    3132
    32   const string   name          = argv[1];
    33   const uint32_t nb_port_read  = atoi(argv[2]);
    34   const uint32_t nb_port_write = atoi(argv[3]);
    35   const uint32_t nb_word       = atoi(argv[4]);
    36   const uint32_t size_word     = atoi(argv[5]);
     33  const string   name               = argv[1];
     34  const uint32_t nb_port_read       = atoi(argv[2]);
     35  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]);
    3739 
    38   morpheo::behavioural::generic::registerfile::registerfile_monolithic::Parameters param (nb_port_read ,
    39                                                                                           nb_port_write,
    40                                                                  nb_word      ,
    41                                                                  size_word    );
    42 
     40  morpheo::behavioural::generic::registerfile::registerfile_monolithic::Parameters * param = new morpheo::behavioural::generic::registerfile::registerfile_monolithic::Parameters
     41    (nb_port_read ,
     42     nb_port_write,
     43     nb_port_read_write,
     44     nb_word      ,
     45     size_word    );
     46 
    4347  test (name,param);
    4448
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/src/test.cpp

    r50 r55  
    77 */
    88
    9 #define NB_ITERATION 32
     9#define NB_ITERATION 2
    1010
    1111#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/include/test.h"
     
    1313
    1414void test (string name,
    15            morpheo::behavioural::generic::registerfile::registerfile_monolithic::Parameters param)
     15           morpheo::behavioural::generic::registerfile::registerfile_monolithic::Parameters * _param)
    1616{
    1717  cout << "<" << name << "> : Simulation SystemC" << endl;
     
    1919  try
    2020    {
    21       cout << param.print(1);
    22       param.test();
     21      cout << _param->print(1);
     22      _param->test();
    2323    }
    2424  catch (morpheo::ErrorMorpheo & error)
     
    3333    }
    3434
     35#ifdef STATISTICS
     36  morpheo::behavioural::Parameters_Statistics * _param_stat = new morpheo::behavioural::Parameters_Statistics (5,1000);
     37#endif
    3538  RegisterFile_Monolithic * registerfile = new RegisterFile_Monolithic (name.c_str()
    3639#ifdef STATISTICS
    37                                                                         ,morpheo::behavioural::Parameters_Statistics(5,1000)
     40                                                                        ,_param_stat
    3841#endif
    39                                                                         ,param);
     42                                                                        ,_param);
    4043 
    4144#ifdef SYSTEMC
     
    4649  sc_signal<Tcontrol_t>                    NRESET;
    4750 
    48   sc_signal<Tcontrol_t>                    READ_VAL      [param._nb_port_read];
    49   sc_signal<Tcontrol_t>                    READ_ACK      [param._nb_port_read];
    50   sc_signal<Taddress_t>                    READ_ADDRESS  [param._nb_port_read];
    51   sc_signal<Tdata_t>                       READ_DATA     [param._nb_port_read];
    52 
    53   sc_signal<Tcontrol_t>                    WRITE_VAL     [param._nb_port_write];
    54   sc_signal<Tcontrol_t>                    WRITE_ACK     [param._nb_port_write];
    55   sc_signal<Taddress_t>                    WRITE_ADDRESS [param._nb_port_write];
    56   sc_signal<Tdata_t>                       WRITE_DATA    [param._nb_port_write];
     51  sc_signal<Tcontrol_t>                    READ_VAL      [_param->_nb_port_read];
     52  sc_signal<Tcontrol_t>                    READ_ACK      [_param->_nb_port_read];
     53  sc_signal<Taddress_t>                    READ_ADDRESS  [_param->_nb_port_read];
     54  sc_signal<Tdata_t>                       READ_DATA     [_param->_nb_port_read];
     55
     56  sc_signal<Tcontrol_t>                    WRITE_VAL     [_param->_nb_port_write];
     57  sc_signal<Tcontrol_t>                    WRITE_ACK     [_param->_nb_port_write];
     58  sc_signal<Taddress_t>                    WRITE_ADDRESS [_param->_nb_port_write];
     59  sc_signal<Tdata_t>                       WRITE_DATA    [_param->_nb_port_write];
     60
     61  sc_signal<Tcontrol_t>                    READ_WRITE_VAL     [_param->_nb_port_read_write];
     62  sc_signal<Tcontrol_t>                    READ_WRITE_ACK     [_param->_nb_port_read_write];
     63  sc_signal<Tcontrol_t>                    READ_WRITE_RW      [_param->_nb_port_read_write];
     64  sc_signal<Taddress_t>                    READ_WRITE_ADDRESS [_param->_nb_port_read_write];
     65  sc_signal<Tdata_t>                       READ_WRITE_RDATA   [_param->_nb_port_read_write];
     66  sc_signal<Tdata_t>                       READ_WRITE_WDATA   [_param->_nb_port_read_write];
    5767
    5868  /********************************************************
     
    6575  (*(registerfile->in_NRESET))       (NRESET);
    6676
    67   for (uint32_t i=0; i<param._nb_port_read; i++)
     77  for (uint32_t i=0; i<_param->_nb_port_read; i++)
    6878    {
    6979      (*(registerfile-> in_READ_VAL      [i]))        (READ_VAL      [i]);
     
    7282      (*(registerfile->out_READ_DATA     [i]))        (READ_DATA     [i]);
    7383    }
    74 
    75   for (uint32_t i=0; i<param._nb_port_write; i++)
     84  for (uint32_t i=0; i<_param->_nb_port_write; i++)
    7685    {
    7786      (*(registerfile-> in_WRITE_VAL     [i]))        (WRITE_VAL     [i]);
     
    8089      (*(registerfile-> in_WRITE_DATA    [i]))        (WRITE_DATA    [i]);
    8190    }
     91  for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
     92    {
     93      (*(registerfile-> in_READ_WRITE_VAL     [i])) (READ_WRITE_VAL      [i]);
     94      (*(registerfile->out_READ_WRITE_ACK     [i])) (READ_WRITE_ACK      [i]);
     95      (*(registerfile-> in_READ_WRITE_RW      [i])) (READ_WRITE_RW       [i]);
     96      (*(registerfile-> in_READ_WRITE_ADDRESS [i])) (READ_WRITE_ADDRESS  [i]);
     97      (*(registerfile-> in_READ_WRITE_WDATA   [i])) (READ_WRITE_WDATA    [i]);
     98      (*(registerfile->out_READ_WRITE_RDATA   [i])) (READ_WRITE_RDATA    [i]);
     99    }
    82100 
    83101  cout << "<" << name << "> Start Simulation ............" << endl;
     
    92110  sc_start(0);
    93111 
    94   for (uint32_t i=0; i<param._nb_port_write; i++)
     112  for (uint32_t i=0; i<_param->_nb_port_write; i++)
    95113    WRITE_VAL [i] .write (0);
    96 
    97   for (uint32_t i=0; i<param._nb_port_read; i++)
     114  for (uint32_t i=0; i<_param->_nb_port_read; i++)
    98115    READ_VAL  [i] .write (0);
     116  for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
     117    READ_WRITE_VAL  [i] .write (0);
    99118
    100119  NRESET.write(0);
     
    115134      srand(grain);
    116135
    117       Tdata_t tab [param._nb_word];
    118      
    119       for (uint32_t i=0; i<param._nb_word; i++)
    120         tab[i]= rand()%(1<<(param._size_word-1));
     136      Tdata_t tab [_param->_nb_word];
     137     
     138      for (uint32_t i=0; i<_param->_nb_word; i++)
     139        tab[i]= rand()%(1<<(_param->_size_word-1));
    121140     
    122141      Taddress_t address_next = 0;
    123142      Taddress_t nb_ack = 0;
    124143     
    125       while (nb_ack < param._nb_word)
     144      while (nb_ack < _param->_nb_word)
    126145        {
    127146          cout << "cycle : " << static_cast<uint32_t> (sc_simulation_time()) << endl;
    128147
    129           for (uint32_t num_port=0; num_port < param._nb_port_write; num_port ++)
    130             {
    131               if ((address_next < param._nb_word) and
     148          for (uint32_t num_port=0; num_port < _param->_nb_port_write; num_port ++)
     149            {
     150              if ((address_next < _param->_nb_word) and
    132151                  (WRITE_VAL [num_port].read() == 0))
    133152                {
     
    139158                 
    140159                  // Address can be not a multiple of nb_port_write
    141                   if (address_next >= param._nb_word)
     160                  if (address_next >= _param->_nb_word)
     161                    break;
     162                }
     163            }
     164
     165          for (uint32_t num_port=0; num_port < _param->_nb_port_read_write; num_port ++)
     166            {
     167              if ((address_next < _param->_nb_word) and
     168                  (READ_WRITE_VAL [num_port].read() == 0))
     169                {
     170                  cout << "(" << num_port << ") [" << address_next << "] <= " << tab[address_next] << endl;
     171                 
     172                  READ_WRITE_VAL     [num_port] .write(1);
     173                  READ_WRITE_RW      [num_port] .write(RW_WRITE);
     174                  READ_WRITE_WDATA   [num_port] .write(tab[address_next]);
     175                  READ_WRITE_ADDRESS [num_port] .write(address_next++);
     176                 
     177                  // Address can be not a multiple of nb_port_write
     178                  if (address_next >= _param->_nb_word)
    142179                    break;
    143180                }
     
    147184
    148185          // reset write_val port
    149           for (uint32_t num_port=0; num_port < param._nb_port_write; num_port ++)
     186          for (uint32_t num_port=0; num_port < _param->_nb_port_write; num_port ++)
    150187            {
    151188              if ((WRITE_ACK [num_port].read() == 1) and
     
    156193                }
    157194            }
     195          // reset write_val port
     196          for (uint32_t num_port=0; num_port < _param->_nb_port_read_write; num_port ++)
     197            {
     198              if ((READ_WRITE_ACK [num_port].read() == 1) and
     199                  (READ_WRITE_VAL [num_port].read() == 1))
     200                {
     201                  READ_WRITE_VAL  [num_port] .write(0);
     202                  nb_ack ++;
     203                }
     204            }
    158205
    159206          sc_start(0);
     
    165212      cout << "<" << name << "> 2) Read the RegisterFile (no write)" << endl;
    166213     
    167       Tdata_t read_address [param._nb_port_read];
    168 
    169       while (nb_ack < param._nb_word)
     214      Tdata_t read_address       [_param->_nb_port_read];
     215      Tdata_t read_write_address [_param->_nb_port_read_write];
     216
     217      while (nb_ack < _param->_nb_word)
    170218        {
    171219          cout << "cycle : " << static_cast<uint32_t> (sc_simulation_time()) << endl;
    172220         
    173           for (uint32_t num_port=0; num_port < param._nb_port_read; num_port ++)
    174             {
    175               if ((address_next < param._nb_word) and
     221          for (uint32_t num_port=0; num_port < _param->_nb_port_read; num_port ++)
     222            {
     223              if ((address_next < _param->_nb_word) and
    176224                  (READ_VAL [num_port].read() == 0))
    177225                {
     
    181229                  READ_ADDRESS [num_port].write(read_address [num_port]);
    182230
    183                   if (address_next >= param._nb_word)
    184                     break;
    185                 }
    186             }
     231                  if (address_next >= _param->_nb_word)
     232                    break;
     233                }
     234            }
     235
     236          for (uint32_t num_port=0; num_port < _param->_nb_port_read_write; num_port ++)
     237            {
     238              if ((address_next < _param->_nb_word) and
     239                  (READ_WRITE_VAL [num_port].read() == 0))
     240                {
     241                  read_write_address [num_port] = address_next++;
     242
     243                  READ_WRITE_VAL     [num_port].write(1);
     244                  READ_WRITE_RW      [num_port].write(RW_READ);
     245                  READ_WRITE_ADDRESS [num_port].write(read_write_address [num_port]);
     246
     247                  if (address_next >= _param->_nb_word)
     248                    break;
     249                }
     250            }
     251
    187252
    188253          sc_start(1);
    189254
    190255          // reset write_val port
    191           for (uint32_t num_port=0; num_port < param._nb_port_read; num_port ++)
     256          for (uint32_t num_port=0; num_port < _param->_nb_port_read; num_port ++)
    192257            {
    193258              if ((READ_ACK [num_port].read() == 1) and
     
    199264
    200265                  TEST(Tdata_t,READ_DATA [num_port].read(), tab[read_address [num_port]]);
     266                  nb_ack ++;
     267                }
     268            }
     269
     270          for (uint32_t num_port=0; num_port < _param->_nb_port_read_write; num_port ++)
     271            {
     272              if ((READ_WRITE_ACK [num_port].read() == 1) and
     273                  (READ_WRITE_VAL [num_port].read() == 1))
     274                {
     275                  READ_WRITE_VAL  [num_port] .write(0);
     276
     277                  cout << "(" << num_port << ") [" << read_write_address [num_port] << "] => " << READ_WRITE_RDATA [num_port].read() << endl;
     278
     279                  TEST(Tdata_t,READ_WRITE_RDATA [num_port].read(), tab[read_write_address [num_port]]);
    201280                  nb_ack ++;
    202281                }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Parameters.h

    r53 r55  
    2323  public : const uint32_t _nb_port_read ;
    2424  public : const uint32_t _nb_port_write;
     25  public : const uint32_t _nb_port_read_write;
    2526  public : const uint32_t _nb_word      ;
    2627  public : const uint32_t _size_word    ;
     
    2930  public : Parameters (uint32_t nb_port_read ,
    3031                       uint32_t nb_port_write,
     32                       uint32_t nb_port_read_write,
    3133                       uint32_t nb_word      ,
    3234                       uint32_t size_word    );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h

    r44 r55  
    3636namespace registerfile_monolithic    {
    3737
     38  typedef enum {RW_READ, RW_WRITE} rw_t;
     39
    3840  class RegisterFile_Monolithic
    3941#if SYSTEMC
     
    4345    // -----[ fields ]----------------------------------------------------
    4446    // Parameters
    45   protected : const string     _name;
     47  protected : const string       _name;
    4648
    47   protected : const Parameters _param;
     49  protected : const Parameters * _param;
    4850#ifdef STATISTICS
    4951  private   : Statistics                     * _stat;
     
    7476  public    : SC_IN       (Tdata_t)        **  in_WRITE_DATA   ;
    7577
     78    // ----- Interface Read_Write
     79  public    : SC_IN       (Tcontrol_t)     **  in_READ_WRITE_VAL    ;
     80  public    : SC_OUT      (Tcontrol_t)     ** out_READ_WRITE_ACK    ;
     81  public    : SC_IN       (Tcontrol_t)     **  in_READ_WRITE_RW     ;
     82  public    : SC_IN       (Taddress_t)     **  in_READ_WRITE_ADDRESS;
     83  public    : SC_OUT      (Tdata_t)        ** out_READ_WRITE_RDATA  ;
     84  public    : SC_IN       (Tdata_t)        **  in_READ_WRITE_WDATA  ;
     85
    7686    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    7787  private   : SC_REGISTER (Tdata_t)        ** reg_DATA         ;
     
    93103#endif                                         
    94104#ifdef STATISTICS
    95                                                 morpheo::behavioural::Parameters_Statistics param_statistics,
     105                                                morpheo::behavioural::Parameters_Statistics * param_statistics,
    96106#endif
    97                                                 Parameters                                  param );
    98                                                
    99   public  :          RegisterFile_Monolithic   (Parameters param );
     107                                                Parameters                                  * param );
    100108  public  :          ~RegisterFile_Monolithic  (void);
    101109                                               
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Statistics.h

    r44 r55  
    2727  {
    2828    // -----[ fields ]----------------------------------------------------
    29   private  : const Parameters                                   _parameters;
     29  private  : const Parameters                                 * _parameters;
     30  private  : morpheo::behavioural::generic::group::Parameters * _param_port_read;
     31  private  : morpheo::behavioural::generic::group::Parameters * _param_port_write;
    3032  private  : morpheo::behavioural::generic::group::Statistics * _stat_port_read;
    3133  private  : morpheo::behavioural::generic::group::Statistics * _stat_port_write;
     
    3335    // -----[ methods ]---------------------------------------------------
    3436  public   : Statistics (string                                      name                       ,
    35                          morpheo::behavioural::Parameters_Statistics parameters_statistics      ,
    36                          Parameters                                  parameters
     37                         morpheo::behavioural::Parameters_Statistics * parameters_statistics    ,
     38                         Parameters                                  * parameters
    3739                         );
    3840//public   : Statistics (Statistics & stat);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters.cpp

    r53 r55  
    1616  Parameters::Parameters (uint32_t nb_port_read ,
    1717                          uint32_t nb_port_write,
     18                          uint32_t nb_port_read_write ,
    1819                          uint32_t nb_word      ,
    1920                          uint32_t size_word     
     
    2122    _nb_port_read      (nb_port_read ),
    2223    _nb_port_write     (nb_port_write),
     24    _nb_port_read_write(nb_port_read_write),
    2325    _nb_word           (nb_word      ),
    2426    _size_word         (size_word    ),
     
    3133    _nb_port_read      (param._nb_port_read ),
    3234    _nb_port_write     (param._nb_port_write),
     35    _nb_port_read_write(param._nb_port_read_write),
    3336    _nb_word           (param._nb_word      ),
    3437    _size_word         (param._size_word    ),
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters_msg_error.cpp

    r15 r55  
    2525      {
    2626        msg += "  - type \"Tdata_t\" is too little to the size defined by size_word\n";
    27         msg +=  "    * size_word                       : " + toString(_size_word) + "\n";
    28         msg +=  "    * Tdata_t                   (bits): " + toString(8*(sizeof(Tdata_t))) + "\n";
     27        msg += "    * size_word                       : " + toString(_size_word) + "\n";
     28        msg += "    * Tdata_t                   (bits): " + toString(8*(sizeof(Tdata_t))) + "\n";
    2929      }
    3030
     
    3232      {
    3333        msg += "  - type \"Taddress_t\" is too little to the size defined by nb_word\n";
    34         msg +=  "    * nb_word                         : " + toString(_nb_word)    + "\n";
    35         msg +=  "      > size                   (bits) : " + toString(log2(_nb_word)) + "\n";
    36         msg +=  "    * Taddress_t               (bits) : " + toString(8*(sizeof(Taddress_t))) + "\n";
     34        msg += "    * nb_word                         : " + toString(_nb_word)    + "\n";
     35        msg += "      > size                   (bits) : " + toString(log2(_nb_word)) + "\n";
     36        msg += "    * Taddress_t               (bits) : " + toString(8*(sizeof(Taddress_t))) + "\n";
    3737      }
    3838
     39    if ((_nb_port_read + _nb_port_read_write) < 1)
     40      {
     41        msg += "  - you need a read port\n";
     42        msg += "    * nb_port_read                    : " + toString(_nb_port_read)       + "\n";
     43        msg += "    * nb_port_read_write              : " + toString(_nb_port_read_write) + "\n";
     44      }
     45
     46    if ((_nb_port_write + _nb_port_read_write) < 1)
     47      {
     48        msg += "  - you need a write port\n";
     49        msg += "    * nb_port_write                   : " + toString(_nb_port_write)      + "\n";
     50        msg += "    * nb_port_read_write              : " + toString(_nb_port_read_write) + "\n";
     51      }
    3952    if (_nb_word < 2)
    4053      {
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters_print.cpp

    r15 r55  
    2222    ostringstream msg;
    2323    msg << tab << "<registerfile_monolithic>" << endl
    24         << tab << "\t<nb_port_read  value=\"" << _nb_port_read  << "\" />" << endl
    25         << tab << "\t<nb_port_write value=\"" << _nb_port_write << "\" />" << endl
    26         << tab << "\t<nb_word       value=\"" << _nb_word       << "\" />" << endl
    27         << tab << "\t<size_word     value=\"" << _size_word     << "\" />" << endl
     24        << tab << "\t<nb_port_read       value=\"" << _nb_port_read       << "\" />" << endl
     25        << tab << "\t<nb_port_write      value=\"" << _nb_port_write      << "\" />" << endl
     26        << tab << "\t<nb_port_read_write value=\"" << _nb_port_read_write << "\" />" << endl
     27        << tab << "\t<nb_word            value=\"" << _nb_word            << "\" />" << endl
     28        << tab << "\t<size_word          value=\"" << _size_word          << "\" />" << endl
    2829        << tab << "</registerfile_monolithic>" << endl;
    2930   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic.cpp

    r41 r55  
    2121#endif
    2222#ifdef STATISTICS
    23                                                     morpheo::behavioural::Parameters_Statistics            param_statistics,
     23                                                    morpheo::behavioural::Parameters_Statistics            * param_statistics,
    2424#endif
    25                                                     morpheo::behavioural::generic::registerfile::registerfile_monolithic::Parameters param ):
     25                                                    morpheo::behavioural::generic::registerfile::registerfile_monolithic::Parameters * param ):
    2626    _name   (name),
    2727    _param (param)
     
    5454    dont_initialize ();
    5555    sensitive_neg << *(in_CLOCK);
    56     for (uint32_t i=0; i<_param._nb_port_read; i++)
     56    for (uint32_t i=0; i<_param->_nb_port_read; i++)
    5757      sensitive << *(in_READ_VAL     [i])
    5858                << *(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]);
    5963
    6064#ifdef SYSTEMCASS_SPECIFIC
    6165    // List dependency information
    62     for (uint32_t i=0; i<_param._nb_port_read; i++)
     66    for (uint32_t i=0; i<_param->_nb_port_read; i++)
    6367      {
    64         (*(out_READ_DATA [i])) (*( in_READ_VAL     [i]));
    65         (*(out_READ_DATA [i])) (*( in_READ_ADDRESS [i]));
     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]));
    6676      }
    6777#endif   
    6878
    69     for (uint32_t i=0; i<_param._nb_port_read ; i++)
    70       PORT_WRITE(out_READ_ACK  [i], 1);
    71     for (uint32_t i=0; i<_param._nb_port_write; i++)
    72       PORT_WRITE(out_WRITE_ACK [i], 1);
     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);
    7385#endif
    7486
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_allocation.cpp

    r53 r55  
    4343    // ~~~~~[ Interface : "read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    4444
    45      in_READ_VAL         = new SC_IN (Tcontrol_t) * [_param._nb_port_read];
    46     out_READ_ACK         = new SC_OUT(Tcontrol_t) * [_param._nb_port_read];
    47      in_READ_ADDRESS     = new SC_IN (Taddress_t) * [_param._nb_port_read];
    48     out_READ_DATA        = new SC_OUT(Tdata_t   ) * [_param._nb_port_read];
     45     in_READ_VAL         = new SC_IN (Tcontrol_t) * [_param->_nb_port_read];
     46    out_READ_ACK         = new SC_OUT(Tcontrol_t) * [_param->_nb_port_read];
     47     in_READ_ADDRESS     = new SC_IN (Taddress_t) * [_param->_nb_port_read];
     48    out_READ_DATA        = new SC_OUT(Tdata_t   ) * [_param->_nb_port_read];
    4949
    50     for (uint32_t i=0; i<_param._nb_port_read; i++)
     50    for (uint32_t i=0; i<_param->_nb_port_read; i++)
    5151      {
    5252        Interface_fifo * interface = _interfaces->set_interface("read_"+toString(i)
     
    6060         in_READ_VAL     [i]  = interface->set_signal_valack_in        ("val"    , VAL);
    6161        out_READ_ACK     [i]  = interface->set_signal_valack_out       ("ack"    , ACK);
    62          in_READ_ADDRESS [i]  = interface->set_signal_in  <Taddress_t> ("address", _param._size_address);
    63         out_READ_DATA    [i]  = interface->set_signal_out <Tdata_t   > ("data"   , _param._size_word);
     62         in_READ_ADDRESS [i]  = interface->set_signal_in  <Taddress_t> ("address", _param->_size_address);
     63        out_READ_DATA    [i]  = interface->set_signal_out <Tdata_t   > ("data"   , _param->_size_word);
    6464      }
    6565
    6666    // ~~~~~[ Interface : "write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    6767
    68      in_WRITE_VAL        = new SC_IN (Tcontrol_t) * [_param._nb_port_write];
    69     out_WRITE_ACK        = new SC_OUT(Tcontrol_t) * [_param._nb_port_write];
    70      in_WRITE_ADDRESS    = new SC_IN (Taddress_t) * [_param._nb_port_write];
    71      in_WRITE_DATA       = new SC_IN (Tdata_t   ) * [_param._nb_port_write];
     68     in_WRITE_VAL        = new SC_IN (Tcontrol_t) * [_param->_nb_port_write];
     69    out_WRITE_ACK        = new SC_OUT(Tcontrol_t) * [_param->_nb_port_write];
     70     in_WRITE_ADDRESS    = new SC_IN (Taddress_t) * [_param->_nb_port_write];
     71     in_WRITE_DATA       = new SC_IN (Tdata_t   ) * [_param->_nb_port_write];
    7272   
    73     for (uint32_t i=0; i<_param._nb_port_write; i++)
     73    for (uint32_t i=0; i<_param->_nb_port_write; i++)
    7474      {
    7575        Interface_fifo * interface = _interfaces->set_interface("write_"+toString(i)
     
    8383         in_WRITE_VAL     [i]  = interface->set_signal_valack_in        ("val"    , VAL);
    8484        out_WRITE_ACK     [i]  = interface->set_signal_valack_out       ("ack"    , ACK);
    85          in_WRITE_ADDRESS [i]  = interface->set_signal_in  <Taddress_t> ("address", _param._size_address);
    86          in_WRITE_DATA    [i]  = interface->set_signal_in  <Tdata_t   > ("data"   , _param._size_word);
     85         in_WRITE_ADDRESS [i]  = interface->set_signal_in  <Taddress_t> ("address", _param->_size_address);
     86         in_WRITE_DATA    [i]  = interface->set_signal_in  <Tdata_t   > ("data"   , _param->_size_word);
     87      }
     88
     89    // ~~~~~[ Interface : "read_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     90
     91     in_READ_WRITE_VAL         = new SC_IN (Tcontrol_t) * [_param->_nb_port_read_write];
     92    out_READ_WRITE_ACK         = new SC_OUT(Tcontrol_t) * [_param->_nb_port_read_write];
     93     in_READ_WRITE_RW          = new SC_IN (Tcontrol_t) * [_param->_nb_port_read_write];
     94     in_READ_WRITE_ADDRESS     = new SC_IN (Taddress_t) * [_param->_nb_port_read_write];
     95     in_READ_WRITE_WDATA       = new SC_IN (Tdata_t   ) * [_param->_nb_port_read_write];
     96    out_READ_WRITE_RDATA       = new SC_OUT(Tdata_t   ) * [_param->_nb_port_read_write];
     97
     98    for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
     99      {
     100        Interface_fifo * interface = _interfaces->set_interface("read_write_"+toString(i)
     101#ifdef POSITION
     102                                                                , IN 
     103                                                                ,WEST
     104                                                                , "Interface Read_Write"
     105#endif
     106                                                                );
     107
     108         in_READ_WRITE_VAL     [i]  = interface->set_signal_valack_in        ("val"    , VAL);
     109        out_READ_WRITE_ACK     [i]  = interface->set_signal_valack_out       ("ack"    , ACK);
     110         in_READ_WRITE_RW      [i]  = interface->set_signal_valack_in        ("rw"     , VAL);
     111         in_READ_WRITE_ADDRESS [i]  = interface->set_signal_in  <Taddress_t> ("address", _param->_size_address);
     112         in_READ_WRITE_WDATA   [i]  = interface->set_signal_in  <Tdata_t   > ("wdata"  , _param->_size_word);
     113        out_READ_WRITE_RDATA   [i]  = interface->set_signal_out <Tdata_t   > ("rdata"  , _param->_size_word);
    87114      }
    88115
    89116    // ----- Register
    90     reg_DATA = new SC_REGISTER (Tdata_t) * [_param._nb_word];
     117    reg_DATA = new SC_REGISTER (Tdata_t) * [_param->_nb_word];
    91118   
    92     for (uint32_t i=0; i<_param._nb_word; i++)
     119    for (uint32_t i=0; i<_param->_nb_word; i++)
    93120      {
    94121        string rename = "reg_DATA["  + toString(i) + "]";
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_deallocation.cpp

    r42 r55  
    3333    delete []  in_WRITE_DATA   ;
    3434
     35    // ----- Interface Read_Write
     36    delete []  in_READ_WRITE_VAL    ;
     37    delete [] out_READ_WRITE_ACK    ;
     38    delete []  in_READ_WRITE_RW     ;
     39    delete []  in_READ_WRITE_ADDRESS;
     40    delete []  in_READ_WRITE_WDATA  ;
     41    delete [] out_READ_WRITE_RDATA  ;
     42
    3543    // ----- Register
    3644    delete [] reg_DATA;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_genMealy_read.cpp

    r53 r55  
    2323#endif   
    2424
    25     for (uint32_t i=0; i<_param._nb_port_read; i++)
     25    for (uint32_t i=0; i<_param->_nb_port_read; i++)
    2626      {
    2727        // Have a write?
     
    4545          }
    4646      }
     47
     48    for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
     49      {
     50        Tdata_t data;
     51
     52        // Have a write?
     53        if ( (PORT_READ(in_READ_WRITE_VAL [i]) == 1) and
     54             (PORT_READ(in_READ_WRITE_RW  [i]) == RW_READ)
     55             )
     56          {
     57            Taddress_t address = PORT_READ(in_READ_WRITE_ADDRESS[i]);
     58           
     59            data = REGISTER_READ(reg_DATA[address]);
     60
     61            log_printf(TRACE,RegisterFile,"genMealy_read","[%d] -> %.8x",static_cast<uint32_t>(address),static_cast<uint32_t>(data));
     62
     63#ifdef STATISTICS
     64            _stat_nb_read ++;
     65#endif   
     66            // Write in registerFile
     67           
     68          }
     69        else
     70          {
     71            //log_printf(TRACE,RegisterFile,"genMealy_read","Read  [%d] : No   transaction",i);
     72            data = 0;
     73          }
     74
     75        PORT_WRITE(out_READ_WRITE_RDATA[i],data);
     76      }
     77
    4778    log_printf(FUNC,RegisterFile,"genMealy_read","End");
    4879       
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_transition.cpp

    r53 r55  
    2121#endif   
    2222
    23     for (uint32_t i=0; i<_param._nb_port_write; i++)
     23    for (uint32_t i=0; i<_param->_nb_port_write; i++)
    2424      {
    2525        // Have a write?
     
    3232            Taddress_t address = PORT_READ(in_WRITE_ADDRESS[i]);
    3333            Tdata_t    data    = PORT_READ(in_WRITE_DATA   [i]);
     34           
     35            log_printf(TRACE,RegisterFile,"transition","[%d] <- %.8x",static_cast<uint32_t>(address),static_cast<uint32_t>(data));
     36
     37            // Write in registerFile
     38            REGISTER_WRITE(reg_DATA[address],data);
     39          }
     40      }
     41    for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
     42      {
     43        // Have a read_write?
     44        if ( (PORT_READ(in_READ_WRITE_VAL[i]) == true) and
     45             (PORT_READ(in_READ_WRITE_RW [i]) == RW_WRITE))
     46          {
     47#ifdef STATISTICS
     48            _stat_nb_write ++;
     49#endif   
     50
     51            Taddress_t address = PORT_READ(in_READ_WRITE_ADDRESS[i]);
     52            Tdata_t    data    = PORT_READ(in_READ_WRITE_WDATA  [i]);
    3453           
    3554            log_printf(TRACE,RegisterFile,"transition","[%d] <- %.8x",static_cast<uint32_t>(address),static_cast<uint32_t>(data));
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_body.cpp

    r41 r55  
    1919    vhdl->set_body ("");
    2020    vhdl->set_body ("-----------------------------------------------------------------------------");
     21    vhdl->set_body ("-- Ackitement");
     22    vhdl->set_body ("-----------------------------------------------------------------------------");
     23    vhdl->set_body ("");
     24
     25    for (uint32_t i = 0; i < _param->_nb_port_read; i++)
     26      vhdl->set_body ("out_READ_"+toString(i)+"_ACK  <= '1';");
     27    for (uint32_t i = 0; i < _param->_nb_port_write; i++)
     28      vhdl->set_body ("out_WRITE_"+toString(i)+"_ACK <= '1';");
     29    for (uint32_t i = 0; i < _param->_nb_port_read_write; i++)
     30      vhdl->set_body ("out_READ_WRITE_"+toString(i)+"_ACK  <= '1';");
     31
     32    vhdl->set_body ("");
     33    vhdl->set_body ("-----------------------------------------------------------------------------");
    2134    vhdl->set_body ("-- Read RegisterFile");
    2235    vhdl->set_body ("-----------------------------------------------------------------------------");
    2336    vhdl->set_body ("");
    2437   
    25     for (uint32_t i = 0; i < _param._nb_port_read; i++)
    26       {
    27         vhdl->set_body ("out_READ_"+toString(i)+"_ACK  <= '1';");
    28         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)+";");
    29       }
     38    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)+";");
     40
     41    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)+";");
    3043
    3144    vhdl->set_body ("");
     
    3952    vhdl->set_body ("\tif in_CLOCK'event and in_CLOCK = '1' then");
    4053   
    41     for (uint32_t i = 0; i < _param._nb_port_write; i++)
     54    for (uint32_t i = 0; i < _param->_nb_port_write; i++)
    4255      {
    4356      vhdl->set_body ("\t\tif (in_WRITE_"+toString(i)+"_VAL = '1') then");
     
    4558      vhdl->set_body ("\t\tend if;");
    4659      }
     60    for (uint32_t i = 0; i < _param->_nb_port_read_write; i++)
     61      {
     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;");
     65      }
    4766
    4867    vhdl->set_body ("\tend if;");
    4968    vhdl->set_body ("end process RegisterFile_write;");
    50 
    51     for (uint32_t i = 0; i < _param._nb_port_write; i++)
    52       vhdl->set_body ("out_WRITE_"+toString(i)+"_ACK <= '1';");
    5369  };
    5470
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_declaration.cpp

    r44 r55  
    1818  void RegisterFile_Monolithic::vhdl_declaration (Vhdl * & vhdl)
    1919  {
    20     vhdl->set_type ("Tregfile", "array (" + toString(_param._nb_word-1) + " downto 0) of " + std_logic(_param._size_word));
     20    vhdl->set_type ("Tregfile", "array (" + toString(_param->_nb_word-1) + " downto 0) of " + std_logic(_param->_size_word));
    2121
    2222    vhdl->set_signal ("reg_DATA", "Tregfile");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Statistics.cpp

    r15 r55  
    1515namespace registerfile_monolithic    {
    1616
    17   Statistics::Statistics (string                                      name                       ,
    18                           morpheo::behavioural::Parameters_Statistics parameters_statistics      ,
    19                           Parameters                                  parameters
     17  Statistics::Statistics (string                                        name                       ,
     18                          morpheo::behavioural::Parameters_Statistics * parameters_statistics      ,
     19                          Parameters                                  * parameters
    2020                          ) :
    2121    morpheo::behavioural::Statistics(name                  ,
     
    2323    _parameters(parameters)
    2424  {
     25    _param_port_read = new morpheo::behavioural::generic::group::Parameters(_parameters->_nb_port_read);
    2526    _stat_port_read  = new morpheo::behavioural::generic::group::Statistics (name + "_port_read"   ,
    2627                                                                             parameters_statistics ,
    27                                                                              morpheo::behavioural::generic::group::Parameters(_parameters._nb_port_read));
    28     _stat_port_write = new morpheo::behavioural::generic::group::Statistics (name + "_port_write"   ,
     28                                                                             _param_port_read);
     29
     30    _param_port_write = new morpheo::behavioural::generic::group::Parameters(_parameters->_nb_port_write);
     31    _stat_port_write  = new morpheo::behavioural::generic::group::Statistics (name + "_port_write"   ,
    2932                                                                             parameters_statistics ,
    30                                                                              morpheo::behavioural::generic::group::Parameters(_parameters._nb_port_write));
     33                                                                             _param_port_write);
    3134  };
    3235 
     
    4043  Statistics::~Statistics ()
    4144  {
     45    delete _param_port_read;
     46    delete _param_port_write;
    4247    delete _stat_port_read ;
    4348    delete _stat_port_write;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Common

    r53 r55  
    3939#                                 -Werror                               \
    4040
    41 CFLAGS                          = $(FLAGS) $(FLAGS_COMMON) $(INCDIR)
    42 LFLAGS                          = $(FLAGS) $(FLAGS_COMMON) $(LIBDIR)
     41CFLAGS                          = $(MORPHEO_FLAGS) $(FLAGS_COMMON) $(INCDIR)
     42LFLAGS                          = $(MORPHEO_FLAGS) $(FLAGS_COMMON) $(LIBDIR)
    4343
    4444#-----[ Variable ]-----------------------------------------
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags

    r53 r55  
    1414
    1515#-----[ Flags ]--------------------------------------------
    16 FLAGS                           =       -DSYSTEMC               \
     16MORPHEO_FLAGS                   =       -DSYSTEMC               \
     17                                        -DVHDL                  \
     18                                        -DVHDL_TESTBENCH        \
     19                                        -DSTATISTICS            \
    1720                                        -DDEBUG=DEBUG_TRACE
    18 #                                       -DVHDL                  \
    19 #                                       -DVHDL_TESTBENCH        \
    2021#                                       -DVHDL_TESTBENCH_ASSERT \
    21 #                                       -DSTATISTICS            \
    2222#                                       -DCONFIGURATION         \
    2323#                                       -DPOSITION              \
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.mkf

    r42 r55  
    33#
    44
    5 all: _Generic/RegisterFile/RegisterFile_Monolithic/SelfTest Generic/Select/Priority_Fixed/SelfTest _Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/SelfTest
     5all: _Generic/RegisterFile/RegisterFile_Monolithic/SelfTest Generic/Select/Priority_Fixed/SelfTest Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/SelfTest
    66
    77_Generic/RegisterFile/RegisterFile_Monolithic/SelfTest:
     
    1010Generic/Select/Priority_Fixed/SelfTest:
    1111
    12 _Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/SelfTest:
    13         gmake all -C Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/SelfTest
     12Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/SelfTest:
    1413
    1514clean:
    1615        gmake clean -C Generic/RegisterFile/RegisterFile_Monolithic/SelfTest
    17         gmake clean -C Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/SelfTest
    1816
    1917re: clean all
     
    2119install:
    2220        gmake install -C Generic/RegisterFile/RegisterFile_Monolithic/SelfTest
    23         gmake install -C Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/SelfTest
    2421
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/SelfTest/src/main.cpp

    r50 r55  
    3131#endif
    3232{
    33   if (argc < 2+NB_PARAMS)
     33  if (argc != 2+NB_PARAMS)
    3434    usage (argc, argv);
    3535
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/SelfTest/src/test.cpp

    r53 r55  
    1818} while(0)
    1919
    20 #define SC_START(cycle)                                        \
    21 do                                                             \
    22 {                                                              \
    23   if (static_cast<uint32_t>(sc_simulation_time()) > CYCLE_MAX) \
    24     {                                                          \
    25       TEST_KO("Maximal cycles Reached");                       \
    26     }                                                          \
    27   sc_start(cycle);                                             \
     20static uint32_t cycle = 0;
     21
     22#define SC_START(cycle_offset)                                          \
     23do                                                                      \
     24{                                                                       \
     25/*cout << "SC_START (begin)" << endl;*/                                 \
     26                                                                        \
     27  uint32_t cycle_current = static_cast<uint32_t>(sc_simulation_time()); \
     28  if (cycle_current != cycle)                                           \
     29    {                                                                   \
     30      cycle = cycle_current;                                            \
     31      cout << "##########[ cycle "<< cycle << " ]" << endl;             \
     32    }                                                                   \
     33                                                                        \
     34  if (cycle_current > CYCLE_MAX)                                        \
     35    {                                                                   \
     36      TEST_KO("Maximal cycles Reached");                                \
     37    }                                                                   \
     38  sc_start(cycle_offset);                                               \
     39/*cout << "SC_START (end  )" << endl;*/                                 \
    2840} while(0)
    2941
     
    99111  cout << "<" << name << "> ............ Stop Simulation" << endl;
    100112
    101   delete CLOCK;
    102   delete NRESET;
     113  delete in_CLOCK;
     114  delete in_NRESET;
    103115#endif
    104116
    105117  delete _@COMPONENT;
    106 #ifdef SYSTEMC
     118#ifdef STATISTICS
    107119  delete _parameters_statistics;
    108120#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h

    r53 r55  
    2020#define           DEBUG_Read_unit                                 false
    2121#define             DEBUG_Read_queue                              false
     22#define             DEBUG_Reservation_station                     true
    2223#define     DEBUG_Multi_Front_end                                 false
    2324#define       DEBUG_Front_end                                     false
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interface_fifo.h

    r42 r55  
    1515
    1616  typedef enum {VAL, ACK} val_ack_t;
     17}; // end namespace behavioural
     18
     19  template<> inline std::string toString<morpheo::behavioural::val_ack_t>(const morpheo::behavioural::val_ack_t& x)
     20  {
     21    switch (x)
     22      {
     23      case morpheo::behavioural::VAL : return "val"; break;
     24      case morpheo::behavioural::ACK : return "ack"; break;
     25      default    : return ""      ; break;
     26      }
     27  }
     28
     29namespace behavioural          {
    1730
    1831  class Interface_fifo : public Interface
     
    4659
    4760#ifdef SYSTEMC
     61  public    : sc_in <bool> *        set_signal_valack_in (val_ack_t       val_ack  ,
     62                                                          presence_port_t presence_port=PORT_VHDL_YES_TESTBENCH_YES)
     63    {
     64      return set_signal_valack_in (toString(val_ack) ,val_ack, presence_port);
     65    }
     66
    4867  public    : sc_in <bool> *        set_signal_valack_in (string          name     ,
    4968                                                          val_ack_t       val_ack  ,
     
    5978      return port;
    6079    };
     80
     81  public    : sc_out<bool> *        set_signal_valack_out(val_ack_t       val_ack  ,
     82                                                          presence_port_t presence_port=PORT_VHDL_YES_TESTBENCH_YES)
     83    {
     84      return set_signal_valack_out(toString(val_ack) ,val_ack, presence_port);
     85    }
    6186
    6287  public    : sc_out<bool> *        set_signal_valack_out(string          name     ,
Note: See TracChangeset for help on using the changeset viewer.