Question

I'd like to apply a command line override to an ovm_sequence object like this:

+ovm_set_config_int=*,max_timeout,100000

The max_timeout field is declared inside ovm_sequence_utils macro.

Is there any way to do it? My understanding is that ovm sequences are not part of the ovm hierarchy, so perhaps they can't be modified from the command line.

Was it helpful?

Solution 2

I got it working (following instructions from http://www.testbench.in/OT_10_OVM_SEQUENCE_5.html) by adding the following to my ovm_sequence in task body():

if(!(p_sequencer.get_config_int("max_timeout",max_timeout)))
  max_timeout = ... // some default value

The key here is that the command line config needs to be set for the sequencer, and the sequence can pick up that config using the above-mentioned code.

OTHER TIPS

I'm not aware of a mechanism that lets you set-up config space like that from the command line. A quick grep of the OVM source doesn't show anything either.

A quick comment on

ovm sequences are not part of the ovm hierarchy

They're not constructed at build time, that's correct. They are created just before they start running on a sequencer, but any ovm_object based class can interrogate a config integer via get_config_int()


Normally I'd use a plus-arg for things like this, and the set the config int in my base test class based on that plus-arg. For example, the command line would have:

+max_timeout=100000

...and then, in my base test class, which all my tests inherit from:

function void build();
    int timeout;
    [....]
    if ($value$plusargs("max_timeout=%d", timeout)) begin
        `ovm_info(get_type_name(), "Setting timeout", OVM_MEDIUM);
        set_config_int("*", "max_timeout", timeout");
    end
    [....]
endfunction

Normally my uses are not quite so literal as that, having flags that set multiple values up, but that's the basics of it.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top