覆盖率指标

本文详细介绍了VCS的覆盖率指标,包括代码覆盖率和功能覆盖率,及其在验证HDL代码中的作用。VCS提供了多种覆盖率类型,如行覆盖率、切换覆盖率、条件覆盖率等。此外,还阐述了VCS覆盖率的执行流程,推荐的执行流程以及URG(Unified Report Generator)在生成覆盖率报告中的应用。
摘要由CSDN通过智能技术生成

1.6.1 关于覆盖率指标

VCS在仿真期间监视HDL代码的执行。 验证工程师可以确定哪些部分代码尚未经过测试,以便他们可以将精力集中在这些领域,以实现100%的覆盖率(通常是不可能的)。 VCS提供两种覆盖技术来测试你的HDL代码:代码覆盖率和功能覆盖率。

代码覆盖率

代码覆盖率(Code Coverage)是反映testcase对被测dut覆盖程度的重要指标,也是衡量验证工作进展情况的重要指标。它也是对验证工作进行量化的重要指标之一,验证工作往往不如设计那样激动人心,一个重要原因之一就是验证难于量化,而代码覆盖率恰恰是解决这一问题的重要指标。

代码覆盖率分为如下几种:

  • 行覆盖率(Line) - 该指标衡量HDL代码已在仿真中执行的语句。
  • 切换覆盖率(Toggle) - 该指标衡量在仿真期间切换的逻辑位。切换简单的意味着位(bit)从0变为1或从1变为0.它是硬件设计中最古老的覆盖率指标之一,可用于寄存器传输级(RTL)和门级。
  • 条件覆盖率(Condition) - 该指标衡量在仿真期间如何评估条件语句中的变量或子表达式。它可以在条件语句中找到其他覆盖率分析无法找到的错误。
  • 分支覆盖率(Branch) - 该指标衡量影响HDL控制流(例如if语句和while语句)的表达式和case语句的覆盖范围。它侧重于影响HDL执行控制流的决策点。
  • FSM覆盖率(FSM) - 该指标衡量状态机的每个合法状态是否已被访问,并且状态之间的每个转换都已被覆盖。
功能覆盖率

功能覆盖检查实现的整体功能。 要执行功能覆盖,必须为DUT中涵盖的功能定义覆盖点。 VCS支持Native Testbench(NTB)和SystemVerilog covergroup模型。 Covergroups由用户指定。 它们允许系统监视变量和信号的值和转换。 它们还可以实现变量和信号之间的交叉覆盖。其中Covergroups和Coverpoints等均是Systemverilo的语法,如果想了解更多,请参考SV LRM或者本系列教程中的systemverilog语法部分。

Chapter 19, “Functional Coverage” in the SystemVerilog LRM IEEE Std. 1800 - 2012

代码覆盖率vcs选项

VCS compile and runtime option

  • 指定要设置的coverage类型
    -cm <options>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值