Hello,
it's the first time I post in UVM forums, and I hope I have chosen the right way to highlight a possible problem in UVM (up to 1.2, as far as I know).
The issue is that:
task uvm_hdl_force_time(string path, uvm_hdl_data_t value, time force_time = 0);
is not declared "automatic". This has caused me some problems when trying to call it concurrently from 2 separate threads, e.g.:
fork
uvm_hdl_force_time("a", 0, 1us);
uvm_hdl_force_time("b", 0, 1us);
join_none
Essentially only one signal was forced.
I had to copy the code in another task and declare it as "automatic" (by the way, I needed the force_time argument to be realtime, it would be nice to add such a task to UVM as well):
task automatic my_hdl_force_realtime(string path, uvm_hdl_data_t value, realtime force_time=0ns);
I suspect that this is not the only task/function having this problem in UVM, so this can be a more general issue.
Can someone please give me some feedback about this?
Thanks in advance,
Lanfranco