这篇文章主要讲解了“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有什么用”的内容了,经过本文的学习后,相信大家对code coverage有什么用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/219700.html