覆盖率介绍(内部培训)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

利用功能覆盖率模型的优势
功能覆盖率提供了一个标志验证工作完成程度的指标。 根据功能覆盖率结果便于重新分配资源,或者调整验证策略。
功能覆盖率及在UVF中的应用
基于功能覆盖率模型的验证流程
编写验证需求文档
基于验证需求文档实现包含 功能覆盖率模型的测试平台 在能够自动统计功能覆盖率的模型的 驱动下,通过随机激励、定向激励、 形式化验证等手段使功能覆盖率达到 100% 验证完成
代码覆盖率及在UVF中的应用
代码覆盖率概要信息查询
带代码覆盖率回归测试后,在 Regression子页面中点中关注的用例或 者ALL,然后就可以在 Coverage子页面中查询代码覆盖率的概要信息。
代码覆盖率及在UVF中的应用
vcs仿真器下代码覆盖率详细信息查询
步骤一:右键点击 Coverage子页面 Code栏,弹出 View Detail对话框。 然后左键点击 View Detail对话框启动 FireFox浏览器自动获取当前窗口 的代码覆盖率详细信息。
代码覆盖率及在UVF中的应用
步骤二:点击覆盖率未达标的模块,查看详细信息。
代码覆盖率及在UVF中的应用
步骤三:选择关心的代码覆盖率类型,查找没有覆盖的情形(工具会自 动用颜色标出),增加测试用例或者修改代码。
行覆盖率详细报告
代码覆盖率及在UVF中的应用
条件覆盖率详细报告
代码覆盖率及在UVF中的应用
当覆盖率点或交叉覆盖率点中的 auto_bin_max或者 at_least选项的设 置和所在的覆盖率组的选项设置不一样时,以覆盖率点或交叉覆盖率点 中的选项设置为准。
功能覆盖率及在UVF中的应用
自创建容器
覆盖率点或交叉覆盖点在没有用户定义的情况下将自动创建容器。如 果覆盖率点的变量有 N bits位宽,那么就会自动创建 2N个容器;如果交 叉覆盖率点的变量是 N bits位宽、M bits位宽的覆盖率点的交叉,那么就 会自动创建 2N×2M个容器。
Functional Coverage High Low
Need more FC Points, including Corner cases Start of project
Good coverage: check bug rate Is design complete? Perhaps try formal tools
覆盖率点的语法
功能覆盖率及在UVF中的应用
交叉覆盖率点的语法
功能覆盖率及在UVF中的应用
覆盖率点及交叉覆盖率点的元素
标签:用来标识覆盖率点。 变量:被采集的信号线、变量或者标签的交叉。 导言:覆盖率点采集的条件。 选项:覆盖率点的控制信息。 容器:分为自创建容器和用户定义容器,交叉覆盖率点只能包含自创建 容器。 忽略容器:不关心的容器。 非法容器:不允许被击中的容器,否则报错。
`OPTION.goal:覆盖率点或交叉覆盖率点的覆盖率目标。 `OPTION.weight:覆盖率点或交叉覆盖率点的权重。 `OPTION.comment:覆盖率点或交叉覆盖率点的注释。 option.auto_bin_max:覆盖率点或交叉覆盖率点自创建的最大容器数。 option.at_least:覆盖率点和交叉覆盖率点的击中门限。
选择覆盖 率类型
工具自动 关联到该 行
选中没有 覆盖的代 码
代码覆盖率及在UVF中的应用
条件覆盖率详细报告
选择覆盖 率类型
工具自动 关联到该 行
选中没有 覆盖的条 件
覆盖率介绍
3
功能覆盖率及在UVF中的应用
功能覆盖率及在UVF中的应用
针对功能覆盖率的验证
建立能够自动统计功能覆盖率的模型,通过该模型,可以方便地得到 当前的功能覆盖率,并根据它调整验证策略,使仿真收敛。
功能覆盖率及在UVF中的应用
覆盖率点和交叉覆盖率点中的变量
覆盖率点的变量是信号线或者变量,由于 ncsim仿真器的限制,覆盖 率点的变量位宽不能超过 32bits,对于位宽比较宽的变量需要分段处理。
交叉覆盖率点的变量是覆盖率点标签的交叉。
功能覆盖率及在UVF中的应用
覆盖率点和交叉覆盖率点中的选项
覆盖率介绍
3 1 3 2 3
覆盖率简介 代码覆盖率及在UVF中的应用 功能覆盖率及在UVF中的应用
覆盖率介绍
3 1
覆盖率简介
覆盖率简介
覆盖率的意义
在传统的验证过程中,验证充分性是靠测试人员的经验保证的。随着 芯片规模越来越大,芯片功能越来越复杂,和一次性流片费用的增加, 怎样解决判断验证充分性的问题逐步成为业内验证工作的热门话题。 随着验证方法学的发展,覆盖率作为一种判断验证充分性的手段已成 为验证工作的主导。
覆盖率简介
覆盖率的分类
从目标上分,可将覆盖率大体分为两类:
代码覆盖率: 作用:检查代码是否冗余,设计要点是否遍历。 被检测对象:RTL代码 检测方法:工具自动生成 功能覆盖率: 作用:检查功能是否遍历。 被检测对象:自定义容器 检测方法:自定义收集条件
覆盖率简介
覆盖率的分类
代码覆盖率可分为: 行覆盖率:表明仿真过程代码中行和语句的覆盖情况。 分支覆盖率:表明代码中的分支覆盖情况(“if-else语句”, “case 语句”, 三元操作符“?:”) 路径覆盖率:表明代码中数据通路的覆盖情况。 条件覆盖率:表明代码中条件语句的覆盖情况。 翻转覆盖率:表明代码中信号的0到1和1到0的翻转情况。 状态机覆盖率:表明状态机中各个状态的覆盖情况。 功能覆盖率可分为: 基于控制的功能覆盖率:属于assertion的范畴 基于数据的功能覆盖率:定义的容器被击中的情况
ncsim仿真器下代码覆盖率详细信息查询
步骤一:右键点击 Coverage子页面 Code栏,弹出 View Detail对话框。 然后左键点击 View Detail对话框启动 iccr图形工具自动获取当前窗口的 代码覆盖率详细信息。
代码覆盖率及在UVF中的应用
步骤二:点击覆盖率未达标的模块,查看详细信息。
功能覆盖率及在UVF中的应用
覆盖率点和交叉覆盖率点
覆盖率点是对一个信号线或者变量可能出现的值的定义。
交叉覆盖率点是对多个相互关联的信号线或者变量可能出现的值的定义。 其变量一般用已定义的覆盖率点的标签。交叉覆盖率点可以是两个或者多 个覆盖率点的交叉。一般来说,最好不超过三个。
功能覆盖率及在UVF中的应用
功能覆盖率及在UVF中的应用
覆盖率组的语法
功能覆盖率及在UVF中的应用
覆盖率组的触发条件
覆盖率组的触发条件采用阻塞表达式 ,当sample_event到来时,覆盖 率组就会自动采集覆盖率信息。可以对覆盖率组例化体调用 start或者 stop 函数来控制覆盖率组的使能和禁止。覆盖率组被例化后,默认是使能的。
综合 vcs和 ncsim仿真器对代码覆盖率的支持情况和仿真开销,UVF采 用行覆盖率、条件覆盖率、状态机覆盖率和分支覆盖率作为代码覆盖率 的判断标准。
代码覆盖率及在UVF中的应用
代码覆盖率报告的生成方法
生成代码覆盖率需要完成以下步骤: 编译期指定覆盖率类型和路径。 运行期指定覆盖率类型和路径。 调用 urg(vcs)或者 iccr(ncsim)工具进行覆盖率合并。 调用 urg(vcs)或者 iccr(ncsim)工具进行解析并输出覆盖率报告。 以上步骤已经全部集成到UVF中,使用者只需带上覆盖率参数进行回 归即可。
功能覆盖率及在UVF中的应用
功能覆盖率模型的工作流程
设置功能点
用大量随机种子运行 受约束的测试用例
检查用例是否通过
存储当前用例覆盖率 信息 修改用例描述或者约 束 合并覆盖率信息,得 到覆盖率
覆盖率不达标
功能覆盖率及在UVF中的应用
UVF中的功能覆盖率模型
UVF的功能覆盖率模型是 SV模型,为了结合 vcs和 ncsim仿真器对 SV 语法的支持情况,功能覆盖率模型可以用下图表示:
功能覆盖率及在UVF中的应用
功能覆盖率计算
覆盖点的覆盖率 = 容器被击中的个数/容器总数×100%
覆盖率组的覆盖率 = ∑覆盖点的覆盖率×覆盖率点的权重 功能覆盖率 = ∑覆盖组的覆盖率×覆盖率组的权重
功能覆盖率及在UVF中的应用
覆盖率组
覆盖率组是一系列描述相近功能的覆盖率点或交叉覆盖率点的集合。每 个覆盖率组可以根据需要自行使能或者禁止,规定了组内覆盖率点或交叉 覆盖率点的触发条件、收集时间,允许覆盖率模型从多个源头收集覆盖率 信息。覆盖率组一经定义,可以例化多份。
Low High Code Coverage
覆盖率介绍
3 2
代码覆盖率及在UVF中的应用
代码覆盖率及在UVF中的应用
工具对代码覆盖率的支持情况
vcs仿真器支持的代码覆盖率: line: 行覆盖率 cond: 条件覆盖率 fsm: 状态机覆盖率 tgl: 翻转覆盖率 path: 路径覆盖率 branch:分支覆盖率 ncsim仿真器支持的代码覆盖率: Block: 行覆盖率和分支覆盖率 Expr: 条件覆盖率 Fsm: 状态机覆盖率 Toggle:翻转覆盖率
注:定义 `OPTION宏 type_option (for vcs) option (for ncsim)
功能覆盖率及在UVF中的应用
覆盖率组定义代码详例
覆盖率组的触发条件 覆盖率组的使能、禁止控制
覆盖率组的例化
功能覆盖率及在UVF中的应用
覆盖率组的分类
在编写覆盖率模型的时候,从功能上来分,可以将覆盖率组分为四类: 端口覆盖率组: 监视端口数据线的跳转,监视端口控制线上的时序组合。 总线覆盖率组: 监视总线数据及功能是否遍历。 寄存器覆盖率组: 监视微机口对 DUT的有效配置是否遍历,监视统计信息、告警信息 是否查看。 验证环境变量覆盖率组: 查看验证环境中的有效配置是否被遍历。
过滤选项: b:行覆盖率 & 分支 覆盖率 e:条件覆盖率 s:状态机覆盖率 t:翻转覆盖率
行覆盖率 分支覆盖率 条件覆盖率
状态机覆盖率
代码覆盖率及在UVF中的应用
步骤三:选择关心的代码覆盖率类型,在Report栏中点击没有覆盖的情 形,工具自动关联到该处,增加测试用例或者修改代码。
行覆盖率详细报告
触发条件
标签
选项
自动
变量 导言 选项 忽略容器 非法容器 标签 变量 导言 选项 自定义容器 忽略容器 非法容器
覆盖率点
覆盖率组
自定义
标签 交叉对象
交叉覆盖率点
导言 选项 忽略容器 非法容器
功能覆盖率及在UVF中的应用
功能覆盖率模型中各元素之间的关系
功能覆盖率模型是一个或者多个覆盖组的集合。 一个覆盖率组可以包含一个或者多个覆盖率点。 一个覆盖率点可以包含一个或者多个自动创建的或者用户定义的容器。 交叉覆盖率点的对象只能是已定义的覆盖率点的标签。 交叉覆盖率点的容器由交叉对象中的容器自动创建。 容器是最小的记录单元。
集成验证阶段,关心的系统的功能,以及模块与模块之间的接口,此 时出口条件为功能覆盖率。一般业内常用的出口条件是:功能覆盖率达 到90%,对没有覆盖率的需给出合理的说明。
覆盖率简介
验证充分性探讨
功能覆盖率高、代码覆盖率低:
验证计划不充分,需要增加功能覆盖点。 代码覆盖率高、功能覆盖率低: 设计没有实现指定的功能。
覆盖率简介
覆盖率与验证阶段பைடு நூலகம்
验证阶段可以分为单元验证(UT)阶段、集成验证(IT)阶段和系统 验证(ST)阶段。
单元验证阶段,关心的是模块功能和模块质量,此时出口条件为代码 覆盖率。一般业内常用的出口条件是:行覆盖率达到100%,分支覆盖率 达到100%,条件覆盖率达到95%,状态机覆盖率达到90%,对没有覆 盖率的需给出合理的说明。
功能覆盖率及在UVF中的应用
覆盖率组中的选项
`OPTION.goal:覆盖率组的覆盖率目标。 `OPTION.weight:覆盖率组的权重。 `OPTION.comment:覆盖率组的注释。 option.auto_bin_max:覆盖率组中覆盖率点自创建的最大容器数。 option.at_least:覆盖率组中覆盖率点的击中门限。 option.per_instance:是否将由一个通用覆盖率组例化的不同覆盖率 组信息分开打印。
相关文档
最新文档