In reply to dave_59:
In reply to hvalec:
This is the correct behavior when forcing variables that are procedurally assigned. A release will not change the value until there is another procedural assignment.
#(1)
Can you use a continuous assignment here instead of always_comb?
#(2)
You could put a wrapper around uvm_hdl_force/release that saves the current value before applying the force, then restores the the saved value before the release.
#(3)
Another option is finding a way to eliminate the forces in the first place, especially using uvm_hdl_force. They are terrible for performance slowing your entire simulation down regardless of how much the force is used.
Thanks for quick reply Dave. Got your point.
Regarding #1, I need to check with designer to change the design which I don’t think designer will do just for the sake of this experiment. There might be certain reasons he would have used always_comb block (might be to avoid multi-drivers, what do you think?)
Regarding #2, Saving the values will not help as “i_a” might change during the forced period. and we’ll end up forcing other values during release.
Regarding #3, I don’t have any other option, btw I am trying to backpressure something in the design, creating real backpressure (to eliminate the need of force itself) is difficult in this scenario as this design hierarchy is very deep inside the design (atlest 9 modules deep).
Do you have any other suggestion for this scenario.
Thanks is advance.