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_OOO_Engine/OOO_Engine/Special_Register_unit/src/Special_Register_unit_transition.cpp

    r97 r98  
    2222  {
    2323    log_begin(Special_Register_unit,FUNCTION);
     24    log_function(Special_Register_unit,FUNCTION,_name.c_str());
    2425
    2526    if (PORT_READ(in_NRESET) == 0)
     
    3839                        throw ERRORMORPHEO(FUNCTION,toString(_("Register [%d][%d] is not implemented.\n"),k,l));
    3940#endif
    40                       log_printf(TRACE,Special_Register_unit,FUNCTION,"Reset SPR [%d][%d][%d][%d]",i,j,k,l);
     41                      log_printf(TRACE,Special_Register_unit,FUNCTION,"  * Reset SPR [%d][%d][%d][%d]",i,j,k,l);
    4142                      _spr [i][j][k][l]->reset();
    4243                    }
     
    5253            if (PORT_READ(in_SPR_ACCESS_WEN [i]))
    5354              {
     55                log_printf(TRACE,Special_Register_unit,FUNCTION,"  * SPR_ACCESS [%d]",i);
     56
    5457                Tcontext_t     front_end_id = (_param->_have_port_front_end_id)?PORT_READ(in_SPR_ACCESS_FRONT_END_ID [i]):0;
    5558                Tcontext_t     context_id   = (_param->_have_port_context_id  )?PORT_READ(in_SPR_ACCESS_CONTEXT_ID   [i]):0;
     
    5760                Tspr_address_t num_reg      = PORT_READ(in_SPR_ACCESS_NUM_REG   [i]);
    5861
     62                log_printf(TRACE,Special_Register_unit,FUNCTION,"    * front_end_id : %d",front_end_id);
     63                log_printf(TRACE,Special_Register_unit,FUNCTION,"    * context_id   : %d",context_id  );
     64                log_printf(TRACE,Special_Register_unit,FUNCTION,"    * num_group    : %d",num_group   );
     65                log_printf(TRACE,Special_Register_unit,FUNCTION,"    * num_reg      : %d",num_reg     );
     66
    5967                SR * sr = static_cast<SR*>(_spr [front_end_id][context_id][GROUP_SYSTEM_AND_CONTROL][SPR_SR]);
    6068
    6169                Tcontrol_t sm    = sr->sm   ;
    6270                Tcontrol_t sumra = sr->sumra;
     71                Tcontrol_t valid = _spr_access_mode [front_end_id][context_id]->write(spr_address_t(num_group,num_reg),
     72                                                                                      sm,
     73                                                                                      sumra);   
     74                log_printf(TRACE,Special_Register_unit,FUNCTION,"    * SM           : %d",sm);
     75                log_printf(TRACE,Special_Register_unit,FUNCTION,"    * SUMRA        : %d",sumra);
     76                log_printf(TRACE,Special_Register_unit,FUNCTION,"    * valid        : %d",valid);
    6377
    64                 if (_spr_access_mode [front_end_id][context_id]->write(spr_address_t(num_group,num_reg),
    65                                                                        sm,
    66                                                                        sumra))
    67                   _spr[front_end_id][context_id][num_group][num_reg]->write(PORT_READ(in_SPR_ACCESS_WDATA [i]));
     78                if (valid)
     79                  {
     80                    Tspr_t wdata = PORT_READ(in_SPR_ACCESS_WDATA [i]);
     81
     82                    log_printf(TRACE,Special_Register_unit,FUNCTION,"    * wdata        : %.8x",wdata);
     83
     84                    _spr[front_end_id][context_id][num_group][num_reg]->write(wdata);
     85                  }
    6886               
    6987              }
Note: See TracChangeset for help on using the changeset viewer.