UVM RAL backdoor access

Hi,

Can RAL backdoor read be done in monitor?
If yes, a lead to the code help me a lot.

Thanks,
Pavan

In reply to Pavan Acharya G:

Yes, if you have access to the register model you can do whatever you want, for that you just need to catch the register model from uvm_config_db inside a function or even an task. For example:



regmodel regmodel_inst;

function void build_phase(uvm_phase phase);
  
  super.....

  uvm_config_db#(regmodel)::get(null, "*", "regmodel", regmodel_inst);

endfunction : build_phase


Note that depends on the usage of your register model you will need to connect then to the local register model instance using the connect_phase function:



function void connect_phase(uvm_phase phase);
 
  super....

  regmodel_inst = from_some_place.regmodel_inst;

endfunction : connect_phase

In reply to Valmor:

regmodel_inst = from_some_place.regmodel_inst;

Here, what “from_some_place” refers to?

In reply to Pavan Acharya G:

Hi,
Can RAL backdoor read be done in monitor?
If yes, a lead to the code help me a lot.
Thanks,
Pavan

It is common practice to put the register model into a configuration object passing thius to the configuration_db. Then you can retrieve your register model in any place where you need it, also in a monitor. Finally you cannot start a read to the register model from the monitor, because the monitor is absolutely passive! But you can have a handle to the register model in your monitor and observe the content of the registers.

In reply to chr_sue:

Finally you cannot start a read to the register model from the monitor, because the monitor is absolutely passive! But you can have a handle to the register model in your monitor and observe the content of the registers.

Can you please elaborate this?
Thanks

In reply to Pavan Acharya G:

Any RD/WR to the RAL requires a sequence and sequences are executed in the sequencer the seq_items generated are processed byx the driver and not by the monitor.

If you have a handle to the register model in the monitor you can observe the register content directly because there is a path to all registers.

In reply to Pavan Acharya G:

Configuration object.

In reply to chr_sue:
In reply to Valmor:

I’m able to read the value in monitor. Thanks for the help.