在设计中有一个4位的总线,因此alfa[3:0]
,我想制作一个封面组,显示所有位是否都是0和1。
这样做的一种方法是写出来:
covergroup alfa_cv @(posedge clk);
coverpoint alfa[0];
coverpoint alfa[1];
coverpoint alfa[2];
coverpoint alfa[3];
endgroup
alfa_cv alfa_covergroup = new;
但有没有更简单的方法来制作覆盖点以覆盖总线中的每个位?
答案 0 :(得分:1)
通常代码覆盖范围包括切换覆盖率。你不应该为此创建一个封面组。但是你可以创建一个covergroups数组
covergroup cg(input int index, ref bit [31:0] bus) @(posedge clk);
each_bit: coverpoint bus[index];
option.per_instance = 1;
endgroup
cg cgbits[32];
for (int index=0; index<$size(alfa);index++)
cgbits[index] = new(index,alfa);
答案 1 :(得分:0)
正如大家在这里提到的那样,你不需要为此目的编写一个封面组,因为切换覆盖范围将会照顾它。
但是,如果你想编写一个封面组,那么你可以直接使用alfa
作为封面,如下所示。
covergroup alfa_cv @(posedge clk);
coverpoint alfa;
endgroup