SystemVerilog 覆盖率

本文详细介绍了SystemVerilog中的覆盖率,包括覆盖率类型、覆盖组、采样触发、数据采样和覆盖选项等。覆盖组(covergroup)是覆盖率收集的核心,可以定义coverpoint和交叉覆盖率(cross),并可通过sample()函数采样。文中还提到了如何控制采样事件、自定义bin、使用ignore_bins排除不关心的值,以及设置覆盖选项如per_instance、comment、at_least和goal等。
摘要由CSDN通过智能技术生成
  • 覆盖率是衡量测试验证完备性的一个通用词语。
  • 覆盖率工具会在仿真过程中收集信息,然后进行后续处理并且得到覆盖率报告。
  • 通过这个报告找出覆盖之外的盲区,然后修改现有测试或者创建新的测试来填补这些盲区。

覆盖率类型

  • 行覆盖率
  • 路径覆盖率
  • 翻转覆盖率
  • 状态机覆盖率 

覆盖组

  • 覆盖组(covergroup)和类相似,一次定义后可以便多次实例化
  • 一个covergroup可以包含一个或者多个coverpoint,且全部在同一时间采集
  • covergroup可以定义在类中,也可以定义在interface或者module中
  • covergroup可以采样任何可见的变量(程序变量、设计端口、接口信号)
  • 一个类里可以包含多个covergroup
  • 当拥有多个独立的covergroup时,需要自行使能或禁止
  • 每个covergroup可以定义单独的触发采样事件,允许从多个源头手机数据
  • covergroup必须被例化才可以用来收集数据

1. covergroup CovPort;  //定义
      coverpoint tr.port;
    endgroup

2.  CovPort cg1 = new(); //例化

3.  cg1.sample(); //采样

covergroup的采样触发

  • 直接通过sample()函数完成
  • 在covergroup中用阻塞表达式或者使用wait或@实现在信号或事件上的阻塞

covergro

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值