首页 > 解决方案 > 将 ignore_bins 添加到已定义的覆盖点

问题描述

我正在使用已经生成的coverpointscovergroups. 我有办法通过文件访问所有内容coverpoints,但无法直接编辑。covergroup `includecoverpoints

covergroup cg_FOO;
  apple: coverpoint Atype_e'(sample.apple.value);
  kiwi: coverpoint Ktype_e'(sample.kiwi.vale);

  `ifdef MY_COV
    `include "cg_FOO.svh"
  `endif
end group: cg_FOO

cg_FOO.svh 就是一个例子covergroup,但是使用另一个生成covergroup的我有一个单独的关联文件。我在这些d文件中定义了各种crosses和非生成。但是,我还想为 和 指定某些枚举值,这可能对.coverpoints `includecoverpoints applekiwicg_FOO

如果我能够更改每个覆盖点,我只需执行以下操作:

apple: coverpoint Atype_e'(sample.value) {
  ignore_bins ignore_FUJI = apple with (FUJI);
}

coverpoint但是,在每个文件中包含一个单独的文件covergroup是混乱且不可行的。

到目前为止,我发现的一切都让我觉得我需要指定一个ignore_bin内部coverpoint结构。coverpoint我怎么能从我的cg_FOO.svh 文件中忽略 a 的某些箱(即在 中covergroup,但不更改所有生成的coverpoints)?

请注意,我还有 2 个其他 `include文件要使用,一个在包含它们的类之外但在包含它们的类内部(我将此文件用于宏、变量和函数定义),另一个文件在s getcovergroups之前定义帮助逻辑covergroup采样(即sample定义时)。

标签: system-verilogtest-coverage

解决方案


除非您使用的工具为您提供了访问和修改覆盖率数据库的 API,否则您很不走运。垃圾箱很难访问,因为它们没有简单的名称来引用它们,您必须浏览它们。通过将它们的权重设置为 0,可以很容易地从外部排除覆盖点。

在不确切知道您的覆盖模型是什么样子的情况下,很难给您一个更好的答案。


推荐阅读