System verilog 将忽略箱添加到已定义的覆盖点

System verilog 将忽略箱添加到已定义的覆盖点,system-verilog,test-coverage,System Verilog,Test Coverage,我正在处理已生成的封面点和封面组。我可以通过`include文件访问coverpoints中的所有coverpoints,但无法直接编辑coverpoints covergroup cg_FOO; apple: coverpoint Atype_e'(sample.apple.value); kiwi: coverpoint Ktype_e'(sample.kiwi.vale); `ifdef MY_COV `include "cg_FOO.svh"

我正在处理已生成的
封面点
封面组
。我可以通过
`include
文件访问
coverpoints
中的所有
coverpoints
,但无法直接编辑
coverpoints

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
,我有一个单独的关联文件。我在这些
`include
d文件中定义了各种
cross
es和未生成的
coverpoints
。但是,我还想为
coverpoints
apple
kiwi
指定某些枚举值,这些值可能对
cg\u FOO
无效

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

apple: coverpoint Atype_e'(sample.value) {
  ignore_bins ignore_FUJI = apple with (FUJI);
}
但是,在每个
covergroup
的每个
coverpoint
中包含一个单独的文件是混乱的,不可行的

到目前为止,我所发现的一切都使得我似乎需要在
coverpoint
结构中指定一个
ignore\u bin
。我怎么能忽略cg_FOO.svh文件(即在
covergroup
中)中的
coverpoint
的某些箱子,但不更改所有生成的
coverpoints


注意,我还有另外两个要处理的
`include
文件,一个在
covergroups
之外,但在包含它们的类中(我将此文件用于宏、变量和函数定义),另一个文件用于在对
covergroups
采样之前定义帮助逻辑(即当
sample
得到定义时).

除非您使用的工具为您提供了访问和修改覆盖率数据库的API,否则您的运气就不好了。箱子很难访问,因为它们没有容易引用的名称,您必须对它们进行扫描。通过将其权重设置为0,可以很容易地从外部排除覆盖点


如果不知道你的覆盖模型是什么样子的,很难给你一个更好的答案。

包含的文件已经包含了箱子,还是仅仅是带有自动箱子的
coverpoint
以及他们自己的几个coverpoints。该文件中的coverpoints会自动生成BIN,我不会显式地编写它们。例如:
overlap\u apple\u kiwi:coverpoint{overlap[0]}
Note
overlap
在其他`
include
文件中定义,并由其他`
include
文件中定义的函数调用设置。似乎我的模拟器不允许我在
covergroup
coverpoint
文件中定义逻辑或函数调用,所以我使用这些`
include
文件。谢谢为了给你及时的反馈,Dave。我在前面看到了这一点,并注意到他们也排除了基于权重的covergroups。但是,我想排除bins(某些无效枚举)。那么,你也提到了另一个StackOverflow问题吗?我只是运气不好,还是你对权重还有其他想法?