In UVM_REG, what is the intended behavior when a write to a register triggers a bus error? I would expect that the mirrored value is not updated as long as I signal the bus error inside the bus2reg method of my reg_adapter. Here is a slightly modified excerpt from the user guide.
virtual function void bus2reg(uvm_sequence_item bus_item, ref uvm_reg_bus_op rw);
apb_rw apb;
if (!$cast(apb,bus_item)) begin
`uvm_fatal("NOT_APB_TYPE", "Provided bus_item is not of the correct type")
return;
end
rw.kind = apb.kind ? UVM_READ : UVM_WRITE;
rw.addr = apb.addr;
rw.data = apb.data;
rw.status = apb.error ? UVM_NOT_OK : UVM_IS_OK;
endfunction
I see that even in cases when the APB bus signals an error and I set the status in the rw as UVM_NOT_OK, the mirrored and the desired values of my registers get updated. Am I interpreting this UVM_NOT_OK thing wrong?