In reply to chr_sue:
Not sure what you mean, so maybe this needs more context.
In our bench, for each register field with a corresponding DUT memory element we do a setup call like this.
reg.add_hdl_path_slice(.name("DUT_reg_name"), .offset(bit_num), .size(1));
When we do a field.peek() call to the corresponding register field we are able to see the value which corresponds to that memory element in the waves. This allows us to write a sequence which does a field.write() front-door access. Then a loop polls with field.peek() to verify that the field asserts afterwards and that the DUT subsequently cleared it. That is working code.
The problem is our new DUT has an indirect register access. We changed our register adapter to work properly, it just takes longer. Now the DUT register memory element asserts and clears before the front-door field.write() even finishes.
That is why we need a back-door peek to work separately from the front-door write. This is a specific register test. The value is verified 0 through peek before testing this register. If a fork is used the polling loop can begin at the same time as the front-door write. So there's no chance of missing the DUT memory element assertion.
It would be helpful if you have any ideas on how it might be possible. Thanks.