




已阅读5页,还剩50页未读, 继续免费阅读
(微电子学与固体电子学专业论文)soc总线验证组件的开发与研究——基于specman+elite平台.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 随着系统芯片( s o c ) 复杂度的提高。功能验证的工作量成倍增加,利用传统 的验证方法很难完成复杂度在百万门以上的s o c 的功能验证。高级验证语言的应 用,大大提高了功能验证的效率,e 语言作为一种高级验证语言,使验证工程师可 以高效地搭建验证平台。为了进一步提高验证效率,业界提供了基于e 语言的商 用验证组件e v c ( ev e r i f i c a t i o nc o m p o n e n t ) 。商用e v c 的出现,使验证工程师极 大地节省了搭建验证平台的时间。但是这种商用e v c 通常只针对s o c 中主流的体 系架构和常用的协议。当企业要推出具有创新结构或协议的s o c 时,往往得不到 商用e v c 的支持,这并不利于s o c 技术的多元化发展。 针对商用e v c 的缺点,本论文提出了一种基于e 语言的验证组件的开发思路, 实现了一种可重用,可配置的验证组件结构。在本论文工作中,开发出了s s 0 6 总 线的验证组件,并通过该总线验证组件搭建了相关的验证平台。这些验证平台的 应用,证明了这种验证组件开发思路的实用性。 关键字:系统芯片系统总线功能验证e 语言e 验证组件 a b s t r a c t a b s t r a c t w i t ht h ei n c r e a s eo ft h ec o m p l e x i t yo fs o c ( s y s t e mo nac h i p ) t h ew o r k l o a do f f u n c t i o n a lv e r i f i c a t i o nh a si n c r e a s e de x p e d i t i o u s l y i ti sd i f f i c u l tt oc o m p l e t et h e f u n c t i o n a lv e r i f i c a t i o no fas o cw h i c hi si nt h es c a l eo f m o r et h a nlm i l l i o ng a t e s t h e a p p l i c a t i o no f el a n g u a g e 鹊ak i n do f h v l s ( h i g h l e v e lv e r i f i c a t i o nl a n g u a g e s ) i n a k 髂 t h ef u n c t i o n a lv e r i f i c a t i o nm 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 t of u r t h 髓 e l l h a n c 七t h ee f f i c i e n c yo fv e r i f i c a t i o n ,t h eel a n g u a g eb a s e dc o m m e r c i a l v e r i f i c a t i o nc o m p o n e n t s ( e v c s ) b e c o m ep o p u l a ri nt h ei ci n d u s t r y b e c a u s eo ft h e i r p l u g - i ns t y l e e v c sh e l pv e r i f i c a t i o ne n g i n e e r st oc o m p l e t ev e r i f i c a t i o np l a t f o r mw i m h i g he f f i c i e n c y h o w e v e r , s u c hc o m m e r c i a le v c sa l m o s tf o c u so nt h eg e n e r a ls o c a r c h i t e c t u r e so rp r o t o c o l s e n g i n e e r sa l w a y sf e e lh a r dt oc h o o s ee v c sf o ras o cp r o j e c t w h i c hr e l a t e st oc r e a t i v ea r c h i t e c t u r e so rp r o t o c o l s t h ec o m m e r c i a le v c sd o n ts u p p o r t t h ec r e a t i v i t yi nn e wa r c h i t e c t u r e sa n dp r o t o c o l s t h i si sn o tc o n d u c i v et ot h ed i v e r s i f i e d d e v e l o p m e n to fs o ct e c h n o l o g y i nv i e wo ft h es h o r t c o m i n g so fc o m m e r c i a le v c s ,t h i sp a p e rp r e s e n t sa d e v e l o p m e n tm e t h o df o r t h ev e r i f i c a t i o nc o m p o n e n tu s i n gel a n g u a g e ,a n da c h i e v e sa r e u s a b l e ,c o n f i g u m b l e s t r u c t u r ei nt h ev e r i f i c a t i o n c o m p o n e n t t h es s 0 6 b u s v e r i f i c a t i o nc o m p o n e n th a sb e e nd e v e l o p e dd u r i n gt h ew o r ko ft h i sp a p e r , a n ds e v e r a l r e l a t e dv e r i f i c a t i o np l a t f o r m sh a v eb e e nb u i l t t h e a p p l i c a t i o n so ft h ev e r i f i c a t i o n p l a t f o r m sp r o v et h ep r a c t i c a l i t yo f t h ed e v e l o p m e n tm e t h o d k e y w o r d :s o cs y s t e mb u s f u n c t i o n a lv e r i f i c a t i o n el a n g u a g eev e r i f i c a t i o nc o m p o n e n t 西安电子科技大学 学位论文独创性( 或创新性) 声明 秉承学校严谨的学风和优良的科学道德,本人声明所星交的论文是我个人在 导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标 注和致谢中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成 果;也不包含为获得西安电子科技大学或其它教育机构的学位或证书而使用过的 材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中做了明确的说 明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切的法律责任。 本人签名:为j 乞组日期a 遮丑6 丝 西安电子科技大学 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。学校有权保 留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分内 容,可以允许采用影印、缩印或其它复制手段保存论文。同时本人保证,毕业后 结合学位论文研究课题再撰写的文章一律署名单位为西安电子科技大学。 ( 保密的论文在解密后遵守此规定) 本学位论文属于保密,在- 年解密后适用本授权书。 第一章绪论 第一章绪论 随着$ o c 规模的逐步增大,验证的难度和工作量显得越来越大。据统计在复 杂的逻辑芯片中验证的开销占到了整个项目的5 0 0 o - 8 0 1 ”,如图1 - 1 所示,验证的 工作量随着芯片规模的增加而增加。为了满足新的形势,新的验证方法和相应的 验证工具也越来越多。验证是i c 设计中的重要环节,特别是对于s o c 的设计来说 更是至关重要的。 3 0 4 0 ,9 9 6 3 0 0 kg a l e s 2 0 0 3 l m g a t e ss o c 5 0 0 0 图i - i 验证所占比重 由于s o c 的设计规模已经普遍超过了一百万门,利用传统的验证方法很难对 复杂的s o c 进行验证,而功能验证更成为s o c 设计流程中的瓶颈。业界针对s o c 验证的复杂性,提出了许多先进的验证方法。其中,高级验证语言的应用,大大 提高了s o c 验证的效率。基于高级验证语言的验证组件使搭建验证平台的工作变 得方便,这些商用的验证组件通常是针对常见的体系架构和协议开发的。因此, 对于项目中用到的创新的体系结构,改进的协议规范或用到的新的功能模块,都 很难找到合适的商用验证组件,这势必会影响s o c 技术向多样化发展。 本论文工作以一款s o c 的系统总线为对象,开发出其基于s p e c m a e l i t e 平台 的总线验证组件,在开发过程中,提出并应用了数据端口和事件端口对总线功能 模块进行封装的结构,使验证组件具备了可配置,可重用性的特点。 本课题是深圳市国微电子股份有限公司承担的研发项目“嵌入式通信处理器” 的一部分,具体负责验证平台的搭建工作,s o c 片内系统总线验证组件的开发。本 文的研究得益于深圳市国微电子股份有限公司和国家集成电路设计深圳产业化基 地的项目指导和软件支持。 第二章s o c 设计技术概述 3 第二章s o c 设计技术概述 随着摩尔定律的持续有效,微电子技术经历了飞速发展的过程。为了寻求更 高的性能,更高的稳定性和可靠性,将整个系统集成到单块芯片上是微电子技术 发展的趋势,这就促使了s o c 技术的诞生和发展。s o c 通常称为片上系统,又可称 为单芯片系统,芯片系统,系统芯片。片上系统技术不仅提高了系统的稳定性和 可靠性,同时又降低了整个系统的成本。由于这些优点,片上系统应用范围越来 越广,涵盖军用,民用产品的各个领域。本章简要介绍了s o c 技术的发展周期,以 及常用的设计方法。 2 1s o c 技术发展特点 s o c 技术给传统的集成电路设计技术提出了挑战。s o c 设计复杂性的提高,给 i c 产业带来了一场革命。它驱动着设计方法,验证技术,工艺技术,以及系统应 用理念的革新。 图2 - is o c 技术发展周期 由图2 1 可知,由于市场总是对s o c 的性能提出更高的要求,使各种相关技术 都得到了大力发展。每一款优秀的s o c 产品的诞生,在市场中的推广,都会引发市 场上激烈的竞争。芯片消费者为了在市场中建立自己的优势,会对芯片的性能提 出更高的要求,而这种要求并非现有的技术可以达到,这就刺激着新的i c 技术的 产生。i c 设计者为了更早的推出产品,抢占更大的市场份额,促使设计,验证等 相关技术变得更高效易用;为了使性能更加优越,功能更加强大,对工艺,设计 4 s o c 总线验证组r l :的开发与研究一基于s p e c m a ne 1 i t e 平台 方法等技术提出了更高的要求。一款s o c 的设计要涉及到系统模型的开发,开发与 验证工具的评估,高性能算法的开发,系统模拟方法,嵌入式处理器的选择,操 作系统,嵌入式软件的裁减与开发,i p 模块的选择,接口协议的匹配,软硬件协同 工作,验证方法的选择,后端实现,时序收敛,实时操作系统,应用软件在系统 中的集成,可测性设计等棘手问题。s o c 技术的发展,与以上这些技术的发展是分 不开的。 目前s o c 的设计技术是一种以可重用i p 为基础,以软硬件协同设计为主要设计 方法的芯片设计技术。随着s o c 技术的发展,业界产生了多种新兴的设计思路。 下面简要介绍一种s o c 设计流程,以及几种设计技术。 2 2 典型的s o c 设计流程 典型的s o c 设计流程i ij 包含三个方面:架构设计,软件设计和硬件设计。 架构设计:将高层次的产品需求细化为对所有硬件,软件的详细技术要求的 过程。架构设计的关键阶段是将设计划分为一系列硬件模块和软件任务,包括元 件之间的接口规范。架构总是需要不断演化,以克服初始设计的极限。不断演化 的架构应能适应变化的终端产品的需求,并以提高性能,可靠性,增强功能,降 低成本作为出发点。 软件设计:将软件任务要完成的功能以在处理器上运行的程序的形式实现的 过程。通常,软件设计组在早期阶段仅仅专注于重要算法或新软件元件的开发和 验证。模型的能力和真实性必然有局限性,通常会推后所有的硬件软件的系统集 成,直到有可用的硬件原型。 硬件设计:该过程包括了两个相互影响的流程:各硬件模块的设计和验证, 以及将所有的硬件元件集成到一个最终的v l s i 设计中去。系统的复杂性和硅能力 的增长步伐要求对现有硬件模块进行复用。 设计流程见图2 - 2 : 第二章s e c 设计技术概述 图2 - 2 软硬件协同设计流程 2 3i p 重用技术 s o c 结构极其复杂,规模庞大的系统级芯片设计不可能一切从零开始,随着集 6 s o c 总线验证纽件的开发与研究基于s p e c m a ne l i t e 平台 成电路设计技术的发展,i p 核的开发已成为不可忽视的发展趋势,它的出现为s o c 的实现和发展提供了基础。i p ( i n t e l l e c t u a lp r o p e r t y ) 核,又称为内核,可以用于构成 s o c 的基本功能模块,可山用户或专业的i p 开发商开发而成,i p 核具有可重用性。 图2 3 展示t 1 p 核与s o c 的关系。 2 3 1i p 核的分类 图2 3i p 核与s o c 的关系 i p 核重复利用可以提高设计能力,节省设计人员,可以缩短产品上市时间,更 好的利用现有的工艺技术,降低成本。通常将i p 核分为软核( s o f tl p ) 1 2 1 , 硬核( h a r d i p ) ,固核( f i r ml p ) 三类: ( 1 ) 软核i p 。它与工艺无关,是服务于r t l 设计阶段的i p 核。它以综合后的 r t l 级的描述形式提交,或以通用库元素的网表形式提交。此类i p 核只是通过了性 能和时序的验证,其他的实现内容及相关的测试验证等事项需要使用者来完成。 软核的设计周期短,设计投入少,由于不涉及物理实现,为后继设计留有很大的 发挥空间,增大了i p 的灵活性与适应性。 ( 2 ) 固核i p 。它是完成了综合的功能块,以综合后的代码或是通用库网表的 形式提交的。在布局规划的层面上对性能和几何尺寸等进行过结构性的或拓扑意 义的优化,初步做过了多种工艺的映射。其灵活性介于软核与硬核之问。 ( 3 ) 硬核i p 。它与生产工艺紧密相关。是专为版图阶段使用的i p 核,以版图 的形式提交。硬核是经过性能,功耗,几何尺寸的优化,并映射为指定的工艺和 通过实际流片验证的核。不同用户可以根据自己的需要选用特定生产工艺下的硬 核i p 。它的使用最为简单,但损失了灵活性 第二章s o c 设计技术概述 7 2 3 2i p 核的设计原则 i p 核的设计核心在于i p 核的可重用性,进行i p 核设计时应遵循下列原则口1 : ( 1 ) 从描述到封装,每一步都要考虑该i p 核的可集成性。 ( 2 ) 设计时要提供或保留必要的设计信息( 如设计、测试文档) ,以便日后据 此进行必要的修改。 ( 3 ) 在i p 核可用性的基础上重点解决可重用性。 2 3 3i p 核的基本应用特性 一般的可复用i p 核具有以下基本要求: ( 1 ) 实现可编程性,即可以进行不同的配置应用到不同的系统中。 ( 2 ) 技术无关性。软i p 核的综合脚本可应用到不同的工艺库中;硬i p 核具有 标准的接口电路。 ( 3 ) 具有标准的仿真接口,可识别不同语言的测试矢量,如v e r i l o g h d l 。v h d l 等。 ( 4 ) 实现可测性设计,即脱离系统后i p 核可自身验证。 ( 5 ) 描述规范,即具有详尽的外部功能和结构描述( 如:配置、参数、接口等) , 便于系统设计者选择和应用该i p 核。 2 4 软硬件协同设计( h w s wc o d e s i g n ) 软硬件协同设计【1 1 是当今s o c 芯片最主要的设计方法。本节介绍了它的特点, 并简要介绍了该设计流程的各个环节。设计流程见图2 - 2 。 2 a 1 软硬件协同设计的特点 软硬件协同设计技术与传统的i c 设计技术有着本质的区别。下面列举出软硬 件协同设计相对于传统的i c 设计技术的三大特点; ( 1 ) 注重系统级的仿真验证。由于s o c 是一个集成了众多功能模块的系统级 芯片,规模庞大,结构复杂,性能要求较高,使得出错后的检查变得非常困难, 因此该设计技术的重点是在顶层完成系统仿真验证,保证在最底层模块设计之前 整个系统的所有功能都已完成并经过验证。 ( 2 ) 采用并行式设计由传统设计方法的顺序式设计变为并行式设计,这是 因为s o c 的设计十分繁杂,若采用顺序式设计,很容易违背t i m e t o m a r k e t 原则。 8 s o c 总线验证组件的开发与研究一基t - s p e c m a ne l i t e 平台 这种并行式设计中,所有的设计问题都要在设计之初考虑到并提出相应的解决方 案。 ( 3 ) 使用虚拟模块搭建系统。在真正予模块设计之前,所有的设计工作都是 基于虚拟模块完成的,这是s o c 设计的另一个显著特点。 2 4 2 软硬件协同设计的流程 s o c 的设计首先是根据产品的功能需求,提出s o c 的整体设计描述,包括系统 行为描述和系统结构描述,如图2 2 所示。 行为描述就是如何通过某些算法实现系统功能,一般是把系统分成几个功能 模块,由这几个模块共同来满足系统功能要求。 结构描述则是把已有的i p 核和需自行设计的功能模块描述成虚拟模块 ( s y n o p s y s 公司提出的s y s t c m c 语占便是建立虚拟模型的一种语言) ,对基于虚拟 模块的系统不断进行功能仿真验证,从而确定与系统行为描述相匹配的系统结构 描述。虚拟模块的使用,大大提高了结构模型的准确性,有效减少了设计的循环 次数,缩短设计周期。 在系统验证的过程中面临的两个问题:一是系统行为描述和系统结构描述的 规范问题,对于一个复杂的系统设计,数据交互必然异常复杂。因此设计的每一 步都需要严格的规范要求,否则整个设计进程就会变得异常缓慢,在s o c 设计过程 中尤其明显;二是i p 核的集成问题,目前s o c 的设计不可避免的用到第三方的l p 核, 即使l p 核具有规范的描述和接口,但是具体的系统设计又会对l p 核提出具体的要 求,这就需要设计者解决i p 核的集成问题。 系统描述之后s o c 设计进入到系统功能仿真验证阶段,验证系统的结构描述和 行为描述是否匹配,此时设计者需要解决不同模块描述的联合仿真问题,仿真环 境的建立、测试矢量的确立等都是此阶段工作的核心问题。 当系统满足当初的功能要求后,紧接着便是软硬件划分阶段,确定系统中的 虚拟模块用什么样的i p 核来实现,根据不同的系统要求进行优化划分,目的是使 系统整体结构和性能得到最优化。为了尽可能的避免资源的浪费,软硬件的划分 应遵循以下原则i l j :复杂的但是要求不高的任务或是不常执行的任务倾向于使用软 件来实现;可升级的功能采用软件来实现更加方便。简单的但是高吞吐率的功能, 对性能要求较高的功能,用硬件来实现更加合理。 软硬件划分确定后,整个设计进入到软硬件i p 核的设计阶段,在i p 核设计过程 中,软件的开发与硬件模块的设计足并行的。要对硬件i p 核的设计进行模块级验证, 软件i p 核的设计也要进行验证。简单的硬件模块可以进行完备激励的测试确保其正 确性,复杂的硬件模块可以采用高级验证技术对其进行验证,本论文中所阐述的 第二章s o c 设计技术概述 9 验证组件的开发方法易于实现复杂模块的验证环境。在处理器选择完毕后,可以 选择相应的指令集模拟器来验证软件开发的正确性通常也会在硬件原型上进行 软件的验证。软硬件设计的高度集成促使了软硬件协同验证技术的诞生。 由图2 - 2 可以看出,不管是整体设计还是局部设计,并行的思想始终贯穿于设 计之中,这也是软硬件协同设计技术的核心。 r t l 整合阶段之后,即将r t l 设计与用于r t l 级仿真的处理器模型连起来后, 就进入了系统功能验证阶段。该阶段的目的是为了验证系统中的所有硬件模块是 否能够协调无误地完成所有功能。如果采用了软硬件协同验证的技术,就可以将 设计好的软件与硬件一起进行验证,这样会大大降低软硬件协同设计的风险。该 阶段是s o c 技术发展的一大瓶颈,它耗费了整个设计流程中的大量资源。本论文将 关注于功能验证这一领域。 随着系统功能验证的完成,s o c 的开发进入了后端设计,原型制造,软硬件集 成1 2 6 l ,应用调试和性能验证等阶段,直至批量生产。 2 4 3s o c 中软硬件模块的交互 整个s o c 系统可以看作并发的,相互影响的子系统或任务的集合。一个系统 可以被看作若干个交互影响的任务或模划”。每个子系统都有一组接口,通过这组 接口和其他子系统进行通信,并共享公共资源( 存储器,共享的数据结构,网络 端口等) 。s o c 通常包括至少一个基于软件的任务,这样至少有一个处理器硬件模 块加上数据和指令存储器,至少一个输入和一个输出设备。软件任务通过应用编 程接n ( a p l ) 等软件抽象和其他软件任务进行通信。硬件模块通过总线和其他硬件 模块进行通信。软件模块通常通过存储器映射的控制寄存器( 经常抽象为设备驱 动器) 和硬件进行通信。 2 5 可配置的嵌入式处理器 嵌入式处理器是s o c 的重要组成部分,处理器的选择直接影响到s o c 的性能 与功能的实现。业界有多个系列的嵌入式处理器供s o c 开发者选择,其中包括a i u 订 架构,p o w c r p c 架构,m i p s 架构,s h 架构等多个系列的许多款处理器。 虽然种类较多,但毕竟没有针对每一款s o c 设计的嵌入式处理器,s o c 设计 者为了寻求更高的性能,更低的成本,期望找到更合适的处理器。由t e n s i l i c a 公 司开发的t e n s i l i c a 处理器生成器解决了这个问题,为s o c 技术带来了新的开发思 路。 这种生成器可以生成由用户配置的处理器,该生成器可以将高层次的应用领 1 0 s o c 总线验证组件的开发与研究基丁s p e c m a ne 1it e 平台 域的需求转化为高效的硬件设计和软件工具。芯片设计者在处理器生成界面上通 过选择或描述应用源代码,指令集选择,存储器层次,外围电路和接口来生成处 理器。硬件设计的生成只需要大约一个小时左右,以标准r t l 语言的形式给出, 系统软件以e d a 工具脚本和测试平台,以及软件环境( c c + + 编译器,调试器, 仿真器,r t o s ,以及其他支持软件) 等形式生成。这个生成过程提供了立即可用 的,制造可移植的硬件设计和软件开发环境。这种处理器能够完成高端r i s c 处理 器可以完成的全部任务;相对于传统微处理器的功率,速度,面积和代码规模, 其执行数据的能力也是很高效的。 这种可配置的嵌入式处理器的生成方式为s o c 技术注入了新的设计思路。 2 6 结构综合概念的提出 硬件描述语言及逻辑综合工具的使用,极大地推动了数字i c 设计技术的发展, i p 复用技术与结构级建模技术使规模在百万门之上的s o c 的设计技术变得成熟。 但是随着摩尔定律持续有效,设计能力与工艺水平之间的差距仍旧越来越大。 为了进一步缩小设计能力与i c 工艺技术之问的差距,近年来在业界提出了一 种新的概念,结构综合 2 1 。结构综合的目的是把用结构级建模语言描述的设计转化 成寄存器传输级的设计,这将极大地提高设计能力。其设计思想可以由图2 _ 4 表示。 图2 - 4 结构综合设计流程 这种概念可使设计的抽象层次迸步提高,上升到结构级描述,利用结构建 模语言对整个设计进行描述,然后使用结构综合工具,在结构综合过程中进行高 级权衡,使之综合出合格的r t l 代码,再对其进行功能验证,随后进入逻辑综合 阶段,最终完成门级设计,版图验证,时序收敛,性能分析等工作。 第二章s o c 设计技术概述 2 7 小结 s o c 的设计中充满了由新技术带来的挑战,这些新的技术和挑战促使s o c 技 术迅猛发展。在以可重用l p 为基础,以软硬件协同设计为主要设计方法的s o c 设 计流程中,每一环节的变革都会深入影响s o c 技术的发展。其中,由于验证超大 规模a s i c 的复杂性,s o ( 2 的验证成为s o c 设计环节中的一大瓶颈。下章介绍s o c 的验证技术。 第三章主流验证技术 第三章主流验证技术 s o c 的验证贯穿整个设计流程,对从行为级h d l 设计一直到t a p e - o u t 之前都 需要做大量的验证工作。s o c 的验证包括功能验证( f u n c t i o n a lv e r i f i c a t i o n ) 、等价 性检查( e q u i v a l e n tc h e c k i n g ) 、静态时序分析和时序验证( s t a t i ct i m i n ga n a l y s i s & t i m i n gv 颉f i c a t i o n ) 、物理验证( p h y s i c a lv e r i f i c a t i o n ) 等几方面。其中功能验证是验 证中最复杂,工作量最大同时也是最灵活的一部分。本章主要介绍了功能验证技 术的发展,以及流行的验证方法。 3 1 功能验证技术的发展 随着s o c 设计规模接近并超过一百万门,功能验证很快成为设计过程中的瓶 颈。如图1 一l 示,设计团队花在验证上的时间占了总设计时问的5 0 至8 0 ,超 过了设计所需的时间。随着设计复杂度的增加,验证的复杂度呈指数增长。 功能验证从简单地利用h d l 语言进行验证演化到利用完备的自动化验证平台 进行验证,如图3 - 1 所示。 3 1 1 基于h d l 的验证 基于h d l 的验证 j 面向对象的验证 随机激励生成 i 测试平台工具 i l完备的验证自动化系统 图3 - i 验证技术的发展历程 早期的功能验证是基于h d l 的验证,h d l 既用作硬件描述又用作仿真建模, 1 4 s o c 总线验证组件的开发与研究基于s p e c m a ne 1 i t e 平台 当设计规模比较小并且测试环境相对简单时,这种方法能够很好地解决问题。图 3 2 描述了基于h d l 的验证环境。 典型的基于h d l 的验证环境1 3 1 具有以下两大特点: ( 1 ) 验证环境包含一组t l d l 程序,这些程序用于向d u t 写入数据和从d u t 读出数据。 ( 2 ) 在测试过程中,必须人工选择d u t 的输入激励,并由人工检查结果。 对于规模庞大的复杂设计来说,这种方法具有以下致命的缺点1 2 2 1 : ( 1 ) 测试过程冗跃,花费大量的时闯。 ( 2 ) 测试的可读性和可维护性差。 ( 3 ) 对于有限的人力来说,不可能考虑到所有的测试向量。 ( 4 ) 由于这种验证平台的可共享代码非常少,平台的可重用性差,搭建新平 台时也更困难。 图3 - 2 基于h d l 的验证环境 3 1 2 面向对象的验证( o b j e c t - o r i e n t e d v e r i f i c a t i o n ) 为了使验证环境具备可读性和可重用性,验证人员开始用c + 十等面向对象的 语言编写测试代码,搭建验证环境。由于面向对象的程序易于在较高的抽象层次 上模拟d u t 的输入和输出,因此编写测试激励和搭建验证环境的工作大大简化了。 但是开发人员要在各种验证中开发仿真器接口,这又带来了不便。 3 1 3 随机激励生成的验证 随着面向对象的验证持续发展,验证工程师产生了开发随机激励生成器的想 法。因为直接的测试激励的编写冗繁,且不易于维护。 这种随机激励例生成方法的缺点是激励空间过于庞大。许多生成的激励都没有 意义。另外,这种方法还带来了以下困难: 第三章主流验证技术 ( 1 ) 结果检查变得更加困难。因为输入激励的不确定,所以期望的结果也没 有办法进行定义。 ( 2 ) 验证通常以覆盖率分析作为度量验证的有效手段。但是随机生成的激励 使覆盖率分析变得困难。 3 1 4 测试平台工具( t e s t b e n c ht 0 0 1 ) 的使用 为了减少开发仿真器接口,定制的激励生成器等测试环境方面花费的精力, 测试平台工具应运而生。但它缺乏灵活性,一款测试平台工具通常不能适应所有 的设计。 3 1 5 完备的验证自动化系统的使用( c o m p l e t e v e r i f i c a t i o n a u t o m a t i o n s y s t e m ) 完备的验证自动化系统克服了分离的测试平台工具的局限性。验证自动化环 境一般具备以下特性; ( 1 ) 具备可拓展该验证环境的语言。 ( 2 ) 具备可生成受限激励的语言。 ( 3 ) 具备覆盖率分析功能。 ( 4 ) 可以简洁,详尽地对协议做出描述。 完备的验证自动化系统极大地提高了s o c 验证效率,提高了s o c 的产量。验 证工程师通常利用这种工具定义测试计划,搭建和维护测试平台环境,有选择地 生成激励,结果检查,利用覆盖率分析度量测试计划等工作。 3 1 6 对功能验证技术发展的总结 功能验证的发展始终伴随着三大要素的发展,它们分别是语言,平台和方法。 验证语言的选择,经历了从硬件描述语言( h d l ) 到硬件验证语言( h v l , 也称作高级验证语言) 或更为系统的硬件描述和验证语言( h d v l ) 的发展过程。 硬件验证语言有e ,o p e n v e r a 等,s y s t e m v e r i l o g 则属于硬件描述和验证语言。 验证平台的发展经历了从简单的测试环境到完备的验证自动化系统的进化。 目前有代表性的验证自动化系统如m e n t o rg r a p h i c s 公司的s c a l a b l ev e r i f i c a t i o n p l a t f o r m 、c a d e n c e 公司的i n c i s i v ev e r i f i c a t i o np l a t f o r m 、s y n o p s y s 公司的d i s c o v e r y v e r i f i c a t i o np l a t f o r m 等。在这里验证平台主要指的是两个部分:工具( t o o l s ) 和验 证知识产权核( v e r i f i c a t i o ni n t e l l e c t u a lp r o p e r t y ) 。本论文中,针对项目中的特有总 线结构,开发了符合该总线标准的验证组件,是一个简单的验证知识产权核,在 本项目和后继项目中将发挥作用。 1 6 s o c 总线验证组r l :的开发与研究基ts p e c m a ne l i t e 平台 验证方法也由最初的直接测试向量生成( d i r e c t e dt e s tv e c t o rg e n e r a t i o n ) 到约 束随机测试( c o n s t r a i n t c dr a n d o mt c s o ,一直发展到覆盖率驱动验证 ( c o v e r a g e - d r i v e nv e r i f i c a t i o n ) ,基于断言的验i 正( 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 ) ,形式 化【1 1 1 ,半形式化验谢1 1 1 等高效验证方法并存的局面。 3 2 功能验证环境的构成 h v l 的出现大大简化了验证环境的搭建工作。为了使验证环境具有较高的可 重用性和可读性,通常将功能验证环境2 1 划分为以下各模块,见图3 3 。 图3 3 功能验证环境 图3 - 4h v l 仿真器和h d l 仿真器问的交互 在基于高级验证语言( h v l ) 的方法中,验证组件在h v l 仿真器中仿真,待 第三章主流验证技术 1 7 测设计( d u t ) 由h d l 仿真器仿真。图3 4 说明了这种联合仿真1 2 1 的结构。h v l 仿真器和h d l 仿真器交互提供数据,产生仿真结果。h v l 仿真器和h d l 仿真器 作为两个独立的进程运行,并通过h d lp l i 接口进行通信。 3 3 当今流行的验证方法 由于各种验证技术所关注的角度不同,很难对这些验证技术做出分类和比较。 在本节中简要介绍几种流行的验证方法。 3 3 1 覆盖驱动验证( c o v e r a g e - d r i v e nv e r i f i c a t i o n ) 覆盖率翻表示了验证进行到的程度,也是决定功能验证是否完成的重要量化标 准之一。覆盖主要指的是代码覆盖( c o d ec o v e r a g e ) 【3 】和功能覆盖( f u n c t i o n a l c o v e r a g e ) p 】。代码覆盖可以在仿真时由仿真器直接给出,主要用来检查r t l 代 码哪些没有被执行到。使用代码覆盖可以有效地找出冗余代码,但是并不能很方 便地找出功能上的缺陷。 功能覆盖则可以帮助验证人员找出功能上的缺陷一般说来,对一个设计覆 盖点的定义和条件约束是在验证计划中提前定义好的,然后在验证环境中具体编 程实现,把功能验证应用在约束随机环境中可以有效检查是否所有需要出现的情 况都已经遍历。功能验证与面向对象编程技术结合可以在验证过程中有效地增加 覆盖点。这些覆盖点既可以是接口上的信号,也可以是模块内部的信号,因此既 可以用在黑盒验证也可以用在白盒验证【5 l 中。通过在验证程序中定义错误状态可以 很方便地找出功能上的缺陷。 3 3 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 ) 在验证过程中,一般很难找出跨多个时钟周期、顺序相关的一系列操作的时 序和功能是否有不符合规范的地方,为此研究出基于断言的验证方法( 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 ) u i 来推动验证技术发展。这种方法要用基于断言的验证语言,比 如o p e n v e r a a s s e r t i o n 语言( o v a ) 、s y s t e m v 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 ) 等。 使用断言可以方便的对一个给定输入的设计的期望行为进行精确的描述,从 而可以很方便的描述输入输出行为、总线协议以及设计中的一些复杂的关系。基 于断言的验证语言可以使用简单的语言结构来建立精确的时序表达式这些表达 式可以代表h d l 或者h v l 中的事件( e v e n t s ) 1 5 】,序列( s e q u e n c e s ) 例和事务 1 8 s o c 总线验证组什的开发与研究基于s p e c m a ne 1 i t e 平台 ( t r a n s a c t i o n s ) 2 7 1 等。通过检查这些表达式是否发生,可以很简单地进行功能覆盖 的检查,并且这种覆盖率分析是针对跨多个时序周期的一个事件序列或者整个传 输的,所以比传统的覆盖驱动验证的抽象层次要高。 断言的覆盖分析可以直接使用在协议检查或者事件描述中用到的那些时序表 达式,因此编码会更加灵活、简洁。在验证环境中使用基于断言的验证语言书写 的模块( 一般为c h e c k e r 和m o n i t o r ) 的可重用性优于用h d l 和h v l 写的模块, 此外要结合仿真器在仿真环境中进行验证的工作,不过这些代码可以直接应用到 形式验证( f o r m a lv e r i f i c a t i o n ) 上。 3 3 3 形式验证 形式验证( f o r m a lv e r i f i c a t i o n ) 主要是用来在覆盖所有可能的输入情况下检 查是否与给定的规范一致。形式验证主要包括两部分:一是等价性检查( e q u i v a l e n c e c h e c k i n g ) ,二是模型检查( m o d e lc h e c k i n g ) i h i 。 等价性检查主要是检查两个门级网表( g a t e l e v e ln e t l i s t ) 之间是否一致,保证 网表处理后不会改变电路的功能,或者保证网表能正确地实现r t l 代码所描述的 功能,或者保证两种r t l 描述逻辑一致。这种方法主要是用来寻找实现 ( i m p l e m e n t a t i o n ) 中的缺陷,而不是设计中的缺陷。因此这种方法很难发现同时 存在于两种要比较的描述中的固有缺陷。 模型检查主要是检查r t l 代码是否满足规范中规定的一些特性( p r o p e r t i e s ) 。 在规定这些特性时一般使用特性规范语言( p r o p e r t i e ss p e c i f i c a t i o nl a n g u a g e s ) , 目前一般也使用基于断言的验证语言。由于这种方法可以在不需要仿真的前提下 检查设计中所有可能出现的情况是否满足规定的特性,所以使用这种方法不会遗 漏任何的边晃情况( c o m e r - c a s e ) 。但是随着设计复杂度的增加和特性的增多,状 态空间( s t a t es p a c e ) 会成指数级增长,为了克服这一困难出现了一种新的验证方 法半形式验证( s e m i f o r m a lv e d f i c a t i o n ) ,如s y n o p s y s 公司的m a g e l l a n 工具。 这种方法把仿真技术的低复杂性和形式验证方法的完整性结合了起来。 3 3 4 半形式验证 半形式化验证把传统的使用测试向量的验证流程与形式化验证的强大功能和 验证的彻底性结合在一起。半形式化验证技术具有下列特点: ( 1 ) 半形式化方法补充了测试向量的仿真。 ( 2 ) 断言检查定义了形式化方法的目标属性。 ( 3 ) 断言检查定义了输入约束。 第三章主流验证技术 ( 4 ) 半形式化方法从仿真到达的状态开始以穷尽的方式搜索有限的状态空 间。 随着设计复杂度的增加,形式化和半形式化验证方法受到了广泛关注。半形 式化验证的流程见图3 - 5 。 图3 5 半形式化验证流程 3 4 小结 本章首先介绍功能验证技术的发展历程,对比了各阶段的优缺点,并指出了 传统基于h d l 语言的验证方法的不足。接着介绍了断言验证与形式化,半形式化 等流行的验证方法。可见,验证方法是多样化的,多种验证方法并存的局面为s o c 的验证带来了机遇,但同时也增加了选择验证方法的难度。 第四章s s 0 6 总线介绍 2 1 第四章s s 0 6 总线介绍 在s o c 系统中,总线为不同硬件子系统问的通信提供了接口。s o c 总线结构一 般包含有多级总线,它们从用途上可以分为系统总线( s y s t e mb u s ) 和外围总线 ( p e r i p h e r a l sb u s ) i 哥i 种,本章主要介绍了s o c 设计中较有影响的几种系统总线,并着 重介绍了本项目中开发的s s 0 6 系统总线的基本特性 4 1 总线技术综述 s o c 庞大的设计规模使得设计者必须采用可复用的i p 核,众多i p 核相互作用共 同实现系统功能,这样必然要求在各i p 核之间存在某种数据交互协议以及数据交互 的通道,总线技术的发展确保了s o c 中各i p 模块通讯的正确进行,使系统性能满足 应用的需要,更方便地集成i p 核。 从连接方式上系统总线主要分为共享总线( s h a r e db u s ) ! j 和点对点总线( p o i n t t op o i n t ) ,后者也称为s w i t c h 结构。共享总线是指系统中只有一组数据通路,所有 的设备都使用它来进行访问操作,同一时刻只能有一对设备占有总线进行通信 这就使得总线成为系统中的关键资源,需要用仲裁器来控制总线的使用权。在 s w i t c h 结构中,任意两个设备问都存在一组数据通路,同一时刻允许多对设备进行 通信。这样就成倍地提高了总线带宽,但同时也成倍地增加了系统资源开销。 目前业界较有影响力的三种总线标准为:i b m 公司的c o r e c o n n e c t , a r m 公司 的a m b a ( a d v a n c e dm i c r o - c o n t r o l l e rb u s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论