Request to add the method to tell the event when a register's field value (mirrored value) has changed

Hi,

I would like to know if the feature that I explained above is being considered by UVM developer.
This for easily wait until there is a changes on the mirrored value of a register/register’s field.

Currently, I believe we don’t have this capability enabled. And user need to implement their own monitoring logic in their scoreboard or other places in their environment to check if the register’s value has changed.

I just want to check if this is supported currently. If it is not supported, maybe I need to submit a mantis for the feature request.

If we can have something like below, it will be really helpful.


   ral_h.myreg.myfield.wait_changed();
   <then do the stuff after found it has changed>;

Currently, I we have do it as follows. Which I think is troublesome when we want to check the status changes for a lot of registers. As we will have the # everywhere, which may cause the simulation performance issue. So, implementing the event under the UVM register model, may help a lot on this.


   while (ral_h.myreg.myfield.get() != <desired value>)
      #<interval>ns;

Thanks and regards,
Baser

As I have discussed elsewhere, you should not use any timing constructs (# delays) outside of the driver.

Since testbench stimulus should be all sequence based, why not simply poll the register in question using front door bus accesses until the required value is achieved?

Hello Sir,

Even if I use clock and pass as the interface in the way that it will 1000% not break vertical reuse(complete UVM mechanism to pass the interface to UVM using uvm_config_db), and I use that to poll also you still don’t recommend it?

I am asking about how UVM’s developer recommending user to check the changes of a register. I am not trying to do something that will introduce chaos at other level.

**Even if I poll the register by doing frontdoor read or write using frontdoor, we still have a missing mechanism that to allow scoreboard to sense it easily. I am aware about is_busy() and other methods that currently available. But, using those we still need to put a our own wait logics.
In example for scoreboard need to know about some error status happened, and do something according to those scenario, we need an easy way on how to achieve it.
**

That is what I asked, if you guys know the solution for this. What you recommend, please help to share the knowledge, instead of warning on what I shown in the example code that I put there to just show to make someone understand on what I am trying to do.

Another thing is, I am also opposed on using #delay in UVM world of my environment.
But, there will still be a case that we have to use it. For some un-avoided cases, I will use it with # (ie: #100us). So, it could not give bad impact compared to user using just #100.

Thanks,
Baser