验证计划是验证策略的更具体实施计划。验证策略是在高层次描述对验证的整体规划(目标制定、时间安排、工作流程、验证方法学、版本管理、总体覆盖率进度等)和对RTL进行哪些层面测试,包括UT/IT/ST/FPGA/Emulation/Formal等。验证策略不会涉及验证的详细计划,验证计划就是对验证策略进一步详细地阐述,包括详细时间安排、人力需求、TB结构、配置、提取Verification feature并划分优先级、TB局限性分析、reuse组件、 testcases规划、覆盖率和每个阶段验收标准等等,甚至可以包含coding guideline。验证计划用于规范验证的行为,不仅仅用于决定何时验证可以结束和peer review,也可用于同一个team同事在实现TB功能和testcases时有依据可循。以下是写验证计划时,需要涉及的一些参考点。

1. 介绍整个验证计划涵盖的内容

比如验证对象(DUT)、参考文献、本文档作者和版本迭代、关键缩略词等。

2. 详细介绍下验证对象(DUT)

RTL的主要功能和interfaces。

3. 列出要验证的verification features

可以参考我的另一篇博客(Testpoints分解链接),里面有更详细介绍如何从Spec里提取verfication features。主要就是基于interfaces、基于功能(控制流和数据流)、基于性能和基于架构,当然可能还有其它可靠性、可测性等。
这里面可以把一些designer很关注的feature高亮起来,或者priority提高些。更一步的话,把整个feature如何保证完备性也可以补充下。

4. 历史经验

列一些以往类似项目的借鉴经验和问题清单,特别是bug清单,可以用于举一反三,加强验证。

5. 局限性和假设

这里面可以把一些在当前TB无法验证或不好验证的点,然后给出解决方法,比如让top level覆盖?formal覆盖?或者designer加一些辅助验证信号和coverage等等。
要切记,designer加的辅助验证信号一是designer要加assertion验证过的,二是在TB内也有检查下是否是合理的事件。

6. Testbench结构规划

TB采用的方法学、抽象层次,比如UVM、VMM等。
TB由哪些component组成,比如包含哪些激励组件、checker组件、coverage、metrics、register model等。对于每个component,可以简单介绍下,因为验证计划的下文会更详细地描述component结构和功能。

7. Configuration规划

列出RTL的parameter组合配置,有些RTL可能在不同的parameter下,会实现不同的功能,这些parameter都需要验证,因此要详细列出会验证哪些parameter组合。
列出TB中用到的define宏,比如有些macro在Unit level和Top level要取不同的值。
列出会对RTL registers做一些什么配置,比如random初始化、在testcase运行期间随机更改等。

8. Stimulus规划

激励是很重要的一块内容。验证质量的好坏很大程度上有依赖激励是否有能够有效率地产生完备的场景。在这里要详细描述下,各个stimulus的规划,是random,还是direct等等。Random的话,涉及到constraint;direct的话,又是为什么场景而决定的。其实除了在冒烟和收尾阶段可能约束一些direct stimulus,在其它情况下,最好还是采用random stimulus。
也包括reuse stimulus组件和VIP激励的配置和修改等。

9. Checker规划

Checker也是很重要的内容。激励产生对应场景之后,能否找出RTL bug,直接取决于checker是否完备。在这里要阐述清楚每个checker检查的features包括哪些?白盒还是黑盒检查?在testcase里self-check?SVA?然后阐述下每个checker的结构和检查流程等。

10. Testcases规划

Testcases也是包括random和direct,random testcases应该占到大多数,用于产生最多的场景和覆盖率目标。Direct testcases用于RTL刚开始的冒烟测试和最后收集覆盖率时的corner case。
其实最好整理一个表格,写清楚每个testcase所要产生的RTL scenarios。既方便查缺补漏,也方便别人review。
Testcases可能也会包含一些专门的寄存器测试用例,前门和后门之类的,测试register的默认值、RW/RO/RC/WC/WO等属性。RTL register是否可以正常工作也是非常重要的,通常也会在testcase运行过程中,随机插入一些register访问。

11. Coverage规划

