System Verilog覆盖率简介

System Verilog覆盖率简介

  • 覆盖率类型:

    代码覆盖率:

    功能覆盖率

    断言覆盖率

  • 覆盖组:

    • 覆盖组可以在程序、模块或类里面定义,他可以采样任意的可见的变量;在sv中,覆盖组应该定义在适当的抽象层次上,一个覆盖组必须在实例化后才可以用来收集数据。

    • 覆盖组的触发:这个过程可以直接使用sample函数来完成,或者在covergroup定义中采用阻塞表达式,阻塞表达式可以使用wait或者@来实现在信号或者事件上的阻塞

    • 使用事件触发的覆盖组:

      event trans_ready;
      covergroup CovPort@(trans_ready);
      	coverpoint ifc.cb.port;
      endgroup
      
    • 使用断言触发的覆盖组

    • 通用的覆盖组

      covergroup Covport(int mid);
      	coverpoint port
              bins hi = {[mid:$]};
      endgroup
      Covport cp;
      cp = new(5);
      
  • 自动创建仓,个数一般为2^N,N为位宽,最大个数缺省为64,超出后会平均分配到各个仓

    covergroup Covport;
    	coverpoint tr.point
        	{options.auto_bin_max=2;} //分成两个仓,限制自动创建仓的个数
    endgroup
    {bins len[]={[0:23]};} //自定义仓
    covergroup Covport;
    	coverpoint tr.point{
            bins zero = {0};  //1个仓代表point==0
            bins lo = {[1:3],5}; //一个仓代表 1 2 3 5
            bins hi[] = {[8:$]}; //point 4bit 8个仓代表8-15
            bins misc = default; //一个仓代表剩余
        }
    endgroup
    

    可以对表达式进行采样

  • 覆盖:

    iff:添加条件

    coverpoint port iff(!bus_if.reset); //reset=1是不要收集覆盖率
    Covport ck = new();
    ck.stop;  //停止收集覆盖率
    ck.start; //开始收集覆盖率
    

    =>:翻转状况,0=>1 是否覆盖信号由0到1的翻转,任何x z ?都会当成0或1的通配符

    bins t1=(0=>1),(0=>2),(0=>3); //是否覆盖0变为1、2、3
    (1,2=>3,4) //四种翻转 1-3,2-3,1-4,2-4
    0=>1=>2 //连续翻转
    from:(0=>1[*3]=>2);  //1重复三次
    from:(0=>1[*3:5]=>2); //1重复三到五次
    

    使用wildcard建立多个状态或翻转

    wildcard bins even = {3‘b??0}; //3bit偶数
    
  • ignore_bins 可以忽略一些数字

    ignore_bins hi = {[6,7]}; 忽略6 7值
    illegal_bins hi = {[6,7]}; 出现则报错
    
  • illegal_bins 采样到会报错

  • 交叉覆盖率:

    kind:coverpoint tr.kind;
    port:coverpoint tr.port;
    cross kind,port;
    cross kind,port{
        ingrone_bins hi = binsof(port)intrsect{7}; //排除所有port为7和任意kind组合的仓
        ingrone_bins md = binsof(port)intrsect{0} && binsof(kind)intrsect{[9:11]}; //排除所有port为7和kind为9 10 11组合的仓
        option.weigth = 10 ; //覆盖率权重,设置为0则不会对总体覆盖率有影响
    }
    
  • option.goal = 90 ; 设置覆盖率目标

  • 覆盖率注释

    可以最为参数传递进入覆盖组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值