验证是确保设计和预定的设计期望一致的过程,设计期望通常是通过设计规范来定义的。对于芯片设计,在不同的阶段可以分为:寄存器传输级(RTL)的功能验证、门级的仿真验证、形式验证以及时序验证。我们通常所说的验证一般是指RTL验证。

验证工作根据设计规范进行,详细的设计规范是RTL编码的依据,也是验证工作的依据。当验证过程发现被测设计(DUT)的响应与验证平台(Testbench)的期望不符时,需要根据设计规范判断是DUT出现错误还是Testbench出现错误,因此完整的、详细的设计规范是验证工作的重要起点。 当验证工程师拿到设计规范后,就可以开展验证工作了,验证工作可以分成三个阶段:计划阶段,实施阶段和分析总结阶段。

计划阶段主要工作是充分理解设计规范,根据设计规范提取验证需求和编写验证计划。验证计划中,需要提取验证需求,制定验证策略,确定验证语言和验证方法学,验证方法,验证平台的层次和架构,规划测试用例及结果检查机制等等。总之后续验证工作中需要的事物都可以在验证计划中体现出来。对于一个被测设计而言,验证的目的是确保该设计能成功的完成预期的任务,准确的表达设计规范,除了理解设计规范的细节之外,还需要明确预定功能的设计边界。比如我们在测试一个MP3产品时,不能测试是否可以打电话,但一般要测试广播功能,也就是说边界之外的功能是不用去关心的。

实施阶段是根据验证计划来编码实现验证DUT的过程,主要包括搭建验证平台,创建测试用例,开发仿真及统计分析脚本,用例的运行及调试。验证平台主要用于产生激励,把激励施加到DUT上去,捕捉响应并进行正确性检查。同时还会对平台代码的层次化、重用性、功能覆盖率、代码的仿真性能和自动化方面做一些考量。验证一般使用专有的硬件验证语言(HVL),并使用验证方法学建立一个可升级、可预期、可重用的验证环境。当前主流的验证方法有基于Specman E语言的eRM, 基于Systemverilog语言的VMM、OVM与UVM,尤其以UVM最为主流,它们都涵盖了多种先进的验证技术。既能提升现有验证方法,也能充分利用验证过程自动化,功能覆盖,断言这些特点建立一个全面通用验证环境。验证过程中需要使用脚本运行仿真,进行结果检查,数据收集及分析,帮助调试并debug,通常使用Makefile、shell、perl、python、TCL等脚本语言。而前端仿真工具一般使用Mentor的Questsim,Synopsys的VCS以及Cadence的IUS,每家工具都有各自的特点,使用其中任意一种都可以很好的完成验证仿真工作。

分析总结阶段包括回归测试、覆盖率分析及输出验证报告。覆盖率测量数据有两方面重要作用:一方面能明确指出设计中还没有被充分验证到的部分,确定验证过程的漏洞。并通过补充特定的直接测试用例,或改变带约束的随机测试用例的参数来提高验证的充分性。另一方面,覆盖率测量数据是验证已经足够充分,可进行流片的指示器。覆盖率分为两大类:代码覆盖率和功能覆盖率。代码覆盖率包括多种形式(行覆盖,翻转覆盖,条件覆盖,状态机覆盖,表达式覆盖等),它是一个自动化过程,仿真工具可以自动收集并输出报告。在一个特定仿真运行中,覆盖率可以体现所有 RTL设计描述代码是否被执行。代码覆盖率是必要条件,但不是充分条件。功能覆盖率则提供了一个外在度量方法,确定设计规范功能点有多少被正确实现。覆盖率测量数据达到指标后,可以表示RTL验证工作告一段落。最后,需要把验证结果、覆盖率数据,以及覆盖率分析结果输出到验证报告并存档,验证报告还应包含整个验证过程中遇到的问题及解决方案等。

RTL验证结束后,有的还需要进行后端网表验证及辅助芯片测试等工作。总之,对RTL验证来说,难点在于如何能够产生所有可能的输入施加到DUT上,并确定DUT输出正确与否。这就要求验证工程师不断深入理解设计规范并转化为有效的测试用例,尽可能的提早发现设计缺陷并修正,使所验证的模块和整个芯片能够100%完成预期的功能。

注:©本文为“E课网”原创,版权归“E课网”所有,欢迎分享!如需转载请回复“转载”。转载时请注明文章作者“E课网”.

作者:kris. IC验证领域专家,从事IC验证工作多年,拥有丰富的验证理论知识和项目实践。芯片设计验证资深讲师,国核自仪企业培训(SVA),多家集成电路研发企业芯片验证顾问

