




已阅读5页,还剩56页未读, 继续免费阅读
(微电子学与固体电子学专业论文)基于e语言的验证方法和代码重用的研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 在目前的集成电路设计中,芯片的设计规模和复杂程度正大幅增加,对“系 统级 验证理论和技术提出新的挑战。e 语言是v c r i s i t y 公司于1 9 9 2 年发布的一 种高级验证语言。基于面向对象特性和可重用的特性,e 语言在系统级验证中表 现突出,近年来越来越多地引起人们的关注。 为了适应e 语言系统级验证的需求,本文参照v c r i s i t y 公司发布的e 语言重 用方法论( er e u s em e t h o d o l o g y ,e r m ) ,针对一款基于a r m l1 处理器的片上通信 系统r t l 级代码,设计实现了系统级验证平台的搭建暨代码重用。 论文首先对典型的验证方法和流程做了概述,并介绍了e 语言的基本特性。 然后,详细地阐述了e 语言验证模块( ev e r i f i c a t i o nc o m p o n e n t , e v c ) q 了各个功能 单元的设计方法,并对e v c 进行了分类。在对e v c 充分理解的基础上,讨论了 基于e v c 的系统级验证模型;最后,给出了重用模块e v c ,搭建基于删1 l 处 理器的片上通信系统系统级验证平台的具体方法及部分验证代码。对系统进行仿 真,证明了集成方法的正确性,符合e i m 的要求。 今后将研究适合不同类型片上系统的验证模型,同时将系统集成的先验知识 运用到底层验证代码的设计之中,为系统集成效率的进一步提高,取得先机。也 争取开发出更多商业化的e v c 。 关键词:验证e 语言e v e 片上系统系统集成 a b s t r a c t a b s t r a c t i nt h ec u r r e n ti n d u s t r yo fi ( 2d e s i g n , t h es c a l ea n dc o m p l e x i t ya r ei n c r e a s i n g s h a r p l y i ti sa l la b s o l u t ec h a l l e n g et ot h em e t h o d o l o g i e sa n dt e c h n o l o g i e so f v e r i f i c a t i o n o ns y s t e ml e v e l l a n g u a g eei sah i g hl e v e lv e r i f i c a t i o nl a n g u a g ew h i c hw a sr e l e a s e d b yv e r i s i t yi n1 9 9 2 i ti sd o i n gag o o dj o bi nt h ef i e l dm e n t i o n e da b o v eb e c a u s eo f i t s f e a t u r e so fo b j e c to r i e n t e da n dr e :l l s a b l e ,s oi ti sc o n c e r n e db ym o r ea n dm o r ep e o p l e t op r o m o t et h ep r e t t yd e v e l o p m e n to fl a n g u a g ee ,t h i sp a p e ra i n l sa tv e r i f i c a t i o n c o d er e u s a b i l i t ya n de s t a b l i s h m e n to fv e r i f i c a t i o np l a t f o r mf o rt h er t lc o d e sw h i c h d e s c r i b eat e l e c o m m u n i c a t i o ns y s t e mo nc h i p ( s o c ) b a s e do na r m1 1p r o c e s s o r ,g u i d e d b y er e u s em e t h o d o l o g y ( e i 洲) p u b l i s h e db yv e r i s i t y t h i sp a p e ri n t r o d u c e st y p i c a lm e t h o d o l o g i e sa n dg e n e r a lf l o wo fv e r i f i c a t i o n , a n d a l s os h o w st h ec e r t a i nf e a t u r e so f l a n g u a g eea tt h eb e g i n n i n g t h e ni td e s c r i b e sh o w t o b u i l da ne v c ( ev e r i f i c a t i o nc o m p o n e n t ) i nd e t a i l sa n dd i s c u s ss o m es y s t e ml e v e l m o d e l sb a s e do ne v c s a tl a s t , t h ep a p e rl i s t sp a r t so fr e u s e dc o d ea n di t e m sf o r e s t a b l i s h i n gv e r i f i c a t i o np l a t f o r mo ns y s t e ml e v e l ,a n da l lo f t h e s ea leb a s e do nm o d u l e l e v e le v c s s u c c e s s f u l l yr u n n i n go nt h es i m u l a t o ra p p r o v e dt h a tt h em e t h o d ss h o w e d a b o v ea l ec o m p l e t e l yc o r r e c ta n ds u r e l yc o i n c i dw i t he p - u v t h ea u t h o ro ft h i sp a p e rw i l lf o c u so nt h ec r e a t i n gv e r i f i c a t i o nm o d e l so fs o co f d i f f e r e n tt y p e s ,a n di nt h em e a l lw h i l e ,w o r ko nt h ep r o g r a m m i n gm o d u l el e v e l v e r i f i c a t i o nc o d ew i t hr u l e so fs y s t e ml e v e li n t e g r a t i o n ,a n da l s of i g h tf o rc r e a t i n gm o r e c o m m e r c i a l i z e de v c s k e y w o r d :v e r i f i c a t i o nl a n g u a g eee v cs o cs y s t e mi n t e g r a t i o n 西安电子科技大学 学位论文独创性( 或创新i 生) 声明 秉承学校严谨的学风和优良的科学道德,本人声明所呈交的论文是我个人在 导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标 注和致谢中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成 果;也不包含为获得西安电子科技大学或其它教育机构的学位或证书而使用过的 材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中做了明确的说 明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切的法律责任。 本人签名: 孝:型。日期:立2 z z :星、lz 幺 西安电子科技大学 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。学校有权保 留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分内 容,可以允许采用影印、缩印或其它复制手段保存论文。同时本人保证,毕业后 结合学位论文研究课题再攥写的文章律署名单位为西安电子科技大学。 ( 保密的论文在解密后遵守此规定) 本学位论文属于保密,在一年解密后适用本授权书。 本人签名: 弦)型 日期: 血i 、! 。2g 导师签名: 第一章绪论 第一章绪论 1 1 验证技术的重要性 在目前的集成电路设计中,芯片的设计规模和复杂程度正大幅增加,为保证 芯片的设计功能的正确性,需要花费比以往更多的时间和人力,开发人员通常需 要花费5 0 - - 7 0 的时间去验证他们的设计。而且,目前的验证技术发展速度远 远落后于设计技术,芯片验证已成为大规模集成电路设计的瓶颈,如图1 1 所 示。所以说,对验证方法论和相关技术的研究,已经刻不容缓,因为它关系到集 成电路产业能否进一步快速发展的问题。 图1 1i c 设计与验证的发展速度比较 1 2 验证方法 为了解决上述问题,业界总结出一系列的理论和方法。这些验证方法的划分 是多种多样的【1 】【2 1 ,有的按形成验证代码的语言( 如:v h d l 、l a n g u a g ee 、 s y s t e mv e r i l o g ) 划分;有的按断言、覆盖率驱动划分;有的按仿真验证工具划 分。这些划分是不同层次上进行的,是存在交集的。例如:使用同一种验证语言 可以在不同的仿真工具上按照不同的方式进行验证工作。因此,本文并不针对验 证方法做过多的定义式的划分,而是通过列举展现给读者。但需要强调的是,一 种好的验证方法,可以自动地可控地生成验证向量并确定设计缺陷的位置和严重 等级,从而提高验证效率和质量,有效地缩短开发周期,降低开发成本。 2 一 基于e 语言的验证方法和代码重用的研究 1 2 1 基于程序语言的验证 最早的以验证为目的被开发出来的程序代码是由硬件描述语言( h a r d w a r e d e s c r i p t i o nl a n g u a g e ,h d l ) 本身实现的。开发人员用h d l 语言来建立验证环境 和编写验证向量( 激励) ,将验证向量输入给待验证的逻辑模块( d e v i c eu n d e r v e r i f i c a t i o n ,d u v ) ,然后检查该模块的输出。这种方法的优点在于开发人员不需 要重新学习其它的开发语言,不需要重新掌握其它开发工具;开发单位也不必因 引进新的e d a 技术而增加开发成本;业界已有大量成熟稳定的h d l 验证代码可 以重用,大大缩短了产品的开发周期。但这仅适于中小规模模块的验证。对于那 些较大的功能模块,这种方法的缺点是验证环境的建立和验证向量的编写非常复 杂和困难,主要包括不能实现快速全面的验证向量的输入,从而难以短时间内达 到足够的覆盖率;验证环境无法长期维护和重用。这些是由h d l 语言本身是面 向设计而非面向验证所决定的。 由于h d l 语言的种种局限,设计人员开始使用面向对象的高级语言( 如 c + + 、p y t h o n ) 来建立验证环境和生成验证向量。这种验证方法可以使设计人员 从比较抽象的设计层次,对待验证模块的输入和输出进行建模,然后通过验证环 境与仿真工具的通信接口,将抽象的数据模型转换成比特形式的数据。这种验证 方法大大降低了验证向量的编写工作量,但是验证环境的建立相对复杂,比如验 证环境与仿真工具的通信接口逻辑的实现,就是一项极为复杂的工作。 至此,本文一直提“设计人员这种称谓,而直到真正的高级验证语言 ( h 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 ,h v l ) 出现后,“验证工程师才真正从“设计 工程师中分离出来。形成了系统工程师、设计工程师、验证工程师并行开发的 设计流程。对基于h v l 的验证方法,将在第1 3 2 小节验证语言的选择中详述。 1 2 2 基于受限随机的验证 由于验证向量编写的工作量非常巨大,验证工程师逐步采用随机生成验证向 量的方法,以减轻代码编写的工作量,实践证明这种方法是行之有效的,并在验 证工作初期,较短时间内大幅度地提高了验证覆盖率。但是单纯的随机向量的缺 点在于:由于激励是随机生成的,所以给验证结果的检查带来了一定难度,并且 验证工程师不能根据需要生成所需的激励,即不能实现对激励的约束,使许多仿 真是无序、重复进行的。随机性降低了可控性,更降低了验证工作中后期的效 率。因此,受限随机【3 1 ( c o n s t r a i n e d - r a n d o m ) 的概念应运而生,它主要是通过验证 语言的描述,给随机变量施加一定的限制,以达到对该变量的控制。代码如下: 3 2 位数据变量将以3 0 的几率在0 x 1 0 0 00 0 0 0 到o x l 0 0 0 麟的范围内生成;各 以1 0 的几率在两个边界值处生成;以5 0 的几率在其它范围内生成。 第一章绪论 d a t a :u i n t 0 , i t s :3 2 ) ; k e e pd a t a s e l e c t 3 0 :【0 x 1 0 0 0 _ 0 0 0 0 ,0 x 1 0 0 0 _ f 嘲;受限范围 10 : 0 x 0 0 0 0 边界值验证oooo; 1 0 : o x f f f f 闽; 边界值验证 : 其它5 0 o t h e r s ;) ; 范围 目前,受限随机已成为任何一种高级验证语言所应具有的最基本的功能。如 何更加合理地生成随机向量将成为今后的研究重点。 1 2 3 断言验证与形式验证 断言可以很方便的对一个给定输入的设计的期望行为进行精确的描述,从而 可以很方便的描述输入输出行为、总线协议以及设计中的一些复杂的关系。基于 断言的验证语言可以使用简单的语言结构来建立精确的时序表达式。这些表达式 可以代表h d l 或者h v l 中的事件( e v e n t s ) 、序列( s e q u e n c e s ) 和事务( t r a n s a c t i o n s ) 等。但是,使用断言验证需要选择学习某一种断言验证语言,涉及到巨大的学习 开销。目前,业界最流行的支持断言验证的语言是s y s t e mv e r i l o g ,本文将在 1 3 2 验证语言的选择一节做进一步阐述。 形式验证是近年来发展迅速的一种新兴验证技术,是一种完全不同于仿真【4 1 的验证方法,它通过数学的方法,逻辑的证明设计在所有可能情况的正确性与一 致性。形式验证主要分为两种: 特性检查( p r o p e r t yc h e c k i n g ) 特性检查通过对d u v 进行逻辑分析,用数学的方法,证明在所有的输 入条件下,d u v 的行为符合一定的特性( p r o p e r t y ) 。这些特性是从规范说明 书( s p e c i f i c a t i o n ) 中抽取出来的,用特性规范语言( 详见1 3 2 小节) 编写, 描述了d u v 的各种行为和功能。特性检查方法不需要仿真,它使用数学逻 辑证明,确保可以验证到所有可能的状态下是否符合特性描述。完备性是特 性检查最显著的优点。 等价性检查( e q u i v a l e n c ec h e c k i n g ) 主要是用来检查在后端实现的过程中,原始的r t l 代码与优化的r t l 代码之间、r t l 代码与其门级网表之间以及两个门级网表之间是否一致。因 此,等价性检查是确保设计在实现过程中的正确性和一致性,对于设计本身 的缺陷无能为力。 4 一 基于e 语言的验证方法和代码重用的研究 1 2 4 基于验证平台的验证 建立验证环境是一项复杂的工作,验证工程师往往开发出一系列的可重用 的、成熟稳定的验证环境验证平台。验证平台往往由验证工具及一系列相关技 术所承载,它类似于一个在验证工程师、e d a 仿真工具和待验证模块之间的翻译 器,如图1 2 所示: 将验证工程师编写的抽象层次的验证代码,解释翻译成仿真工具可读的 验证向量; 使待验证模块可以方便地被嵌入到验证环境之中,为验证工程师节省出 大量时间。 图1 2 验证平台在验证工作中的核心位置 可以说,基于验证平台的验证是当今芯片验证技术的发展方向,本文也将从 第二章开始,同读者共同探讨基于e v c 验证平台的技术发展问题。 1 2 5 验证方法的分类与选择标准 从验证工程师对待验证模块的细节掌握程度来划分,共有三种验证方法:黑 盒验证、白盒验证和灰盒验证。每一种方法都有各自的优缺点,既可单独应用, 亦可联合应用。在实际开发工作中,它们之间并没有明确的界线,这里仅在理论 上做出一个简要说明。 黑盒验证:( b l a c k - b o xv e r i f i c a t i o n ) 待验证模块的内部逻辑实现对验证工程师而言是不可见的。这样的好处 在于,验证工作可以和设计工作同步进行,它们的依据是同一本规范说明 书,如图1 3 所示。因此,缩短了产品的开发周期。其弊端在于,由于待验 证模块内部的实时状态不可见,一些错误是无法被检测出来的。 白盒验证: ( w 1 1 i t c - b o xv e r i f i c a t i o n ) 第一章绪论 与黑盒验证恰恰相反,验证工程师可以清楚地深入到待验证模块的各个 逻辑细节,根据验证需要,对任一个内部结点进行信号的激励与追踪。这样 的好处在于,更容易缩小逻辑错误的范围,使纠错更加快速与准确。然而: 验证工程师必须清楚模块( 代码) 的每一个细节,这必将增加验证 的工作量; 验证工程师需要查看设计代码,很容易受设计工程师的思路影响, 使“验证代码”成为“设计代码”的镜像,从而不能检查出错误; 白盒验证往往需要等设计基本完成后才能开始工作,与黑盒验证相 比,产品的开发时间显然增长了,如图1 3 所示。 灰盒验证:( g r e y - b o xv e r i f i c a t i o n ) 这是基于黑盒验证和白盒验证的优缺点所形成的一个相对“模糊”的概 念。不妨这样理解,为了验证需要,验证工程师可以对模块的个别结点进行 激励或追踪,而对其它部分则以黑盒对待。在实际的工程领域,大部分验证 工作采取了灰盒验证的方法。如图1 4 所示,清晰地显示出三种验证方法的 区别。 图1 3 黑盒验证与自盒验证在开发时间上的对比 图1 4 白盒、灰盒、黑盒验证关系对比 6 一 基于e 语言的验证方法和代码重用的研究 综上,随着技术的进步,越来越多的先进的验证方法被开发出来。一个i c 开发公司如果能够及时适当地选择新的验证方法,无疑会缩短产品的开发周期, 从而迅速地将产品推向市场,创造更多的利润,在市场竞争中胜出。由于验证的 投入占整个研发投入比重之大,新的验证方法的选择当慎之又慎,具体的考量标 准【5 】如下: 新的验证方法是否能大幅提高验证效率,并具有强大的生命力; 在缩短开发周期的基础上,是否能够真实有效地降低开发成本; 相关的验证工具是否便于使用,并有第三方的技术支持; 新的验证方法与现有方法和工具是否兼容,并可以实现快速平稳过渡; 开发人员对新方法的认可程度,及他们采用新方法后的学习成本。 上述标准是业内的一般经验总结,并非放之四海皆准的真理。验证方法是不 断变化着的,所以,i c 开发公司还是应当根据自身的情况,合理地做出选择。 1 3 验证流程 为了让读者对i c 产品验证工作有一个较为透彻的了解,现从两个角度简要 说明。首先,从i c 制造产业链的角度来看,i c 产品开发的每一个步骤都要涉及 到正确性的检验。这是由其自身多步骤,多环节的特性所决定的。毕竟,从一粒 砂土到能运行在高端电子产品中的芯片,是需要经过许多工序的。如图1 5 所 示,从规范说明书到实际芯片,分为三个主要的检验环节:它们与i c 设计流程 是一一对应,相辅相成的。 r t l 级验证c r t lv e r i f i c a t i o n ) 这一阶段主要以功能仿真为主,典型的仿真工具有:c a d e n c e 的n c 系 列,s y n o p s y s 的v c s 以及m e t o rg r a p h i c 的m o d e l s i m ; 等价性检验( e q u i v a l e n c ec h e c k i n g ) 由于综合工具不能保证综合后的设计是百分之百正确的,检测综合后的 网表和r t l 代码之间的一致性就是非常必要的。另外,还有针对网表级描述 进行的门级仿真,这步骤与功能仿真不同的是有一些延时信息引入到仿真 中,更能接近于现实的情况; 测试与分析( t e s t i n ga n da n a l y s i s ) 设计在投片之前,需要对其实验性的成品芯片在特殊的测试设备上进行 质量检验。只有当测试达到指标后,才能大规模生产。 如果说上面是从纵向的角度观察验证工作的话,那么接下来从横向角度观察 对一个i c 产品的验证工作。与设计相同,它涉及到总体系统、子系统、各个功 能单元及单元中各个功能模块,如图1 6 所示。此外,当对更高一级的系统进行 第一章绪论 7 一 验证时,还会涉及到验证环境( 代码) 的系统集成问题。而且随着芯片设计规模 的不断增大,验证环境的系统集成也越来越为人们所关注,这也是本文讨论的重 点。 d e s i g n s y n t h e s i s m a n u f a c t u r e 图1 5i c 设计中的3 个主要验证环节 图1 6 设计与验证在不同系统层次的对比 通过以上两个角度的观察,可得出结论:验证工作是一项极其复杂和深富挑 战性的工作,必须辅之以缜密的流程。验证工程师们只有遵循流程,才能保证验 证工作的可控和可实施。接下来,探讨验证流程中的各个具体步骤。 1 3 1 验证计划的制定 验证计划是一切验证工作的起点,也是整个验证流程的基础【6 1 。它从总体上 描述了验证任务和实施方案,记录所有需要验证的功能和边角情况( c o m e r c a s e ) 。具体可归纳为以下几个问题: 1 从概念工程师给出的规范说明书中,总结归纳待验证模块实现的逻辑功 能: 总线协议; 寄存器寻址与读写; 接口功能; 中断处理。 一一一一 基于e 语言的验证方法和代码重用的研究 2 对应1 中的逻辑功能,提出相应的验证任务: 如何生成高效的受限随机的验证向量; 如何构造参考模型( r e f e r e n c em o d e l ) ; 如何追踪并记录覆盖率; 如何保证代码的可重用,及重用已有的验证代码。 3 如何保证2 中的提出的工作任务,顺利地完成: 使用哪种验证方法; 使用哪种验证语言和工具。 为了回答上述问题,验证工程师不仅需要仔细阅读待验证模块的规范说明 书,深入了解其逻辑功能、端口描述、相关的总线协议、验证平台架构等等,更 重要的是及时同概念工程师( c o n c e p te n g i n e e r , c e ) 、设计工程师( d e s i g ne n g i n e e r , d e ) 做有效的沟通。实际上,验证计划是由概念工程师、设计工程师和验证工程 师共同定义的,如图1 7 所示,验证工程师的任务包括: 向概念工程师、设计工程师询问验证要求; 对规范说明书中存在的疑难点,同概念工程师澄清,向设计工程师通 报; 对设计代码中存在的疑难点,同设计工程师澄清,向概念工程师通报; 将验证方案提交给概念工程师、设计工程师,并征求意见反馈。 图1 7 验证计划制定过程中c e ,d e ,v e 的协同关系 需要强调的是,验证计划是验证需求和验证意图的体现,若是验证计划中对 某种可能引起错误的情况没有定义,那么由验证计划得到的覆盖率模型( 详见 1 3 3 小节) 也不会关注该情形,那么,即使覆盖率达到1 0 0 ,设计仍旧可能存 在错误。因此,验证计划需要有经验的工程师来制订,并在整个项目的开发过程 中不断地修订和重审,以保证考虑得尽可能地周全。 第一章绪论 9 一 最后,简要介绍一下“验证计划自动化的问题。从验证的发展历史来看, 随着待验证模块的逻辑功能复杂度的增加,验证计划在整个验证工作中比重也将 越来越大,这使得此项工作从以前由验证工程师手动制表,书写计划和报告;到 现在的工具化、自动化。一些典型的逻辑结构,如:寄存器,已经能利用p e r l ( 实用析取和报告语言) 或a d o b ef r a m e m a k e r ( 自动化文本编辑器) 从规范说明 书直接生成验证计划和相关验证代码。 1 3 2 验证语言的选择 验证计划中重要的一个要素,便是对验证语言的选择,因为它将很大程度上 决定验证方法和工具的选择。为了减少验证工作量和提高验证效率,e d a 业界如 同过去推出硬件描述语言h d l ( v h d l v e d l o g ) - - 样,推出了高级验证语言( h i 曲 l e v e lv e r i f i c a t i o nl a n g u a g e ,n v l ) ,以适应不断增长的逻辑复杂性给验证工作带 来的挑战。目前,业界比较流行的高级验证语言有: l a n g u a g ee :本文将在1 4 小节详细介绍; s y s t e m c :虽然s y s t e m c 具有一定的验证功能【_ 7 1 ,但它被设计出来的目的 是作为软硬件协同建模的语言【8 】,它更适合于高层建模。 p s l :p r o p e r t ys p e c i f i c a t i o nl a n g u a g e 是一种专门用于描述硬件特性规范 的语言【9 】。它是在2 0 0 2 年s u g a r 语言被a c c e l l e r a 标准化组织选中作为工 业标准加以发展后形成的。p s l 语言简单易用且可用于v e r i l o g 、v h d l 及s y s t e m c 等多种设计语言。 s y s t e mv e r i l o g 【1 0 】:2 0 0 5 年成为i e e e 标准( i e e e1 8 0 0 ) 。它是v e r i l o g - 2 0 0 1 标准的扩展,其首要目标是致力于芯片设计和验证,以及系统级设 计流程。它的直接编程接口( d p i ) 可以调用c c h s y s t e m c 的功能函 数。s y s t e mv e d l o g 是一种“面向验证的设计的语割1 1 】。 上述的各种语言,面向的是复杂设计中的不同层次【1 2 1 ,分别有与之相对应的 方法论和验证工具被开发出来,并被不断地维护与更新。因此,业界也把验证方 法论、语言、工具合称为“魔幻三角,如图1 8 所示。本文无意讨论某种验证 语言的优劣,某种验证工具的好坏,而是要阐述:当且仅当魔幻三角中的三要素 合理搭配时,才能最有效、最快速地完成验证任务。 卫 基于e 语言的验证方法和代码重用的研究 图1 8 验证方法论、语言、工具构成的魔幻三角 1 3 3 程序仿真与覆盖率追踪 根据验证计划,用验证语言编写出验证代码后,便进入到程序仿真阶段。程 序仿真在i c 设计工作中占有极其重要的地位。它的基本内容是:按照规范说明 书的定义,将相关的激励信号加载到待验证模块,使其按照预定的功能工作,并 通过观察波形、检验输出等方法,找到设计中的逻辑错误,并加以改正,最终保 证设计的正确性。常见的程序仿真分类如下: 事件驱动仿真:使用比较普遍,像n c - v e r i l o g 、v c s 等均支持,但受芯 片规模和性能限制: 时钟驱动仿真:在每一时钟结束时计算电路稳态响应,不考虑时序方面 的问题,时序需要静态时序分析工具来验证是否满足要求。时钟驱动仿 真比事件驱动仿真速度要快1 0 一1 0 0 倍,适合大规模电路仿真; 基于传输仿真:传输操作是指传输虚拟部件和设计模块间的数据或控制 传递,简单的如访问、存储、读写操作,复杂的如结构化数据包传递。 仿真的目的是为了回答“设计是否体现产品规范说明书中描述的所有功能 的问题,其衡量标准是覆盖率,“覆盖率驱动验证”便应运而生。它是指所有的 验证工作,都是以快速、有效地提高覆盖率为核心的。只有覆盖率的达标,才代 表验证工作的完成。 当搭建起包含覆盖率模型的验证平台之后,验证工程师就可以在统计数据的 参考下通过各种手段来提高覆盖率。例如,可以先用比较宽泛的随机激励覆盖大 多数容易覆盖的情况,然后再分析当前的尚未覆盖到的情况,根据它来约束随机 激励发生器,以覆盖这些较难覆盖的情况。如果有些边角情况难以用“随机激 励 达到,可以用“定向激励来达到,甚至采用形式验证的方法。 另外,需要强调的是,在设计或验证环境有了改动之后,即使是很小的改 变,为了得到新的覆盖率,需要对所有的验证用例重新进行仿真。这一点也体现 了验证工程师与设计工程师之间及时充分地沟通的重要性。 第一章绪论 覆盖率可分为两大类: 代码覆盖率:指在仿真过程中,监测设计代码中有多少行被执行,每一 行被执行多少次,正确的执行又是多少。目前,一些仿真工具提供对代 码覆盖率的支持,例如m e n t o rg r a p h i c s 公司的m o d e l s i m ; 功能覆盖率 1 3 】:指在仿真过程中,是否所有可能的激励、激励组合都被 加载到待验证模块;是否所有可能的输出结果都被检测到。简单地说, 它是一个比率数据,指芯片中已验证通过的功能占该芯片全部功能的百 分比。而验证工作的目标就是尽量使这个比率达到1 0 0 。 如图1 9 所示,只有这两种覆盖率同时达标,才能说明验证工作的完成。而 在实际开发工作中,开发单位比较的注重功能覆盖率。或是,e d a 工具不提供对 代码覆盖率的支持。 器要迸步霰加验证 高激威,l ;l 使额有可能 要进 需要进步添加 蹴盏率辁 酒点 图1 9 代码覆盖率与功能覆盖率在验证工作中的对比关系 在这两大类覆盖率分类的基础之上,业界也有更为细致的分类。当然,这些 分类是从不同的角度引入的,可能存在功能重合之处。这里仅仅是向读者列述它 们的定义,具体技术细节,本文不再赘述: 行覆盖率( l i n ec o v e r a g e ) :反映代码行在仿真过程中被执行的程度,它是 代码覆盖率的进一步延伸; 描述覆盖率( e x p r e s s i o nc o v e r a g e ) :待验证模块的所有逻辑描述,有多少 被正确执行,通常以参考模型为比较对象; f s m 覆盖率( f s mc o v e r a g e ) :时序逻辑中的有限状态机母_ m :t es t a l e m a c h i n e ) 状态及状态转换被达到的程度; 触发覆盖率( t o g g l ec o v e r a g e ) :待验证模块端口有效电平值、寄存器读 写及中断响应等,被正确触发的程度; 通路覆盖率( p a t hc o v e r a g e ) :待验证模块的逻辑通路被打通的程度,如 图1 1 0 所示。 基于e 语言的验证方法和代码重用的研究 1 3 4 验证结果的提交 图1 1 0 通路覆盖率示意图 目前为止,已经论述了芯片验证领域的大部分工作。所有工作必须有结果, 这便涉及到验证结果的提交问题。在集成电路尤其是片上系统开发越来越规范 化、流程化的今天,验证结果的提交也不例外。从实际开发工作来看,整个验证 流程中,共有三类比较重要的结果提交: 验证计划 随着验证计划在整个验证工作中重要性的提高,验证计划已被越来越多 的项目开发小组作为验证结果的一部分,提上议事日程。在验证工作初期, 概念工程师、设计工程师、验证工程师及项目负责人共同召开圆桌会议,由 验证工程师提交验证计划报告;在验证工作中期,验证工程师根据实际情 况,对验证计划进行更新;在验证工作后期,验证计划将成为验证说明书的 一部分。 检错报告 检错报告是一个列表,详细列出待验证模块中逻辑错误的发现时间、出 错原因、纠错方案( 代码修改意见) 、纠错结果、验证工程师签名及概念工 程师和设计工程师意见等。检错报告对后续验证工作而言,是最直接的经验 积累。它贯穿整个验证过程,也将成为验证说明书的一部分。 验证说明书 验证说明书是验证工作全部结束的标志。它面向将来维护该验证环境的 验证工程师,为其描述了整个验证环境的创建情况,帮助其快速了解验证环 境中各个功能单元的使用方法。它包含验证计划和检错报告。 第一章绪论 1 3 5 验证流程自动化 综上所述,一种完善的验证自动化系统需要具备以下几个功能:首先它能够 定义验证计划;然后用高级验证语言从抽象层次建立验证环境;进行快速高效地 程序仿真,以达到覆盖率要求,并为验证结果的提交提供相应的技术支持。在本 文的第二、三章,将向读者阐述基于e 语言的验证自动化系统【1 4 】的开发细节。 1 4e 语言概述 e 语言作为一种高级验证语言发布于1 9 9 2 年;并于2 0 0 6 年5 月3 0 日,成为 i e e e 行业标准【l5 1 。它的发明者是著名e d a 工具提供商v e r i s i t y 公司首席技术官 y o a vh o l l a n d e r 。目前,支持e 语言的验证工具为c a d e n c e 公司的s p e e m a ae 1 i t e 。 这种特殊的语言从被发明到广泛应用,已有1 5 年的历史,虽然这门语言同 其它程序语言一样,在语法和应用上有着弱点与缺陷,但维护它的工程师们把更 多的精力集中到与方法论及工具的结合上,使其功能远远超出语言本身的范畴, 如同1 3 2 小节提到的魔幻三角。也许正是因为e 的这个优点,它被许多的工程师 所接受,被许多的i c 设计公司所采纳。在很多与它同时代的开发语言被历史的 尘埃所淹没的时候,它却能不断地自我更新与优化,在业界表现出生生不息的活 力。那么,究竟是什么使e 语言取得如此辉煌的成绩,得到业界的广泛认可呢? 下面将从语言的“面向对象特性力和“硬件相关特性 两个方面【1 6 】进行分析。 1 4 1e 语言的面向对象特性 e 语言是面向对象的程序设计( o b j e c to r i e n t e dp r o g r a m m i n g ,o o p ) 语言,它 的最大特点是能够大幅度的提高验证环境开发的成功率,减少日后的维护成本, 提高验证代码的可靠性和可重用性。众所周知,面向对象的程序设计立意于代码 的重用,它通过给程序中加入扩展语句,把实现特定功能的函数“封装进编程 所必需的“对象 中。 为了更好的说明e 语言面向对象特性,首先对其基本语法做简要的描述。向 待验证模块加载激励和追踪信号是验证工作的两项最基本任务。为了更好地完成 这些任务,e 语言中分别有两种固定的语法结构。它们组成了e 语言代码的基本 框架,围绕着这个框架,e 语言可以实现其各种各样的功能。 数据结构体s t r u c t :一系列用于表达待验证模块相关协议及验证环境的抽 象变量的集刽1 。7 1 。这点将在2 2 2 小节做具体介绍; 功能单元u n i t :在验证工作中,完成某一特定任务的单元,如信号监 测、覆盖率追踪等,这点将在2 2 1 小节2 2 5 小节各个功能单元的设计 中做具体介绍。 丝 基于e 语言的验证方法和代码重用的研究 e 语言和其它程序语言一样,有一套完整的表达方式【1 8 】。如图1 1 1 所示,包 括数据结构体声明、变量及其数据类型的定义、功能函数、功能语句、运算逻辑 等。图中代码完成的操作是:在一个数据结构体中,定义了两个不同数据类型的 变量,a d d r e s s 和d a t a ;功能函数实现当a d d r e s s 为0 时,打印a d d r e s s ,并将其自 加1 。 图1 1 1e 语言语法结构示意图 e 语言面向对象特性,便体现在对“数据结构体和功能单元 的扩展上,使 其更适合对硬件代码的验证工作。众所周知,当待验证模块发生变化( 可能是基 本逻辑、信号名或路径的改变;也可能是一个新功能的引入) ,验证环境也需要 做相应改变。但是直接修改原有的数据结构体或功能单元从代码重用的角度看, 显然是不合理也不现实的。e 语言通过e x t e n d 语句来解决上述问题。通常e x t e n d 有两种方式: 直接扩展:用于与待验证模块的变化相对应的功能扩展、变量限制等; 子类扩展:用于完成特定功能或对应待验证模块特定工作模式。 代码如下:第一个e x t e n d 是对变量l e n 添加了一条限制,使l e n 在5 0 至1 0 0 间随机生成,它将对之后的所有调用l a be x a m p l eu 的功能定义产生影响;而第 二个e x t e n d 当且仅当控制变量o p c 为l o n g 时,才起作用。这样的好处在于,如 果仅仅因为待验证模块协议中的某个工作模式而必需在验证功能单元中增加代码 的话,子类扩展可以将代码单独封装。 t y p eo p e _ t : s h o r t ,n o r m a l ,l o n g ; u n i tl a b _ e x a m p l e _ u l e n :u i n t ( b i t s :8 ) ; k e e p l e n 5 0 ) ; 第一章绪论 e x t e n dl o n gl a b _ e x a m p l e _ u k e e pl e a 8 0 ;) ; e 语言文件以e 为后缀。当代码规模很大时,最好把代码分成多个文件来管 理,这和任何高级程序语言都一样。在c 或c + + 中使用# i n c l u d e 来导入其他文 件;在e 语言中,使用i m p o r t 语句。下面的例子展示了e 文件之间的调用,以下 有四个e 文件: f i l e l :l a b _ e x a m p l e _ _ 1 e f i l e 2 - l a b _ e x a m p l e _ _ 2 e f i l e 3 :l a b _ e x a m p l e _ 3 e f i l e 4 1 a b _ e x a m p l e _ 4 e 其中,l a b _ e x a m p l e 1 e 的内容有 i m p o r tl a b _ e x a m p l e _ 2 和i m p o r t l a b _ e x a m p l e _ 3 ;l a b _ e x a m p l e _ _ 2 e 的内容有i m p o r tl a b _ e x a m p l e _ 4 ;则它们的文件调 用关系及在验证工具中代码读入顺序分别如图1 1 2 所示: 另外,在e 语言中,有三种注释方法: 和v e r i l o g 、c 语言相同; 一:和v h d l 语言相同; :名为块注释,任何落在 之外的文本都被当作注释处理,这为 多个文件的代码合并提供了便利,因为合并后来自不同文件的代码可以 由块注释隔开。块注释在e 文件合并时发挥作用,如对验证用例的合 并。 图1 1 2e 文件的调用关系与代码读入顺序示意图 1 4 2e 语言的硬件验证相关特性 e 语言的硬件验证相关特性,主要是相对软件程序语言而言的。在程序仿真 的过程中,验证代码所实现的功能,要与待验证模块的实际状态保持同步。这包 括:与待验证模块的信号连接,对待验证模块逻辑变化的追踪与标识,对待验证 模块仿真结果的检验等等。另外,由于对激励向量加载、覆盖率追踪等验证基本 坚 基于e 语言的验证方法和代码重用的研究 要求,也要求e 语言有更高的灵活性,能够更准确地反映硬件的逻辑特性。本小 节共列举4 项硬件验证相关的特性。 1 受限随机的实现 生成受限随机的激励向量,并将其加载到待验证模块以实现对各种功能 可能性的验证,几乎成为了各个验证语言的必备功能。e 语言通过多种方法 实现对激励向量的控制。如1 4 1 小节例举的代码中的k e e p 语句,实现的便 是限制变量l e n 在5 0 到1 0 0 之间随机生成;又如1 2 - 2 小节中的代码,3 2 位 数据变量d a t a 按规定几率在相应范围内生成;再有如下代码:规定地址变量 a d d r 在数据变量d a t a 之前生成。 k e e pg e n ( a d d r ) b e f o r e ( d a t a ) ;限制生成顺序 2 事件的定义 在仿真过程中,验证工具或仿真工具中发生的某一特定的活动( 如:信 号变化、寄存器复位、中断响应、状态机状态转移等) 被称之为事件 ( e v e n t ) 。它可以做为验证环境在仿真过程中的观察点,为信号的追踪、覆盖 率的记录等提供时序上及逻辑上的依据【1 9 】。代码如下:事件c l k r e 表示信号 e l k i 上升沿的到来;事件r e a d y _ e 表示信号r e a d y _ n _ i 下降沿的到来;事件 c h e c kd o n ee 为预定义事件,在之后的代码中被激活,这里表示 l a be x a m p l et c m ( ) 函数的完成。 e v e n tc l k r _ ei sr i s e ( s t o p c l k _ i $ ) s i r e ; e v e n tr e a d y _ ei sf a l l ( s m p r e a d y _ n _ i $ ) s i m ; e v e n tc h e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO/IEC/IEEE 8802-1DC:2025 EN Telecommunications and exchange between information technology systems - Requirements for local and metropolitan area networks - Part 1DC: Qual
- 【正版授权】 IEC TS 62257-301:2025 EN Renewable energy off-grid systems - Part 301: Generators - Integration of solar with other forms of power generation within hybrid power systems
- 初中数学相交线第1课时++相交线(教学课件)数学苏科版2024七年级上册
- 人教版八年级英语上册期末测试试卷-含答案03
- 人教版八年级英语上册单元同步知识点与语法训练 unit6 section B
- 儿童生长发育全阶段特点与指南
- 人教版八年级英语上册Unit9标准检测卷(含答案)
- 新解读《GB-T 2383-2014粉状染料 筛分细度的测定》
- 图文转换-2026年高三语文一轮复习专项训练解析版
- 完形填空暑假提升练 (15空) 含答案-2025年新高一英语暑假专项提升(译林版)
- 卡丁车俱乐部管理制度
- 代理记账财务会计管理制度范文
- T/CHC 1001-2019植物源高有机硒食品原料
- 青岛租房合同协议书下载
- 企业内部培训合格证明书(5篇)
- 医疗设备采购项目实施进度计划
- 国内安全保卫学课件
- 高校干部面试试题及答案
- 农村宅基地审批培训课件
- 教科版科学小学科学三年级上册:全册 教案教学设计(新教材)
- 船员四小证Z01基本安全理论考试题及答案
评论
0/150
提交评论