【sv】功能覆盖率

本文详细介绍了SystemVerilog中的功能覆盖率,包括自动建仓收集不同类型的变量、忽略特定bins、交叉覆盖以及covergroup的多例化。通过示例展示了如何使用结构体和$typename()、$bits()等内置函数提升覆盖率报告的可读性。

功能覆盖率的一些写法,过程记录......

1. 自动建仓,收集 enum类型的变量 (自动建仓的名字可读性较好)

xxx_cp:coverpoint xxx_enum'(xxx);

2. 自动建仓,收集不连续的值

xxx_cp:coverpoint xxx iff (xxx inside {32'h0102????}) {
  wildcard bins xxx_bins[] = {32'h0102????} with (item inside {xxx_q}); //xxx_q 为一些离散的值,checker,激励等其他部分可以共用
}

3. 自动建仓,收集一些特殊值

xxx_cp:coverpoint xxx {
  bins all[] = xxx_cp with($onehot(item));
  bins mod3[] = xxx_cp with(item % 3 == 0);
}

4. ignore bins

xxx_cp:coverpoint xxx {
  bins all[] = {[1:10]};
}
yyy_cp:coverpoint xxx {
  bins all[] = {[1:20]} iff(cond==1);
}
cs_xxx_yyy:cross xxx_cp, yyy_cp {
  ignore_bins ig1 = binsof(xxx_cp) intersect{2} && !binsof(yyy_cp) intersect{[3:6]};
  ignore_bins xxx_eq_yyy = binsof(xxx_cp) with (xxx_cp == yyy_cp);
  //ignore_bins xxxmod = binsof(xxx_cp) with(xxx_cp % 3 == 0) && binsof(yyy_cp) intersect{3} iff(cond==1); //待确认
  ignore_bins xxxmod = binsof(xxx_cp) with(xxx_cp % 3 == 0) iff(cond==1);
}

5.cross(正向bins,而不是去ignore)

cs_xxx_yyy:cross xxx_cp, yyy_cp {

  option.cross_auto_bin_max=0;

  bins cs1 = binsof(xxx_cp) intersect{2} && !binsof(yyy_cp) intersect{[3:6]};

  bins cs2 = binsof(xxx_cp) with (xxx_cp == yyy_cp);

}

6. cp中使用函数返回值

xxx_cp:coverpoint xxx_func() {
  bins all[] = {[1:10]};
}

7. covergroup的多例化 (TODO:后续补充注释)

`define pack_s(name_s,   t0=logic[666:666], d0=d0,   t1=logic[666:666], d1=d1,  t2=logic[666:666], d2=d2,  t3=logic[666:666], d3=d3,  t4=logic[666:666], d4=d4,  t5=logic[666:666], d5=d5,  t6=logic[666:666], d6=d6,  t7=logic[666:666], d7=d7,  t8=logic[666:666], d8=d8,  t9=logic[666:666], d9=d9) \
 \
typedef struct packed { \
  t9 d9; \
  t8 d8; \
  t7 d7; \
  t6 d6; \
  t5 d5; \
  t4 d4; \
  t3 d3; \
  t2 d2; \
  t1 d1; \
  t0 d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值