Hi,
The current issue is when I frontdoor write to a register with 0x0000_0001, and after that I backdoor read the same register, the value obtained back is the previous value, which is 0x0000_0000. If I put a #1 in between these 2 transactions, it works fine.
However, in sequence I would like to avoid using this #1 workaround. I googled and wait_for_change is mentioned. And since it is a virtual method, I can have my custom method to override that. The example provided is to use hierarchical path to wait for clock, etc. which I believe in UVM register, there might have a way (or event to trigger) when the value completely written to the DUT only finish the transaction.
Thanks for your reply, I quickly modified the code to add the wait(rg.is_busy == 0); before the backdoor read, the result is still the same.
When I looked at the waveform, actually at that tick of time, the data is being written to the DUT, and backdoor read at the same time⦠possibly the scheduler of event that put the backdoor read first then only DUT gets updated, which cause the backdoor read reads the previous value.
when you are rg.write(status, value, UVM_FRONTDOOR, map, this); operation, it will consume time and you get the acknowledgement from the RTL, then your next operation will perform which is rg.read(status, value1, UVM_BACKDOOR, map, this);.
But from your quick try result, I have doubt on your write operation. May be RTL is not able to give the acknowledgment of your write operation or there is some issue with the TB. May be your TB is not waiting for an acknowledgement and that is why your rg.read(status, value1, UVM_BACKDOOR, map, this); is performed at the same time.
There are possible way to debug is :
Check your TB, whether it is able get the proper acknowledgement from the RTL or not?
Check the value of enum uvm_status_e passed as a status in the write operation argument. It should be UVM_IS_OK. If it is not then there is some issue with the write operation(TB Component).
Regards,
Chetan Shah
Sr. ASIC Verification Engineer (Level-1) | ASIC
Product Engineering Services
Software | Embedded | Semiconductor www.einfochips.com/
Frost & Sullivan Company of the Year 2013-14