Ignore:
Timestamp:
Dec 10, 2008, 7:31:39 PM (16 years ago)
Author:
rosiere
Message:

Almost complete design
with Test and test platform

Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Parameters.cpp

    r81 r88  
    3535                          uint32_t nb_bypass_memory   ,
    3636                          uint32_t size_store_queue   ,
    37                           uint32_t size_load_queue    ):
    38     _size_queue            (size_queue           ),
    39     _nb_inst_retire        (nb_inst_retire       ),
    40     _nb_context            (nb_context           ),
    41     _nb_front_end          (nb_front_end         ),
    42     _nb_ooo_engine         (nb_ooo_engine        ),
    43     _nb_packet             (nb_packet            ),
    44     _size_general_data     (size_general_data    ),
    45     _size_special_data     (size_special_data    ),
    46     _nb_general_register   (nb_general_register  ),
    47     _nb_special_register   (nb_special_register  ),
    48     _nb_gpr_write          (nb_gpr_write         ),
    49     _nb_spr_write          (nb_spr_write         ),
    50     _nb_bypass_write       (nb_bypass_write      ),
    51     _nb_bypass_memory      (nb_bypass_memory     ),
    52     _size_store_queue      (size_store_queue     ),
    53     _size_load_queue       (size_load_queue      ),
    54 
    55     _size_context_id       (static_cast<uint32_t>(log2(_nb_context         ))),
    56     _size_front_end_id     (static_cast<uint32_t>(log2(_nb_front_end       ))),
    57     _size_ooo_engine_id    (static_cast<uint32_t>(log2(_nb_ooo_engine      ))),
    58     _size_rob_id           (static_cast<uint32_t>(log2(_nb_packet          ))),
    59     _size_general_register (static_cast<uint32_t>(log2(_nb_general_register))),
    60     _size_special_register (static_cast<uint32_t>(log2(_nb_special_register))),
    61 
    62     _have_port_context_id    (_size_context_id    > 0),
    63     _have_port_front_end_id  (_size_front_end_id  > 0),
    64     _have_port_ooo_engine_id (_size_ooo_engine_id > 0),
    65     _have_port_rob_id        (_size_rob_id        > 0),
    66     _have_port_load_queue_ptr(_size_load_queue    > 1)
     37                          uint32_t size_load_queue    ,
     38                          bool     is_toplevel)
    6739  {
    6840    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
     41
     42    _size_queue              = size_queue           ;
     43    _nb_inst_retire          = nb_inst_retire       ;
     44    _nb_context              = nb_context           ;
     45    _nb_front_end            = nb_front_end         ;
     46    _nb_ooo_engine           = nb_ooo_engine        ;
     47    _nb_packet               = nb_packet            ;
     48    _nb_general_register     = nb_general_register  ;
     49    _nb_special_register     = nb_special_register  ;
     50    _nb_gpr_write            = nb_gpr_write         ;
     51    _nb_spr_write            = nb_spr_write         ;
     52    _nb_bypass_write         = nb_bypass_write      ;
     53    _nb_bypass_memory        = nb_bypass_memory     ;
     54
    6955    test();
     56
     57    if (is_toplevel)
     58      {
     59        _size_context_id         = log2(_nb_context         );
     60        _size_front_end_id       = log2(_nb_front_end       );
     61        _size_ooo_engine_id      = log2(_nb_ooo_engine      );
     62        _size_rob_ptr            = log2(_nb_packet          );
     63        _size_general_register   = log2(_nb_general_register);
     64        _size_special_register   = log2(_nb_special_register);
     65        _size_general_data       = size_general_data         ;
     66        _size_special_data       = size_special_data         ;
     67        _size_store_queue_ptr    = log2(size_store_queue    );
     68        _size_load_queue_ptr     = log2(size_load_queue     );
     69       
     70        _have_port_context_id    = _size_context_id     > 0;
     71        _have_port_front_end_id  = _size_front_end_id   > 0;
     72        _have_port_ooo_engine_id = _size_ooo_engine_id  > 0;
     73        _have_port_rob_ptr       = _size_rob_ptr        > 0;
     74        _have_port_load_queue_ptr= _size_load_queue_ptr > 0;
     75
     76        copy();
     77      }
     78
    7079    log_printf(FUNC,Reservation_station,FUNCTION,"End");
    7180  };
    7281 
     82// #undef  FUNCTION
     83// #define FUNCTION "Reservation_station::Parameters (copy)"
     84//   Parameters::Parameters (Parameters & param):
     85//     _size_queue            (param._size_queue            ),
     86//     _nb_inst_retire        (param._nb_inst_retire        ),
     87//     _nb_context            (param._nb_context            ),
     88//     _nb_front_end          (param._nb_front_end          ),
     89//     _nb_ooo_engine         (param._nb_ooo_engine         ),
     90//     _nb_packet             (param._nb_packet             ),
     91//     _size_general_data     (param._size_general_data     ),
     92//     _size_special_data     (param._size_special_data     ),
     93//     _nb_general_register   (param._nb_general_register   ),
     94//     _nb_special_register   (param._nb_special_register   ),
     95//     _nb_gpr_write          (param._nb_gpr_write          ),
     96//     _nb_spr_write          (param._nb_spr_write          ),
     97//     _nb_bypass_write       (param._nb_bypass_write       ),
     98//     _nb_bypass_memory      (param._nb_bypass_memory      ),
     99//     _size_store_queue      (param._size_store_queue      ),
     100//     _size_load_queue       (param._size_load_queue       ),
     101
     102//     _size_context_id       (param._size_context_id       ),
     103//     _size_front_end_id     (param._size_front_end_id     ),
     104//     _size_ooo_engine_id    (param._size_ooo_engine_id    ),
     105//     _size_rob_id           (param._size_rob_id           ),
     106//     _size_general_register (param._size_general_register ),
     107//     _size_special_register (param._size_special_register ),
     108
     109//     _have_port_context_id    (param._have_port_context_id   ),
     110//     _have_port_front_end_id  (param._have_port_front_end_id ),
     111//     _have_port_ooo_engine_id (param._have_port_ooo_engine_id),
     112//     _have_port_rob_id        (param._have_port_rob_id       ),
     113//     _have_port_load_queue_ptr(param._have_port_load_queue_ptr)
     114//   {
     115//     log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
     116//     test();
     117//     log_printf(FUNC,Reservation_station,FUNCTION,"End");
     118//   };
     119
    73120#undef  FUNCTION
    74 #define FUNCTION "Reservation_station::Parameters (copy)"
    75   Parameters::Parameters (Parameters & param):
    76     _size_queue            (param._size_queue            ),
    77     _nb_inst_retire        (param._nb_inst_retire        ),
    78     _nb_context            (param._nb_context            ),
    79     _nb_front_end          (param._nb_front_end          ),
    80     _nb_ooo_engine         (param._nb_ooo_engine         ),
    81     _nb_packet             (param._nb_packet             ),
    82     _size_general_data     (param._size_general_data     ),
    83     _size_special_data     (param._size_special_data     ),
    84     _nb_general_register   (param._nb_general_register   ),
    85     _nb_special_register   (param._nb_special_register   ),
    86     _nb_gpr_write          (param._nb_gpr_write          ),
    87     _nb_spr_write          (param._nb_spr_write          ),
    88     _nb_bypass_write       (param._nb_bypass_write       ),
    89     _nb_bypass_memory      (param._nb_bypass_memory      ),
    90     _size_store_queue      (param._size_store_queue      ),
    91     _size_load_queue       (param._size_load_queue       ),
    92 
    93     _size_context_id       (param._size_context_id       ),
    94     _size_front_end_id     (param._size_front_end_id     ),
    95     _size_ooo_engine_id    (param._size_ooo_engine_id    ),
    96     _size_rob_id           (param._size_rob_id           ),
    97     _size_general_register (param._size_general_register ),
    98     _size_special_register (param._size_special_register ),
    99 
    100     _have_port_context_id    (param._have_port_context_id   ),
    101     _have_port_front_end_id  (param._have_port_front_end_id ),
    102     _have_port_ooo_engine_id (param._have_port_ooo_engine_id),
    103     _have_port_rob_id        (param._have_port_rob_id       ),
    104     _have_port_load_queue_ptr(param._have_port_load_queue_ptr)
     121#define FUNCTION "Reservation_station::~Parameters"
     122  Parameters::~Parameters (void)
    105123  {
    106124    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
    107     test();
    108125    log_printf(FUNC,Reservation_station,FUNCTION,"End");
    109126  };
    110127
    111128#undef  FUNCTION
    112 #define FUNCTION "Reservation_station::~Parameters"
    113   Parameters::~Parameters ()
     129#define FUNCTION "Reservation_station::copy"
     130  void Parameters::copy (void)
    114131  {
    115132    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Parameters_print.cpp

    r81 r88  
    4242    xml.singleton_begin("nb_bypass_write    "); xml.attribut("value",toString(_nb_bypass_write    )); xml.singleton_end();
    4343    xml.singleton_begin("nb_bypass_memory   "); xml.attribut("value",toString(_nb_bypass_memory   )); xml.singleton_end();
    44     xml.singleton_begin("size_store_queue   "); xml.attribut("value",toString(_size_store_queue   )); xml.singleton_end();
    45     xml.singleton_begin("size_load_queue    "); xml.attribut("value",toString(_size_load_queue    )); xml.singleton_end();
     44//  xml.singleton_begin("size_store_queue   "); xml.attribut("value",toString(_size_store_queue   )); xml.singleton_end();
     45//  xml.singleton_begin("size_load_queue    "); xml.attribut("value",toString(_size_load_queue    )); xml.singleton_end();
    4646    xml.balise_close();
    4747
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station.cpp

    r82 r88  
    3939    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
    4040
     41#if DEBUG_Reservation_station == true
     42    log_printf(INFO,Reservation_station,FUNCTION,_("<%s> Parameters"),_name.c_str());
     43
     44    std::cout << *param << std::endl;
     45#endif   
     46
    4147#ifdef SYSTEMC
    4248    log_printf(INFO,Reservation_station,FUNCTION,"Allocation");
     
    4652
    4753#ifdef STATISTICS
    48     log_printf(INFO,Reservation_station,FUNCTION,"Allocation of statistics");
    49 
    50     statistics_declaration(param_statistics);
     54    if (usage_is_set(_usage,USE_STATISTICS))
     55      {
     56        log_printf(INFO,Reservation_station,FUNCTION,"Allocation of statistics");
     57       
     58        statistics_declaration(param_statistics);
     59      }
    5160#endif
    5261
    5362#ifdef VHDL
    54     // generate the vhdl
    55     log_printf(INFO,Reservation_station,FUNCTION,"Generate the vhdl");
    56 
    57     vhdl();
     63    if (usage_is_set(_usage,USE_VHDL))
     64      {
     65        // generate the vhdl
     66        log_printf(INFO,Reservation_station,FUNCTION,"Generate the vhdl");
     67       
     68        vhdl();
     69      }
    5870#endif
    5971
    6072#ifdef SYSTEMC
     73    if (usage_is_set(_usage,USE_SYSTEMC))
     74      {
    6175//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
    6276    log_printf(INFO,Reservation_station,FUNCTION,"Method - transition");
     
    8094    // List dependency information
    8195#endif   
    82 
     96      }
    8397#endif
    8498    log_printf(FUNC,Reservation_station,FUNCTION,"End");
     
    92106
    93107#ifdef STATISTICS
    94     log_printf(INFO,Reservation_station,FUNCTION,"Generate Statistics file");
    95 
    96     delete _stat;
     108    if (usage_is_set(_usage,USE_STATISTICS))
     109      {
     110        log_printf(INFO,Reservation_station,FUNCTION,"Generate Statistics file");
     111       
     112        delete _stat;
     113      }
    97114#endif
    98115
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_allocation.cpp

    r82 r88  
    33 * $Id$
    44 *
    5  * [ Description ]
     5 * [ Description ]
    66 *
    77 */
     
    3737    _interfaces = entity->set_interfaces();
    3838
    39     // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     39    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    4040
    4141      Interface * interface = _interfaces->set_interface(""
     
    5050     in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_YES);
    5151
    52     // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~
     52    // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5353    {
    5454      Interface_fifo * interface = _interfaces->set_interface("insert"
     
    6868      if (_param->_have_port_ooo_engine_id)
    6969       in_INSERT_OOO_ENGINE_ID  = interface->set_signal_in <Tcontext_t        > ("ooo_engine_id"  ,_param->_size_ooo_engine_id    );
    70       if (_param->_have_port_rob_id)
    71        in_INSERT_ROB_ID         = interface->set_signal_in <Tpacket_t         > ("rob_id"         ,_param->_size_rob_id        );
     70      if (_param->_have_port_rob_ptr)
     71       in_INSERT_ROB_ID         = interface->set_signal_in <Tpacket_t         > ("rob_id"         ,_param->_size_rob_ptr        );
    7272       in_INSERT_OPERATION      = interface->set_signal_in <Toperation_t      > ("operation"      ,_param->_size_operation        );
    7373       in_INSERT_TYPE           = interface->set_signal_in <Ttype_t           > ("type"           ,_param->_size_type             );
    74        in_INSERT_STORE_QUEUE_PTR_WRITE = interface->set_signal_in <Tlsq_ptr_t> ("store_queue_ptr_write" ,log2(_param->_size_store_queue));
     74       in_INSERT_STORE_QUEUE_PTR_WRITE = interface->set_signal_in <Tlsq_ptr_t> ("store_queue_ptr_write" ,_param->_size_store_queue_ptr);
    7575       if (_param->_have_port_load_queue_ptr)
    76        in_INSERT_LOAD_QUEUE_PTR_WRITE  = interface->set_signal_in <Tlsq_ptr_t> ("load_queue_ptr_write"  ,log2(_param->_size_load_queue) );
     76       in_INSERT_LOAD_QUEUE_PTR_WRITE  = interface->set_signal_in <Tlsq_ptr_t> ("load_queue_ptr_write"  ,_param->_size_load_queue_ptr );
    7777       in_INSERT_HAS_IMMEDIAT   = interface->set_signal_in <Tcontrol_t        > ("has_immediat"   ,1                             );
    7878       in_INSERT_IMMEDIAT       = interface->set_signal_in <Tgeneral_data_t   > ("immediat"       ,_param->_size_general_data     );
     
    9595     }
    9696
    97     // ~~~~~[ Interface : "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~
     97    // ~~~~~[ Interface : "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~
    9898    out_RETIRE_VAL            = new SC_OUT(Tcontrol_t        ) * [_param->_nb_inst_retire];
    9999     in_RETIRE_ACK            = new SC_IN (Tcontrol_t        ) * [_param->_nb_inst_retire];
     
    104104    if (_param->_have_port_ooo_engine_id)
    105105    out_RETIRE_OOO_ENGINE_ID  = new SC_OUT(Tcontext_t        ) * [_param->_nb_inst_retire];
    106     if (_param->_have_port_rob_id)
     106    if (_param->_have_port_rob_ptr)
    107107    out_RETIRE_ROB_ID         = new SC_OUT(Tpacket_t         ) * [_param->_nb_inst_retire];
    108108    out_RETIRE_OPERATION      = new SC_OUT(Toperation_t      ) * [_param->_nb_inst_retire];
     
    138138        if (_param->_have_port_ooo_engine_id)
    139139        out_RETIRE_OOO_ENGINE_ID[i] = interface->set_signal_out<Tcontext_t        > ("ooo_engine_id",_param->_size_ooo_engine_id);
    140         if (_param->_have_port_rob_id)
    141         out_RETIRE_ROB_ID       [i] = interface->set_signal_out<Tpacket_t         > ("rob_id"       ,_param->_size_rob_id);
     140        if (_param->_have_port_rob_ptr)
     141        out_RETIRE_ROB_ID       [i] = interface->set_signal_out<Tpacket_t         > ("rob_id"       ,_param->_size_rob_ptr);
    142142        out_RETIRE_OPERATION    [i] = interface->set_signal_out<Toperation_t      > ("operation"    ,_param->_size_operation);
    143143        out_RETIRE_TYPE         [i] = interface->set_signal_out<Ttype_t           > ("type"         ,_param->_size_type);
    144         out_RETIRE_STORE_QUEUE_PTR_WRITE [i] = interface->set_signal_out<Tlsq_ptr_t> ("store_queue_ptr_write" ,log2(_param->_size_store_queue));
     144        out_RETIRE_STORE_QUEUE_PTR_WRITE [i] = interface->set_signal_out<Tlsq_ptr_t> ("store_queue_ptr_write" ,_param->_size_store_queue_ptr);
    145145        if (_param->_have_port_load_queue_ptr)
    146         out_RETIRE_LOAD_QUEUE_PTR_WRITE  [i] = interface->set_signal_out<Tlsq_ptr_t> ("load_queue_ptr_write"  ,log2(_param->_size_load_queue) );
     146        out_RETIRE_LOAD_QUEUE_PTR_WRITE  [i] = interface->set_signal_out<Tlsq_ptr_t> ("load_queue_ptr_write"  ,_param->_size_load_queue_ptr );
    147147
    148148        out_RETIRE_HAS_IMMEDIAT [i] = interface->set_signal_out<Tcontrol_t        > ("has_immediat" ,1);
     
    157157      }
    158158
    159     // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     159    // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    160160     in_GPR_WRITE_VAL          = new SC_IN (Tcontrol_t        ) * [_param->_nb_gpr_write];
    161161     if (_param->_have_port_ooo_engine_id)
     
    181181      }
    182182
    183     // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     183    // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    184184     in_SPR_WRITE_VAL          = new SC_IN (Tcontrol_t        ) * [_param->_nb_spr_write];
    185185     if (_param->_have_port_ooo_engine_id)
     
    205205      }
    206206
    207     // ~~~~~[ Interface : "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     207    // ~~~~~[ Interface : "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    208208     if (_param->_have_port_ooo_engine_id)
    209209     in_BYPASS_WRITE_OOO_ENGINE_ID  = new SC_IN (Tcontext_t        ) * [_param->_nb_bypass_write];
     
    235235      }
    236236
    237     // ~~~~~[ Interface : "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     237    // ~~~~~[ Interface : "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    238238     in_BYPASS_MEMORY_VAL          = new SC_IN (Tcontrol_t        ) * [_param->_nb_bypass_memory];
    239239     if (_param->_have_port_ooo_engine_id)
     
    260260
    261261
    262     // ~~~~~[ internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     262    if (usage_is_set(_usage,USE_SYSTEMC))
     263      {
     264    // ~~~~~[ internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    263265    internal_RETIRE_VAL  = new Tcontrol_t [_param->_nb_inst_retire];
    264266    internal_RETIRE_SLOT = new uint32_t   [_param->_nb_inst_retire];
    265 
    266     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    267 
    268 #ifdef POSITION
    269     _component->generate_file();
     267      }
     268
     269    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     270
     271#ifdef POSITION
     272    if (usage_is_set(_usage,USE_POSITION))
     273      _component->generate_file();
    270274#endif
    271275#ifdef  SYSTEMC_VHDL_COMPATIBILITY
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_deallocation.cpp

    r81 r88  
    2828    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
    2929
     30    if (usage_is_set(_usage,USE_SYSTEMC))
     31      {
    3032    delete     in_CLOCK ;
    3133    delete     in_NRESET;
     
    3941    if (_param->_have_port_ooo_engine_id)
    4042    delete     in_INSERT_OOO_ENGINE_ID ;
    41     if (_param->_have_port_rob_id)
     43    if (_param->_have_port_rob_ptr)
    4244    delete     in_INSERT_ROB_ID        ;
    4345    delete     in_INSERT_OPERATION     ;
     
    7375    if (_param->_have_port_ooo_engine_id)
    7476    delete [] out_RETIRE_OOO_ENGINE_ID ;
    75     if (_param->_have_port_rob_id)
     77    if (_param->_have_port_rob_ptr)
    7678    delete [] out_RETIRE_ROB_ID        ;
    7779    delete [] out_RETIRE_OPERATION     ;
     
    119121    // ~~~~~[ internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    120122    delete []  internal_RETIRE_VAL;
    121 
     123    delete []  internal_RETIRE_SLOT;
     124      }
    122125    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    123126
     
    139142}; // end namespace multi_execute_loop
    140143}; // end namespace core
    141 
    142144}; // end namespace behavioural
    143145}; // end namespace morpheo             
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_end_cycle.cpp

    r81 r88  
    2626
    2727#ifdef STATISTICS
    28     _stat->end_cycle();
     28    if (usage_is_set(_usage,USE_STATISTICS))
     29      _stat->end_cycle();
    2930#endif   
    3031
     
    3233    // Evaluation before read the ouput signal
    3334//     sc_start(0);
    34     _interfaces->testbench();
     35    if (usage_is_set(_usage,USE_VHDL_TESTBENCH))
     36      _interfaces->testbench();
    3537#endif
    3638    log_printf(FUNC,Reservation_station,FUNCTION,"End");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_genMoore.cpp

    r81 r88  
    2424  void Reservation_station::genMoore (void)
    2525  {
    26     log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
     26    log_begin(Reservation_station,FUNCTION);
     27    log_function(Reservation_station,FUNCTION,_name.c_str());
    2728
    2829    // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~
     
    9798            if (_param->_have_port_ooo_engine_id)
    9899            PORT_WRITE(out_RETIRE_OOO_ENGINE_ID [i],_queue[index_find]._ooo_engine_id);
    99             if (_param->_have_port_rob_id)
     100            if (_param->_have_port_rob_ptr)
    100101            PORT_WRITE(out_RETIRE_ROB_ID        [i],_queue[index_find]._rob_id);
    101102            PORT_WRITE(out_RETIRE_OPERATION     [i],_queue[index_find]._operation);
     
    116117      }
    117118
    118     log_printf(FUNC,Reservation_station,FUNCTION,"End");
     119    log_end(Reservation_station,FUNCTION);
    119120  };
    120121
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_transition.cpp

    r81 r88  
    2020
    2121#ifdef  SYSTEMC_VHDL_COMPATIBILITY
    22 #define dump_queue() \
    23   do\
    24   {\
    25    log_printf(TRACE,Reservation_station,FUNCTION," * dump queue");\
    26    log_printf(TRACE,Reservation_station,FUNCTION,"   * nb_elt : %d",_queue_nb_elt);\
    27    for (uint32_t j=0;j<_param->_size_queue; j++)\
    28    {\
    29      cout << "\t"\
    30           << "[" << j << "] "\
    31           << "{" << _queue[j]._rob_id << " - "<< _queue[j]._context_id << "} " << " - "<< _queue[j]._front_end_id << "} " << " - "<< _queue[j]._ooo_engine_id << "} "\
    32           << _queue[j]._data_ra_val << ", "\
    33           << _queue[j]._num_reg_ra  << " - "\
    34           << _queue[j]._data_rb_val << ","\
    35           << _queue[j]._num_reg_rb  << " - "\
    36           << _queue[j]._data_rc_val << ","\
    37           << _queue[j]._num_reg_rc  \
    38           << endl;\
    39     }\
    40   } while (0)
    41 #else
    42 #define dump_queue() \
    43   do\
    44   {\
    45    log_printf(TRACE,Reservation_station,FUNCTION," * dump queue");\
    46    log_printf(TRACE,Reservation_station,FUNCTION,"   * nb_elt : %d",_queue_nb_elt);\
    47    for (uint32_t j=0;j<_param->_size_queue; j++)\
    48    {\
    49      cout << "\t"\
    50           << "[" << (*_queue_control)[j] << "] "\
    51           << "{" << _queue[(*_queue_control)[j]]._rob_id << " - "<< _queue[(*_queue_control)[j]]._context_id << "} " << " - "<< _queue[(*_queue_control)[j]]._front_end_id << "} " << " - "<< _queue[(*_queue_control)[j]]._ooo_engine_id << "} "\
    52           << _queue[(*_queue_control)[j]]._data_ra_val << ", "\
    53           << _queue[(*_queue_control)[j]]._num_reg_ra  << " - "\
    54           << _queue[(*_queue_control)[j]]._data_rb_val << ","\
    55           << _queue[(*_queue_control)[j]]._num_reg_rb  << " - "\
    56           << _queue[(*_queue_control)[j]]._data_rc_val << ","\
    57           << _queue[(*_queue_control)[j]]._num_reg_rc  \
    58           << endl;\
    59     }\
    60   } while (0)
     22#define dump_queue()                                                    \
     23  do                                                                    \
     24    {                                                                   \
     25      log_printf(TRACE,Reservation_station,FUNCTION,"  * Dump Reservation Station");  \
     26      for (uint32_t it_dump=0;it_dump<_param->_size_queue; it_dump++)   \
     27        log_printf(TRACE,Reservation_station,FUNCTION,"    * [%.4d] %.2d %.2d %.2d %.4d, %.2d %.3d, %.2d %.2d, %.1d %.8x, %.4d %.1d %.8x, %.4d %.1d %.8x, %.4d %.1d %.2x, %.1d %.4d, %.1d %.4d (%s)", \
     28                   it_dump,                                             \
     29                   _queue[it_dump]._context_id           ,              \
     30                   _queue[it_dump]._front_end_id         ,              \
     31                   _queue[it_dump]._ooo_engine_id        ,              \
     32                   _queue[it_dump]._rob_id               ,              \
     33                   _queue[it_dump]._type                 ,              \
     34                   _queue[it_dump]._operation            ,              \
     35                   _queue[it_dump]._store_queue_ptr_write,              \
     36                   _queue[it_dump]._load_queue_ptr_write ,              \
     37                   _queue[it_dump]._has_immediat         ,              \
     38                   _queue[it_dump]._immediat             ,              \
     39                   _queue[it_dump]._num_reg_ra           ,              \
     40                   _queue[it_dump]._data_ra_val          ,              \
     41                   _queue[it_dump]._data_ra              ,              \
     42                   _queue[it_dump]._num_reg_rb           ,              \
     43                   _queue[it_dump]._data_rb_val          ,              \
     44                   _queue[it_dump]._data_rb              ,              \
     45                   _queue[it_dump]._num_reg_rc           ,              \
     46                   _queue[it_dump]._data_rc_val          ,              \
     47                   _queue[it_dump]._data_rc              ,              \
     48                   _queue[it_dump]._write_rd             ,              \
     49                   _queue[it_dump]._num_reg_rd           ,              \
     50                   _queue[it_dump]._write_re             ,              \
     51                   _queue[it_dump]._num_reg_re           ,              \
     52                   toString_type(_queue[it_dump]._type).c_str());       \
     53    } while (0)
     54#else
     55#define dump_queue()                                                    \
     56  do                                                                    \
     57    {                                                                   \
     58      log_printf(TRACE,Reservation_station,FUNCTION,"  * Dump Reservation Station"); \
     59      log_printf(TRACE,Reservation_station,FUNCTION,"    * nb_elt : %d",_queue_control->nb_elt()); \
     60      for (uint32_t it_dump=0;it_dump<_param->_size_queue; it_dump++)   \
     61        log_printf(TRACE,Reservation_station,FUNCTION,"    * [%.4d] %.2d %.2d %.2d %.4d, %.2d %.3d, %.2d %.2d, %.1d %.8x, %.4d %.1d %.8x, %.4d %.1d %.8x, %.4d %.1d %.2x, %.1d %.4d, %.1d %.4d (%s)", \
     62                   (*_queue_control)[it_dump],                          \
     63                   _queue[(*_queue_control)[it_dump]]._context_id           , \
     64                   _queue[(*_queue_control)[it_dump]]._front_end_id         , \
     65                   _queue[(*_queue_control)[it_dump]]._ooo_engine_id        , \
     66                   _queue[(*_queue_control)[it_dump]]._rob_id               , \
     67                   _queue[(*_queue_control)[it_dump]]._type                 , \
     68                   _queue[(*_queue_control)[it_dump]]._operation            , \
     69                   _queue[(*_queue_control)[it_dump]]._store_queue_ptr_write, \
     70                   _queue[(*_queue_control)[it_dump]]._load_queue_ptr_write , \
     71                   _queue[(*_queue_control)[it_dump]]._has_immediat         , \
     72                   _queue[(*_queue_control)[it_dump]]._immediat             , \
     73                   _queue[(*_queue_control)[it_dump]]._num_reg_ra           , \
     74                   _queue[(*_queue_control)[it_dump]]._data_ra_val          , \
     75                   _queue[(*_queue_control)[it_dump]]._data_ra              , \
     76                   _queue[(*_queue_control)[it_dump]]._num_reg_rb           , \
     77                   _queue[(*_queue_control)[it_dump]]._data_rb_val          , \
     78                   _queue[(*_queue_control)[it_dump]]._data_rb              , \
     79                   _queue[(*_queue_control)[it_dump]]._num_reg_rc           , \
     80                   _queue[(*_queue_control)[it_dump]]._data_rc_val          , \
     81                   _queue[(*_queue_control)[it_dump]]._data_rc              , \
     82                   _queue[(*_queue_control)[it_dump]]._write_rd             , \
     83                   _queue[(*_queue_control)[it_dump]]._num_reg_rd           , \
     84                   _queue[(*_queue_control)[it_dump]]._write_re             , \
     85                   _queue[(*_queue_control)[it_dump]]._num_reg_re           , \
     86                   toString_type(_queue[(*_queue_control)[it_dump]]._type).c_str());       \
     87    } while (0)
    6188#endif
    6289
     
    6592  void Reservation_station::transition (void)
    6693  {
    67     log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
     94    log_begin(Reservation_station,FUNCTION);
     95    log_function(Reservation_station,FUNCTION,_name.c_str());
    6896
    6997    if (PORT_READ(in_NRESET) == 0)
     
    89117                //uint32_t index = (*_queue_control)[i];
    90118
    91                 log_printf(NONE,Reservation_station,FUNCTION,"POP  [%d]",i);
     119                log_printf(NONE,Reservation_station,FUNCTION,"  * POP  [%d]",i);
    92120
    93121                uint32_t index  = internal_RETIRE_SLOT[i];
     
    102130//                   << " * index       : " << index << endl;
    103131
    104                 log_printf(NONE,Reservation_station,FUNCTION," * index         : %d",index);
     132                log_printf(NONE,Reservation_station,FUNCTION,"    * index         : %d",index);
    105133              }
    106134          }
     
    140168                    if (PORT_READ(in_GPR_WRITE_NUM_REG [j]) == _queue[index]._num_reg_ra)
    141169                      {
    142                         log_printf(TRACE,Reservation_station,FUNCTION," -> GPR_WRITE     [%d] - Hit queue[%d]-GPR_RA[%d]",i,index,_queue[index]._num_reg_ra);
     170                        log_printf(TRACE,Reservation_station,FUNCTION,"    -> GPR_WRITE     [%d] - Hit queue[%d]-GPR_RA[%d]",i,index,_queue[index]._num_reg_ra);
    143171                        _queue[index]._data_ra_val = 1;
    144172                        _queue[index]._data_ra     = PORT_READ(in_GPR_WRITE_DATA [j]);
     
    146174                    if (PORT_READ(in_GPR_WRITE_NUM_REG [j]) == _queue[index]._num_reg_rb)
    147175                      {
    148                         log_printf(TRACE,Reservation_station,FUNCTION," -> GPR_WRITE     [%d] - Hit queue[%d]-GPR_RB[%d]",i,index,_queue[index]._num_reg_rb);
     176                        log_printf(TRACE,Reservation_station,FUNCTION,"    -> GPR_WRITE     [%d] - Hit queue[%d]-GPR_RB[%d]",i,index,_queue[index]._num_reg_rb);
    149177                        _queue[index]._data_rb_val = 1;
    150178                        _queue[index]._data_rb     = PORT_READ(in_GPR_WRITE_DATA [j]);
     
    165193                    (PORT_READ(in_SPR_WRITE_NUM_REG       [j]) == _queue[index]._num_reg_rc))
    166194                  {
    167                     log_printf(TRACE,Reservation_station,FUNCTION," -> SPR_WRITE     [%d] - Hit queue[%d]-SPR_RC[%d]",i,index,_queue[index]._num_reg_rc);
     195                    log_printf(TRACE,Reservation_station,FUNCTION,"    -> SPR_WRITE     [%d] - Hit queue[%d]-SPR_RC[%d]",i,index,_queue[index]._num_reg_rc);
    168196                    _queue[index]._data_rc_val = 1;
    169197                    _queue[index]._data_rc     = PORT_READ(in_SPR_WRITE_DATA [j]);
     
    185213                    if (PORT_READ(in_BYPASS_WRITE_GPR_NUM_REG[j]) == _queue[index]._num_reg_ra)
    186214                      {
    187                         log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_WRITE  [%d] - Hit queue[%d]-GPR_RA[%d]",i,index,_queue[index]._num_reg_ra);
     215                        log_printf(TRACE,Reservation_station,FUNCTION,"    -> BYPASS_WRITE  [%d] - Hit queue[%d]-GPR_RA[%d]",i,index,_queue[index]._num_reg_ra);
    188216                        _queue[index]._data_ra_val = 1;
    189217                        _queue[index]._data_ra     = PORT_READ(in_BYPASS_WRITE_GPR_DATA [j]);
     
    191219                    if (PORT_READ(in_BYPASS_WRITE_GPR_NUM_REG [j]) == _queue[index]._num_reg_rb)
    192220                      {
    193                         log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_WRITE  [%d] - Hit queue[%d]-GPR_RB[%d]",i,index,_queue[index]._num_reg_rb);
     221                        log_printf(TRACE,Reservation_station,FUNCTION,"    -> BYPASS_WRITE  [%d] - Hit queue[%d]-GPR_RB[%d]",i,index,_queue[index]._num_reg_rb);
    194222                        _queue[index]._data_rb_val = 1;
    195223                        _queue[index]._data_rb     = PORT_READ(in_BYPASS_WRITE_GPR_DATA [j]);
     
    199227                        (PORT_READ(in_BYPASS_WRITE_SPR_NUM_REG[j]) == _queue[index]._num_reg_rc))
    200228                      {
    201                         log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_WRITE  [%d] - Hit queue[%d]-SPR_RC[%d]",i,index,_queue[index]._num_reg_rc);
     229                        log_printf(TRACE,Reservation_station,FUNCTION,"    -> BYPASS_WRITE  [%d] - Hit queue[%d]-SPR_RC[%d]",i,index,_queue[index]._num_reg_rc);
    202230                        _queue[index]._data_rc_val = 1;
    203231                        _queue[index]._data_rc     = PORT_READ(in_BYPASS_WRITE_SPR_DATA [j]);
     
    218246                    if (PORT_READ(in_BYPASS_MEMORY_NUM_REG [j]) == _queue[index]._num_reg_ra)
    219247                      {
    220                         log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_MEMORY [%d] - Hit queue[%d]-GPR_RA[%d]",i,index,_queue[index]._num_reg_ra);
     248                        log_printf(TRACE,Reservation_station,FUNCTION,"    -> BYPASS_MEMORY [%d] - Hit queue[%d]-GPR_RA[%d]",i,index,_queue[index]._num_reg_ra);
    221249                        _queue[index]._data_ra_val = 1;
    222250                        _queue[index]._data_ra     = PORT_READ(in_BYPASS_MEMORY_DATA [j]);
     
    224252                    if (PORT_READ(in_BYPASS_MEMORY_NUM_REG [j]) == _queue[index]._num_reg_rb)
    225253                      {
    226                         log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_MEMORY [%d] - Hit queue[%d]-GPR_RB[%d]",i,index,_queue[index]._num_reg_rb);
     254                        log_printf(TRACE,Reservation_station,FUNCTION,"    -> BYPASS_MEMORY [%d] - Hit queue[%d]-GPR_RB[%d]",i,index,_queue[index]._num_reg_rb);
    227255                        _queue[index]._data_rb_val = 1;
    228256                        _queue[index]._data_rb     = PORT_READ(in_BYPASS_MEMORY_DATA [j]);
     
    235263            (    internal_INSERT_ACK  == 1))
    236264          {
    237             log_printf(TRACE,Reservation_station,FUNCTION,"PUSH");
     265            log_printf(TRACE,Reservation_station,FUNCTION,"  * PUSH");
    238266
    239267            // Write in reservation station
     
    246274            index = _queue_control->push();
    247275#endif
    248             log_printf(TRACE,Reservation_station,FUNCTION," * index         : %d",index);
     276            log_printf(TRACE,Reservation_station,FUNCTION,"    * index         : %d",index);
    249277
    250278            if (_param->_have_port_context_id)
     
    254282            if (_param->_have_port_ooo_engine_id)
    255283            _queue[index]._ooo_engine_id   = PORT_READ(in_INSERT_OOO_ENGINE_ID  );
    256             if (_param->_have_port_rob_id)
     284            if (_param->_have_port_rob_ptr)
    257285            _queue[index]._rob_id          = PORT_READ(in_INSERT_ROB_ID         );
    258286            _queue[index]._operation       = PORT_READ(in_INSERT_OPERATION      );
     
    283311      }
    284312
     313    dump_queue();
     314
    285315    end_cycle ();
    286316
    287     log_printf(FUNC,Reservation_station,FUNCTION,"End");
     317    log_end(Reservation_station,FUNCTION);
    288318  };
    289319
Note: See TracChangeset for help on using the changeset viewer.