问题描述
我正在使用已经生成的coverpoints
和covergroups
。我有一种方法可以通过coverpoints
文件访问covergroup
中的所有 `include
,但是不能直接编辑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
,我有一个单独的关联文件。我在这些cross
d文件中定义了各种coverpoints
和非生成的 `include
。但是,我还想为coverpoints
apple
和kiwi
指定某些枚举值,这些枚举值可能对cg_FOO
无效。
如果我能够更改每个掩护点,则只需执行以下操作:
apple: coverpoint Atype_e'(sample.value) {
ignore_bins ignore_FUJI = apple with (FUJI);
}
但是,将单独的文件包含在每个coverpoint
的每个covergroup
中是很麻烦且不可行的。
到目前为止,我发现的所有内容似乎都需要在ignore_bin
结构内指定coverpoint
。
coverpoint
中忽略covergroup
的某些bin?而不更改所有生成的coverpoints
)?
请注意,我还有两个其他 `include
文件可以使用,其中一个在covergroups
之外,但在包含它们的类中(我正在使用此文件进行宏,变量和函数定义) ,以及另一个文件,用于在covergroup
被采样之前(即sample
被定义时)定义帮助逻辑。
解决方法
除非您使用的工具为您提供访问和修改Coverage数据库的API,否则您将不走运。垃圾箱很难访问,因为它们没有简单的名称来引用它们,您必须浏览它们。通过将权重设置为0,很容易从外部排除掩护点。
不知道您的覆盖模型到底是什么样子,很难为您提供更好的答案。