Как применить переопределения командной строки к объектам SystemVerilog ovm_sequence?

Я хотел бы применить переопределение командной строки к объекту ovm_sequence следующим образом:

+ovm_set_config_int=*,max_timeout,100000

Поле max_timeout объявлено внутри макроса ovm_sequence_utils.

Есть ли способ сделать это? Насколько я понимаю, последовательности ovm не являются частью иерархии ovm, поэтому, возможно, их нельзя изменить из командной строки.


person Victor Lyuboslavsky    schedule 12.03.2012    source источник


Ответы (2)


Я не знаю механизма, который позволяет вам настраивать пространство конфигурации из командной строки. Быстрый grep источника OVM тоже ничего не показывает.

Быстрый комментарий к

последовательности ovm не являются частью иерархии ovm

Они не строятся во время сборки, это правильно. Они создаются непосредственно перед запуском в секвенсоре, но любой класс, основанный на ovm_object, может запросить целое число конфигурации с помощью get_config_int().


Обычно я бы использовал плюс-аргумент для подобных вещей и установил конфигурацию int в моем базовом тестовом классе на основе этого плюс-аргумента. Например, в командной строке будет:

+max_timeout=100000

... а затем в моем базовом тестовом классе, от которого наследуются все мои тесты:

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

Обычно мое использование не так буквально, как это, с флагами, которые устанавливают несколько значений, но это основы этого.

person Paul S    schedule 13.03.2012

У меня все заработало (следуя инструкциям с http://www.testbench.in/OT_10_OVM_SEQUENCE_5.html). ), добавив следующее в мою ovm_sequence в task body():

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

Ключевым моментом здесь является то, что конфигурация командной строки должна быть установлена ​​​​для секвенсора, и последовательность может подобрать эту конфигурацию с помощью вышеупомянутого кода.

person Victor Lyuboslavsky    schedule 13.03.2012