Backdoor read access returns UVM_NOT_OK status

Hi,

I tried a backdoor access to a register, the hdl path is set via set_hdl_root_path, the name of register is passed through configure function in regmodel, the status returned is always UVM_NOT_OK, although there is no errors returned by UVM neither warnings, can someone tell me in which cases a backdoor access returned not OK status?

In reply to Mohamed_TN:

Did you check the hdl_path does exist and is correct?

In reply to chr_sue:

Yes, even the read value is correct, I don’t know really what does UVM_NOT_OK means as status !

In reply to Mohamed_TN:

This means the backdoor access was not successful. Could you please check if the write is correct using the simulator means.

In reply to chr_sue:

In reply to Mohamed_TN:
This means the backdoor access was not successful. Could you please check if the write is correct using the simulator means.

I checked the read data on simulator it was correct, I don’t understand how the access is unsuccessful and the returned data is correct !

In reply to Mohamed_TN:

There were a number of UVM_REG bugs around UVM_NOT_OK. Which UVM version are you using and what kind of register are you trying to read?

In reply to dave_59:

I’m using uvm-1.2 version and the register is read-only.

In reply to Mohamed_TN:

Just I checked a real project using backdoor access and I did not find any issue.
I’m using the dedicated methods for backdor, i.e. peek and poke (with UVM 1.1d).
Are you using read and write or also peek and poke?

In reply to chr_sue:

Thanks chr_sue for your trial, in fact I tried both functions read and peek, in your trial you used uvm-1.1, maybe the trick is here waiting for dave if the bugs around UVM_NOT_OK is confirmed in uvm-1.2.

Update,

I did a mistake when I checked the status returned by peek funtion, I did as follow:


if (!status)
‘Uvm_error(“backdoor access is KO”)

And the wrong here is, I wrongly assumed that if access is OK, status is 1, but the status is an enumerated type {UVM_OK, UVM_NOT_OK…
Check !status is equivalent to check status == UVM_OK, since the implicite value of UVM_OK is 0 (appeared first in the enumerated definition), then the error message.

Hi,
Even I’m facing the same issue.
for read and write methods it is returning as UVM_OK.
while doing peek access, method is returning UVM_NOT_OK as status.

Register is RO type.
For backdoor hdl path is properly defined.

Update:
In my case hld path for one of the bit field for wrong.

After running with +UVM_DEBUG I found below display with bit field hdl hierarchy specified in RAL model.
/uvm_reg.svh(2755) @ 10 ns: reporter [RegMem] backdoor_read from …

Cross verification with reg bit field path in design, I found my error.

In reply to MilanKubavat:

Is the RD value correct?

In reply to chr_sue:

Found the issue.
It was incorrect hdl path for one of bit field.

Thank you!