1

在我的验证环境下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覆盖率?非常感谢您的帮助。

4

1 回答 1

1

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

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

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

我的一些猜测:

使用禁用覆盖set_cover_block(...)可能不会检测排除的覆盖代码(即完全忽略覆盖定义)并使模拟运行得比使用该when选项禁用它更快。

于 2014-11-27T10:49:52.243 回答