Specman e:如何禁用实例/单元的覆盖范围?

时间:2014-11-27 09:56:26

标签: specman e function-coverage

sys下的验证环境中,有一个timer_sve的实例。在timer_sve下,我还有其他2个实例:timerocp_master

extend sys {
    timer_sve : timer_sve_u is instance;
};

unit timer_sve_u {
    timer       : timer_u is instance;
    ocp_master  : ocp_u is instance;
};

我只需要为timer收集保险。 我已尝试使用此代码(及其许多其他变体)来禁用ocp_master的覆盖率:

extend sys {
    timer_sve : timer_sve_u is instance;

    setup() is also { // The code to disable ocp_master's coverage
        global.covers.set_cover_block("ocp_u", FALSE);
    };
};

代码已编译并成功运行,但它继续收集ocp_master的覆盖范围... 如何禁用收集ocp_master保险? 真的很感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

方法set_cover_block(...)不将单元作为输入,而是定义覆盖元素的模块(即文件)。尝试更改它以获取您使用覆盖范围定义扩展ocp_u的文件。

我还要做些什么来禁用某些覆盖项目/组/等。将when选项设置为FALSE

extend some_struct {
  cover some_cover using also
    when = FALSE;
};

我的一些猜测:

使用set_cover_block(...)禁用覆盖范围可能无法检测排除的代码覆盖范围(即完全忽略覆盖范围定义),并使模拟运行速度快于使用when选项禁用它。