Jump to content

Should uvm_hdl_force_time be declared automatic?

Recommended Posts


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.:



    uvm_hdl_force_time("a", 0, 1us);

    uvm_hdl_force_time("b", 0, 1us);



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,




Share this post

Link to post
Share on other sites

FYR, AMIQ continuously runs a set of linting checks on various UVM branches to indicate potential issues:




One of the checks addresses your concern:


SVTB.12.1.2 - Tasks defined outside of classes must be explicitly declared automatic or static


For example in the UVM 1.2 release there are several such tasks implicitly static:






Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now