交叉覆盖继承 coverpoint 的 iff 子句
Cross coverage inheriting iff clause of coverpoint
我发现我的一个十字架继承了其中一个组成封面的“iff”子句。
covergroup cg @(LdReqVld_d1);
LdReq_cp : coverpoint LdReqVld_d1 iff (!LdReqCancel);
LdOp_cp : coverpoint LdReqOp_d1 iff (LdReqVld_d1 && !LdReqCancel);
LdCancel_cp : coverpoint LdReqCancel;
CrossCancel : cross LdOp_cp, LdCancel_cp;
我看到 CrossCancel
从未与 LdReqCancel == 1
碰撞任何垃圾箱,即使我期望如此,我怀疑这是因为 LdOp_cp
与包含 iff (LdReqVld_d1 && !LdReqCancel)
,所以 CrossCancel
“秘密地”也有 iff
保护它。这是预期的行为吗?如果是这样,我该如何预防?
A cross
在技术上位于 coverpoint
的 bin 之间,而不是 coverpoint 本身。来自 IEEE 1800-2017 SystemVerilog LRM 部分 19.6 定义交叉覆盖:
Cross coverage of a set of N coverage points is defined as the
coverage of all combinations of all bins associated with the N
coverage points
因此,如果由于 iff
守卫而未对 coverpoint bin 进行采样,则交叉 bin 也会受到守卫。
我发现我的一个十字架继承了其中一个组成封面的“iff”子句。
covergroup cg @(LdReqVld_d1);
LdReq_cp : coverpoint LdReqVld_d1 iff (!LdReqCancel);
LdOp_cp : coverpoint LdReqOp_d1 iff (LdReqVld_d1 && !LdReqCancel);
LdCancel_cp : coverpoint LdReqCancel;
CrossCancel : cross LdOp_cp, LdCancel_cp;
我看到 CrossCancel
从未与 LdReqCancel == 1
碰撞任何垃圾箱,即使我期望如此,我怀疑这是因为 LdOp_cp
与包含 iff (LdReqVld_d1 && !LdReqCancel)
,所以 CrossCancel
“秘密地”也有 iff
保护它。这是预期的行为吗?如果是这样,我该如何预防?
A cross
在技术上位于 coverpoint
的 bin 之间,而不是 coverpoint 本身。来自 IEEE 1800-2017 SystemVerilog LRM 部分 19.6 定义交叉覆盖:
Cross coverage of a set of N coverage points is defined as the coverage of all combinations of all bins associated with the N coverage points
因此,如果由于 iff
守卫而未对 coverpoint bin 进行采样,则交叉 bin 也会受到守卫。