功能覆盖率入门阶.ppt

上传人:小飞机 文档编号:6245391 上传时间:2023-10-09 格式:PPT 页数:20 大小:226.99KB
返回 下载 相关 举报
功能覆盖率入门阶.ppt_第1页
第1页 / 共20页
功能覆盖率入门阶.ppt_第2页
第2页 / 共20页
功能覆盖率入门阶.ppt_第3页
第3页 / 共20页
功能覆盖率入门阶.ppt_第4页
第4页 / 共20页
功能覆盖率入门阶.ppt_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《功能覆盖率入门阶.ppt》由会员分享,可在线阅读,更多相关《功能覆盖率入门阶.ppt(20页珍藏版)》请在三一办公上搜索。

1、功能覆盖率,定义:功能覆盖率是用来衡量哪些设计特征已经被测试程序测试过的一个标准。1、设计特征?设计的所有的功能点,以及与外部模块交互的全部可能情况。2、设计特征的作用?设计特征,即所有的功能点可以作为功能覆盖点来进行覆盖率测试。,图1 如何获取满意的覆盖率?,由上图得出激励的两种存在形式:定向激励随机激励(CRT),100%的覆盖率也说明不了什么问题!例如:1.覆盖率代码只包含了复位信号的两种状态。2.修改默认的100%的覆盖率要求(option.goal=1),并非说覆盖率不可靠,只能说覆盖率只是反映一个设计验证的方面;假如覆盖率已经100%,但是结果仍然出错,岂不太尴尬!,强调一点:覆盖

2、率信息只是在运行仿真成功时才有效!,覆盖率的两种类型:代码覆盖率功能覆盖率,代码覆盖率:行覆盖率路径覆盖率翻转覆盖率有限状态机覆盖率仿真工具一般都带有代码覆盖率工具,这个是工具的自动进行统计。只检测代码执行的情况,但是对于功能是否正确却不保证。,功能覆盖率:功能覆盖率就是确保设计在实际环境中的行为正确!所以,代码覆盖率和功能覆盖率,以及正确检测(漏洞率)都是相辅相成的,为了验证设计的正确性。检测的对象:设计特征,而不是实际的数据;关注的是设计特征(功能点),而不是数据;(例如现在功能模块的测试,不是关注的是64位或者80位的种种数据组合,而是这些功能区是否覆盖到。),功能覆盖率的支撑覆盖组覆盖

3、组(covergroup),包含了所需要覆盖的一个或者多个点。覆盖组的位置:覆盖组可以定义在类里,也可以定义在程序或模块层次上。覆盖组的用法:覆盖组和类相似,一次定义以后在被实例化以后就可以多次使用。,覆盖组的三种触发方式:1、sample函数,进行覆盖率的收集。例如:covergroup op_check;coverpoint op;endgroup op_check=new();task.op_check.sample();.endtask,2、事件触发 covergroup op_check(posedge clk);coverpoint op;endgroup 事件触发可以根据已有的时

4、间对覆盖组进行触发。这个例子中,我们只在全局时钟信号进行向上翻转的时候,才对覆盖组进行触发。3、断言触发,采样数据和采样时间:采样时间被触发类型限定了采样的时间。采样数据是被包含在覆盖组中的覆盖点。覆盖点因为数据的不同,包含了为覆盖点而生的“仓”。例如,一个覆盖点 opa_check5:0,假如将这个作为覆盖点的话,一共的覆盖点类型一共就有64中情况,假如不限定任何设置,一共将为此覆盖点生成64个仓。假如将这个覆盖点进行覆盖测试的话,如果64种情况完全吻合,覆盖率将是100%,但是显然没有这么高的覆盖率。,仓的生成:1.因为覆盖点而自动生成各种不同的仓。自动建仓的最大个数是64个,可以对仓的个

5、数加以限制。2.可以根据自己的需要对仓进行命名。例如opa_checks,可以将zero,inf等都设置位仓的名称。覆盖点的情况:覆盖点除了使用静态数值作为观测点意外,其他形式的数值也可以作为观测点。枚举类型的变量;条件覆盖率(iff作为关键字,判断某些情况下的覆盖率);翻转覆盖率*(规定数据从某个状态到某个状态,n=n+1);,对某些“坏”点:忽略数值非法仓忽略数值,例如对上述的opa_checks,除了对应位置位的情况以外的其余情况都是可以忽略的数值,因为这些数值从未出现。非法仓,某些数值就不能出现,假如出现的话,就出现错误。(在仿真的同时,假如错误出现可以通过停掉仿真来结束覆盖率收集;也

6、可以为非法数值创建非法的仓,假如命中非法仓,标识错误。),交叉覆盖点(cross):覆盖点不只是可以对单个的点做覆盖率测试,除此以外还可以对关联点进行覆盖率收集。例如覆盖点A有5种情况,B有5种情况,cross以后新的关联覆盖点就有25个仓。交叉覆盖点,最大的一个问题就是因为相关联的点,所以仓的个数可能比较多,所以建议应该最多使用小于等于3个的覆盖点进行交叉。,交叉覆盖点:在单个覆盖点中,非法仓,忽略的仓,用户自定义仓,自动生成等,在交叉的仓中也同样有用。可以通过权重(weight()函数)来将设置覆盖点的权重。例如将某个cross的权重设为零,此时这个cross将不会出现。另外,也可以通过binsof 和 intersect来选中关联覆盖点中的某些点作为覆盖点。,覆盖率收集=采样数据+采样时间!采样数据=通过不同的仓的来保证需要的数据采样,这一点覆盖组做的比我们想象的要人性化和方便,大家自己再看一下就能体会。,THX 西安理工大学509研究室,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号