Ignore:
Timestamp:
Dec 31, 2008, 11:18:08 AM (15 years ago)
Author:
rosiere
Message:

1) Fix bug (read unit, RAT -> write in R0, SPR desallocation ...)
2) Change VHDL Execute_queue -> use Generic/Queue?
3) Complete document on VHDL generation
4) Add soc test

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/src/Branch_Target_Buffer_Glue_genMealy_predict.cpp

    r81 r98  
    2222  void Branch_Target_Buffer_Glue::genMealy_predict (void)
    2323  {
    24     log_printf(FUNC,Branch_Target_Buffer_Glue,FUNCTION,"Begin");
     24    log_begin(Branch_Target_Buffer_Glue,FUNCTION);
     25    log_function(Branch_Target_Buffer_Glue,FUNCTION,_name.c_str());
    2526
    2627    for (uint32_t i=0; i<_param->_nb_inst_predict; i++)
    2728      {
    28         Tptr_t          index = (_param->_have_port_victim)?PORT_READ(in_PREDICT_SORT_INDEX [i]):0;
    29         Tcontrol_t      hit   = PORT_READ(in_PREDICT_REGISTER_HIT         [i][index]);
    30         Tgeneral_data_t addr  = PORT_READ(in_PREDICT_REGISTER_ADDRESS_SRC [i][index]);
     29        log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION,"  * PREDICT [%d]",i);
     30        Tptr_t          index       = (_param->_have_port_victim)?PORT_READ(in_PREDICT_SORT_INDEX [i]):0;
     31        Tcontrol_t      hit         = PORT_READ(in_PREDICT_REGISTER_HIT         [i][index]);
     32        Tgeneral_data_t address_src = PORT_READ(in_PREDICT_REGISTER_ADDRESS_SRC [i][index]);
     33
     34        log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION,"    * index        : %d"  ,index      );
     35        log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION,"    * hit          : %d"  ,hit        );
     36        log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION,"    * address_src  : %.8x",address_src);
    3137
    3238        // Multiplexor
    3339        PORT_WRITE(out_PREDICT_HIT          [i],hit);
    34         PORT_WRITE(out_PREDICT_ADDRESS_SRC  [i],addr);
     40        PORT_WRITE(out_PREDICT_ADDRESS_SRC  [i],address_src);
    3541        PORT_WRITE(out_PREDICT_ADDRESS_DEST [i],PORT_READ(in_PREDICT_REGISTER_ADDRESS_DEST  [i][index]));
    3642        PORT_WRITE(out_PREDICT_CONDITION    [i],PORT_READ(in_PREDICT_REGISTER_CONDITION     [i][index]));
     
    4248        Tcontrol_t sort_val     = (_param->_have_port_victim)?PORT_READ(in_PREDICT_SORT_VAL   [i]):true;
    4349        Tcontrol_t victim_ack   = (_param->_have_port_victim)?PORT_READ(in_PREDICT_VICTIM_ACK [i]):true;
     50
     51        log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION,"    * val          : %d",val         );
     52        log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION,"    * register_ack : %d",register_ack);
     53        log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION,"    * sort_val     : %d",sort_val    );
     54        log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION,"    * victim_ack   : %d",victim_ack  );
    4455       
    45         PORT_WRITE(out_PREDICT_ACK            [i],         register_ack and sort_val and victim_ack);
    46         PORT_WRITE(out_PREDICT_REGISTER_VAL   [i], val and                  sort_val and victim_ack);
     56        PORT_WRITE(out_PREDICT_ACK            [i], (
     57//                                                  val          and
     58                                                    register_ack and
     59                                                    sort_val     and
     60                                                    victim_ack
     61                                                    ));
     62        PORT_WRITE(out_PREDICT_REGISTER_VAL   [i], (
     63                                                    val          and
     64//                                                  register_ack and
     65                                                    sort_val     and
     66                                                    victim_ack
     67                                                    ));
    4768
    4869        if (_param->_have_port_victim)
    4970          {
    50         PORT_WRITE(out_PREDICT_VICTIM_VAL     [i], val and register_ack and sort_val               );
     71        PORT_WRITE(out_PREDICT_VICTIM_VAL     [i], (
     72                                                    val          and
     73                                                    register_ack and
     74                                                    sort_val     // and
     75//                                                  victim_ack
     76                                                    ));
    5177        PORT_WRITE(out_PREDICT_VICTIM_HIT     [i], hit);
    5278        if (not _param->_is_full_associative)
    53         PORT_WRITE(out_PREDICT_VICTIM_ADDRESS [i], (addr >> _param->_shift_bank)&_param->_mask_bank);
     79        PORT_WRITE(out_PREDICT_VICTIM_ADDRESS [i], (address_src >> _param->_shift_bank)&_param->_mask_bank);
    5480        PORT_WRITE(out_PREDICT_VICTIM_INDEX   [i], index);
    5581          }
    5682      }
    5783
    58     log_printf(FUNC,Branch_Target_Buffer_Glue,FUNCTION,"End");
     84    log_end(Branch_Target_Buffer_Glue,FUNCTION);
    5985  };
    6086
Note: See TracChangeset for help on using the changeset viewer.