verilog - 使用 with 代替 iff 的功能覆盖问题

标签 verilog system-verilog

module tb;
  logic [1:0] a,b;
  logic sel;
  
  covergroup c;
    option.per_instance = 1;
    coverpoint a{
      wildcard bins a_={2'b??} with (sel);
    }
    coverpoint b{
      wildcard bins b_={2'b??} iff (!sel);
    }
  endgroup
    
    c ci;
    
    initial begin
      ci=new();
      repeat(10) begin
        a=$random;
        b=$random;
        sel=$random;
        $display("%d %d %d",a,b,sel);
        ci.sample();
        #1;
      end
    end
    
endmodule

当我使用 with 时,覆盖范围没有显示,但当我使用 iff 代替 with 时,它就可以工作。我做错了什么?

最佳答案

bin 表达式中的 with 子句在构建 covergroup 时计算一次,并确定作为 a 的一部分创建的 bin 值的集合。 掩护点。由于 sel 此时尚未初始化,因此没有为 coverpoint a 创建 bin。

每次对 covergroup 进行采样时,bin 表达式中的 iff 子句都会被求值,并且实际上是一个样本启用表达式。它对创建的 bin 值的选择没有影响。

很可能使用 iff 符合您的预期行为。

关于verilog - 使用 with 代替 iff 的功能覆盖问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75952333/

相关文章:

syntax - 如何在 SystemVerilog 中以十六进制显示/打印解压类型?

verilog - 如何解释 Verilog 中的阻塞与非阻塞赋值?

verilog - 将位/逻辑向量的 SystemC 结构安全地转换/转换为单个位/逻辑向量

syntax - Verilog:开始后跟冒号和变量意味着什么

verilog - 如何在verilog中给二维数组一个初始值

verilog - $sformat 是否有等效的函数?

verilog - "parameter"和 "localparam"之间的区别

system-verilog - SystemVerilog 界面中 modports 的优势和动机是什么?

system-verilog - System Verilog always_latch 与 always_ff

verilog - 如何在合成的verilog中包含时间延迟?