(微电子学与固体电子学专业论文)基于specman+elite的自动功能验证平台.pdf_第1页
(微电子学与固体电子学专业论文)基于specman+elite的自动功能验证平台.pdf_第2页
(微电子学与固体电子学专业论文)基于specman+elite的自动功能验证平台.pdf_第3页
(微电子学与固体电子学专业论文)基于specman+elite的自动功能验证平台.pdf_第4页
(微电子学与固体电子学专业论文)基于specman+elite的自动功能验证平台.pdf_第5页
已阅读5页,还剩65页未读 继续免费阅读

(微电子学与固体电子学专业论文)基于specman+elite的自动功能验证平台.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 摘要 随着半导体工艺水平的飞速发展,集成电路的设计规模不断扩大,设计复杂 度不断的增加,设计风险不断的增大,因此验证的工作量也大大增加。在复杂的 集成电路系统中,怎样保证设计的可靠性是所有设计团队关心的问题。另一方面, 由于验证工作已经占到整个设计的5 0 8 0 ,利用传统的验证方法很难完成复杂度 在百万门以上的s o c 的功能验证。如何对设计进行高效完备的验证则是所有设计 团队急需解决的问题。 本文针对s o c ( s y s t e m o n a - c h i p ,片上系统) 芯片的结构特点,提出了一种使 用高级验证语言( e 语言) 搭建可重用的自动功能验证平台的方案,并将该功能验 证平台应用到c e u ( c o n f i g u r a b l e e n c r y p t i o n - u n i t ,可配置的加密模块) 模块的验证 中。高级验证语言的应用,大大提高了功能验证的效率,而e 语言作为一种高级 验证语言,使验证工程师可以高效地搭建验证平台。该自动功能验证平台遵从可 重用方法学的规则,可以对s o c 芯片中的模块进行自动功能验证。由于验证平台 的可配置性和可重用性,验证工程师只需要对验证环境做一定的修改就可以适用 于其它的模块,极大地减少验证工程师的工作量,提高了验证效率。 关键字:片上系统功能验证e 语言e 验证组件 a b s t r a c t a b s 仃a c t w i t ht h ep r o g r e s so ft h es e m i c o n d u c t o rt e c h n o l o g y , t h es c a l eo fi n t e g r a t e dc i r c u i t d e s i g ni n c r e a s e sg r e a t l y t h em o r ec o m p l i c a t e dt h ed e s i g ni s ,t h em o r er i s kh i d e si ni t , t h e r e f o r em u c hm o r ee f f o r to fv e r i f i c a t i o nc o s t s o n ep r o b l e mi sh o wt oe n s u r et h e c o r r e c t n e s so fc o m p l i c a t e dd e s i g n s t h eo t h e ri sh o wt or e d u c et h eh u g ev e r i f i c a t i o n w o r k l o a db e c a u s eo fv e r i f i c a t i o no c c u p i e s5 0 8 0 o ft h ew h o l ed e s i g np r o c e s s i ti s d i f f i c u l tt oc o m p l e t et h ef u n c t i o n a lv e r i f i c a t i o no fas o c ( s y s t e m - - o n a - c h i p ) w h i c hi si n t h es c a l eo fm o r et h a n1m i l l i o ng a t e s 谢mt r a d i t i o n a lv e r i f i c a t i o nm e t h o d t h ep a p e rp r o v i d e sas o l u t i o no fr e u s a b l ea u t o m a t i cf u n c t i o n a lv e r i f i c a t i o n p l a t f o r ma c c o r d i n gt ot h ec h a r a c t e r so fs o c ,t h e nu s i n gt h ep l a t f o r mt oc o m p l e t e v e r i f i c a t i o no fc e u ( c o n f i g u r a b l e e n c r y p t i o n - u n i t ) m o d u l e t h ev e r i f i c a t i o np l a t f o r m i sb a s e do nel a n g u a g e ,o n eo fh i g hl e v e lv e r i f i c a t i o nl a n g u a g e s t h ea p p l i c a t i o no fe l a n g u a g ea sak i n d o fh i g hl e v e lv e r i f i c a t i o nl a n g u a g em a k e st h ef u n c t i o n a lv e r i f i c a t i o n m o r ee f f i c i e n c y , e s p e c i a l l yi nb u i l d i n gav e r i f i c a t i o np l a t f o r m h la c c o r d 、历mt h er u l e s o fr e u s a b l em e t h o d o l o g ym a n u a l ,t h ep l a t f o r mc o u l dv e n f yt h em o d u l e si ns o cc h i p a u t o m a t i c a l l y a sf o rt h er e u s a b i l i t yo f t h ep l a t f o r m ,d i f f e r e n tm o d u l e sc o u l db ev e r i f i e d t h r o u g hs p e c i f i cc o n f i g u r a t i o n sr e s p e c t i v e l y t h e r e f o r et h ew o r ko fv e r i f i c a t i o n i s r e d u c e da n dt h ee f f i c i e n c yi si m p r o v e d k e y w o r d :s o cf u n c t i o n a lv e r i f i c a t i o n e l a n g u a g e ev e r i f i c a t i o nc o m p o n e n t 西安电子科技大学 学位论文独创性( 或创新性) 声明 秉承学校严谨的学分和优良的科学道德,本人声明所呈交的论文是我个人在 导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标 注和致谢中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成 果:也不包含为获得西安电子科技大学或其它教育机构的学位或证书而使用过的 材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中做了明确的说 明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切的法律责任。 本人签名:爱f 匀锋 日期例7 ,l 夕 西安电子科技大学 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。学校有权保 留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分内 容,可以允许采用影印、缩印或其它复制手段保存论文。同时本人保证,毕业后 结合学位论文研究课题再撰写的文章一律署名单位为西安电子科技大学。 本人签名:呈c 习锋 导师签名: 卅红镑 1 日期伽夕,夕 日期广尸 第一章绪论 第一章绪论弟一早珀t 匕 在芯片的设计中,验证是一个很重要的组成部分,目的就是为了保证设计的 正确性。随着集成电路技术的不断发展,验证方法学和验证技术也在不断的改进。 在不同的芯片设计中,验证所使用的方法和技术也不尽相同。本文结合了一款基 带处理芯片中的c e u 模块,设计实现了一个可重用的自动功能验证平台。 本章首先介绍了课题研究的背景和目的,然后结合s o c 芯片的结构特点提出 研究的方法和流程,最后介绍了论文的结构和主要工作。 1 1 研究背景和目的 近年来,随着半导体工艺水平的飞速发展,已经可以设计出包含几亿个晶体 管的电路,而且还在向更高的集成度发展。根据摩尔定律这一半导体行业的基本 定律,每平方厘米的晶体管数目每1 8 个月会翻一番。晶体管的集成度大大的提高 了,可以在一块晶片上实现越来越复杂的设计。随着设计复杂度的爆炸式增长, 电子器件的面市时间却要求以令人震惊的速度缩短,这给设计人员带来了巨大的 挑战。在一个庞大的系统设计中,怎样保证整个设计完全正确地实现了设计人员 的意图,成为一个至关重要的问题。 芯片的设计不同于f p g a ( f i e l d p r o g r a m m a b l eg a t ea r r a y ,现场可编程门阵列) 设计,如果在流片后再发现设计中的错误,会带来巨大的损失:不只是昂贵的流 片费用付之东流,更可怕的代价是再流片带来产品面市时间的延迟。因此验证人 员不可能等到芯片生产出来之后再验证设计中是否存在不稳定因素,而应该在设 计的每个环节中尽量保证设计的正确性。只有通过完备的验证才能在设计阶段找 出可能出现的错误,确保流片的成功【l 】。 功能验证作为设计的一部分,要占到整个设计流程的5 0 8 0 ,成为整个设 计的瓶颈。随着设计复杂度的增加,验证中遇到的问题呈指数上升。相对于很多 的自动化工具而言,验证的大量工作还需要工程师来完成。因此寻求一种有效的 验证方法和高级验证语言来提高验证效率,消除验证瓶颈是所有设计团队急需解 决的问题。 当前芯片设计业正面临着一系列的挑战,尤其是系统级芯片已经成为集成电 路设计业界的焦点,同时由于深亚微米工艺带来的设计困难等,使得s o c 设计的 复杂度大大提高。而验证是s o c 设计流程中比较复杂、比较耗时的环节,约占整 个芯片开发周期的5 0 一8 0 ,这样如何设计和选择验证方法己成为s o c 设计成功 的关键。 在s o c 芯片中有多个模块,各个模块之间的交互也比较多,如果要为每个模 2 基于s p e c m a ne l i t e 的自动功能验证平台 块都搭建一个验证环境,那就需要花很多的时间和非常多的人力来完成。而且由 于个别模块的特殊性,为子模块搭建的验证环境在顶层的重用性很差,这也就意 味着在系统集成之后还需要为模块的顶层搭建独立的验证环境。 本功能验证平台是使用高级验证语言来搭建的,抽象层次比较高,能提供各 种验证手段和方式,方便验证工程师和设计工程师操作。而且由于该功能验证平 台可以由验证工程师自己进行配置,因此具有很大的灵活性。不仅可以为各个模 块提供验证环境,还可以复用在顶层验证环境中,极大地减少了验证工程师的工 作量,提高了验证的效率。 1 2 研究方法和流程 本文先探讨了一种基于e 语言的功能验证平台的解决方案,并对采用这种方 案实现的功能验证平台进行了具体的分析。然后根据s o c 中有很多模块的特点对 这个功能验证平台进行改进,使其灵活性和可重用性更高,并将这个平台应用于 s o c 的子模块和项层验证中。图1 1 是验证环境的设计流程。 验证需求分析 i v 验证规划 验证环境的设计 l 搭建验证环境 图1 1 验证环境设计流程 第一章绪论 3 1 3 论文的结构 本论文共分为六章,具体结构如下: 第一章阐明了文章研究的背景和目的,根据芯片特点提出了研究方法和流程, 最后描述了论文的结构和论文的主要工作。 第二章首先介绍了验证在集成电路中有着举足轻重的作用,接着研究了常用 的设计和验证的关系,其中包括自顶而下的设计与验证和基于平台的设计与验证, 最后分析了传统的验证方法学和传统的验证技术,并对这些方法和技术的优缺点 作了简要评价。 第三章首先介绍了当今流行的验证方法,并对这些方法的优点作了总结,接 着介绍了e 语言这种高级验证语言,最后提出了基于e 语言的功能验证平台的典 型结构。 第四章对s o c 芯片的特性和典型结构作了介绍,并仔细分析了s o c 芯片对验 证工作的要求,最后根据实际芯片中被验证模块的特点提出了验证策略。 第五章提出了所搭建的自动功能验证平台的整体架构,接着结合实际情况, 对功能验证平台的整体架构进行扩展,搭建出可重用的功能验证平台,其中包括 对验证环境,验证环境的工作流程和组成验证环境的文件结构的介绍,然后通过 配置,使该功能验证平台实现层次化的功能验证,最后应用该功能验证平台完成 实际工作,并对验证结果作了简要分析。 第六章总结了本文的主要工作,阐明了整篇论文的研究意义和主要成果,最 后提出了该功能验证平台中存在的不足和进一步的研究方向。 1 4 论文的主要工作 本文的主要贡献在于使用了高级验证语言搭建了一个灵活高效的自动功能验 证平台,大大的提高了功能验证的效率。 该自动功能验证平台成功的应用到企业的项目之中,完成了c e u 模块的所有 寄存器验证,中断响应验证,d m a 传输模式验证和多种算法实现的验证。通过这 些验证,对r t l 代码进行了比较完备的统计,不仅及时地发现了代码中存在的缺 陷,还快速而有效地帮助了验证人员和设计人员定位问题的所在。 根据可重用方法学的原则,该自动功能验证平台经过一定的修改,就可以应 用到其它模块的验证工作中,甚至可以应用到顶层的验证工作中。极大的减少了 验证工程师的工作量。 本文对e 语言以及基于e 语言的自动功能验证平台介绍的比较详细。对于想 要了解e 语言,想要搭建一个基于s p e e m a ne l i t e 的功能验证平台的人来说本文是 一篇比较好的参考资料。 第二章传统的验证方法学与验证技术 5 第二章传统的验证方法学与验证技术 此设计主要讨论的是一种基于可重用方法学的自动功能验证平台。验证环境 的可重用性是近年来验证技术发展的个重要方向,自动化的验证平台是从传统 的验证方法学发展而来的最具潜力的验证系统。为了能够更深入地理解这种可重 用的功能验证平台的结构和优势,本章就先介绍一下传统的验证方法学与技术。 2 1 验证及其在集成电路中的重要作用 目前硅工业迅猛发展,集成电路芯片上所能够实现的硅结构的物理尺寸不断 缩小,这种尺寸上的缩小带来了电路容量和性能的显著提升。也就是说在同样大 小的硅片上实现更加复杂的系统,能让这个复杂系统稳定运行在越来越高的频率 上。与此同时,电子器件的面世时间却在以令人震惊的速度缩短。在越来越短的 时间内设计越来越复杂的系统,这是对设计者的巨大挑战,而验证是面对这个挑 战的最好手段和方法。验证工程师通过使用各种验证方法和技术,找出设计中可 能存在的缺陷,保证整个设计的正确性。一般的,验证环境如图2 1 所示。 图2 1 验证环境 验证环境的基本功能是为设计提供必要的激励,并提取设计的输出响应。如 果验证对象是一个比较复杂的设计,就要求验证环境可以提供多组不同的激励以 满足测试需求【2 】。在简单的验证环境中,可以由验证工程师去分析设计的响应,最 后得到设计是否正确工作的结论。但对于复杂的设计,这样的验证方式给验证工 程师带来了很大的压力,因为设计的输出是多种多样的,而且数据量也会非常大。 比较复杂的验证环境有可以对设计输出数据进行自动检查的机制,验证工程 师通过验证环境对设计输出响应的分析结果来判断设计是否正确的工作,这样的 检查机制大大地减轻了验证工程师的压力。图2 2 所示的就是一个典型的带有自动 检查功能的验证环境结构。 6 基于s p e c m a ne l i t e 的自动功能验证平台 图2 2 带有自动检查功能的验证环境结构 芯片的设计不同于f p g a 的设计。在使用f p g a 等可编程逻辑器件进行的数 字电路设计中,设计者在完成基本的功能验证之后就可以在真正的运行环境中进 行调试。如果在调试中发现错误,设计者可以更改自己的设计代码,再重新下载 到可编程逻辑器件中进行调试。由于可编程器件可重复擦写性,设计者可以在调 试过程中多次更新代码,解决调试中出现的各种问题。但是在芯片的设计中,一 次流片的资金量是非常大的,而且每次流片也需要比较长的时间。因此设计者不 能等到芯片生产出来之后再去检查设计中的疏忽和错误,必须在设计的各个环节 确保设计的正确性。验证的目的不光是确保设计可以完全实现正确的功能,还要 尽可能地消除设计中可能存在的各种漏洞,完善设计在各种工作模式和输入激励 条件下的处理机制。 可能有人认为验证和设计是两个独立的过程,但实际上验证并不是独立于设 计而存在的,它是设计的一部分。在芯片的设计流程中,验证和设计是通向同一 个目标的两条道路f 3 l 。图2 3 说明了验证是设计的一部分。 图2 3 验证是设计的一部分 芯片设计需要首先定义规格说明书,规格说明书可以使用自然语言描述。将 规格说明书进行翻译之后,得到一个设计和验证都必须遵循的说明书,此后设计 和验证工作就可以同时展开了,并在设计的最后阶段汇合,达到同样的一个目的 满足规格说明书的要求。 在芯片设计中,有多种设计流程可以选择,如自底向上的设计流程、自项向 下的设计流程、螺旋式设计流程等。在这些流程中有一个共同点,设计和验证是 同时进行的。在系统设计阶段,验证工程师就开始制定满足设计需求的验证规划。 第二章传统的验证方法学与验证技术 7 当进行到模块设计时,验证工程师也开始搭建相应的验证环境。理想的情况是设 计工程师完成设计时,验证工程师已经把验证环境准备好了,这样就可以及时地 开展验证工作了。在验证过程中可能发现设计中的各种问题,如逻辑错误,时序 问题等,这时设计工程师就要及时修改设计,再提交验证,如此反复,直到验证 完成,这也标志着设计的一个阶段性结束。 验证工程师要对系统中小到各个功能子模块大到整个系统都进行详尽的功能 验证,以保证系统的各个模块都能够正确地工作。验证作为设计的一部分,要占 到整个设计流程的5 0 到7 0 ,甚至是8 0 。随着芯片设计规模的不断增大,验 证中遇到的问题呈指数上升趋势,这是对验证工程师的巨大挑战。而相对于设计 中的很多自动化工具而言,验证的大量工作还需要验证工程师来完成,因此验证 工作越来越成为项目进度的瓶颈。现在各个设计公司和设计团队不断寻求高效的 验证方法、手段和技术,希望在尽可能短的时间内进行尽可能完备的验证,缩短 产品的面世时间。 2 2 常用的设计与验证的关系 每个设计公司都可能使用各种不同的设计验证方法。常用的主要包括自底而 上的设计验证方法、自顶而下的设计验证方法、基于平台的设计验证方法。这里 对常用的自顶而下的设计验证方法和基于平台的设计验证方法做简单的介绍。 2 2 1 自顶而下的设计与验证 图2 4 描述了自项而下的设计与验证的关系。任何自项而下的设计都起始于规 格说明书。规格说明书通常是运用语义模糊的自然语言编写的可执行的书面说明 书。设计团队和验证团队从规格说明书出发,制定详细的设计和验证计划。 设计对象的系统模型是从规格说明书中得出来的,它的功能就是将组成设计 对象的各个元素的系统级模型集成到一起。验证系统级模型的功能就是在系统级 测试平台对模型进行检验,然后通过若干个抽象层次将设计对象逐步分解,直到 完成细节设计。可能的抽象层次包括架构级、硬件描述语言和网表模型。在较高 的抽象层次上,使用系统测试平台来验证设计对象。不同的抽象层次在设计中增 添不同的功能和细节,系统测试平台将随这种抽象层次的变化得到相应的强化【4 】。 一旦将设计对象细化到硬件描述语言级,就可以运用其他验证技术来测试仿真所 无法验证的各个方面。这些技术包括用于验证所输入的代码是否遵从了编码标准 和l i n t 代码静态检查准则、用于穷举检查设计属性的形式检查等。 8 基于s p e c m a ne l i t e 的自动功能验证平台 图2 4 自顶而下的设计与验证的关系 验证了设计对象的寄存器传输级之后,需要对网表进行等价性形式检查,也 可以采用仿真的方式。当完成以上各种测试之后,接着进行时序验证、物理验证 和器件测试来确保芯片的正确实现。 2 2 2 基于平台的设计与验证 图2 5 描述了基于平台的设计和验证的关系,这种设计适用于以现有平台为 图2 5 基于平台的设计和验证的关系 第二章传统的验证方法学与验证技术 9 基础而衍生出来的设计。它假定所使用的基本平台、硬件i p ( i n t e l l e c t u a lp r o p e r t y , 知识产权) 和软件i p 都已经通过验证【5 1 。应根据衍生设计的需求来添加其他p 。验 证这样的设计涉及到验证基本平台和其它d 功能块之间的互联关系【6 1 。对平台自 身的验证可以采用自项而下的验证流程。 2 3 传统的验证方法学 从验证方法学的发展历程看,验证经历了从基于h d l 的验证、面向对象的验 证、随机验证、基于测试平台的验证等几个阶段。 2 3 i 基于h d l 的验证 集成电路设计是采用硬件描述语言进行描述的,因此最早的验证就是使用 i - i d l ( h a r d w a r ed e s c r i p t i o nl a n g u a g e ,硬件描述语言) 语言进行描述的。基于t t d l 的验证是指在测试平台中使用i - i d l 的过程来产生对设计的输入激励,并检查设计 的输出响应的验证方法。在h d l 语言中( 包括v e r i l o g 和v h d l 两种硬件描述语 言) 包含一些用于描述测试平台的语句,方便设计工程师和验证工程师搭建验证 平台【7 】。图2 6 描述了基于h d l 的验证环境。 图2 6 基于h d l 的验证环境 在测试平台中,测试人员要根据设计的接口要求,将数据和控制信号在指定 的时间发送给设计模块,并对设计模块的输出响应进行检查。当设计模块的功能 简单,接口也不复杂的情况下,测试人员可以用h d l 语言来搭建测试平台进行验 证。但是当设计模块的功能或者接口比较复杂的时候,这样的验证方式就会显露 出很多不足。首先是验证人员要在测试平台上同时对接口的所有信号进行不同的 操作,这对验证人员来说是个很大的挑战。其次,由于设计的复杂性,可能存在 一个设计模块需要用多个测试场景进行验证。但是基于h d l 的验证平台可配置性 1 0 基于s p e c m a ne l i t e 的自动功能验证平台 比较弱,因此在这种时候,验证人员需要对所有的需要测试的场景分别进行描述, 搭建多个验证平台来满足验证的要求。第三,验证工程师需要为所有的测试提供 测试向量,因此在验证过程中所使用的测试向量非常多。而h d l t a s k 并不能提供 非常好的随机测试机制,因此所有的测试向量都要由验证工程师提供。最重要的 原因还在于测试平台只能针对设计的某一个或几个特性,其可读性和可维护性都 很低,验证环境的可重用性也很低。由于存在这么多的不足,在设计模块比较复 杂的时候使用这种验证方法可能会导致验证工作成为整个设计流程的瓶颈。 2 3 2 面向对象的验证 由于基于i - i d l 的验证方法存在很多的不足,为了提高验证环境的可读性和可 重用性,很多验证工程师开始使用面向对象的语言来搭建验证环境,例如c ,c + + 。 这些面向对象的语言允许设计者在更高的抽象层次搭建验证平台,为设计模块提 供输入驱动,并检查设计模块的输出结果,减少生成测试的时间。 面向对象的语言的抽象层次比较高,这一方面给验证工程师搭建验证环境带 来很多便利,另一方面也由于它们不直接和底层的硬件打交道,需要增加额外的 接口模块。因为高级语言的抽象程度比较高,要使用高级语言来模拟硬件的接口 工作情况是比较困难的。因此如果使用面向对象的语言搭建验证环境,在环境中 需要搭建额外的接口模块,这不仅增加了系统的复杂度,而且在很多时候,这部 分工作大大超过了生成测试所需的工作量,对提高整个系统验证效率而言并没有 太大的好处。 2 3 3 随机激励生成的验证 前面介绍的测试方法都是使用直接测试的方式进行测试的。所谓的直接测试 是指使用一组或多组确定的数据驱动设计模块的端口进行验证的方法。在目前的 验证环境中,常常需要使用大量的测试向量。但是完全使用直接测试向量进行测 试,可能会导致一部分设计不能被完全验证。因此,很多验证工程师都提出了使 用随机的测试向量进行测试。在随机测试中,随机数生成器自动地生成多个不同 的激励来对设计进行测试。使用随机测试可以大大减轻验证工程师的工作量,而 且可以对很多边界条件,错误场景进行很好的测试滞j 。但是随机测试也有缺点,要 检查随机测试的结果是否正确比较困难,必须对测试的功能点覆盖率进行统计。 对于芯片设计来说,随机测试是一个非常关键的验证技巧。随机测试的目的 在于,相对于直接测试而言,可以试图花费较少的代价找出在极端情况下才可能 发生的设计错误。通常情况下,当设计团队不得不花很长时间才能找出错误时就 可以考虑使用随机测试。对于验证工程师来说,修正一个使用自己产生的测试激 第二章传统的验证方法学与验证技术 励而发现的设计错误很简单,但如果是使用随机测试而发现的设计错误,就比较 难修正,因此在验证的早期阶段,直接测试是非常高效的,并且也很容易发现设 计错误,进行及时修正。 在某些情况下,设计已经变得相对理想,而且想要找出更多的设计错误需要 花大量的时间。同时,针对某些极端情况所编写的测试程序效率也很低。相反, 如果使用随机测试,将导致发现错误的代价小了,但是调试时间会大大增加。常 出现的情况是运行随机测试半个小时之后,系统还没有出现错误。因此验证工程 师往往持续运行随机测试长达几天甚至几十天。在随机测试中,最大的困难不是 随机测试向量的生成,而在于如何进行有效的检查和结果的跟踪。 2 3 4 基于测试平台的验证 基于测试平台的验证是指将设计模块直接放在已有的测试平台上进行验证。 由于测试平台工具已经具备验证环境的很多结构,可以大大减少验证工程师的工 作量。而且在不同的测试平台之间,可以对相同或相似的模块进行复用,因此搭 建一个新的验证环境也是比较快的。但是另一方面,这样的平台一般对复杂的约 束条件没有很好的解决方案,不能提供高抽象层次的语言,也不能确切的描述协 议及其之间的关系,因此还是具有很大的局限性。 2 。4 1 直接测试和随机测试 2 4 传统的验证技术 按照激励数据的类型验证方法可以分为直接测试、随机测试。直接测试也称 为定向测试,是指由测试激励源给出指定的激励驱动设计,并检查设计的输出是 否正确,一般用来检查设计是否已经实现所设想的功能。随机测试是指驱动设计 的激励是随机生成的,常常在直接测试之后用来检查是否有设计者没有考虑到的 情况会发生。除此之外,一般还使用边界测试的测试技术。所谓的边界测试是专 门针对系统运行边界条件和非常条件的测试,可以检查系统在边界情况或异常情 况下是否可以正确运行。 2 4 2 黑盒测试和白盒测试 黑盒测试也称数据驱动测试,它是在对已知产品所应具有的功能的情况下, 通过测试来检测每个功能是否都能正常使用。在测试时,将系统看作是一个不能 打开的黑盒子,在完全不考虑系统内部结构和内部特性的情况下,验证工程师在 系统接口进行测试,它只检查系统功能是否按照规格说明书的规定正常使用,系 1 2 基于s p e c m a ne l i t e 的自动功能验证平台 统是否能够适当地接受输入信号而产生正确的输出信息,如图2 7 所示。黑盒测试 法着眼于系统的外部结构而不考虑内部的逻辑结构,是针对系统功能和人际交互 界面等进行的测试。黑盒法是穷举输入测试,只把所有可能的输入都作为验证情 况使用,才能以这种方法查处系统中所有的错误。实际上测试的情况有无穷多个, 人们不仅要测试所有合法的输入,还要对那些不合法但是可能的输入进行测试。 激励一响应 对于芯片设计而言,前端验证使用黑盒法在寄存器传输级设计的输入施加激 励信号,然后将输出值与预期值相比较。但是黑盒法的可观察性和可控制性都比 较差,在设计规模较大时就显得有些力不从心。 白盒测试也称为结构测试或逻辑驱动测试,如图2 8 所示,已知产品内部工作 过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行。这 种验证按照系统内部的结果测试程序,检验系统中的每条通路是否都能够按照预 定要求正确工作,而不考虑它的功能。 激励 图2 8 自盒测试的思想 响应 第二章传统的验证方法学与验证技术 1 3 自盒测试法是穷举路径测试,这种测试在全面了解系统内部逻辑结构之后对 所有逻辑路径进行测试。使用这种测试方案时,测试者必须检查系统的内部结构, 从检查系统的逻辑着手,得出测试数据。白盒测试同设计实现密切相关,它可以 确认底层的设计是否能够按照设计的意图正常工作。白盒测试的对象是系统功能 的基本组成部分,但并不意味着只要这些测试对象正确就能判定系统功能正确。 因为穷举路径测试不可能查出系统是否违反设计规范,即系统本身就可能是错误 运行的,也不可能查出系统中因为遗漏路径而出现的错误,更不可能发现一些与 数据相关的错误。 白盒测试更适合系统级的验证。在白盒测试思想中,整个系统是一个透明的 实体,组成系统的模块是黑匣子。在系统验证中,白盒测试能够保证系统众多子 模块之间相互关系以及工作状态的正确性,这是黑盒测试所不能做到的。系统的 子模块在参与了黑盒测试之后才能进入到系统的白盒测试中。 2 4 3 基于覆盖率的验证 对于验证来说,分析测试覆盖率对于评估验证的成功与否是一个非常必要的 环节。覆盖率也表示验证进行到的程度,在通常的验证中也决定功能验证是否完 成的重要量化标准之一。常用的覆盖率主要有代码覆盖率和功能覆盖率两种,代 码覆盖率是指: 语句覆盖率,统计每一条执行过的语句的执行次数。 分支覆盖率,分析i f - t h e n e l s e 或c a s e 语句中每一个分支是否都被执行过。 条件覆盖率,分析分支中的每一个条件是否都曾经触发过分支,并统计每一 个条件触发的次数。 路径覆盖率,对于相邻的条件语句,是否每一种路径都被执行过。 触发覆盖率,记录敏感列表中的哪一个信号触发了进程,并对每一个敏感量 列表中的信号统计触发的次数。 翻转覆盖率,统计一个信号从0 到1 的次数和从1 到o 的次数。 模块测试的高覆盖率对于模块的功能验证来说只是一个必要的条件而不是充 分条件。代码覆盖率分析并不检查设计是否完成了设计规范中指定的功能或者违 反了制定的功能,代码覆盖分析也不检查设计仿真运行的结果对错与否。代码覆 盖率只是说明了代码是否被测试程序验证过。另一方面,如果代码覆盖工具指出 某一行代码或者某一条路径没有被执行过,那么就意味着这一段代码没有被测试 过。一般而言,一个设计需要达到百分之百的语句覆盖率、分支覆盖率和条件覆 盖率,任何一个条件不满足都代表设计的某一个功能没有被测试到。除此之外, 路径覆盖、翻转覆盖和触发覆盖作为辅助手段。这三种检查实际上很难达到很高 1 4 基于s p e c m a ne l i t e 的自动功能验证平台 的覆盖率。最好的办法就是对没有达到百分之百覆盖率的那些代码进行详细检查, 找出覆盖率低的原因,并且看是否可以添加额外的测试程序来提高覆盖率【9 】。 功能覆盖则可以帮助验证人员找出功能上的缺陷。一般说来,对一个设计覆 盖点的定义和条件约束是在验证计划中提前定义好的,然后在验证环境中具体编 程实现,把功能验证应用在约束随机环境中可以有效检查是否所有需要出现的情 况都已经遍历。功能验证与面向对象编程技术结合可以在验证过程中有效地增加 覆盖点。这覆盖点既可以是接口上的信号,也可以是模块内部的信号,因此既可 以用在黑盒测试也可以用在白盒测试中。通过在验证程序中定义错误状态可以很 方便地找出功能上的缺陷。 2 5 小结 本章首先介绍了常见的设计与验证的关系,其中包括自顶而下的设计与验证 和基于平台的设计与验证。这两种验证有不同的特点,设计团队应该根据项目的 特点来自行选择。自顶而下的验证流程是现在被广泛采用的一种流程,而基于平 台的验证流程更适合在系统设计中大量使用已有设计模块的情况。 在传统的验证方法学的介绍中,根据验证方法学的发展进程,对已有的验证 方法学做了简单的介绍分析。验证方法学经历了从基于如) l 的验证到面向对象的 验证方法,再到随机测试和基于测试平台的验证这几个阶段。每一种验证方法都 有自己的优点和不足,因此在实际的验证中,验证工程师可能会结合几种验证方 法,扬长避短,更好地对设计进行完备验证。随着设计的不断发展,验证方法学 也在不断进步。在后面的章节中,会对现在比较先进的自动验证方法等进行介绍。 在本章的最后,介绍了一些常用的传统的验证技术。按照不同的分类标准, 可以分为直接测试和随机测试、黑盒测试和白盒测试、基于覆盖率的验证等。在 验证过程中,验证工程师会结合各种验证技术的特点,使用一种或多种技术来对 设计进行不同侧重点的验证,实现验证目标。 第三章主流的验证方法和基于e 语言的验证平台结构 1 5 第三章主流的验证方法和基于e 语言的验证平台结构 随着芯片设计规模的不断扩大,传统的验证技术已经不能满足验证的需求了。 验证技术的不断发展,现在已经有人提出全自动验证方法学,提倡使用自动化验 证平台来提高验证效率。近年来,基于断言的验证( a s s e r t i o nb a s e dv e r i f i c a t i o n ) 、 形式验证( f o r m a lv e r i f i c a t i o n ) 、f p g a 原型验证也是设计团队经常使用的验证方 测1 0 】。本章会对这些比较先进的验证方法学做简单的介绍,并根据这些验证方法 学和高级验证语言( e 语言) 的特点提出自动验证平台的结构。 3 1 主流的验证方法 在现在的芯片设计中,由于设计规模的扩大和设计本身复杂度的提升,验证 团队需要采用更先进的、适合现在芯片发展的验证方法及验证手段。下面将对现 在使用比较普遍的验证方法和技术做一个简单介绍。 3 1 1 全自动的验证方法 随着当前的半导体工艺水平步入深亚微米阶段,并正向4 5 n m 以下水平发展, 芯片的集成度空前提高,时钟的频率也已经能够达到千兆赫兹以上,数据的传输 率已经达到每秒几十亿比特。因此集成电路的设计变得越来越困难,主要表现在: 逻辑门数不断提高、功能更加多样性、时钟的速度更快、子系统的连接也更加复 杂、市场要求的开发时间更短、开发成本需要进一步下降。并且不断增加的复杂 性对验证工作提出了更高的要求,验证的精确度将直接影响成片后逻辑功能的正 确率,由验证不充分导致的流片后逻辑功能的错误会带来巨大的损失,更关系到 整个芯片设计的成败。据统计,通常一行r t l 级代码需要5 1 0 行的代码来验证。 因此,在市场的压力下,功能验证在项目中所占的时间被不断压缩使产品投片成 功的机率受到影响。 在巨大的验证工作压力下,自动验证系统应运而生。自动验证系统是一个可 以对设计模块进行自动验证的平台。在这样的验证系统中,验证工程师可以通过 配置环境参数,实现验证环境自动驱动设计模块并对设计模块的响应( 包括协议 和数据) 进行自动检查。自动验证系统除了具有测试平台的优点之外,也克服了 单- - n 试平台的缺点:它允许验证环境中的各个对象根据不同的测试场景进行相 应的扩展,也可以准确地描述各种复杂约束,有功能强大的c o v e r a g e 引擎和协议 引擎支持复杂的验证场景。现在已经出现了一些高级验证语言,开始支持自动验 证系统。这些高级验证语言在更高的抽象层次上支持并提供自动验证系统所需要 1 6 基于s p e c m a ne l i t e 的自动功能验证平台 的结构,大大减少了验证工程师的工作量,也提高了整个验证系统的可重用性, 在一定程度上消除了验证瓶颈,具有很大的发展潜力和发展空间 1 1 】。 3 i 2 基于断言的验证( a s s e r t i o nb a s e dv e r i f i c a t i o n ) 方法【1 2 】 在验证过程中,一般很难找出跨多个时钟周期、顺序相关的一系列操作的时 序和功能是否有不符合规范的地方,为此研究出基于断言的验证方法( a s s e r t i o n b a s e dv e r i f i c a t i o n ) 来推动验证技术的发展。这种方法要用基于断言的验证语言,比 如o p e nv e r aa s s e r t i o n 语言( o v a ) 、s y s t e mv e r i l o ga s s e r t i o n 语言( s v a ) 、p r o p e r t y s p e c i f i c a t i o n 语言( p s l ) 等。 在传统的仿真验证中,是将被验证模块作为一个黑盒子,通过添加激励和得 到的反馈响应来判断该模块是否正常工作。在这种情况,如果出现问题,定位问 题是很困难的。基于断言的验证与此相反,它是将被验证模块作为一个自盒子, 通过在关键点嵌入断言语句实现对这些关键点监控的目的。在验证的过程中,如 果设计的行为不满足预期的要求,就会导致断言条件不满足,断言语句会在验证 环境中报出那些断言没有满足的点,帮助验证工程师定位问题。这种把断言嵌入 在设计中,用来观察设计的行为,可以提高设计的可观测性,在出现问题时快速 定位问题,并能提供覆盖率的相关信息。 在现在设计团队中常用的有两种断言验证方法:静态断言检查和包含断言的 仿真。静态断言检查有时也被称为自动断言检查,它是在设计的r t l 代码中按照 预定义的规则加入断言,这些断言可以针对普遍存在的网表问题和设计缺陷进行 检查。相对于传统的l i n t2 1 2 具只能分析r t l 代码的语义语法,静态断言检查却可 以在设计综合完成之后用形式验证的方法来分析设计的内部结构。静态断言检查 不需要测试向量,它实际上是通过遍历的方法,由验证工具产生所有可能的情况 来检测断言是否都正确或者都覆盖到了。 很多常见的设计缺陷都可以用静态断言检查快速容易的找到。在设计中有的 结构如跨时钟域逻辑、总线逻辑、有限状态机等使用仿真的验证手段不容易进行 完备验证,但是自动断言检查可以帮助验证工程师验证这些结构。跨时钟域信号 带来设计中的很多问题,是一个经常导致设计失败的因素。使用断言检查可以查 出跨时钟域信号是否缺少同步时序、可以检查跨时钟域信号的路径上是否存在错 误逻辑,还可以检查跨时钟域信号是否收敛的问题。 由于静态断言检查可以帮助验证工程师进行快速的验证,它越来越成为一种 关注度极高的验证方法。虽然静态断言检查的算法非常复杂,但是现在已经有工 具支持静态断言检查的验证方式,s y n o p s y s 公司和c a d e n c e 公司都有专门的工具 支持静态断言检查。但是静态断言检查算法的复杂度同时也决定了它更适合于对 第三章主流的验证方法和基于e 语言的验证平台结构 中小规模的设计进行验证。在对大规模设计进行验证时,静态断言检查就会因为 算法过于复杂而有些力不从心了。 包换断言的仿真也就是动态断言检查,它的工作过程就如图3 1 所示。设计人 员在设计中嵌入断言语句,这些语句在系统仿真的时候可以监视设计内部和接口 的动作,进行断言检测。如果在仿真的过程中设计的动作违背了断言定义的规则, 就会立即在验证环境中显示出来。这样,验证工程师不必等到错误繁衍到设计接 口就可以发现设计的缺陷,而且可以迅速的定位问题【”】。如果没有断言,验证工 程师在接口发现错误之后要一步步反推到错误的原始发生点,在复杂的设计中, 这样的验证手段是需要耗费大量的人力物力的。 3 13 形式验证 图3 1 包含断言的仿真示意图 形式验证o h m “v e r i f i c a t i o n ) 主要是用来在覆盖所有可能的输入情况下检查 是否与给定的规范一致,是近年提的比较多的一种验证手段。形式验证包括特性 检查和等效性检查“。在设计的r t l 代码被综合成门级网表后,需要用等效性检 查来验证设计的门级网表和r t l 代码是否功能一致。由于形式验证使用静态的算 1 8 基于s p e c m a ne l i t e 的自动功能验证平台 法进行比较,因此不需要任何功能测试向量。并且形式化验证比起仿真来,可以 在较短的时间内对两个电路进行等效性比较,而且有着很高的准确性。 等效性检查工具将两个设计读入内存,用形式化数据算法分析彼此的数据结 构来进行比较。只要两个设计有着相同的同步功能和对应的寄存器或锁存器,就 可以进行比较。如果两个设计的所有输出管脚与每一个寄存器或寄存器的功能是 一样的,那么就认为两个设计的功能等效l i 别。 形式化验证用来比较原始r t l 代码以及以下任意一种类型网表的等效性。 ( 1 ) 综合产生的网表。 ( 2 ) 测试结构插入后产生的网表。对于扫描电路的插入,等效性检查比较简单; 对于片上的j t a g ( j o i n tt e s ta c t i o ng r o u p ) 结构,就需要些额外的设置,但仍 然可以进行等效性检查。 ( 3 ) 时钟树插入后产生的网表和布局布线后的网表。这就需要将层次性r t l 代码与扁平网表进行比较。 ( 4 ) 手工编辑过的网表。有时候工程师会对网表做一些手动的修改,目的在于 提高设计的性能、可测试性以及功能。 形式化验证的最大益处在于不管对网表做如何修改,它都以r t l 代码作为参 考模型。即使网表最后会被工程师手动修改,只要对r t l 进行相应的改动,仍然 可以对两者进行形式化等效性验证。 对于大的设计,r t l 模型和门级网表之间的形式验证将需要很长时间,特别 是在需要多次设计迭代的情况下。在这种情况下,最好将r t l 模型与门级网表做 一次比较,然后使用较成功的门级网表作为以后等效验证的参考模型【l6 1 。因为形 式验证算法对于比较r t l 模型和门级网表的执行效率较低,但是对于门级网表之 间比较的效率较高。 3 1 4 半形式验证 半形式化验证是把传统的使用测试向量的验证流程与形式化验证的强大功能 和验证的彻底性结合在一起。半形式

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论