系统Verilog中的Coverpoints

时间:2018-12-04 11:52:45

标签: system-verilog

是否可以根据参数从特定组中排除某些掩护点?

covergroup NEW (string for_exclusion) @ (clk);
option.per_instance = 1;
option.comment = for_exclusion;

apples: coverpoint (available) { bins hit1 = {1'b1};}
bananas: coverpoint ({not_available, less}) {bins hit1 = {1'b1};}
oranges: coverpoint ({available, less}) {bins hit1 = {1'b1};}
rose: coverpoint ({available, flower}) {bins hit1 = {1'b1};}

这是原始文件的一小部分。我想根据我已经在模块中传递的参数 parameter IDENTITY = 2'b00 从此掩护组中排除“玫瑰”。有没有办法做到这一点? (请忽略语法错误,如果有的话。我现在不担心它们)

我尝试使用它,但是它没有作用。

covergroup NEW (string for_exclusion) @ (clk);
option.per_instance = 1;
option.comment = for_exclusion;

apples: coverpoint (available) { bins hit1 = {1'b1};}
bananas: coverpoint ({not_available, less}) {bins hit1 = {1'b1};}
oranges: coverpoint ({available, less}) {bins hit1 = {1'b1};}

generate
if (IDENTITY = 2'b01) begin
rose: coverpoint ({available, flower}) {bins hit1 = {1'b1};}
end
endgenerate`

1 个答案:

答案 0 :(得分:0)

在声明另一个结构的中间不能使用generate。您可以将那个Coverpoint分离到另一个Covergroup中,而不基于另一个参数来构造/采样它吗?

另一种选择是根据该参数将覆盖点的权重设置为0。您可以在构建Covergroup之前或之后使用过程代码来完成此操作。

if (IDENTITY != 2'b01)
  NEW::rose::type_option.weight = 0;

或在掩护点内

rose: coverpoint ({available, flower}) {
  bins hit1 = {1'b1};
  option.weight = (IDENTITY == 2'b01};
}