code coverage有什么用

本文主要介绍"code coverage有什么用",希望能够解决您遇到有关问题,下面我们一起来看这篇 "code coverage有什么用" 文章。

Code coverage起源于软件测试,它可以描述在测试过程中代码覆盖的程度

与functional coverage不同,Code coverage的分析统计是一个自动过程。因此,将Code coverage整合到现有的仿真流程中非常简单,不需要更改当前的设计或测试平台。

regression run期间实现100%的Code coverage意味着测试平台提供了激活RTL代码中所有结构的激励,但是设计上可能有些功能没有经过验证,仍然存在功能上的Bug。

Code coverage指标无法分析功能验证的情况,但是由于Code coverage的自动化方面的优势,其仍然是验证流程中的一个非常重要的验证指标。

Code Coverage类型

Toggle Coverage

Toggle Coverage用于测量register 或者wire的每个bit toggle的次数。

查看Toggle Coverage分析报告比较费力,而且价值不大,通常用于IP之间的连接检查。此外,Toggle Coverage对于one-hot选择等控制信号也很有用。

Line Coverage
Line Coverage用于分析RTL代码中哪些行在仿真期间被执行。

Line Coverage分析通常会发现,由于代码中的bug或者某些IP特定的配置导致某些代码从未被执行。对于无效的代码,可以选择在Line Coverage统计期间过滤掉,仅关注相关代码。

Statement Coverage
Statement Coverage用于分析RTL代码中哪些语句在仿真过程中被执行。Statement Coverage比Line Coverage更有用,因为一条语句(Statement)通常跨越多行(Line)代码-或多条语句可以在一行代码。

Branch Coverage

Branch Coverage(也称为decision coverage)是分析控制结构(例如if,case,while,repeat,forever,for和loop语句)中布尔表达式覆盖率。

Finite-State Machine Coverage

当今的code coverage分析工具能够识别RTL源代码中的有限状态机。因此,工具可以自动提取FSM code coverage指标。例如,进入状态机中每个状态的次数,从一个状态转换(transition)到其它状态的次数

收集和分析code coverage指标的目的是识别RTL代码中在当前的验证环境中未被执行的部分。

从项目的角度来看,通常最好等到RTL实现接近完成的时候才开始收集和分析code coverage,否则,可能会因为RTL代码的修改,浪费大量没有意义的时间。

在开始收集code coverage之前,先运行一些仿真以解决code coverage流程中的其他问题。

关于 "code coverage有什么用" 就介绍到这。希望大家多多支持编程宝库

如何浅析ASIC物理实现概念中的Milkyway database:本文主要介绍"怎么浅析ASIC物理实现概念中的Milkyway database",希望能够解决您遇到有关问题,下面我们一起来看这篇 "怎么浅析ASIC物理实现概念中的Mi ...