我想一个命令行覆盖应用到像这样的ovm_sequence对象:如何将命令行覆盖应用于SystemVerilog ovm_sequence对象?
+ovm_set_config_int=*,max_timeout,100000
的max_timeout
字段内ovm_sequence_utils
宏声明。
有没有办法做到这一点?我的理解是,ovm序列不是ovm层次结构的一部分,所以也许他们不能从命令行进行修改。
我想一个命令行覆盖应用到像这样的ovm_sequence对象:如何将命令行覆盖应用于SystemVerilog ovm_sequence对象?
+ovm_set_config_int=*,max_timeout,100000
的max_timeout
字段内ovm_sequence_utils
宏声明。
有没有办法做到这一点?我的理解是,ovm序列不是ovm层次结构的一部分,所以也许他们不能从命令行进行修改。
我得到它的工作(从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
这里的关键是,在命令行配置需要为序进行设置,并且序列可以使用上述代码来获取该配置。
我不知道有一种机制可以让你像命令行那样设置配置空间。 OVM源的一个快速的grep也不显示任何东西。
上
OVM序列快速评论不是OVM层次
他们不是在构建时构建的一部分,这是正确的。他们创造,他们开始在序运行之前,但任何基于ovm_object类都可以通过询问get_config_int()一个配置整数
通常我会使用一个设定的加精氨酸这样的事情,和我的基础测试类中的config int基于那个plus-arg。例如,在命令行必须:
+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
通常我的用途是不那么字面因为它具有设置多个值的标志,但这是它的基础。