Hi there
What is the difference between using uvm_reg_block::configure() method and uvm_reg_block::add_hdl_path() methods?
These two methods seem to perform the same function with different inputs.
ie., They both try to add prefix to the backdoor hdl_path to a UVM_REG_BLOCK.
My requirement:
A register block has been defined as follows:
class BLOCK extends UVM_REG_BLOCK; (1st level inheritance)
...
end
class SAMPLE_BLOCK extends BLOCK;
...
end
SAMPLE_BLOCK has 2nd level inheritance with UVM_REG_BLOCK.
I wanted to reprogram SAMPLE_BLOCK at different levels of verification hierarchy.
Example:
SAMPLE_BLOCK instance may be present at "top.abc" in block level verification.
SAMPLE_BLOCK has been reused at "top.xxx.abc" in Larger IP level verification.
SAMPLE_BLOCK has been reused at "top.yyy.xxx.abc" in Device or Top level verification.
Please note that at each higher level hierarchy, new prefix gets added to the hdlpath. ie., 'xxx' gets prefixed in Larger IP level verification and 'yyy' gets prefixed in Device level verification.
When I use the add_hdl_path() method, the hdlpath gets linked hierarchically.
When I use the configure() method on SAMPLE_BLOCK, the hdlpath doesnot get linked hierarchically.
Am I missing something here? What's wrong here?
Could this be a bug in UVM_REG?
Best regards
Balasubramanian G