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.
Can you use a continuous assignment here instead of always_comb?
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.
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.