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/Read_queue/src
Files:
11 edited

Legend:

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

    r81 r88  
    3030                          uint32_t nb_spr_write       ,
    3131                          uint32_t size_store_queue   ,
    32                           uint32_t size_load_queue    ):
    33     _size_queue            (size_queue           ),
    34     _nb_context            (nb_context           ),
    35     _nb_front_end          (nb_front_end         ),
    36     _nb_ooo_engine         (nb_ooo_engine        ),
    37     _nb_packet             (nb_packet            ),
    38     _size_general_data     (size_general_data    ),
    39     _size_special_data     (size_special_data    ),
    40     _nb_general_register   (nb_general_register  ),
    41     _nb_special_register   (nb_special_register  ),
    42     _nb_gpr_write          (nb_gpr_write         ),
    43     _nb_spr_write          (nb_spr_write         ),
    44     _size_store_queue      (size_store_queue     ),
    45     _size_load_queue       (size_load_queue      ),
    46 
    47     _nb_gpr_read           (2                    ),
    48     _nb_spr_read           (1                    ),
    49     _size_context_id       (static_cast<uint32_t>(log2(_nb_context         ))),
    50     _size_front_end_id     (static_cast<uint32_t>(log2(_nb_front_end       ))),
    51     _size_ooo_engine_id    (static_cast<uint32_t>(log2(_nb_ooo_engine      ))),
    52     _size_rob_id           (static_cast<uint32_t>(log2(_nb_packet          ))),
    53     _size_general_register (static_cast<uint32_t>(log2(_nb_general_register))),
    54     _size_special_register (static_cast<uint32_t>(log2(_nb_special_register))),
    55 
    56     _have_port_context_id    (_size_context_id    > 0),
    57     _have_port_front_end_id  (_size_front_end_id  > 0),
    58     _have_port_ooo_engine_id (_size_ooo_engine_id > 0),
    59     _have_port_rob_id        (_size_rob_id        > 0),
    60     _have_port_load_queue_ptr(_size_load_queue    > 1),
    61 
    62     _size_internal_queue     (  _size_context_id       //_context_id   
    63                               + _size_front_end_id     //_front_end_id
    64                               + _size_ooo_engine_id    //_ooo_engine_id
    65                               + _size_rob_id           //_rob_id       
    66                               + _size_operation        //_operation   
    67                               + _size_type             //_type         
    68                               + log2(_size_store_queue)//_store_queue_ptr_write
    69                               + log2(_size_load_queue )//_load_queue_ptr_write
    70                               + 1                      //_has_immediat
    71                               + _size_general_data     //_immediat     
    72                               + 1                      //_read_ra     
    73                               + _size_general_register //_num_reg_ra   
    74                               + 1                      //_read_rb     
    75                               + _size_general_register //_num_reg_rb   
    76                               + 1                      //_read_rc     
    77                               + _size_special_register //_num_reg_rc   
    78                               + 1                      //_write_rd     
    79                               + _size_general_register //_num_reg_rd   
    80                               + 1                      //_write_re     
    81                               + _size_special_register //_num_reg_re   
    82                                 )
    83                                
    84 
     32                          uint32_t size_load_queue    ,
     33                          bool     is_toplevel)
    8534  {
    8635    log_printf(FUNC,Read_queue,"Parameters","Begin");
     36
     37    _size_queue              = size_queue           ;
     38    _nb_context              = nb_context           ;
     39    _nb_front_end            = nb_front_end         ;
     40    _nb_ooo_engine           = nb_ooo_engine        ;
     41    _nb_packet               = nb_packet            ;
     42    _nb_general_register     = nb_general_register  ;
     43    _nb_special_register     = nb_special_register  ;
     44    _nb_gpr_write            = nb_gpr_write         ;
     45    _nb_spr_write            = nb_spr_write         ;
     46                             
     47    _nb_gpr_read             = 2                    ;
     48    _nb_spr_read             = 1                    ;
     49
     50    _size_internal_queue     = (  log2(nb_context         ) //_context_id   
     51                                + log2(nb_front_end       ) //_front_end_id
     52                                + log2(nb_ooo_engine      ) //_ooo_engine_id
     53                                + log2(nb_packet          ) //_rob_id       
     54                                + _size_operation           //_operation   
     55                                + _size_type                //_type         
     56                                + log2(size_store_queue   ) //_store_queue_ptr_write
     57                                + log2(size_load_queue    ) //_load_queue_ptr_write
     58                                + 1                         //_has_immediat
     59                                +  size_general_data        //_immediat     
     60                                + 1                         //_read_ra     
     61                                + log2(nb_general_register) //_num_reg_ra   
     62                                + 1                         //_read_rb     
     63                                + log2(nb_general_register) //_num_reg_rb   
     64                                + 1                         //_read_rc     
     65                                + log2(nb_special_register) //_num_reg_rc   
     66                                + 1                         //_write_rd     
     67                                + log2(nb_general_register) //_num_reg_rd   
     68                                + 1                         //_write_re     
     69                                + log2(nb_special_register) //_num_reg_re   
     70                                );
     71
    8772    test();
     73
     74    if (is_toplevel)
     75      {
     76        _size_general_data       = size_general_data    ;
     77        _size_special_data       = size_special_data    ;
     78        _size_store_queue_ptr    = log2(size_store_queue);
     79        _size_load_queue_ptr     = log2(size_load_queue );
     80        _size_context_id         = log2(_nb_context         );
     81        _size_front_end_id       = log2(_nb_front_end       );
     82        _size_ooo_engine_id      = log2(_nb_ooo_engine      );
     83        _size_rob_ptr            = log2(_nb_packet          );
     84        _size_general_register   = log2(_nb_general_register);
     85        _size_special_register   = log2(_nb_special_register);
     86       
     87        _have_port_context_id    = _size_context_id    > 0;
     88        _have_port_front_end_id  = _size_front_end_id  > 0;
     89        _have_port_ooo_engine_id = _size_ooo_engine_id > 0;
     90        _have_port_rob_ptr       = _size_rob_ptr       > 0;
     91        _have_port_load_queue_ptr= _size_load_queue_ptr> 0;
     92       
     93        copy();
     94      }
     95
    8896    log_printf(FUNC,Read_queue,"Parameters","End");
    8997  };
    9098 
    91   Parameters::Parameters (Parameters & param):
    92     _size_queue            (param._size_queue            ),
    93     _nb_context            (param._nb_context            ),
    94     _nb_front_end          (param._nb_front_end          ),
    95     _nb_ooo_engine         (param._nb_ooo_engine         ),
    96     _nb_packet             (param._nb_packet             ),
    97     _size_general_data     (param._size_general_data     ),
    98     _size_special_data     (param._size_special_data     ),
    99     _nb_general_register   (param._nb_general_register   ),
    100     _nb_special_register   (param._nb_special_register   ),
    101     _nb_gpr_write          (param._nb_gpr_write          ),
    102     _nb_spr_write          (param._nb_spr_write          ),
    103     _size_store_queue      (param._size_store_queue      ),
    104     _size_load_queue       (param._size_load_queue       ),
     99//   Parameters::Parameters (Parameters & param):
     100//     _size_queue            (param._size_queue            ),
     101//     _nb_context            (param._nb_context            ),
     102//     _nb_front_end          (param._nb_front_end          ),
     103//     _nb_ooo_engine         (param._nb_ooo_engine         ),
     104//     _nb_packet             (param._nb_packet             ),
     105//     _size_general_data     (param._size_general_data     ),
     106//     _size_special_data     (param._size_special_data     ),
     107//     _nb_general_register   (param._nb_general_register   ),
     108//     _nb_special_register   (param._nb_special_register   ),
     109//     _nb_gpr_write          (param._nb_gpr_write          ),
     110//     _nb_spr_write          (param._nb_spr_write          ),
     111//     _size_store_queue      (param._size_store_queue      ),
     112//     _size_load_queue       (param._size_load_queue       ),
    105113
    106     _nb_gpr_read           (param._nb_gpr_read           ),
    107     _nb_spr_read           (param._nb_spr_read           ),
    108     _size_context_id       (param._size_context_id       ),
    109     _size_front_end_id     (param._size_front_end_id     ),
    110     _size_ooo_engine_id    (param._size_ooo_engine_id    ),
    111     _size_rob_id           (param._size_rob_id           ),
    112     _size_general_register (param._size_general_register ),
    113     _size_special_register (param._size_special_register ),
     114//     _nb_gpr_read           (param._nb_gpr_read           ),
     115//     _nb_spr_read           (param._nb_spr_read           ),
     116//     _size_context_id       (param._size_context_id       ),
     117//     _size_front_end_id     (param._size_front_end_id     ),
     118//     _size_ooo_engine_id    (param._size_ooo_engine_id    ),
     119//     _size_rob_id           (param._size_rob_id           ),
     120//     _size_general_register (param._size_general_register ),
     121//     _size_special_register (param._size_special_register ),
    114122
    115     _have_port_context_id    (param._have_port_context_id   ),
    116     _have_port_front_end_id  (param._have_port_front_end_id ),
    117     _have_port_ooo_engine_id (param._have_port_ooo_engine_id),
    118     _have_port_rob_id        (param._have_port_rob_id       ),
    119     _have_port_load_queue_ptr(param._have_port_load_queue_ptr),
     123//     _have_port_context_id    (param._have_port_context_id   ),
     124//     _have_port_front_end_id  (param._have_port_front_end_id ),
     125//     _have_port_ooo_engine_id (param._have_port_ooo_engine_id),
     126//     _have_port_rob_id        (param._have_port_rob_id       ),
     127//     _have_port_load_queue_ptr(param._have_port_load_queue_ptr),
    120128
    121     _size_internal_queue     (param._size_internal_queue    )
    122   {
    123     log_printf(FUNC,Read_queue,"Parameters (copy)","Begin");
    124     test();
    125     log_printf(FUNC,Read_queue,"Parameters (copy)","End");
    126   };
     129//     _size_internal_queue     (param._size_internal_queue    )
     130//   {
     131//     log_printf(FUNC,Read_queue,"Parameters (copy)","Begin");
     132//     test();
     133//     log_printf(FUNC,Read_queue,"Parameters (copy)","End");
     134//   };
    127135
    128   Parameters::~Parameters ()
     136  Parameters::~Parameters (void)
    129137  {
    130138    log_printf(FUNC,Read_queue,"~Parameters","Begin");
    131139    log_printf(FUNC,Read_queue,"~Parameters","End");
     140  };
     141
     142  void Parameters::copy (void)
     143  {
     144    log_printf(FUNC,Read_queue,"copy","Begin");
     145    log_printf(FUNC,Read_queue,"copy","End");
    132146  };
    133147
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters_print.cpp

    r81 r88  
    3131    xml.singleton_begin("nb_ooo_engine      "); xml.attribut("value",toString(_nb_ooo_engine      )); xml.singleton_end();
    3232    xml.singleton_begin("nb_packet          "); xml.attribut("value",toString(_nb_packet          )); xml.singleton_end();
    33     xml.singleton_begin("size_general_data  "); xml.attribut("value",toString(_size_general_data  )); xml.singleton_end();
    34     xml.singleton_begin("size_special_data  "); xml.attribut("value",toString(_size_special_data  )); xml.singleton_end();
     33//  xml.singleton_begin("size_general_data  "); xml.attribut("value",toString(_size_general_data  )); xml.singleton_end();
     34//  xml.singleton_begin("size_special_data  "); xml.attribut("value",toString(_size_special_data  )); xml.singleton_end();
    3535    xml.singleton_begin("nb_general_register"); xml.attribut("value",toString(_nb_general_register)); xml.singleton_end();
    3636    xml.singleton_begin("nb_special_register"); xml.attribut("value",toString(_nb_special_register)); xml.singleton_end();
    3737    xml.singleton_begin("nb_gpr_write       "); xml.attribut("value",toString(_nb_gpr_write       )); xml.singleton_end();
    3838    xml.singleton_begin("nb_spr_write       "); xml.attribut("value",toString(_nb_spr_write       )); xml.singleton_end();
    39     xml.singleton_begin("size_store_queue   "); xml.attribut("value",toString(_size_store_queue   )); xml.singleton_end();
    40     xml.singleton_begin("size_load_queue    "); xml.attribut("value",toString(_size_load_queue    )); xml.singleton_end();
     39//  xml.singleton_begin("size_store_queue   "); xml.attribut("value",toString(_size_store_queue   )); xml.singleton_end();
     40//  xml.singleton_begin("size_load_queue    "); xml.attribut("value",toString(_size_load_queue    )); xml.singleton_end();
    4141
    4242    xml.balise_close();
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue.cpp

    r82 r88  
    3636    log_printf(FUNC,Read_queue,"Read_queue","Begin");
    3737
     38#if DEBUG_Read_queue == true
     39    log_printf(INFO,Read_queue,FUNCTION,_("<%s> Parameters"),_name.c_str());
     40
     41    std::cout << *param << std::endl;
     42#endif   
     43
    3844#ifdef SYSTEMC
    3945    log_printf(INFO,Read_queue,"Read_queue","Allocation");
     
    4349
    4450#ifdef STATISTICS
    45     log_printf(INFO,Read_queue,FUNCTION,"Allocation of statistics");
    46    
    47     statistics_declaration(param_statistics);
     51    if (usage_is_set(_usage,USE_STATISTICS))
     52      {
     53        log_printf(INFO,Read_queue,FUNCTION,"Allocation of statistics");
     54       
     55        statistics_declaration(param_statistics);
     56      }
    4857#endif
    4958
    5059#ifdef VHDL
    51     // generate the vhdl
    52     log_printf(INFO,Read_queue,"Read_queue","Generate the vhdl");
    53 
    54     vhdl();
    55 #endif
    56 
    57 #ifdef SYSTEMC
     60    if (usage_is_set(_usage,USE_VHDL))
     61      {
     62        // generate the vhdl
     63        log_printf(INFO,Read_queue,"Read_queue","Generate the vhdl");
     64       
     65        vhdl();
     66      }
     67#endif
     68
     69#ifdef SYSTEMC
     70    if (usage_is_set(_usage,USE_SYSTEMC))
     71      {
    5872    log_printf(INFO,Read_queue,"Read_queue","Method - transition");
    5973
     
    206220      }
    207221#endif   
    208 
     222      }
    209223#endif
    210224    log_printf(FUNC,Read_queue,"Read_queue","End");
     
    216230
    217231#ifdef STATISTICS
    218     log_printf(INFO,Read_queue,"~Read_queue","Generate Statistics file");
    219 
    220     delete _stat;
     232    if (usage_is_set(_usage,USE_STATISTICS))
     233      {
     234        log_printf(INFO,Read_queue,"~Read_queue","Generate Statistics file");
     235       
     236        delete _stat;
     237      }
    221238#endif
    222239
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_allocation.cpp

    r82 r88  
    33 * $Id$
    44 *
    5  * [ Description ]
     5 * [ Description ]
    66 *
    77 */
     
    3434    _interfaces = entity->set_interfaces();
    3535
    36     // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     36    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    3737
    3838    {
     
    4848     in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_YES);
    4949    }
    50     // ~~~~~[ Interface : "read_queue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     50    // ~~~~~[ Interface : "read_queue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5151    {
    5252      Interface_fifo * interface = _interfaces->set_interface("read_queue_in"
     
    6666       if(_param->_have_port_ooo_engine_id)
    6767         in_READ_QUEUE_IN_OOO_ENGINE_ID  = interface->set_signal_in  <Tcontext_t        > ("ooo_engine_id",_param->_size_ooo_engine_id    );
    68       if(_param->_have_port_rob_id      )
    69        in_READ_QUEUE_IN_ROB_ID         = interface->set_signal_in  <Tpacket_t         > ("rob_id"      ,_param->_size_rob_id           );
     68      if(_param->_have_port_rob_ptr      )
     69       in_READ_QUEUE_IN_ROB_ID         = interface->set_signal_in  <Tpacket_t         > ("rob_id"      ,_param->_size_rob_ptr           );
    7070       in_READ_QUEUE_IN_OPERATION      = interface->set_signal_in  <Toperation_t      > ("operation"   ,_param->_size_operation        );
    7171       in_READ_QUEUE_IN_TYPE           = interface->set_signal_in  <Ttype_t           > ("type"        ,_param->_size_type             );
    72        in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE = interface->set_signal_in  <Tlsq_ptr_t> ("store_queue_ptr_write", log2(_param->_size_store_queue));
     72       in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE = interface->set_signal_in  <Tlsq_ptr_t> ("store_queue_ptr_write", _param->_size_store_queue_ptr);
    7373       if (_param->_have_port_load_queue_ptr)
    74        in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE  = interface->set_signal_in  <Tlsq_ptr_t> ("load_queue_ptr_write" , log2(_param->_size_load_queue ));
     74       in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE  = interface->set_signal_in  <Tlsq_ptr_t> ("load_queue_ptr_write" , _param->_size_load_queue_ptr);
    7575       in_READ_QUEUE_IN_HAS_IMMEDIAT   = interface->set_signal_in  <Tcontrol_t        > ("has_immediat",1                             );
    7676       in_READ_QUEUE_IN_IMMEDIAT       = interface->set_signal_in  <Tgeneral_data_t   > ("immediat"    ,_param->_size_general_data     );
     
    8787     }
    8888
    89     // ~~~~~[ Interface : "read_queue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     89    // ~~~~~[ Interface : "read_queue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    9090    {
    9191      Interface_fifo * interface = _interfaces->set_interface("read_queue_out"
     
    106106      if(_param->_have_port_ooo_engine_id)
    107107        out_READ_QUEUE_OUT_OOO_ENGINE_ID  = interface->set_signal_out <Tcontext_t        > ("ooo_engine_id",_param->_size_ooo_engine_id    );
    108       if(_param->_have_port_rob_id      )
    109         out_READ_QUEUE_OUT_ROB_ID         = interface->set_signal_out <Tpacket_t         > ("rob_id"      ,_param->_size_rob_id           );
     108      if(_param->_have_port_rob_ptr      )
     109        out_READ_QUEUE_OUT_ROB_ID         = interface->set_signal_out <Tpacket_t         > ("rob_id"      ,_param->_size_rob_ptr           );
    110110      out_READ_QUEUE_OUT_OPERATION      = interface->set_signal_out <Toperation_t      > ("operation"   ,_param->_size_operation        );
    111111      out_READ_QUEUE_OUT_TYPE           = interface->set_signal_out <Ttype_t           > ("type"        ,_param->_size_type             );
    112       out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE = interface->set_signal_out <Tlsq_ptr_t> ("store_queue_ptr_write", log2(_param->_size_store_queue));
     112      out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE = interface->set_signal_out <Tlsq_ptr_t> ("store_queue_ptr_write", _param->_size_store_queue_ptr);
    113113      if (_param->_have_port_load_queue_ptr)
    114       out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE  = interface->set_signal_out <Tlsq_ptr_t> ("load_queue_ptr_write" , log2(_param->_size_load_queue ));
     114      out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE  = interface->set_signal_out <Tlsq_ptr_t> ("load_queue_ptr_write" , _param->_size_load_queue_ptr);
    115115      out_READ_QUEUE_OUT_HAS_IMMEDIAT   = interface->set_signal_out <Tcontrol_t        > ("has_immediat",1                             );
    116116      out_READ_QUEUE_OUT_IMMEDIAT       = interface->set_signal_out <Tgeneral_data_t   > ("immediat"    ,_param->_size_general_data     );
     
    133133     }
    134134
    135     // ~~~~~[ Interface : "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     135    // ~~~~~[ Interface : "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    136136   
    137137    out_GPR_READ_VAL          = new SC_OUT(Tcontrol_t        ) * [_param->_nb_gpr_read];
     
    162162      }
    163163     
    164     // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     164    // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    165165   
    166166    out_SPR_READ_VAL          = new SC_OUT(Tcontrol_t        ) * [_param->_nb_spr_read];
     
    191191      }
    192192
    193     // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     193    // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    194194   
    195195     in_GPR_WRITE_VAL          = new SC_IN (Tcontrol_t        ) * [_param->_nb_gpr_write];
     
    216216      }
    217217
    218     // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     218    // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    219219   
    220220     in_SPR_WRITE_VAL          = new SC_IN (Tcontrol_t        ) * [_param->_nb_spr_write];
     
    241241      }
    242242
    243     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    244     _queue      = new std::queue<Tread_queue_entry_t *>;
     243    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     244    _queue      = new std::list<Tread_queue_entry_t *>;
    245245    _queue_head = new Tread_queue_head_entry_t;
    246246
    247247#ifdef POSITION
    248     _component->generate_file();
     248    if (usage_is_set(_usage,USE_POSITION))
     249      _component->generate_file();
    249250#endif
    250251
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_deallocation.cpp

    r81 r88  
    33 * $Id$
    44 *
    5  * [ Description ]
     5 * [ Description ]
    66 *
    77 */
     
    2323    log_printf(FUNC,Read_queue,"deallocation","Begin");
    2424
    25     // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     25    if (usage_is_set(_usage,USE_SYSTEMC))
     26      {
     27    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    2628    delete     in_CLOCK ;
    2729    delete     in_NRESET;
    2830
    29     // ~~~~~[ Interface : "read_queue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     31    // ~~~~~[ Interface : "read_queue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    3032    delete     in_READ_QUEUE_IN_VAL            ;
    3133    delete    out_READ_QUEUE_IN_ACK            ;
     
    3739    if(_param->_have_port_ooo_engine_id)
    3840      delete     in_READ_QUEUE_IN_OOO_ENGINE_ID  ;
    39     if(_param->_have_port_rob_id       )
     41    if(_param->_have_port_rob_ptr       )
    4042      delete     in_READ_QUEUE_IN_ROB_ID         ;
    4143    delete     in_READ_QUEUE_IN_OPERATION      ;
     
    5759    delete     in_READ_QUEUE_IN_NUM_REG_RE     ;
    5860
    59     // ~~~~~[ Interface : "read_queue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     61    // ~~~~~[ Interface : "read_queue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    6062    delete    out_READ_QUEUE_OUT_VAL            ;
    6163    delete     in_READ_QUEUE_OUT_ACK            ;
     
    6769    if(_param->_have_port_ooo_engine_id)
    6870      delete    out_READ_QUEUE_OUT_OOO_ENGINE_ID  ;
    69     if(_param->_have_port_rob_id       )
     71    if(_param->_have_port_rob_ptr       )
    7072      delete    out_READ_QUEUE_OUT_ROB_ID         ;
    7173    delete    out_READ_QUEUE_OUT_OPERATION      ;
     
    9395    delete    out_READ_QUEUE_OUT_NUM_REG_RE     ;
    9496
    95     // ~~~~~[ Interface : "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     97    // ~~~~~[ Interface : "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    9698   
    9799    delete [] out_GPR_READ_VAL       ;
     
    103105    delete []  in_GPR_READ_DATA_VAL  ;
    104106
    105     // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     107    // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    106108   
    107109    delete [] out_SPR_READ_VAL       ;
     
    113115    delete []  in_SPR_READ_DATA_VAL  ;
    114116
    115     // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     117    // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    116118   
    117119    delete []  in_GPR_WRITE_VAL       ;
     
    121123    delete []  in_GPR_WRITE_DATA      ;
    122124
    123     // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     125    // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    124126   
    125127    delete []  in_SPR_WRITE_VAL       ;
     
    128130    delete []  in_SPR_WRITE_NUM_REG   ;
    129131    delete []  in_SPR_WRITE_DATA      ;
     132      }
    130133
    131     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     134    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    132135
    133136    while (_queue->empty() == false)
    134137      {
    135138        delete _queue->front();
    136         _queue->pop();
     139        _queue->pop_front();
    137140      }
    138141    delete _queue;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_end_cycle.cpp

    r81 r88  
    2424
    2525#ifdef STATISTICS
    26     _stat->end_cycle();
     26    if (usage_is_set(_usage,USE_STATISTICS))
     27      _stat->end_cycle();
    2728#endif   
    2829
     
    3031    // Evaluation before read the ouput signal
    3132//  sc_start(0);
    32     _interfaces->testbench();
     33    if (usage_is_set(_usage,USE_VHDL_TESTBENCH))
     34      _interfaces->testbench();
    3335#endif
    3436
  • 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

    r81 r88  
    2222  void Read_queue::genMealy_read_queue_out_gpr (void)
    2323  {
    24     log_printf(FUNC,Read_queue,FUNCTION,"Begin");
     24    log_begin(Read_queue,FUNCTION);
     25    log_function(Read_queue,FUNCTION,_name.c_str());
    2526
    2627    internal_READ_QUEUE_OUT_DATA_RA_VAL = (// Previous value
     
    3233                                           );
    3334
    34     log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RA_VAL   : %d",internal_READ_QUEUE_OUT_DATA_RA_VAL);
    35     log_printf(TRACE,Read_queue,FUNCTION,"   * _queue_head->_data_ra_val           : %d",_queue_head->_data_ra_val);
    36     log_printf(TRACE,Read_queue,FUNCTION,"   * _queue_head->_read_ra_val           : %d",_queue_head->_read_ra_val);
    37     log_printf(TRACE,Read_queue,FUNCTION,"   * in_GPR_READ_ACK      [0]            : %d",PORT_READ(in_GPR_READ_ACK      [0]));
    38     log_printf(TRACE,Read_queue,FUNCTION,"   * in_GPR_READ_DATA_VAL [0]            : %d",PORT_READ(in_GPR_READ_DATA_VAL [0]));
     35    log_printf(TRACE,Read_queue,FUNCTION,"  * internal_READ_QUEUE_OUT_DATA_RA_VAL   : %d",internal_READ_QUEUE_OUT_DATA_RA_VAL);
     36    log_printf(TRACE,Read_queue,FUNCTION,"    * _queue_head->_data_ra_val           : %d",_queue_head->_data_ra_val);
     37    log_printf(TRACE,Read_queue,FUNCTION,"    * _queue_head->_read_ra_val           : %d",_queue_head->_read_ra_val);
     38    log_printf(TRACE,Read_queue,FUNCTION,"    * in_GPR_READ_ACK      [0]            : %d",PORT_READ(in_GPR_READ_ACK      [0]));
     39    log_printf(TRACE,Read_queue,FUNCTION,"    * in_GPR_READ_DATA_VAL [0]            : %d",PORT_READ(in_GPR_READ_DATA_VAL [0]));
    3940
    4041    internal_READ_QUEUE_OUT_DATA_RB_VAL = (_queue_head->_data_rb_val or
     
    4445                                           );
    4546
    46     log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RB_VAL   : %d",internal_READ_QUEUE_OUT_DATA_RB_VAL);
    47     log_printf(TRACE,Read_queue,FUNCTION,"   * _queue_head->_data_rb_val           : %d",_queue_head->_data_rb_val);
    48     log_printf(TRACE,Read_queue,FUNCTION,"   * _queue_head->_read_rb_val           : %d",_queue_head->_read_rb_val);
    49     log_printf(TRACE,Read_queue,FUNCTION,"   * in_GPR_READ_ACK      [1]            : %d",PORT_READ(in_GPR_READ_ACK      [1]));
    50     log_printf(TRACE,Read_queue,FUNCTION,"   * in_GPR_READ_DATA_VAL [1]            : %d",PORT_READ(in_GPR_READ_DATA_VAL [1]));
     47    log_printf(TRACE,Read_queue,FUNCTION,"  * internal_READ_QUEUE_OUT_DATA_RB_VAL   : %d",internal_READ_QUEUE_OUT_DATA_RB_VAL);
     48    log_printf(TRACE,Read_queue,FUNCTION,"    * _queue_head->_data_rb_val           : %d",_queue_head->_data_rb_val);
     49    log_printf(TRACE,Read_queue,FUNCTION,"    * _queue_head->_read_rb_val           : %d",_queue_head->_read_rb_val);
     50    log_printf(TRACE,Read_queue,FUNCTION,"    * in_GPR_READ_ACK      [1]            : %d",PORT_READ(in_GPR_READ_ACK      [1]));
     51    log_printf(TRACE,Read_queue,FUNCTION,"    * in_GPR_READ_DATA_VAL [1]            : %d",PORT_READ(in_GPR_READ_DATA_VAL [1]));
    5152               
    5253   
     
    8081            if (_queue_head->_num_reg_ra == gpr_write_num_reg)
    8182              {
    82                 log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RA_VAL   - bypass hit (%d)",i);
     83                log_printf(TRACE,Read_queue,FUNCTION,"  * internal_READ_QUEUE_OUT_DATA_RA_VAL   - bypass hit (%d)",i);
    8384
    8485                internal_READ_QUEUE_OUT_DATA_RA_VAL = 1;
     
    9091            if (_queue_head->_num_reg_rb == gpr_write_num_reg)
    9192              {
    92                 log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RB_VAL   - bypass hit (%d)",i);
     93                log_printf(TRACE,Read_queue,FUNCTION,"  * internal_READ_QUEUE_OUT_DATA_RB_VAL   - bypass hit (%d)",i);
    9394                internal_READ_QUEUE_OUT_DATA_RB_VAL = 1;
    9495#ifdef SYSTEMC_VHDL_COMPATIBILITY
     
    106107    PORT_WRITE(out_READ_QUEUE_OUT_DATA_RB    ,internal_READ_QUEUE_OUT_DATA_RB    );
    107108
    108     log_printf(FUNC,Read_queue,FUNCTION,"End");
     109    log_end(Read_queue,FUNCTION);
    109110  };
    110111
  • 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

    r81 r88  
    2222  void Read_queue::genMealy_read_queue_out_spr (void)
    2323  {
    24     log_printf(FUNC,Read_queue,FUNCTION,"Begin");
     24    log_begin(Read_queue,FUNCTION);
     25    log_function(Read_queue,FUNCTION,_name.c_str());
    2526
    2627    internal_READ_QUEUE_OUT_DATA_RC_VAL = (// Previous value
     
    3233                                           );
    3334
    34     log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RC_VAL   : %d",internal_READ_QUEUE_OUT_DATA_RC_VAL);
    35     log_printf(TRACE,Read_queue,FUNCTION,"   * _queue_head->_data_rc_val           : %d",_queue_head->_data_rc_val);
    36     log_printf(TRACE,Read_queue,FUNCTION,"   * _queue_head->_read_rc_val           : %d",_queue_head->_read_rc_val);
    37     log_printf(TRACE,Read_queue,FUNCTION,"   * in_SPR_READ_ACK      [0]            : %d",PORT_READ(in_SPR_READ_ACK      [0]));
    38     log_printf(TRACE,Read_queue,FUNCTION,"   * in_SPR_READ_DATA_VAL [0]            : %d",PORT_READ(in_SPR_READ_DATA_VAL [0]));
     35    log_printf(TRACE,Read_queue,FUNCTION,"  * internal_READ_QUEUE_OUT_DATA_RC_VAL   : %d",internal_READ_QUEUE_OUT_DATA_RC_VAL);
     36    log_printf(TRACE,Read_queue,FUNCTION,"    * _queue_head->_data_rc_val           : %d",_queue_head->_data_rc_val);
     37    log_printf(TRACE,Read_queue,FUNCTION,"    * _queue_head->_read_rc_val           : %d",_queue_head->_read_rc_val);
     38    log_printf(TRACE,Read_queue,FUNCTION,"    * in_SPR_READ_ACK      [0]            : %d",PORT_READ(in_SPR_READ_ACK      [0]));
     39    log_printf(TRACE,Read_queue,FUNCTION,"    * in_SPR_READ_DATA_VAL [0]            : %d",PORT_READ(in_SPR_READ_DATA_VAL [0]));
    3940
    4041    internal_READ_QUEUE_OUT_DATA_RC     = (// Test if have an previous access
     
    6061            if (_queue_head->_num_reg_rc == PORT_READ(in_SPR_WRITE_NUM_REG [i]))
    6162              {
    62                 log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RC_VAL   - bypass hit (%d)",i);
     63                log_printf(TRACE,Read_queue,FUNCTION,"  * internal_READ_QUEUE_OUT_DATA_RC_VAL   - bypass hit (%d)",i);
    6364                internal_READ_QUEUE_OUT_DATA_RC_VAL = 1;
    6465#ifdef SYSTEMC_VHDL_COMPATIBILITY
     
    7475    PORT_WRITE(out_READ_QUEUE_OUT_DATA_RC    ,internal_READ_QUEUE_OUT_DATA_RC    );
    7576
    76     log_printf(FUNC,Read_queue,FUNCTION,"End");
     77    log_end(Read_queue,FUNCTION);
    7778  };
    7879
  • 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

    r81 r88  
    2222  void Read_queue::genMealy_read_queue_out_val (void)
    2323  {
    24     log_printf(FUNC,Read_queue,FUNCTION,"Begin");
     24    log_begin(Read_queue,FUNCTION);
     25    log_function(Read_queue,FUNCTION,_name.c_str());
    2526
    2627    internal_READ_QUEUE_OUT_READ_RA_VAL = (// Previous value
     
    99100    PORT_WRITE(out_READ_QUEUE_OUT_VAL, internal_READ_QUEUE_OUT_VAL);
    100101
    101     log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_VAL           : %d",internal_READ_QUEUE_OUT_VAL);
    102     log_printf(TRACE,Read_queue,FUNCTION,"   * _queue->empty()                     : %d",_queue->empty());
    103     log_printf(TRACE,Read_queue,FUNCTION,"   * internal_READ_QUEUE_OUT_READ_RA_VAL : %d",internal_READ_QUEUE_OUT_READ_RA_VAL);
    104     log_printf(TRACE,Read_queue,FUNCTION,"     * _queue_head->_read_ra_val         : %d",_queue_head->_read_ra_val);
    105     log_printf(TRACE,Read_queue,FUNCTION,"     * in_GPR_READ_ACK      [0]          : %d",PORT_READ(in_GPR_READ_ACK      [0]));
    106     log_printf(TRACE,Read_queue,FUNCTION,"   * internal_READ_QUEUE_OUT_READ_RB_VAL : %d",internal_READ_QUEUE_OUT_READ_RB_VAL);
    107     log_printf(TRACE,Read_queue,FUNCTION,"     * _queue_head->_read_rb_val         : %d",_queue_head->_read_rb_val);
    108     log_printf(TRACE,Read_queue,FUNCTION,"     * in_GPR_READ_ACK      [1]          : %d",PORT_READ(in_GPR_READ_ACK      [1]));
    109     log_printf(TRACE,Read_queue,FUNCTION,"   * internal_READ_QUEUE_OUT_READ_RC_VAL : %d",internal_READ_QUEUE_OUT_READ_RC_VAL);
    110     log_printf(TRACE,Read_queue,FUNCTION,"     * _queue_head->_read_rc_val         : %d",_queue_head->_read_rc_val);
    111     log_printf(TRACE,Read_queue,FUNCTION,"     * in_SPR_READ_ACK      [0]          : %d",PORT_READ(in_SPR_READ_ACK      [0]));
     102    log_printf(TRACE,Read_queue,FUNCTION,"  * internal_READ_QUEUE_OUT_VAL           : %d",internal_READ_QUEUE_OUT_VAL);
     103    log_printf(TRACE,Read_queue,FUNCTION,"    * _queue->empty()                     : %d",_queue->empty());
     104    log_printf(TRACE,Read_queue,FUNCTION,"    * internal_READ_QUEUE_OUT_READ_RA_VAL : %d",internal_READ_QUEUE_OUT_READ_RA_VAL);
     105    log_printf(TRACE,Read_queue,FUNCTION,"      * _queue_head->_read_ra_val         : %d",_queue_head->_read_ra_val);
     106    log_printf(TRACE,Read_queue,FUNCTION,"      * in_GPR_READ_ACK      [0]          : %d",PORT_READ(in_GPR_READ_ACK      [0]));
     107    log_printf(TRACE,Read_queue,FUNCTION,"    * internal_READ_QUEUE_OUT_READ_RB_VAL : %d",internal_READ_QUEUE_OUT_READ_RB_VAL);
     108    log_printf(TRACE,Read_queue,FUNCTION,"      * _queue_head->_read_rb_val         : %d",_queue_head->_read_rb_val);
     109    log_printf(TRACE,Read_queue,FUNCTION,"      * in_GPR_READ_ACK      [1]          : %d",PORT_READ(in_GPR_READ_ACK      [1]));
     110    log_printf(TRACE,Read_queue,FUNCTION,"    * internal_READ_QUEUE_OUT_READ_RC_VAL : %d",internal_READ_QUEUE_OUT_READ_RC_VAL);
     111    log_printf(TRACE,Read_queue,FUNCTION,"      * _queue_head->_read_rc_val         : %d",_queue_head->_read_rc_val);
     112    log_printf(TRACE,Read_queue,FUNCTION,"      * in_SPR_READ_ACK      [0]          : %d",PORT_READ(in_SPR_READ_ACK      [0]));
    112113
    113     log_printf(FUNC,Read_queue,FUNCTION,"End");
     114    log_end(Read_queue,FUNCTION);
    114115  };
    115116
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMoore.cpp

    r81 r88  
    2222  void Read_queue::genMoore (void)
    2323  {
    24     log_printf(FUNC,Read_queue,FUNCTION,"Begin");
     24    log_begin(Read_queue,FUNCTION);
     25    log_function(Read_queue,FUNCTION,_name.c_str());
    2526
    2627    bool not_full  = not (_queue->size() == _param->_size_queue);
     
    3940    if(_param->_have_port_ooo_engine_id)
    4041      PORT_WRITE (out_READ_QUEUE_OUT_OOO_ENGINE_ID, _queue_head->_ooo_engine_id);
    41     if(_param->_have_port_rob_id       )
     42    if(_param->_have_port_rob_ptr      )
    4243      PORT_WRITE (out_READ_QUEUE_OUT_ROB_ID      , _queue_head->_rob_id      );
    4344    PORT_WRITE (out_READ_QUEUE_OUT_OPERATION   , _queue_head->_operation   );
     
    7980    PORT_WRITE (out_SPR_READ_VAL           [0], not_empty and _queue_head->_read_rc_val);
    8081    if(_param->_have_port_ooo_engine_id)
    81       PORT_WRITE (out_SPR_READ_OOO_ENGINE_ID [0],               _queue_head->_ooo_engine_id);
     82    PORT_WRITE (out_SPR_READ_OOO_ENGINE_ID [0],               _queue_head->_ooo_engine_id);
    8283    PORT_WRITE (out_SPR_READ_NUM_REG       [0],               _queue_head->_num_reg_rc);
    8384                   
    84     log_printf(FUNC,Read_queue,FUNCTION,"End");
     85    log_end(Read_queue,FUNCTION);
    8586  };
    8687
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_transition.cpp

    r81 r88  
    2424  void Read_queue::transition (void)
    2525  {
    26     log_printf(FUNC,Read_queue,FUNCTION,"Begin");
     26    log_begin(Read_queue,FUNCTION);
     27    log_function(Read_queue,FUNCTION,_name.c_str());
    2728
    2829    if (PORT_READ(in_NRESET) == 0)
     
    3334        // > 2) flush all slot in one cycle
    3435
    35         while (_queue->empty() == false)
    36           _queue->pop();
     36        _queue->clear();
     37
     38        // Init, else error in registerfile
     39        _queue_head->_ooo_engine_id = 0;
    3740      }
    3841    else
     
    4447//        cout << (*_queue_head) << endl;
    4548
    46         log_printf(TRACE,Read_queue,FUNCTION,"Read_queue size (begin) : %d",_queue->size());
     49        log_printf(TRACE,Read_queue,FUNCTION,"  * Read_queue size (begin) : %d",(int)_queue->size());
    4750        // Write to read_queue
    4851
     
    5154        bool need_new_head = false;
    5255       
    53         log_printf(TRACE,Read_queue,FUNCTION," * test transaction READ_QUEUE_IN  : %d,%d",PORT_READ(in_READ_QUEUE_IN_VAL), not_full);
     56        log_printf(TRACE,Read_queue,FUNCTION,"    * test transaction READ_QUEUE_IN  : %d,%d",PORT_READ(in_READ_QUEUE_IN_VAL), not_full);
    5457        if ((PORT_READ(in_READ_QUEUE_IN_VAL) == 1) and not_full)
    5558          {
     
    6265            if(_param->_have_port_ooo_engine_id)
    6366              entry->_ooo_engine_id= PORT_READ(in_READ_QUEUE_IN_OOO_ENGINE_ID);
    64             if(_param->_have_port_rob_id       )
     67            if(_param->_have_port_rob_ptr      )
    6568              entry->_rob_id       = PORT_READ(in_READ_QUEUE_IN_ROB_ID      );
    6669            entry->_operation    = PORT_READ(in_READ_QUEUE_IN_OPERATION   );
     
    8285            entry->_num_reg_re   = PORT_READ(in_READ_QUEUE_IN_NUM_REG_RE  );
    8386
    84             log_printf(TRACE,Read_queue,FUNCTION,"   * push (id : %d-%d)",entry->_context_id, entry->_rob_id);
    85             _queue->push(entry);
    86 
     87            log_printf(TRACE,Read_queue,FUNCTION,"    * push (id : %d-%d)",entry->_context_id, entry->_rob_id);
     88            _queue->push_back(entry);
    8789
    8890            // read next new head
    8991            if (empty)
    9092              {
    91                 log_printf(TRACE,Read_queue,FUNCTION,"     * queue was    empty");
     93                log_printf(TRACE,Read_queue,FUNCTION,"    * queue was    empty");
    9294                need_new_head = true;
    9395              }
     
    9597
    9698        // Read from read_queue
    97         log_printf(TRACE,Read_queue,FUNCTION," * test transaction READ_QUEUE_OUT : %d,%d",internal_READ_QUEUE_OUT_VAL, PORT_READ(in_READ_QUEUE_OUT_ACK));
     99        log_printf(TRACE,Read_queue,FUNCTION,"  * test transaction READ_QUEUE_OUT : %d,%d",internal_READ_QUEUE_OUT_VAL, PORT_READ(in_READ_QUEUE_OUT_ACK));
    98100        if ((    internal_READ_QUEUE_OUT_VAL  == 1) and
    99101            (PORT_READ(in_READ_QUEUE_OUT_ACK) == 1))
    100102          {
    101103            // Pop the entry
    102             log_printf(TRACE,Read_queue,FUNCTION,"   * pop  (id : %d-%d)",_queue->front()->_context_id, _queue->front()->_rob_id);
    103             _queue->pop();
     104            log_printf(TRACE,Read_queue,FUNCTION,"    * pop  (id : %d-%d)",_queue->front()->_context_id, _queue->front()->_rob_id);
     105            _queue->pop_front();
    104106
    105107            // read next new head
    106108            if (_queue->empty() == false)
    107109              {
    108                 log_printf(TRACE,Read_queue,FUNCTION,"     * queue was not empty");
     110                log_printf(TRACE,Read_queue,FUNCTION,"    * queue was not empty");
    109111                need_new_head = true;
    110112              }
     
    128130        if (need_new_head == true)
    129131          {
    130             log_printf(TRACE,Read_queue,FUNCTION," * new head");
     132            log_printf(TRACE,Read_queue,FUNCTION,"  * new head");
    131133            (*_queue_head) = (*_queue->front());
    132134          }
     
    138140//        cout << (*_queue_head) << endl;
    139141
    140         log_printf(TRACE,Read_queue,FUNCTION,"Read_queue size (end  ) : %d",_queue->size());
     142#if (DEBUG >= DEBUG_TRACE) and (DEBUG_Read_queue == true)
     143        log_printf(TRACE,Read_queue,FUNCTION,"  * Dump Read_queue");
     144        log_printf(TRACE,Read_queue,FUNCTION,"    * size : %d",(int)_queue->size());
     145
     146        if (_queue->size()>0)
     147          {
     148//   protected : Tread_queue_head_entry_t       * _queue_head;
     149//   protected : std::queue<Tread_queue_entry_t *>   * _queue;
     150           
     151            log_printf(TRACE,Read_queue,FUNCTION,"    * [%.4d] %.2d %.2d %.2d %.4d, %.2d %.3d, %.2d %.2d, %.1d %.8x, %.1d %.1d %.4d %.1d %.8x, %.1d %.1d %.4d %.1d %.8x, %.1d %.1d %.4d %.1d %.2x, %.1d %.4d, %.1d %.4d (%s)",
     152                       0,
     153
     154                       _queue_head->_context_id           ,
     155                       _queue_head->_front_end_id         ,
     156                       _queue_head->_ooo_engine_id        ,
     157                       _queue_head->_rob_id               ,
     158
     159                       _queue_head->_type                 ,
     160                       _queue_head->_operation            ,
     161
     162                       _queue_head->_store_queue_ptr_write,
     163                       _queue_head->_load_queue_ptr_write ,
     164
     165                       _queue_head->_has_immediat         ,
     166                       _queue_head->_immediat             ,
     167
     168                       _queue_head->_read_ra              ,
     169                       _queue_head->_read_ra_val          ,
     170                       _queue_head->_num_reg_ra           ,
     171                       _queue_head->_data_ra_val          ,
     172                       _queue_head->_data_ra              ,
     173
     174                       _queue_head->_read_rb              ,
     175                       _queue_head->_read_rb_val          ,
     176                       _queue_head->_num_reg_rb           ,
     177                       _queue_head->_data_rb_val          ,
     178                       _queue_head->_data_rb              ,
     179
     180                       _queue_head->_read_rc              ,
     181                       _queue_head->_read_rc_val          ,
     182                       _queue_head->_num_reg_rc           ,
     183                       _queue_head->_data_rc_val          ,
     184                       _queue_head->_data_rc              ,
     185
     186                       _queue_head->_write_rd             ,
     187                       _queue_head->_num_reg_rd           ,
     188                       
     189                       _queue_head->_write_re             ,
     190                       _queue_head->_num_reg_re           ,
     191
     192                       toString_type(_queue_head->_type).c_str());
     193
     194
     195            std::list<Tread_queue_entry_t *>::iterator it=_queue->begin();
     196            ++it; // first is already printed
     197            uint32_t i=1;
     198
     199            for (;it!=_queue->end(); ++it)
     200              {
     201                log_printf(TRACE,Read_queue,FUNCTION,"    * [%.4d] %.2d %.2d %.2d %.4d, %.2d %.3d, %.2d %.2d, %.1d %.8x, %.1d   %.4d           , %.1d   %.4d           , %.1d   %.4d     , %.1d %.4d, %.1d %.4d (%s)",
     202                           i,
     203                           
     204                           (*it)->_context_id           ,
     205                           (*it)->_front_end_id         ,
     206                           (*it)->_ooo_engine_id        ,
     207                           (*it)->_rob_id               ,
     208                           
     209                           (*it)->_type                 ,
     210                           (*it)->_operation            ,
     211                           
     212                           (*it)->_store_queue_ptr_write,
     213                           (*it)->_load_queue_ptr_write ,
     214                           
     215                           (*it)->_has_immediat         ,
     216                           (*it)->_immediat             ,
     217                           
     218                           (*it)->_read_ra              ,
     219//                         (*it)->_read_ra_val          ,
     220                           (*it)->_num_reg_ra           ,
     221//                         (*it)->_data_ra_val          ,
     222//                         (*it)->_data_ra              ,
     223                           
     224                           (*it)->_read_rb              ,
     225//                         (*it)->_read_rb_val          ,
     226                           (*it)->_num_reg_rb           ,
     227//                         (*it)->_data_rb_val          ,
     228//                         (*it)->_data_rb              ,
     229                           
     230                           (*it)->_read_rc              ,
     231//                         (*it)->_read_rc_val          ,
     232                           (*it)->_num_reg_rc           ,
     233//                         (*it)->_data_rc_val          ,
     234//                         (*it)->_data_rc              ,
     235                           
     236                           (*it)->_write_rd             ,
     237                           (*it)->_num_reg_rd           ,
     238                           
     239                           (*it)->_write_re             ,
     240                           (*it)->_num_reg_re           ,
     241
     242                           toString_type((*it)->_type).c_str());
     243
     244                ++i;
     245              }
     246          }
     247#endif
     248
     249
    141250      }
    142251
    143252#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
    144     end_cycle ();
     253        end_cycle ();
    145254#endif
    146255
    147     log_printf(FUNC,Read_queue,FUNCTION,"End");
     256    log_end(Read_queue,FUNCTION);
    148257  };
    149258
Note: See TracChangeset for help on using the changeset viewer.