RAL Model Doubts

In reply to rkg_:

You cannot modify a RO register using the write command. It is doing nothing but returns UVM_IS_OK.
If you want to modify such a register you have to use the backdoor access (poke is the best command).
If you have a volatile register this content can be modified directly from the DUT. If this happens between the write and the read command you’ll see a different value. Most volatile registers are RO.
You are right all read values are 0. I was looking to the write command (bus2reg) report data.

I do not understand your create command for the field. You are using

this.ADDR = uvm_reg_field::type_id::create("ADDR",,get_full_name());

But it should be simply

ADDR = uvm_reg_field::type_id::create("ADDR");