如何根据交叉覆盖点的总和来限制交叉点仓? binsof 是什么意思?

How to restrict a cross point bin based on the sum of crossed coverpoints? and what's the meaning of binsof?

我得到两个 3 位信号 ab,合法值为 0-4。

我试图建立一个交叉点,如果总和也在 0-4 范围内,我只考虑覆盖率。这样做的首选方法是什么?我有一个似乎可行的解决方案,但我在某些地方猜到了 ...

covergroup CG_operands @(posedge clk);
   coveproint a { illegal_bins hi = {[5:$]}; }
   coveproint b { illegal_bins hi = {[5:$]}; }
   cross a, b { illegal_bins hi = binsof(a) with (a + b > 4) }
endgroup

binsof(a) 部分有什么作用?如果我将其更改为 binsof(a) && binsof(b) ,覆盖率报告似乎没有任何变化。是否可以完全跳过 binsof 部分?

我还可以使用 > 4 使覆盖点条件看起来更像十字的 with 条件吗?

binsof 运算符用于 select 来自 coverpoint 的 bin 子集。但是由于您正在 select 处理整个封面点 a,因此使用 binsof(b)binsof(a) && binsof(b) 之间没有区别。你可以写

ab: cross a, b { ignore_bins hi = ab with (a + b > 4); }