UVM RAL and volatile fields X prediction

In reply to Rsignori92:

I cannot speak to UVM 1.1d, but UVM 1.2 has the following (in uvm_ral_field in configure():
m_check = volatile ? UVM_NO_CHECK : UVM_CHECK;
Thus it will not check between the read value (from RTL) and the expected for that field.
in uvm_reg::do_check()

So that is not my issue. It still will call do_predict()
That updates m_mirrored, m_desired, and this.value in the field and register.

My contention is that this should be controllable, so that if you add a monitor on the RTL signal, and then update the RAL “in real time”, that these should be disabled.

It literally states that “it cannot be predicted” [unless you white box it].

I understand why they would do what they are doing. It is as close as you can get without that white box monitoring.

If your suggestion is working, I would like to know, are you hooking the cb.post_predict(…) then to replace what was read by what IS? I think this is my only choice at this point.