Hi All ,
In my Testbench the Environment creates the top-most register block and then calls lock_model() .
However in the main_phase() of my test just before startting hw_reset_seq I observe that for certain volatile fields , set_compare( UVM_NO_CHECK ) is called .
The function makes the volatile fields act as non-volatile thus flashing uvm_error incase a mismatch is observed in default value of registers with volatile fields
( made non-volatile in main_phase later on )
I was wondering how is it possible since lock_model was called in build_phase() of environment itself .
Why is it that the UVM allows change after calling lock_model ?
Which method calls are considered valid although lock_model() has been called ?
On the flip-side which methods are considered illegal once lock_model() has been called .
One scenario I though of is Dynamic Address Mapping
Eg : Can I call set_base_addr for register map after lock_model()