我想将命令行覆盖应用于 ovm_sequence 对象,如下所示:
+ovm_set_config_int=*,max_timeout,100000
该字段在宏max_timeout
内部声明。ovm_sequence_utils
有什么办法吗?我的理解是 ovm 序列不是 ovm 层次结构的一部分,因此可能无法从命令行修改它们。
我想将命令行覆盖应用于 ovm_sequence 对象,如下所示:
+ovm_set_config_int=*,max_timeout,100000
该字段在宏max_timeout
内部声明。ovm_sequence_utils
有什么办法吗?我的理解是 ovm 序列不是 ovm 层次结构的一部分,因此可能无法从命令行修改它们。
我不知道有一种机制可以让您从命令行设置配置空间。OVM 源的快速 grep 也没有显示任何内容。
快速评论
ovm 序列不是 ovm 层次结构的一部分
它们不是在构建时构建的,这是正确的。它们是在它们开始在定序器上运行之前创建的,但是任何基于 ovm_object 的类都可以通过 get_config_int() 询问配置整数
通常我会为这样的事情使用 plus-arg,并根据该 plus-arg 在我的基本测试类中设置配置 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
通常我的用途不是那么字面意思,有设置多个值的标志,但这是它的基础。
通过将以下内容添加到我的 ovm_sequence in 中,我得到了它的工作(按照http://www.testbench.in/OT_10_OVM_SEQUENCE_5.htmltask body()
的说明) :
if(!(p_sequencer.get_config_int("max_timeout",max_timeout)))
max_timeout = ... // some default value
这里的关键是需要为序列器设置命令行配置,序列可以使用上述代码获取该配置。