Coverage包含code coverage和functional coverage,有些项目可能还会收集assertion coverage、directive coverage等。在指定EDA tools的options后,它们会自动收集code coverage的,这一块我们可能不用过多操心人为引入错误。对于functional coverage一定要提起重视,它是衡量我们stimulus是否要产生想要场景的重要依据。Fcov一般不会直接发现bug,但对于进一步增强stimulus起着关键作用。我个人是认为fcov要尽早开发,而且多review下fcov是否正确实现和完备的。
**Stimulus、checker和coverage是验证的三大重要点。**Stimulus决定RTL场景的发生,checker负责场景发生后,RTL的功能是正确的,coverage负责分析stimulus是否产生了预期的场景。如果fcov实现不足或实现有误,可能直接导致我们漏验证了某些功能features,这还不一定能否很好发现的。CDV(coverage driven verification),也即基于覆盖率驱动的验证技术,这是一个闭环。如果fcov实现有问题,将直接导致闭环被破坏掉了。
切记,fcov要有完备性和正确性。也可以让designer在RTL里加一些他们感兴趣的cover点。

12. Metrics规划

Metrics可以度量stimulus产生的质量,可以说是coverage的一个补充。比如在验证cpu core的时候,可以实现一个统计各个instruction数目的metrics,用于分析stimulus的合理性,减少simulation在做无用功。很多项目由于进度压力,都不会实现metrics。我是认为如果进度比较紧张,也要实现一些基本的metrics用于分析,防止stimulus走偏了。然后在有充裕时间,再实现其它必要的metrics。
在每个Testcase里可以按照一定的格式在testcase结束时打印metric event的值,然后使用脚本去提取累积起来。想做的更好的话,可以进一步用图表展示出来,更直观。

13. Reuse组件

在一个TB中,不一定所有的组件都要从头开发,有可能组件可能在其它项目有开发过,修改下就可以重用在当前TB,那也是很好的一种选择,节省了开发的时间和精力。
在这里就需要介绍下reuse组件有哪些,它们的功能,会对它们做哪些修改来适配当前TB。

14. VIP的使用

开发一些通用组件所花的时间和经历可能并不划算,比如CHI VIP,关键开发完也不一定是正确的,这时候可以考虑用一些已经开发好了、经过充分验证的VIP,让我们更多地聚焦在RTL上。
在这里列出VIP的版本、功能和使用目的等。

15. 验证基础设施

列一些验证基础设施,比如需要哪些EDA工具及其版本,需要开发和复用的脚本,UVM版本,代码版本管理工具等,这些通用的基础设施在验证策略上应该也会有规定的。因此,这里除了重复的列出之后,还可以列一些特定于当前TB所需要的东西,比如提取log脚本之类的。

16. coding guideline

这个每个项目可能要求不一样。但coding guideline应该是同一个team内,每个人都有遵守的,一方面可以减少coding出错的概率,另一个方面code维护和review起来也方便。这个可以大家一块想,看看有没有好的代码实践经验,都可以放在这里的。
Guideline可以有:变量命名规则,文件结构和文件命名,注释要求,debug log要求,code constructs写法,code对齐,每行最多字符数,变量作用域等等。

17. 时间安排

这个就看整个项目进展规划了。结合项目的关键时间节点作安排当前TB每个阶段需要完成什么事情。比如TB开发程度、regression pass rate、coverage覆盖程度等。

18. 人力安排

根据前面评估的工作量和时间进度,规划需要多少人力才能完成当前TB的验证。

19. 其它

