1

我想将命令行覆盖应用于 ovm_sequence 对象,如下所示:

+ovm_set_config_int=*,max_timeout,100000

该字段在宏max_timeout内部声明。ovm_sequence_utils

有什么办法吗?我的理解是 ovm 序列不是 ovm 层次结构的一部分,因此可能无法从命令行修改它们。

4

2 回答 2

2

我不知道有一种机制可以让您从命令行设置配置空间。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

通常我的用途不是那么字面意思,有设置多个值的标志,但这是它的基础。

于 2012-03-13T11:04:44.197 回答
2

通过将以下内容添加到我的 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

这里的关键是需要为序列器设置命令行配置,序列可以使用上述代码获取该配置。

于 2012-03-13T15:57:02.110 回答