前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数字IC笔试题(9)——代码覆盖率、功能覆盖率

数字IC笔试题(9)——代码覆盖率、功能覆盖率

作者头像
FPGA探索者
发布2021-10-25 16:34:51
1.6K0
发布2021-10-25 16:34:51
举报
文章被收录于专栏:FPGA探索者

1. 下列关于代码覆盖率描述错误的是:

答案:AB

2. 代码覆盖率、条件覆盖率和状态机覆盖率均达到 100%,可以认为设计没有问题。

A:正确

B:错误

答案:B

解析:

覆盖率 2 个大方面:代码覆盖率,功能覆盖率。

代码覆盖率包括:

(1)语句覆盖率

(2)条件覆盖率;

(3)分支覆盖率;

(4)状态机覆盖率;

代码覆盖率 100% 不代表功能没问题。

(1)功能覆盖率高但是代码覆盖率低

分析未覆盖到的代码,推断仿真是否有遗漏的功能点,代码是否为冗余或不可达代码;

(2)功能覆盖率低但是代码覆盖率高

仿真用例没有关注到一些功能点,需要修改测试用例。

代码覆盖率:

白盒覆盖率,一般仿真工具都有这个统计功能。代码覆盖率达到 100% 不代表设计没有问题。

(1)分支覆盖率

针对 if…else、case 等分支语句,看代码中设计的分支是否都被测试到了。

针对 if(条件1),只要条件 1 取 true 和 false 都执行过,则这个分支就完全覆盖了。

(2)语句覆盖率

语句覆盖率上不去时,可以查看未覆盖处的代码是测试用例的疏忽、冗余代码或是保护用途的代码,比如case的default;

(3)翻转覆盖率

包括两态翻转(0/1)和三态翻转(0/1/Z),常用的是两态翻转。对于单比特信号而言,若仿真用例使得该信号从0到1和从1到0的翻转均发生,则认为这里的翻转覆盖率是全面的(100%)。

即使翻转覆盖率达到 100%,分支覆盖率和语句覆盖率也不一定达到 100%。

(4)条件覆盖率与表达式覆盖率

条件覆盖率可以看作是对分支覆盖率的补充。每一个分支条件表达式中,所有条件的覆盖。

比如:

if(a&& b)

statement1;

else

statement2;

测试用例:a=1,b = 1 和 a = 0,b = 1

分支覆盖率 100%,两个分支都覆盖了,但是条件覆盖率不是 100%,有判断条件没有被测试到。

(5)状态机覆盖率

如下状态机实现代码中,需要分析其 FSM 覆盖率的分支有哪几个?

A. curr_st 为 1,next_st 为 2;

B. curr_st 为 2,next_st 为 3;

C. curr_st 为 3,next_st 为 0;

D. curr_st 为 0,next_st 为 1;

答案:ABD

解析:

A.curr_st 为 1,next_st 为 2,有这种跳转,对;

B.curr_st 为 2,next_st 为 3,有这种跳转,对;

C.curr_st 为 3,next_st 为 0,没有这种跳转,错;

D. curr_st 为 0,next_st 为 1,有这种跳转,对;

功能覆盖率

又称黑盒测试覆盖率,只关心功能,不关心具体的代码是如何实现的。如果想要统计功能覆盖率,需要在 SystemVerilog 编写的测试用例中添加覆盖组,仿真器基于它来统计功能覆盖率。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FPGA探索者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档