芯片验证系列——验证计划相关推荐

  1. R语言vtreat包的mkCrossFrameCExperiment函数交叉验证构建数据处理计划并进行模型训练、通过显著性进行变量筛选(删除相关性较强的变量)、构建多变量模型、转化为分类模型、模型评估

    R语言vtreat包的mkCrossFrameCExperiment函数交叉验证构建数据处理计划并进行模型训练.通过显著性进行变量筛选(删除相关性较强的变量).构建多变量模型.转化为分类模型.模型评估 ...

  2. Silverlight实例教程 - Validation验证系列汇总

    转自http://www.cnblogs.com/jv9/archive/2010/09/27/1836394.html Silverlight Validation验证系列教程,详细讲解Silver ...

  3. 芯片制造系列全流程:设计、制造、封测

    目录 芯片制造系列全流程(简) 一.芯片制造全流程简介 二.芯片设计 三.芯片制造 四.封装测试 芯片目前分为三个主要环节,分别是设计.制程.封测. 设计水平 制造这一块 最后说说封测这一块 芯片设计 ...

  4. 验证流程--验证层次

    验证等级: 设计者级验证 又称宏验证,是最低级别的,通常由设计者来验证.也就是冒烟测试(smoke test),目的是保证设计可用于"真实"的验证环境,确保设计可以被装载到模拟引擎 ...

  5. SpringBoot-服务端参数验证-JSR-303验证框架

    1. springboot 默认集成了 hibernate-validator,它默认是生效的,可以直接使用. 比如: @RestController @RequestMapping("/h ...

  6. jquery正则表达式验证:验证全是数字

    需求说明: 前端页面使用正则表达式验证输入框中输入的内容全是数字. 代码说明: 这里只介绍正则表达式,其他部分的代码不做介绍.如果有其他需要自行修改即可. 步骤一:建立一个页面可以是html.jsp等 ...

  7. php字段验证规则,详解ThinkPHP中自动验证及验证规则

    本篇文章详细介绍了thinkphp中自动验证及验证规则的方法,希望对学习thinkphp的朋友有帮助! 详解ThinkPHP中自动验证及验证规则 ThinkPHP 内置了数据对象的自动验证功能来完成模 ...

  8. java 判断 框架类型_第10章-验证框架 --- 验证器类型

    第10章-验证框架 --- 验证器类型 可以把验证器分为两个类型: 字段验证器和动作验证器. 字段验证器:只验证提交的表单内的单个字段. 动作验证器:一般验证提交的表单内多个字段的关系.(比如,录入产 ...

  9. php自动验证,ThinkPHP 自动验证及验证规则详解

    ThinkPHP 自动验证 ThinkPHP 内置了数据对象的自动验证功能来完成模型的业务规则验证.自动验证是基于数据对象的,而大多情况下数据对象是基于 $_POST表单 (不是绝对的)创建的. 基本 ...

最新文章

  1. HDLBits 系列(25)独热码有限状态机实现的简单方式
  2. ['1', '2', '3'].map(parseInt) what why ?
  3. 如何理解Generator
  4. Numpy中的array
  5. 40亿移动设备的用户画像和标签架构实践
  6. python交互窗口怎么才能不连着上一个程序_python实现启动一个外部程序,并且不阻塞当前进程...
  7. ABAP程序里设置外部断点,调试时断点怎么也触发不了,该怎么办
  8. 成为最大的独立开源公司,对SUSE意味着什么? | 人物志
  9. Convolutional Sequence to Sequence Learning笔记
  10. jQuery监听文本框值改变触发事件(propertychange)
  11. MariaDB之基于Percona Xtrabackup备份大数据库[完整备份与增量备份]
  12. cobbler报错:No such command: --get-loaders解决方案
  13. vgg16 清华镜像_Python models.vgg16方法代码示例
  14. 【干货】前端开发者最常用的六款IDE
  15. 贴片钽电容封装、尺寸
  16. 人人都是产品经理2.0-04章摘要
  17. Mac上使用docker环境进行C++开发的实践
  18. 装配 Spring Bean 详解https://blog.csdn.net/kkfd1002/article/details/79936447
  19. 存储系统基础知识介绍
  20. ftp工具破解版,你知道有哪几款好用的ftp工具破解版吗

热门文章

  1. 隔年增长的题_行测资料分析中的隔年增长率
  2. 计算机桌面屏幕设置,双显示器设置:如何设置一台电脑两个显示器
  3. 二十六、多孔介质模型(二)-催化器
  4. Win10 如何设置开机密码?又如何更改开机密码为空密码?
  5. 用python帮你看房子
  6. 数字化校园系统php源码,智能中小学数字化校园信息平台
  7. 如何进行硬盘克隆(系统+数据)
  8. 少儿编程要先学会电脑和英语
  9. 又一款 IDEA 全家桶 神器 ja-netfilter-all 插件
  10. Cisco 1700系列路由器的硬件故障检修