(微电子学与固体电子学专业论文)基于断言的动态功能验证方法研究.pdf_第1页
(微电子学与固体电子学专业论文)基于断言的动态功能验证方法研究.pdf_第2页
(微电子学与固体电子学专业论文)基于断言的动态功能验证方法研究.pdf_第3页
(微电子学与固体电子学专业论文)基于断言的动态功能验证方法研究.pdf_第4页
(微电子学与固体电子学专业论文)基于断言的动态功能验证方法研究.pdf_第5页
已阅读5页,还剩69页未读 继续免费阅读

(微电子学与固体电子学专业论文)基于断言的动态功能验证方法研究.pdf.pdf 免费下载

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

文档简介

摘要 随着i c 设计规模和复杂度的增加,设计的功能验证要花费整个设计流程时间的7 0 左右。目前 基于仿真的功能验证平台在实际应用中存在以下一些缺点:首先,验证平台由验证工程师利用h v l 语言建立,这要求只有在设计实现结束后才能开始创建验证平台,滞后了设计验证的进度;其次, 验证平台中虽然包含有时序检查机制,但是一般只是对端e l 协议进行检查,对设计内部的细节监控 较少,当发现设计缺陷时必须通过分析波形以及日志文件定位设计缺陷,可观察性较低:最后,验 证平台只能对高层功能特性进行覆盖建模,对设计内部边角问题以及细节特性建模比较困难,这造 成验证平台的功能覆盖建模不完整,降低了验证过程的可控制性。 针对目前验证流程的不足,将断言技术引入验证过程从协议和关键时序特性的检查机制以及覆 盖建模和报告机制两个方面来增强基于仿真的验证技术,提高设计实现的可观察性和验证过程的可 控制性。具体而言,将断言技术引入s p e c m a n e l i t e 验证平台中,给出加入断言技术后的功能验证流 程。探讨了基于p r a g m a 、p s l ,o v l 以及s y s t e mv e r i l o g 等断言实现方法的优缺点,最终选择s v a 库以及s y s t e m v e r i l o g 语言实现验证过程中的断言结构。本文以g a r f i e l ds o c 中的e m i ( 外部存储器 接口) 模块为例,详细地分析了e m i 模块设计规范的定义以及各个组成部分的设计实现细节,根据 这些设计实现制定出e m i 模块的功能验证方案,并且从特性检查与覆盖检查两个方面对其进行断言 的添加。最后从测试激励的产生、数据和时序检查机制以及覆盖检查和报告机制这三个方面对e m i 模块基于断言的功能验证环境进行设计,详细地分析了环境中各个组成部件设计实现的原因,并且 给出了环境仿真运行的过程。 实验结果表明,与原来基于仿真的验证环境相比,基于断言的动态验证环境可以极大的节省设 计缺陷的调试时间,从而缩短了设计功能验证的时间,而且可以发现更多的设计验证空洞,增加了 设计验证过程的信心。 关键词:功能验证断言验证s y s t e mv e n i o gs p e c m a ne l i t e 覆盖率 东南大学硕士学位论文 a b s t r a c t t o d a y si cd e s i g n sa r eg e t t i n gb i g g e ra n dm o r ec o m p l e x ,f u n c t i o n a lv e r i f i c a t i o nc a nt a k ea sm u c ha s 7 0 0 0o ft h et o t a ld e s i g nt i m ea n di to f t e nb e c o m e st h eb o a l e n e c kt ot a p e - o n t u n t i ln o w , v e r i f i c a t i o no f c o m p l e xd e s i g n sh a sb e e nl e f tt os i m u l a t i o n b u tt h es t r a t e g yh a ss o m ed r a w b a c k s f i r s t l y , a f t e rt h er t l i m p l e m e n ti sf i n i s h e d ,v e r i f i c a t i o ne n g i n e e r ss t a r tt oc r e a t et e s t b e n c hu s i n gh v l s oi tr e s u l t st ol a gt h e v e r i f i c a t i o np r o c e s s ;s e c o n d l y , a l t h o u g ht h et e s t b e n c hc o n t a i n st i m i n gc h e c h e r , i to n l ym o n i t o r st h e i n t e f f a c ep r o t o c o lo ft h ed u va n dd o e sn o tf o r t h ei n t e m a ld e t a i l so fr t li m p l e m e n t w h e nt h e v e r i f i c a t i o ne n g i n e e r sf i n dt h ed e s i g nb u g s t h e ym u s tu s et h ew a v e f o r ma n dl o gf d e st 0l o c a t et h e m s oi t r e d u c e st h eo b s e r v a b i l i t yo ft h ed u vt h i r d l y , t h et c s t b e n c ho n l yc o v e r st h eh i g hl e v e lp r o p e r t yo ft h e d e s i g n ,b u ti t i sd i f f i c u l tt oc o v e rt h ec o m e rc a s ea n dl o w e rl e v e lp r o p e r t y s oi t b r i n g st ot h eh a l f - b a k e d c o v e r a 【g em o d e l ,a n dr e s u l t st ot h el o w e rc o n t r o u a b i l i t yo f t h ev e r i f i c a t i o np r o c e s s i no r d e rt oo v e r c o m et h es h o r t c o m i n go ft h ep r e s e n ts i m u l a t i o nb a s e dv e r i f i c a t i o n ,w eb r i n gt h e a s s e r t i o ni n t ot h ev e r i f i c a t i o n a lp r o c e s st oe n h a n c et h es t r a t e g yf r o m 也e c h e c k i n gm e c h a n i s mo fp r o t o c o l a n di m p o r t a n tt i m i n ga n dt h ec o v e r a g em e c h a n i s mo fm o d e l i n ga n dr e p o r t i n g t h em e t h o di m p r o v e st h e o b s e r v a b i l i t yo f t h ed u va n dc o n t r o l l a b i l i t yo f t h ev e r i f i c a t i o np r o c e s s c o n c r e t e l y , w ei n t r o d u c ea s s e r t i o n i n t os p e c m a ne l i t ev e r i f i c a t i o n a lb e n c h ,a n dg i v et h ev e r i f i c a t i o np r o c e s s i nt h ep a p e r , w ef a r t h e rd i s c u s s t h ea d v a n t a g ea n dd i s a d v a n t a g eo ft h e s ei m p l e m e n tm e t h o d s s u c ha sp r a g m a 、p s l 、o v la n ds y s t e m v e r i l o g f r o mt h e s em e t h o d s ,w ec h o o s es v al i ba n ds y s t e mv e f i l o gt oi m p l e m e n ta s s e r t i o no f t h ed e s i g n t a k i n gt h ee m i ( c x t e m a lm e m o r yi n t e r f a c e ) o f g a r f i e l ds o cp r o j e c tf o re x a m p l e ,w ed e t a i l e d l ya n a l y z et h e d e f i n i t i o no f t h ed e s i g ns p e c i f i c a t i o na n di m p l e m e n td e t a i bo f a l lp a r t s a c c o r d i n gt ot h e s ed e f m i f i o u sw e e s t a b l i s h t h ev e r i f i c a t i o n a lp r o j e c t ,a n da d da s s e r t i o nf r o mp r o p e r t yc h e c k i n ga n dc o v e r a g ec h e c k i n g , f i n a l l yw ed e v i s ea s s e r t i o nb a s e dt h ef u n c t i o n a lv e r i f i v a t i o ne n v i r o n m e n to ft h ee m im o d u l ef r o mt h e a u t o m a t i cr a n d o mg e n e r a t i o no fs t i m u l u s 、t h ec h e c k e rm e c h a n i s mo fd a t aa n dp r o t o c o lt i m i n ga n dt h e m e c h a n i s mo fc o v e r a g ec h e c h e ra n dc o v e r a g er e p o r t i n g a tt h es a n l ct i m ew ea l s oa n a l y z et h er e a s o no f i m p l e m e n t i n ga l lc o m p o n e n t s ,a n dg i v et h ep r o c e s so f s i m u l a t i n gt h ee n v k o n m e n t t h ee x p e r i m e n t a lr e s u l t sp r e s e n tt h a tt h ea s s e r t i o nb a s e dv e r i f i c a t i o nc a ne x t r e m e l ys a v et h ed e b u g g i n g t i m ea n df a t h e rs h o r t e nt h ev e r i f i c a t i o np r o c e s sc o m p a r i n gt os i m u l a t i o nb a s e dv e r i f i c a t i o n m o r e o v e rt h e m e t h o dc a l lf r e dm o r ev e r i f i c a f t o n a lh o l e sa n di m p r o v et h ed e s i g nc o n f i d e n c e k e yw o r d s :f u n 鲥o n a lv e r i f i c a t i o n ;a s s e r t i o nb a s e dv e r i f a :a t i o n ;s y s t e mv e r i l o g ;s p c c m a ne h t ec o v e r a g e 学位论文独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研究成 果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表 或撰写过的研究成果,也不包含为获得东南大学或其它教育机构的学位或证书而使用过 的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并 表示了谢意。 研究生签名:日期:迎:丝; 关于学位论文使用授权的说明 东南大学、中国科学技术信息研究所、国家图书馆有权保留本人所送交学位论文的 复印件和电子文档,可以采用影印、缩印或其他复制手段保存论文。本人电子文档的内 容和纸质论文的内容相一致。除在保密期内的保密论文外,允许论文被查阅和借阅,可 以公布( 包括刊登) 论文的全部或部分内容。论文的公布( 包括刊登) 授权东南大学研 究生院办理。 研究生躲毕导师虢捌警日期:一 第一章引言 1 1 课题研究的背景 第一章引言 随着芯片设计集成度的不断提高,数字系统的功能变得越来越复杂,尤其是s o c 设计,在一颗 芯片上包含了许多子系统,这使得功能验证工作变得日益困难。在目前的芯片开发项目中,功能验 证所消耗的时间已经占整个开发过程的5 0 到7 0 0 0 ,因此r t l 级的功能验证已经成为整个设计过程 的瓶颈。从图l 一1 可以看出设计缝隙和验证缝隙正逐步扩大,但验证缝隙的增加速度比设计缝隙要 快,验证方法已经远落后于设计能力i l j l 2 邶j 。因此,如何采用新的验证方法缩短功能验证的时间对于 弥补验证能力和设计能力之间的缝隙至关重要。 图1 - 1 验证能力和设计能力的对比【i 】 目前i c a s i cd e s i g nt e a m s ( n o r t ha m e r i c a ) 针对流片失败的芯片进行分析表明,i c 设计流片失 败的原因主要是芯片设计的逻辑功能错误,也就是芯片功能验证的不充分。在覆盖率驱动的验证过 图1 2 造成重新流片的原因对比【4 】 东南大学硕士学位论文 程中未对所有的功能点进行覆盖建模,从而给测试过程提供了错误的反馈信息造成的。如图1 - 2 所 示,逻辑功能错误引起流片失败的百分比2 0 0 2 年为7 1 ,到2 0 0 4 年已经升高到7 5 ”】【”。因此如 何利用新的验证技术构建完整的覆盖模型,指导设计功能验证的进度,增加流片成功的信心对i c 设 计具有极大的意义。 1 2 课题研究的问题 功能验证作为检验设计规范定义和设计实现一致性的重要手段,在i c 设计过程中具有极其重要 的作用。在逻辑设计阶段,如果没有进行充分的功能验证,设计中存在的逻辑性错误就很难在后面 的物理设计阶段被发现,而只能在流片之后才会被测试出来,这就导致设计成本的攀升和芯片上市 时间( t i m e - t o - m a r k e t ) 的延迟。从成本和上市时间的角度来考虑,通过功能验证发现逻辑性错误在 整个设计流程中至关重要。图1 3 表明了发现设计错误的数量、发现设计错误的代价和设计阶段三 者之间的关系。从图中可以看出,在整个设计流程中设计错误发现得越晚,用于修改错误的代价就 越高。在创意阶段修改错误只需修正设计方案,其代价是稍微延迟芯片开发进程,而对开发费用几 乎无影响:在芯片级或系统级发现设计错误,用于修改错误的代价会大幅提高,需要更多的错误隔 离时间、更复杂的纠错过程,严重时甚至需要系统设计人员重新设计芯片的实现算法,从而严重影 响芯片开发进度;在客户端发现设计错误,后果是灾难性的,可能要重新设计芯片,同时还会给芯 片生产商的信誉带来负面影响。 错 误 的 数 - i t 级 级 级 级级 图l - 3 发现错误的数量、修改错误的代价和设计阶段之间的关系 目前功能验证技术按照仿真过程中是否需要生成测试激励可以分为静态功能验证和动态功能验 证两种方法。静态功能验证是指通过数学方法检查所实现的设计是否满足某些属性,从而证明设计 实现和设计规范是否一致的验证方法【7 j 【s j 。其主要的手段是形式验证技术,这种方法的优势在于不需 要开发任何测试矢量,就能保证达到1 0 0 的覆盖率,但是在容量、应用范围以及对硬件环境方面的 苛刻要求限制了这种方法在功能验证中的广泛应用h 。目前功能复杂的设计主要是利用基于仿真的 动态功能验证技术,本文我们主要研究这种验证技术的改进方法。 动态功能验证作为前端功能验证的主要手段,应用范围相当广泛,它是通过对d u v ( d e s i g n u n d c rv e r i f i c a t i o n ) 施加澳4 试矢量,然后检查其行为是否按照设计规范运作,验证调试设计实现的一 种方法。这种方法的优点是简单、易操作、适用范围比较广且不受设计规模的影响,但是它也有明 显的缺点:验证过程总是在设计实现结束后进行,设计和验证过程并不是同步进行,浪费了很长的 时间;难以开发出完全彻底的测试案例,特别是一些边缘测试案例;难以分析、判断它的功能覆盖 率和测试的完备性;一些未被定义的行为可能会被当作设计错误报告出来;检查工作局限在一些给 2 第一章引言 定的范围之内。在实际工程项目中应用的v e r i s i v y 公司的s p e e m a ne l i t e 验证平台就是一种基于仿真 的动态验证环境。 引起上述问题的主要原因在于基于仿真的动态验证平台在很大程度上仍然是黑盒验证技术,设 计实现内部的可观察性很低,当发现设计缺陷时必须通过查看波形来定位缺陷的位置和原因。同时, 验证工程师开发的覆盖率模型主要是针对设计规范而建立的,并未对设计实现内部边角问题以及低 层细节特性进行覆盖建模,因此会遗失一些设计功能的验证。 断言验证技术是功能验证方法的一个新的发展方向,它通过在r t l 代码中插入断言语句,然后 在动态仿真的过程中由这些断言语句来判断实现的设计是否和设计的规范相一致”“。使用基于断言 的验证方法的优点是:验证人员能够很好地理解实现的设计;能够精确定位设计中出现错误的位置: 能够对设计实现内部需要覆盖功能点建模;验证开发过程可以和设计过程同步进行。这些优点可以 克服我们实际项目中应用的基于仿真的动态验证平台的缺点。 因此,如何将断言技术与基于仿真的动态验证平台相结合形成新的验证环境,缩短验证开发调 试时间,提高设计验证的效率是本课题研究的问题所在。目前国内关于i c 设计中断言的应用技术研 究还很少,本课题作为i c 设计方法学研究具有极其重要的意义。 1 3 课题研究的工作 当前基于仿真的动态验证平台般必须包含有三个要素:( 1 ) 测试矢量的自动生成,即验证平台 的自动化;( 2 ) 数据和协议以及设计实现关键点的检查机制;( 3 ) 覆盖率报告和分析机制。测试矢量的 自动生成技术主要目标是产生高质量的激励,高级语言如o p e nv e r a 有内建的机制可以轻而易举 的生成复杂的测试激励模式即j 。因此本文主要研究断言技术对验证平台中检查机制和覆盖机制的增 强作用。具体研究工作如下: 1 )通过对断言技术增强特性检查和覆盖机制的原因进行分析,给出加入断言技术后基于仿真 的验证流程,并且针对实际的应用归纳出添加断言的规则。 2 1 s p e e m a ne l i t e 是目前我们实际项目中应用的基于仿真的验证方法,将给出的基于断言的验 证技术与s p e c m a ne l i t e 相结合,分析实验平台搭建过程中各个部件的具体实现细节,构建 出与具体验证工具相结合的可以应用的验证平台。 3 )在仿真验证环境引入断言必须要一种实现方法,对断言的各种实现方法的优缺点进行分析, 给出可行的断言实现方式。 4 1 将与s p e c m a ne l i t e 相结合的基于断言的动态验证平台应用于g a r f i e l ds o ce m i ( 外部存储 器接口,e x t e r n a l m e m o r y i n t e r f a c e ) 模块的功能验证中,文中详细地分析了e m i 模块具体 的规范定义以及相应的设计实现细节,根据这些设计实现制定出e m i 模块的功能验证计划, 并且从特性检查与覆盖建模两个方面对其进行断言的添加。同时,从测试激励的产生、时 序检查机制以及覆盖机制这三个方面对e m i 模块基于断言的功能验证环境进行设计。最后 在仿真结果达到要求的前提下,将基于断言的验证环境中发现的设计缺陷的调试时间以及 所发现空洞的数量与未加入断言的仿真环境进行分析比较。 本文的课题基于断言的动态功能验证技术研究。本文共分为六章:第一章是引言;第二章 介绍基于断言的验证技术以及a s s e r t i o n 的实现方式;第三章主要介绍e m i 模块具体实现方案,并且 给出了功能验证计划以及特性检查断言和功能覆盖断言的具体实现;第四章主要研究e m i 模块基于 断言的动态验证环境的构建;第五章主要对具体实验数据进行分析;第六章对全文进行总结并对后 续工作提出规划性建议。 3 东南大学硕士学位论文 2 1 断言验证技术 2 1 1 断言的概念和优点 第二章基于断言的验证技术 作为对设计对象属性特性或行为特性的描述,断言( 声明,a s s e r t i o n ) 并不是一个新的概念。实 际上在软件设计中,断言已经得到了广泛的应用,它可以帮助软件工程师在软件开发及测试过程中 更早更快的发现、定位出软件中可能存在的错误。例如在j a v a 中定义了一种断言的语法;a s s e r t e x p r e s s i o n l :e x p r e s s i o n 2 ,当程序运行到这个断言,如果e x p r e s s i o n l 的值为假,则程序会报错,并 根据e x p r e s s i o n 2 给出相应的错误信息。许多j a v a 的工程师都认为断言是最快也是最有效的调试方 法。现在同样的概念越来越多被引入到硬件及s o c 设计中”“。 每一个硬件设计都包含了设计对象的特性,这些特性保证了硬件能够正常工作。某些特性属于 电路本身的属性特性,例如为了避免l a t c h 的引入,在c a s e 语句的描述中,我们需要进行满足f u l lc a s e 特性的描述。另外一些特性属于电路行为的特征,包括静态特性,这腾特性在任何时候都应该保持, 如三态总线在任何时候只允许最多一个驱动,也就是说只在给定时刻( 或时间段内) 需要满足的特 性。例如在a m b aa h b 的m a s t e r 写操作中,s l a v e 可以在数据传输周期插入等待状态以扩展整个写 周期。在整个扩展周期里,m a s t e r 要保持数据和控制信号的稳定如图2 - 1 所示。获们在设计a i - i b 的 囊棚期喇h 礴 c 懒l _ m n 螂 蛐嘲强艘 翱啦稿瓣臻辩 11 i 慧漂既 熏黝黼i黑骶 疆 n 虻 曩 l i 愿曩懋 凑圉l 联一一) - ( 二 图2 - 1 在扩展整个写周期里,m a s t e r 应保持数据和控制信号稳定 m a s t e r 时要遵从这样的特性,同时我们在描述a h b 总线的m a s t e rw d t e 测试激励对也要遵从这样的 特性。在硬件设计中,实现对这些特性进行检查的方法或者实现这些特性的描述则被称为断言。断 言是一种语句,表达设计需求的行为。一般来说,断占对设计的功能没有任何直接的贡献,主要目 的是为了保持一个设计的说明和其实现的致性。 目前断言技术被许多先进的公司所采用,如c i s c os y s t e m si n c 、d i g i t a le q u i p m e l l tc o r p o r a t i o n 、 m mc o r p o r a t i o n 、i n t e lc o r p o r a t i o n 、l s il o g i cc o r p o r a t i o n 、m o t o r o l al n c 、s i l i c o ng r a p h i cl u c 等”。 这些公司的设计者采用断言方法在功能验证中取得了显著的成果。 d e c a l p h a2 11 6 4 项目3 4 设计缺陷被断言发现 c y 呶m 3 ( p 1 ) 项目 1 7 的设计缺陷被断言发现 d e c a l p h a2 1 2 6 4 项目( d e c 2 1 2 6 4 微处理器) 2 5 的设计缺陷被断言发现 c y r i xm 3 ( d 2 ) 项目2 5 的设计缺陷被断言发现 h p 项目8 5 的设计缺陷利用o v l 断言发现 现在许多先进的e d a 公司的仿真器也开始支持断言的仿真,如s y n o p s y s 的v c s 7 0 版本。另外 4 第二章基于断言的验证技术 许多的验证平台也开始与断言技术相结合来增强基于仿真的验证技术,如c a n d a n c e 的s p e c m a n 与业 界著名的断言开发公司0 - i n 的合作开发新型的断言库集,这些都为基于断言的功能验证方法的广泛 应用提供了基础。 断言在验证过程中不停地监视着设计的预期行为,并且不断的为设计工程师和验证工程师提供 各种相关信息。例如当在某一个插入点存在设计缺陷时,相关的缺陷报告就会被打印出来。通过这 种验证方法,设计工程师和验证工程师可以节省大量的时间和精力。断言验证方法可以作为传统验 证的有效补充,改善了传统验证方法中的很多问题,具体优点描述如下: 1 断言改善了传统验证方法的验证质量 仿真验证方法的仿真工作通常在芯片级进行,模块级的仿真有很多的限制。因此,很多的设 计缺陷是在项目设计的最后阶段才被发现,并且很难确定这些缺陷的位置。在模块级的代码 开发时,就在h d l 代码中插入断言,不仅可以减少设计人员手工编写模块级测试向量的工 作量,而且可以在项目进程的早期就开始验证工作,有助于较早的发现设计错误。 2 断言验证提高了设计的可观察性和可控性 使用仿真验证查找设计错误时,必须通过分析波形和日志文件,来检查设计中是否存在错误。 而断言验证需要了解设计模块的实现结构,当断言监视到设计中有违反断言描述的行为特性 时,它就会报告出设计缺陷的相关信息,大大提高了设计的可观察性。内嵌在硬件描述语言 里的断言,不但可以用来增加可观察性( o b s e r v a b i l i t y ) 以方便侦测错误,还可以用来表达设 计者的设计意图与叙述设计里的要点。而当整合多个模块时,断言也可以用来隔绝和快速定 位问题的所在。 3 断言增加了模块间的协调性 断言一般插入在模块中,也可以插入在设计的输入输出接口,监视设计的接口行为特征。现 代的i c 设计一般是由多名设计者合作完成,每名设计者设计不同的模块,在最后的系统集 成时,用断言来监视各个模块的接口行为是必须的,因此断言可以验证多个模块能否协调工 作。 2 1 2 断言技术对基于仿真验证方法的增强 2 1 , 2 1 基于仿真的验证方法 基于仿真的验证环境随着设计规模的增大和复杂性的提高逐渐的发生演变,经历了直接测试矢 量生成、随机约束矢量生成、覆盖率驱动的验证方法等三个阶段。下面按照平台搭建所采用的语言, 所包含的检查机制和覆盖机制以及验证平台的重用性对各个阶段进行介绍。 直接测试矢量生成 黼辫寨ij 义i j 图2 - 2h d l 任务验证策略 在测试矢量直接生成的验证方法中,测试矢量是根据设计功能规范利用h d l 语言中的任务手动 开发的。这种语言对于高层行为特性描述比较困难,因此整个平台基本上没有数据和时序的检查机 制,而且覆盖模型也是仿真工具所特有的代码覆盖,用户很少会对设计功能进行覆盖建模。这种验 证方法主要应用在规模比较小的设计中。尽管利用h d l 语言可以开发出b f m 等符合验证重用性的 5 东南大学硕士学位论文 模块,但是验证平台的重用性还是有限的。并且在仿真过程中必须利用波形文件和日志文件进行分 析来发现设计的缺陷。 随机约束矢量生成 随着验证技术的发展,验证工程师发现完全随机的验证方法一般需要比较长的时间才有可能达 到令人满意的覆盖率,而且有些设备的传输类型只有几种,这样就导致把时间浪费在了一些根本不 需要产生的测试向量上,所以提出了约束随机测试( c o n s t r a i n e d r a n d o m t e s t ) 这种新的验证方法, 这种方法可以有效的缩短验证时间,在短时间内达到令人满意的覆盖率。 由于约束随机测试可以约束验证环境中各个层次上的属性,所以这种方法可以更真实地反映一 个实际的系统。使用约束,特别是带权重( 在整个测试中出现的比例) 的约束可以很容易地按事先 确定的比例产生验证工作所需要的具有某些特殊属性值的一类或几类测试向量,而且如果加入记分 板( s c o r e b o a r d ) 技术和自检测( s e l f - c h e c k ) 技术,会更加易于发现设计中的错误。这种验证方法 使用面向对象的语言来描述约束随机矢量,并且可以方便的对时序检查特性进行建模,所以构建的 验证平台具有很大的重用性j 。 覆盖率驱动的验证方法 覆盖率一般表示一个设计的验证进行到什么程度,也是一个决定功能验证是否完成的重要量化 标准之一。覆盏主要指的是代码覆盖( c o d ec o v e r a g e ) 和功能覆盖( f u n c t i o n a lc o v e r a g e ) 。代码覆 盖可以在仿真时由仿真器直接给出,主要用来检查r t l 代码哪些没有被执行到。使用代码覆盖可以 有效地找出冗余代码,但是并不能很方便地找出功能上的缺陷。 使用功能覆盖则可以帮助设计工程师找出设计实现上的功能缺陷。一般说来,对一个设计覆盖 点的定义和条件约束是在验证计划中提前定义好的,然后在验证环境中具体编程实现,将功能验证 应用在约束随机环境中可以有效检查是否所有需要出现的情况都已经遍历。功能验证与面向对象编 程技术结合可以在验证过程中有效地增减覆盖点。这些覆盖点既可以是接口上的信号,也可以是模 块内部的信号。但是利用面向对象的编程技术对模块内部的覆盖点进行描述很不方便,所以设计实 现的功能点建模一般是不完整的。 目前基于仿真的验证平台一般必须含有三个要素:测试矢量的自动生成,即验证平台的自动化; 数据和协议以及设计实现关键点的检查机制;覆盖率报告和分析机制。整个验证平台由验证工程师 利用高层次验证语言( h v l ) 创建,这些语言有v e r a 、e 、c + + 等。它们有助于测试激励的自动生成, 提供了功能验证的集成环境,包括输入驱动器、输出驱动器、数据检查、协议检查和覆盖分析。因 此,h v l 最大限度地提高了创建和维护验证环境的效率。在基于h v l 的方法中,验证的各部件在 h v l 仿真器中仿真,d u t 由v e r i l o g 仿真器仿真。h v l 仿真器与v e r i l o g 仿真器交互提供数据,产 生仿真运行结果。 但是在实际应用中验证环境的检查特性和覆盖模型都是基于设计规范而建立的,也就是说目前 的验证平台在定程度上仍然是黑盒验证技术,这些机制不能对设计实现内部具体细节进行描述, 因此在设计实现出现缺陷时,必须通过波形文件和仿真生成的日志文件分析才能确定缺陷的位置和 原因,浪费了很多的调试时间;并且对设计内部结构级的覆盖缺乏建模,未形成完善的覆盖机制来 指导验证的进度,降低了一次流片成功的信心,如图2 - 3 所示为覆盖率驱动的功能验证流程。上文 详细的讨论了断言技术在功能验证中的优点,通过断言技术可以成功的解决上面的缺点,整体提高 现在基于仿真的验证技术的效率,缩短功能验证的时间。下面将详细的分析断言技术对基于仿真的 验证平台中特性检查机制和覆盖机制的增强作用。 6 第二章基于断言的验证技术 图2 - 3 覆盖率驱动的验证流程 2 1 2 2 断言技术对特性检查机制的增强 在基于仿真的验证环境中,检查机制主要聚焦在整个模块的对外接口以及输入数据与输出数据 间的对比上。这些特性利用h v l 语言很容易的描述,尽管有时验证工程师可以对一些设计实现内部 的时序进行检查,但是利用高层次验证语言建立这种检查机制是比较麻烦的,并且验证工程师对设 计内部实现的理解并不深刻,必须花费很长时间的学习,这进一步延长了测试验证平台建立的时间。 例如,一个基于a m b a 20a h b 总线的从设备模块,验证工程师通常会对a h b 总线上的二级流水读 写操作时序利用e 语言进行描述,作为从设备接收数据时序的监测器,防止错误的发生,而对模块 内部的f i f o 是否在空状态时仍然进行读或在满状态时仍然进行写并没有进行检查。假若仿真过程中 f i f o 发生上溢出或下溢出造成数据丢失,验证工程师不能立即定位出是否是f i f o 引起的,而必须 从仿真波形和生成的日志文件进行层层的分析才能最终确定缺陷的位置。但是如果设计工程师在编 程过程中能对设计f i f o 的关键操作特性用断言进行描述,在仿真过程中一直监控该特性,当出现违 例时立即报错,可以缩减很大一部分的缺陷调试时间。 因此,设计者在编码时对所要实现的特性利用断言进行描述,作为仿真验证过程中的监测器, 与利用高层次验证语言描述的接口时序监测器相结合,可以对原来基于仿真的验证环境的效率产生 7 东南大学硕士学位论文 极大的改进。 具体而言,断言技术对于原来基于仿真的验证环境的增强表现在两个方面: 提高了设计的可观察性 图2 - 4 断言点的加入提高了观测性 利用断言技术项目组针对具体的模块可以在设计中创建无穷多的观测点,这样整个设计实现 的功能验证由黑盒技术变成为白盒技术,增加了设计模块的透明度,如图2 - 4 所示。 提高了设计缺陷的调试速度 断言能够帮助验证工程师在问题出现的地方或者附近捕获设计实现的缺陷,缩短了验证过程 的调试时间。并且功能缺陷发生时并不需要将发生缺陷地方的信息传输到输出端1 :3 ,仅凭借 出现问题信号和附近的代码就可进行调试,如图2 5 所示,当仿真过程中,一个设计缺陷发 生时验证工程师可以立即确定设计缺陷出现的位置。 图2 - 5 断言提高了设计缺陷的调试速度 2 1 2 3 断言技术对覆盖机制的增强 在原来基于仿真的验证环境中,验证工程师进行覆盖建模主要是从设计定义的规范开始的,由 于验证工程师对设计具体实现的细节并没有深入的理解,设计的结构级( s a u c t u r a ll e v e l ) 覆盖建模 很少甚至没有,这样在覆盖率驱动的验证方法中以覆盖点为验证进度的指标只能包含一部分的设计 功能,有可能还有一些设计实现内部具体的功能点未被验证,结果在覆盖率达到1 0 0 时一次流片仍 然会存在一些设计缺陷。例如在基于a m b a 2 0a h b 的外部存储器控制接口( e m i ) 模块中,利用 高层次验证语言很容易对a h b 总线上h s i z e 、h t r a n s 、h b u r s t 等读写操作的类型以及地址范围进行 覆盖建模,这些描述都是事务级的,然而对设计实现中s d r a m 进行自动刷新与s d r a m 初始化是 否同时发生并为进行覆盖建模,这样验证工程师在开发测试矢量有可能会忽视这个功能点,这个建 模是设计实现结构级的,是低层覆盖建模。 在r t l 设计编码过程中,设计者添加的增强覆盖机制的断言应包括两类:描述设计实现内部细 节的功能点覆盖模型;针对检查机制的覆盖建模。这是因为断言的特性检查语句只有在判断条件为 8 第二章基于断言的验证技术 假时,才在仿真器上打印出附加信息。而在判断条件为真或表达式没有执行时,整个断言检查特性 并没有相应的信息来加以区别,通过对这些检查断言的覆盖可以解决检察机制是否被执行的问题。 因此,通过断言技术在r t l 实现中添加关于设计结构级的覆盖建模,与原来仿真验证环境中的 功能覆盖点相结合,构建完整的功能覆盖机制,在仿真验证过程中将会开发出完善的测试矢量,覆 盖设计实现所有的功能点。 图2 6 覆盖率驱动验证流程的改进 综合上面的讨论,将断言技术引入基于仿真的验证环境中,对原来验证流程的特性检查机制和 覆盖机制具有极大的改进和提高作用,进一步缩短了设计缺陷的发现和调试时间,同时也提高了功 能验证的完整性和彻底性,增加了一次流片成功的信心。改进后的验证流程如下图2 - 6 所示: 1 根据设计规范,制订验证计划。验证计划中包含设计所有的功能点,所有感兴趣的测试场 景,所有的状态机的转变。 2 根据制订的验证计划用h v l 语言建立设计的验证环境,这个环境中需要描述覆盖的高层次 设计功能点以及接口协议检查部件。 3 从验证计划的测试场景中抽象出设计的行为属性,特征,再将断言插入到设计中监视设计的 行为属性特征。 4 运行测试向量进行仿真,确保尽可能多的测试场景都被测试到,通过这一步的验证,应该 找出大量容易被发现的b u g 。 9 东南大学硕士学位论文 5 分析覆盖率报表和断言的执行情况,评估设计中哪些功能点已经被覆盖,那些断言被执行, 找出尚未被覆盖和断言还未执行的地方。 6 再次生成测试向量,针对难以被测试到的边缘情况,可以编写d i r e c t e d 形式的向量。并运 行仿真,再次对覆盖率和断言执行率进行评估。 7 多次重复第5 步和第6 步,直至测试到所有的测试场景。 2 1 3 断言应用的规则 断言作为一种新的应用,在r t l 实现中添加这种语句必须遵守一定的原则,从而便于断言的仿 真和重复利用,以及验证平台的快速搭建。同时利用这些原则可以指导设计者如何添加断言。针对 目前s o c 设计开发的步骤,分别介绍在已有的设计i p 和新开发的设计坤中添加断言的原则。 2 1 3 1 新建的设计模块 利用断言代替自然语言来描述设计规范 设计文档和设计规范对于在设计实现中添加断言具有极其重要的作用。如果能够利用断言 来描述这些规范,那么由于断言是可以验证的,可直接检查设计规范与设计实现是否一致, 这些设计规范将不会出现模糊不清的定义。 在r t l 编码过程添加断言 断言在设计实现过程中添加能够利用形式验证工具尽早的发现设计缺陷,提前了设计验证 过程。如果在r t l 编码完成后再添加断言,断言技术的功效将不是那么大,因为很多的设 计缺陷己被仿真验证环境发现,而且设计工程师想要通过断言验证的设计意图有可能被忘 记。目前许多设计公司的经验都是在设计编码过程中添加断言,这是因为这个阶段设计者 在思考如何实现满足设计需求的逻辑以及如何与别的设计者开发的模块相互连接,能够更 有效的描述相应特性。 设计过程中要添加尽可能多的断言 在r t l 编码的过程中添加断言是重要的,但是作为一个基本的原则,检查设计缺陷的断言 越多将会发现越多的设计问题。同时,添加到设计实现中的断言越多能进一步的提高设计 实现的断言密度,因此断言的添加是一个持续不断的过程。 分析不是由断言发现的设计缺陷,在相应的位置添加新的断言来检测 在已经被发现的设计缺陷上添加断言看起来是没有多大的意义,并且是浪费时间的。但是 添加断言遵循这样的规则有下面的原因:第一,有助于设计者深刻理解断言添加的恰当位 置;第二,当向已经发现的设计缺陷上添加断言时,设计者能够发现与这类问题相似的设 计规范违例发生;第三,所有的设计缺陷并不能只靠调试一个设计违例来发现,通常当发 现一个设计问题时,其它的问题应该会在附近发生。利用在新的位置添加断言增加设计实 现的观测点,能够发现更多的设计缺陷,同时也提高了设计中的断言密度。 将r t l 断言放在所要验证的代码中 将断言语句放在r t l 代码中,能够起到注释文档的作用,而且在r t l 代码中添加断言能够 清晰的表述设计实现的目的。这种原则简化了断言添加的过程,在编码的过程中设计者积 极的思考设计的操作、断言添加的位置,有利于高效的r t l 断言的创建。与此同时项目组 成员在回顾设计代码时能够清楚地看出哪些部分缺少断言。 开发含有断言的i p 库 针对通用的设计结构开发相应的i p ,当这些设计结构在r t l 模块中例化时,可以直接将已 经创建的含有断言i p 库添加进入设计实现中。这种原则加快了断言技术的应用,设计者可 1 0 第二章基于断言的验证技术 以利用宏定义的方式来实现。例如设计实现中要用到f i f o 结构,可以开发一个包含嵌入上 溢和下溢检查断言的f i f o 模块。 提供一致的方法来使能或禁止断言 利用i f d e f 宏定义可以很容易的将断言从设计模块中移除或使能。例如 i f d e fa s s e r t _ o n f i f o _ c h e c k :a s s e r t ( p o s e d g ec l k ) ( r e l n2 f i f o _ d e p t h o v l 易于扩展。o v l 公共库中包含一些普遍应用的断言集,但设计者可以很容易的将自己 创建的断言加入到目前的库中 o v l 是易于应用的,并且被广泛的接受。在仿真和形式验证环境中,设计中添加的基于o v l 的断言不需要为了适应不同的仿真器而改动代码。但是o v l 库中只包含了一些基本的断言集合,在 表述涉及多个时间约束的特性描述时具有一定的缺陷,因此需要利用其它的描述方法进行互补。 目前断言实现方式中应用最广泛的是利用断言语言进行书写断言。近年来,设计公司和e d a 公 司的广泛参与促使断言语言的层出,如f o r s p e c ( i n t e l ) 、s u g a r p s l ( i b m a c c e l l e r a ) 、o v a ( s y n o

温馨提示

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

评论

0/150

提交评论