// do_predictfunctionvoiduvm_reg::do_predict(uvm_reg_itemrw,uvm_predict_ekind=UVM_PREDICT_DIRECT,uvm_reg_byte_en_tbe=-1);uvm_reg_data_treg_value=rw.value[0];m_fname=rw.fname;m_lineno=rw.lineno;if(rw.status!=UVM_HAS_X)rw.status=UVM_IS_OK;if(m_is_busy&&kind==UVM_PREDICT_DIRECT)begin`uvm_warning("RegModel",{"Trying to predict value of register '",get_full_name(),"' while it is being accessed"})rw.status=UVM_NOT_OK;return;end
// do_predictfunctionvoiduvm_reg::do_predict(uvm_reg_itemrw,uvm_predict_ekind=UVM_PREDICT_DIRECT,uvm_reg_byte_en_tbe=-1);uvm_reg_data_treg_value=rw.get_value(0);m_fname=rw.get_fname();m_lineno=rw.get_line();if(rw.get_status()==UVM_IS_OK)beginif(m_is_busy&&kind==UVM_PREDICT_DIRECT)begin`uvm_warning("RegModel",{"Trying to predict value of register '",get_full_name(),"' while it is being accessed"})rw.set_status(UVM_NOT_OK);return;endforeach(m_fields[i])beginrw.set_value((reg_value>>m_fields[i].get_lsb_pos())&((1<<m_fields[i].get_n_bits())-1));m_fields[i].do_predict(rw,kind,be>>(m_fields[i].get_lsb_pos()/8));endrw.set_value(reg_value,0);endelsebegin`uvm_warning("PREDICT_NOK","status UVM_NOT_OK; skip prediction.");endrw.set_value(reg_value,0);