System verilog systemverilog转换功能覆盖范围中的过滤器箱

System verilog systemverilog转换功能覆盖范围中的过滤器箱,system-verilog,System Verilog,是否有办法限制在系统Verilog覆盖点的过渡覆盖范围内生成的BIN 例如,我想介绍到某个值的转换,以及从某个值到另一个值的转换,但我不关心到/从什么转换,我也不想为讨论中的每个“某个值”写一个单独的bin module a ; logic [7-1 : 0] b; covergroup c ; cp_aaa : coverpoint b { bins tr [] = ([0:128] => [0:128]) ; } endg

是否有办法限制在系统Verilog覆盖点的过渡覆盖范围内生成的BIN

例如,我想介绍到某个值的转换,以及从某个值到另一个值的转换,但我不关心到/从什么转换,我也不想为讨论中的每个“某个值”写一个单独的bin

module a  ;
   logic [7-1 : 0] b;

   covergroup c ;
      cp_aaa : coverpoint b {
         bins tr [] = ([0:128] => [0:128]) ;
      }
   endgroup
endmodule
产生2^14个垃圾箱,数量过多

如果能够有如下伪代码,那就太好了:

bins tr [] = (notq => q)
   for q inside {[128-1:0]}
   where notq != q && notq inside {[128-1:0]};
让它只生成128个垃圾箱

是的,在这个特定的例子中,这几乎等同于说
bin tr[]={[128-1:0]}
,但我对原理感兴趣


理想情况下,有一种方法可以按程序(而不是以声明方式)生成存储箱…

我不会尝试使用转换存储箱,因为它太复杂了。使用
交叉符号

covergroup c;
currvalue: coverpoint q {
   bins v[128] = {[0:127]};
}
prevvalue: coverpoint prevq {
   bins v[128] = {[0:127]};
}
X: coverpoint q != prevq {
   bins xx = {1};   // 1 bin
}
to: cross currvalue,X; // creates 128 cross bins
away: cross prevvalue,X; 

endgroup

我没有尝试这个,因为您没有给出完整的示例,但应该可以让您接近。

正如我所说,我没有尝试过。我缺少一个
[
。您需要提供一个完整的示例来测试它。