(转)IC验证概述的更多相关文章

  1. Hardware Emulation Platform (硬件仿真平台) 在IC验证中的运用情况如何?

    三个EDA公司都有自己的hardware emulation verification platform: Cadence Palladium, Synopsys ZeBu, Mentor Veloc ...

  2. IC验证概念总结

    一份代码,在写完之后,一定要再经过一次或多次整理和打磨,才能算完成的:一份代码,一定要把其有效代码行,精简.锤炼到最少.最短.最有效,才能算完成的.   下面这些问题和回答是忘记是在哪里看到的了,参考 ...

  3. 入行数字IC验证的一些建议

    0x00 首先,推荐你看两本书,<"胡"说IC菜鸟工程师完美进阶>(pdf版本就行)本书介绍整个流程都有哪些岗位,充分了解IC行业的职业发展方向.<SoC设计方法 ...

  4. 入行数字IC验证后会做些什么?

    半年前,公众号写了第一篇推文<入行数字IC验证的一些建议>,介绍了IC小白可以如何一步一步地摸索入门数字IC验证,同时也在知乎发了这篇入门贴,并且衍生出很多额外基础的内容,收获了不少的浏览 ...

  5. ASP.NET Forms身份验证概述

    表单身份验证允许您使用自己的代码对用户进行身份验证,然后在cookie或页面URL中维护身份验证令牌.表单身份验证通过FormsAuthenticationModule类参与ASP.NET页面生命周期 ...

  6. .Net身份验证概述

    一直以来,所有的系统基本都会有用户的登陆验证过程,整个过程其实也不难理解,就是对于cookie的解析.微软的.Net平台围绕用户身份验证授权也有好几个版本了,从早期的Membership到Identi ...

  7. 移動電源ic的概述

    移動電源ic壹種集供電和充電功能於壹體的便攜式充電器,可以給手機等數碼設備隨時隨地充電或待機供電.壹般由鋰電芯或者幹電池作為儲電單元.區別於產品內部配置的電池,也叫外掛電池.壹般配備多種電源轉接頭, ...

  8. VerilogHDL概述与数字IC设计流程学习笔记

    一.HDL的概念和特征 HDL,Hard Discrimination Language的缩写,翻译过来就是硬件描述语言.那么什么是硬件描述语言呢?为什么不叫硬件设计语言呢?硬件描述语言,顾名思义就是 ...

  9. 数字IC设计入门书单

    首发于观芯志 写文章     数字IC设计入门书单 Forever snow   1 年前 作者:Forever snow链接:你所在领域的入门书单? - 知乎用户的回答来源:知乎著作权归作者所有,转 ...

随机推荐

  1. C# 字符串 数据类型 判断 与特定规则验证

    验证字符串格式 1)判断字符串是否是常见数据类型,decimal,foalt,double,datetime,int等等 2)验证字符串符合特定规则    (1)邮箱地址,IP地址     (2)纯数 ...

  2. php 对象中连贯执行方法

    连贯操作的重点是返回当前对象,以便可以继续执行 class Ceshi{ public $str = ''; public function f1($a){ $this->str .= $a; ...

  3. HTML中让表单input等文本框为只读不可编辑的方法

    有时候,我们希望表单中的文本框是只读的,让用户不能修改其中的信息,如使<input type="text" name="input1" value=&qu ...

  4. 【HOW】在InfoPath中如何为浏览和编辑模式设置不同的视图

    1. 在SharePoint Designer中打开要自定义视图的列表.并点击菜单:列表设置 > 在 InfoPath 中设计表单 > {要自定义表单的内容类型},则会自动打开InfoPa ...

  5. Manually enable Appear Offline in Lync 2013 Preview via Registry

    refer to http://www.shudnow.net/2012/09/18/manually-enable-appear-offline-in-lync-2013-preview-via-r ...

  6. Spark On YARN使用时上传jar包过多导致磁盘空间不够。。。

    今天测试过程中发现YARN Node变成Unhealthy了,后来定位到硬盘空间不够..... 通过查找大于100M的文件时发现有N多个spark-assembly-1.4.0-SNAPSHOT-ha ...

  7. FLAG_ACTIVITY_CLEAR_TOP

    看了一篇相关的文章,感觉还不错,链接http://www.cnblogs.com/lwbqqyumidi/p/3775479.html

  8. linux svn 用户配置

    1:创建存放仓库的目录 mkdir -p /home/svn/ 2:创建svn仓库 svnadmin create /home/svn/evansource 3:配置仓库(一共三个文件夹auzhz.p ...

  9. Replication

    Peer-to-peer replication: http://msdn.microsoft.com/en-us/library/ms151196(v=sql.120).aspx Merge rep ...

  10. Linux内核模块设计

    内核的设计有两种方式:单内核和微内核,两者各有优劣,关于两者的比较可以参见wiki.windowds和Solaris采用微内核结构. Linux内核采用单内核结构,设计比较简单,但单内核的理念是把所有 ...