已阅读5页,还剩65页未读, 继续免费阅读
(电路与系统专业论文)浮点fft的vhdl实现及hdl功能测试方法的研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
硕士学位论文 摘要 随着集成电路( i c ) 技术的发展,电子设计自动化( e d a ) 逐渐成为重要的 设计手段,已经广泛应用于数字电路和数字信号处理( d s p ) 系统等许多领域。同 时,随着门电路数目和系统复杂性以指数倍增,产品设计中功能验证也日益重要。 基于仿真的验证和形式验证是用于测试的两种方法。由于形式验证难以用于 大型设计的测试,所以h d l 验证的主要方法是通过大量的测试向量仿真h d l 代 码来完成。实际中一般运用功能覆盖方法来定量分析仿真的完备性,虽然1 0 0 的 覆盖并不能表明程序1 0 0 的没有错误,但却是衡量测试是否完成的一个重要标 准。 本文首先综述了e d a 技术的设计流程,功能验证的重要性,两种验证方法, 以及测试平台的构建。然后分析了语句覆盖、路径覆盖、判定覆盖,接着重点分 析了d u 对覆盖,d u 对覆盖是语句覆盖和路径覆盖的折衷。对于状态机测试,重点 分析了s f s m 覆盖。由于快速傅立叶变换( f f t ) 是d s p 的核心技术,所以本文 用v h d l 语言实现了一个浮点f f r 实时处理器,并编写了测试平台,进行了代码 覆盖分析。 本设计采用基2 算法,单精度3 2 位二迸制的浮点形式,主控制器采用状态机 建模。整个设计利用x i l i n x 公司提供的先进的i s e 5 3 系列软件,采用了先进的结 构化设计思想。总设计通过了m o d e l s i m 仿真与验证,在主时钟频率为1 0 0 m h z 时,完成8 点f f t 的操作总共需要8 7 5 n s 的时间,二十多个模块的代码覆盖率达 到了1 0 0 ,个别模块的代码覆盖率也在9 0 以上。实践结果表明,应用v h d l 实现的f f t 处理器可快速完成浮点数据快速傅式变换,代码覆盖率也表明系统的 测试工作比较完备。 关键词:测试平台;v h d l ;代码覆盖;浮点f f t a b s t r a c t w i t ht h ed e v e l o p m e n to fi n t e g r a t e d c i r c u i t ,t h ee l e c t r o n i cd e s i g na u t o m a t i o n ( e d a ) t e c h n o l o g yh a sb e c o m ea ni m p o r t a n td e s i g nm e t h o do fd i g i t a lc i r c u i ta n d d i g i t a ls i g n a lp r o c e s s i n g ( d s p ) s y s t e m s a tt h es a m et i m e ,w i t ht h ee x p o n e n t i a l g r o w t ho fg a t e sc o u n t sa n ds y s t e mc o m p l e x i t y ,f u n c t i o n a lv e r i f i c a t i o nw i l lp l a yam o r e a n dm o r e i m p o r t a n t r o l e s i m u l a t i o n - b a s e dv a l i d a t i o na n df o r m a lv e r i f i c a t i o na r et w om a i n t e c h n i q u e su s e d t o v e r i f yc o r r e c t n e s s u pt on o w , t h eb e s tw a y o fh d lv e r i f i c a t i o ni st os i m u l a t et h e h d ld e s i g nw i t ham a s s i v ea m o u n to ft e s t p a t t e r n b e c a u s ef o r m a lv e r i f i c a t i o n t e c h n i q u e sa r ef r e q u e n t l yi n t r a c t a b l ef o rl a r g ed e s i g n i np r a c t i c e ,s o m ew e l l - d e f i n e d f u n c t i o n a lc o v e r a g em e t r i c sa r eu s e dt op e r f o r maq u a n t i t a t i v ea n a l y s i s 研s i m u l a t i o n c o m p l e t e n e s s a l t h o u g h1 0 0 c o v e r a g ec a n n o tg u a r a n t e ea1 0 0 e r r o r f r e ed e s i g n ,i t p r o v i d e sac r i t i c a ls t a n d a r dt om e a s u r e t h ec o m p l e t e n e s so ft h ev e r i f i c a t i o np r o c e s s t h i sp a p e rf i r s t l yp r e s e n t st h ed e s i g nf l o wo fe d a ,t h ei m p o r t a n c eo ff u n c t i o n a l v e r i f i c a t i o na n dt w oc o r r e s p o n d e n tm e t h o d s ,a n dt h ec o n s t r u c t i o no ft e s t b e n c h a f t e r i n t r o d u c i n gs t a t e m e n tc o v e r a g e ,p a t hc o v e r a g e ,a n dd e c i s i o nc o v e r a g e ,w ep a ym o r e a t t e n t i o nt od uc o v e r a g e ,w h i c hi sat r a c t a b l ec o m p r o m i s eb e t w e e nt h es t a t e m e n t c o v e r a g em e t r i ca n dt h ep a t hc o v e r a g e s e m a n t i c f i n i t es t a t em a c h i n e ( s f s m ) c o v e r a g e i sa l s oa n a l y z e d s i n c ef a s tf o u r i e rt r a n s f o r m ( f f t ) i st h ec o r et e c h n i q u eo fd s p , w e f i n a l l yi m p l e m e n tf l o a t - p o i n t f f tw i t h v e r yh i g hs p e e d h a r d w a r e d e s c r i p t i o n l a n g u a g e ( v h d l ) a n da n a l y s ec o d ec o v e r a g eo ft h ew h o l ep r o c e s sw i t h o u ro w n b e s t b e n c h r a d i x - 2a l g o r i t h ma n d3 2 - b i ts i n g l ep r e c i s i o nf o r m a ta r eu s e di nt h i sp r o j e c ta n d t h ec o n t r o l l e ri sm o d e l e da saf i n i t es t a t em a c h i n e t h ew h o l e d e s i g na d o p t sx i l i n xi s e 5 3s e r i e ss o f t w a r ea n da d v a n c e ds t r u c t u r e d d e s i g nm i n da n di t i ss i m u l a t e da n d v e r i f i e db ym o d e l s i m s i m u l a t i o nr e s u l ts h o w st h a ti t t a k e s8 7 5 n st oe x e c u t et h e 8 - p o i n tf f t w h e nm a i nc l o c kf r e q u e n c yi si o o m h z t h ec o d ec o v e r a g eo fa l lm o d u l e s r e a c h e s1 0 0 e x c e p tf e w e x c e p t i o n a lm o d u l e s ,w h o s ec o d ec o v e r a g ea l s or e a c h e s9 0 v e r i f i c a t i o nr e s u l ts h o w st h a ta p p l y i n gv h d lt of f r s i g n a lp r o c e s s i n gc a na c c o m p l i s h f l o a t p o i n tf f t a n dt h et e s tw o r ki sv e r yc o m p l e t e k e yw o r d s :t e s t b e n e h ;v h d l ;c o d ec o v e r a g e ;f l o a t p o i n tf f t n 湖南大学 学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取 得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其 他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个 人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果 由本人承担。 作者签名:辛;t 圣 1 日期:触毕年f 月,7 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学 校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查 阅和借阕。本人授权湖南大学可以将本学位论文的全部或部分内容编入有关 数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位 论文。 本学位论文属于 1 、保密口,在年解密后适用本授权书。 2 、不保密团。 ( 请在以上相应方框内打“”) 作者签名:哥;馒 导师签名z 萋私妨 日期:畔年r 月,7 日 日期:c 上怔年j 月,7 日 硕士学位论文 第1 章绪论 1 1 e d a 工程的设计流程 e d a ( e l e c t r o n i cd e s i g na u t o m a t i o n ) 技术就是依赖功能强大的计算机硬件,在 e d a 工具软件平台上,对以硬件描述语言h 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 ) 为系统逻辑描述手段完成的设计文件,自动进行逻辑编译、逻辑化简、逻辑分割、 逻辑综合、综合布线( 布局布线) ,以及逻辑优化和仿真测试,直至实现既定的电 子线路系统功能。e d a 工程狭义的定义范围是指电子设计自动化,不包含电子生 产自动化。e d a 是近几年迅速发展起来的计算机软件、硬件、微电子交叉的现代 电子设计学科,涉及到计算机操作系统、数据库管理、编译原理、计算数学、人 工智能、电路理论和微电子学等领域。e d a 技术可分为系统级、电路级和物理实 现级三个层次的辅助设计过程。经典电子设计方法的特征是采用自下而上的设计 方法、采用通用元器件、在硬件模块电路搭成之后才能进行硬件软件调试、设计 文件以电路原理图为核心。这些特征导致了设计周期过长,设计者必须对成千上 万种通用元器件的性能特点熟练掌握,要设计后期问题才会发现,可能造成推翻 设计,重新开始的危险,一个复杂的电子系统,电路原理可能需要几十张乃至上 千上万张图纸,阅读、归档、修改等相当不便。 现在,基于e d a 的设计方法具有以下特征:设计人员按照“自顶向下”的设 计方法,首先从系统设计入手,在顶层进行功能方框图的划分和结构设计。在方一 框图一级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,在 系统一级进行验证【3 】。然后,用综合优化工具生成具体门电路的网络表,其对应的 物理实现级可以是印刷电路板或专用集成电路。由于设计的主要仿真和调试过程 是在高层次上完成的,这既有利于早期发现结构设计上的错误,避免设计工作的 浪费,又减少了逻辑功能仿真的工作量,提高了设计的一次成功率。 高层次设计是一种“概念式”设计1 3 1 ,设计人员无需通过门级原理图描述电路, 而是针对设计目标进行功能描述,由于摆脱了电路细节的束缚,设计人员可以把 精力集中于创造性的概念构思与方案上,一旦这些概念构思以高层次描述的形式 输入计算机后,e d a 工具就能以规则驱动的方式自动完成整个设计。这样,新的 概念得以有效地变为生产品,大大缩短了产品的研制周期。不仅如此,高层次设 计只是定义系统的行为特性,而不涉及实现工艺,在厂家综合库的支持下,利用 综合优化工具可以将高层次描述转换成针对某种工艺优化的网表,工艺转化变得 轻松容易。高层次的设计流程如图1 1 所示。 浮点f f l r 的v - i d l 实现及h d l 功能测试方法的研究 图1 1 禹层次设计流程 其步骤如下: 1 按照“自项向下”的设计方法进行系统划分 2 输入v h d l 代码 这是高层次设计中最为普遍的输入方式。此外,还可以采用图形输入方式( 框 图、状态图等) 。这种输入方式具有直观、容易理解的特点。 3 将以上的设计输入编译成标准的v h d l 文件 对于大型设计,还要进行代码级的功能仿真,主要是捡验系统功能设计的正 确性。因为对于大型设计,综合、适配要花费数小时,在综合前对源代码仿真, 就可以大大减少设计重复的次数和时间。 4 转化成网表文件 利用综合器对v h d l 源代码进行综合优化处理,生成门级描述的网表文件, 这是将高层次描述转化成硬件电路的关键步骤。 5 逻辑映射 利用适配器将综合后的网表文件针对某一具体的目标器件进行逻辑映射操 作,包括底层器件配置、逻辑分割、逻辑优化和布局布线。适配完成后,产生多 硕士学位论文 项设计结果: ( 1 ) 适配报告,包括芯片内部资源利用情况,设计的布尔方程描述情况等。 ( 2 ) 适配后的仿真模型。 ( 3 ) 器件编程文件。根据适配后的仿真模型,可以进行适配后的时序仿真, 因为已经得到器件的实际硬件特性( 如时延特性) ,所以仿真结果能比较精确地预 测未来芯片的实际性能。如果仿真结果达不到设计要求,就需要修改v h d l 源代 码或选择不同速度品质的器件,直至满足设计要求。 6 下载要目标芯片 将适配器产生的器件编程文件通过编程器或下载电缆载入到目标芯片中 f p g a 或c p l d 中。 1 2 验证的层次 在自上而下的设计过程中,在设计的各个阶段和级别,每一级设计都以上一 级的设计结果作为设计目标1 4 】,得到本级的设计结果的结果描述,这是设计或综合 的过程。验证的任务就是所得到的结果正确实现其设计要求。这里通常包括两个 方面: 1 功能验证 下一级所实现的功能与上一级的设计目标所要求的功能相一致,即功能验证。 对于这一类功能验证的仿真而言,仿真器并不会考虑实际逻辑门或联机所造成的 时j 副延迟、门延迟及传递延迟。取而代之的是,使用单一延迟的数学模型,来粗 略估测电路的逻辑行为;虽然如此无法获得精确的结果,但其所提供的信息,己 足够作为工程师,针对电路功能的设计除错之用。为了能顺利完成仿真,还需要 准备一份称为测试平台的h d l 描述文档。在这份文档中,必须尽可能地细描述所 有可能影响设计功能的输入讯号组合,以便激发出错误的设计描述位于何处。 2 时序验证 下一级本身符合设计规则和条件制约,包括连接关系的限制、时间关系的配 合等。包括结构验证、时序验证和规则验证等。在这个阶段,经过布线之后的电 路,除了须重复验证,是否仍符合原始功能设计之外,还要考虑实体的门延迟及 联机延迟的条件之下,电路能否正常运作。此时若真有错误发生,将面对更冗长 的重复修正周期。也就是说,可能需要回到最原始的步骤:修改h d l 设计描述, 重新再做一次相同的流程。 堡皇! 堡墼兰竺兰窭翌垒塑兰丝墼型兰童鎏竺堡窒 1 3 验证的重要性 目前,在c p l d f p g a k 的设计越来越复杂,设计的仿真验证比以前显得更 为重要 s l 。在一个使用i p 核的百万门级s o c ( 片上系统集成) 设计中,花费在仿 真验证上的时间将占整个设计周期的7 0 ,测试平台的代码数量将占整个设计代 码总量的8 0 。 功能错误是造成设计重新开始的首要原因,这对投资回报率和产品上市时间 造成了不利和负面的影响【6 】。为了提高系统级芯片的验证水平,应该将功能验证作 为总体设计方法的一个有机组成部分加以解决。实现这一目标的最有效途径就是 采用一种能够在不同工具和不同抽象级别之间实现可扩展的验证方法。功能验证 策略必须以整个系统为目标,其中包括数字硬件、嵌入式软件和混合信号内容, 必须考虑到每个设计层次以及设计流程的每个阶段。 一个单独的工具或者一项单独的技术都无法通过适当的方式解决1 7 1 前所面临 的验证问题,因为这些工具都是针对设计流程中的某个特定对象进行优化的,即 使是硬件描述语言f h d l ) 仿真引擎也需要采用多种解决方案。有些方案在模块级上 发挥较好作用,有些则在芯片或系统级上表现较好。因此,需要通过一套能够相 互协同工作的工具,形成一条从r t l 仿真到在线仿真乃至形式验证的完整解决方 案,这就要求各种验证技术能够在广度和深度上解决日益突出的由设计尺寸、复 杂性和性能问题所带来的验证挑战。 1 4 论文的主要内容 随着门电路数目和系统复杂性以指数倍增,产品设计中功能测试的重要性举 足轻重。基于仿真的验证和形式验证是用于测试的两种方法。由于形式验证难以 用于大型设计的测试,所以h d l 验证的主要方法是通过大量的测试向量仿真h d l 代码来完成。在一个典型的设计环境中,测试的质量主要依赖于设计人员对设计 的理解,而这种理解是不可测的。实际中一般运用功能覆盖方法来定量分析仿真 的完备性,虽然1 0 0 的覆盖并不能表明程序1 0 0 的没有错误,但却是衡量测试 是否完成的一个重要标准。由于快速傅立叶变换( f f t ) 是d s p 的核心技术,所 以本文用v h d l 语言实现了一个浮点f f t 实时处理器,并编写了测试平台,进行 了代码覆盖分析。下面介绍了本文各章的内容。 第一章讲述了课题的学术背景和来源。e d a 工程的设计流程,验证的层次以 及验证的重要性,最后讲述了论文的主要内容。 第二章分析了功能验证的两种方法:形式验证和基于仿真的验证。探讨了形 式验证的基本方法和工具。讲述了仿真的层次和仿真系统的组成,常用的两种仿 硕士学位论文 真方法:交互式仿真和测试平台。最后讨论了测试平台的构建和人机通讯规范。 第三章分析了语句覆盖、路径覆盖、判定覆盖,接着重点分析了d u 对覆盖, d u 对覆盖是语句覆盖和路径覆盖的折衷,对错误的检测能力超过语句覆盖,计算 复杂性比路径覆盖要少。对于状态机测试,重点分析了s f s m 覆盖( 语义状态机 覆盖) 。 第四章详细分析了浮点f f t 的v h d l 实现。重点研究与设计了f f t 的组成模 块:碟形处理器,时序控制,地址单元,主控制器。本设计采用基一2 算法,单精 度3 2 位二进制的浮点形式,主控制器采用状态机建模。整个设计利用x i l i n x 公司 提供的先进的i s e 5 3 系列软件,采用了先进的结构化设计思想。 第五章给浮点f f t 编写了测试平台代码,进行了功能仿真以及代码覆盖分析。 总设计通过了仿真和验证,在主时钟频率为1 0 0 m h z 时,完成8 点f f t 的操作总 共需要8 7 5 n s 的时间,测试向量考虑了一般情况和极限情况,通过多组测试向量 测试表明:二十多个模块的代码覆盖率达到了1 0 0 ,个别模块的代码覆盖率也在 9 0 以上。设计实践结果表明,本设计给出的应用v h d l 实现的f f t 信号处理器 可快速实现浮点数据快速傅式变换,并保证了灵活性,代码覆盖率表明了测试工 作比较完备。 浮点n 丌的v h d l 实现及h d l 功能测试方法的研究 第2 章验证方法 常见的验证方法有三种:形式验证、规则检查、仿真【3 】。形式验证是利用理论 证明的方法和数学推导的方法来验证设计结果的正确性。形式验证基于严密的理 论体系【7 】,用理论证明设计项目是否正确。e d a 工程的进展,使得形式验证研究 进入了应用阶段。规则检查是分析电子系统设计结果中各种数据的关系是否符合 设计规则。在版图设计中,主要检查不同线条的相互关系、线宽、电学性能等是 否符合规定,有专门的检查工具。仿真是指从电路的描述抽象出模型,然后将外 部激励信号或数据施加于此模型,通过观察该模型在外部激励信号作用下的反应 来判断该电子系统是否达到了设计目标。仿真方法是e d a 工程常见方法,根据不 同的电路层次,有不同的仿真工具。 2 1 形式验证 2 1 1 形式验证基本方法 一般情况下,在设计的各个阶段可以得到不同级别的实现结果,前一级的结 果作为后一级的目标【8 】。因而从广义上来说,就是要证明电路的两种实现等价。 2 1 11 组合逻辑电路的逻辑验证 对组合电路来说,不存在状态寄存器,其输出值z 【t 】不依赖于前面的输入值 x t i ( 1 i t ) 。这时只要对每个输入向量证明其输出向量相同。在组合逻辑验 证领域有两类方法。 转换为单一抽象模型比较。通过对单一表示的结构进行比较得出其功能等价 的结论。在最坏的情况下,布尔函数的正输入个数指数增加,其过大的内存需求 限制了一般布尔函数的验证能力。 利用测试输入向量进行验证。探寻使两个电路具有不同输出的输入测试向量。 若不存在这样的测试向量,则电路在功能上等价。在最坏的情况下,这种方法需 要穷举所有可能的输入测试向量,使得由于运行时间问题而限制了一般电路网络 的验证能力。 21 1 2 时序逻辑电路的验证 对于一个时序电路来说,可以把它看成一个有限状态机,电路功能的等价可 以用有限状态机的等价来判断。假定有两个状态机a 和b ,要对它们进行比较。 直观来说,当a 和b 有相同的接口,而且从相同的初始状态出发,两者对任意有 硕士学位论文 效输入值序列产生相同的输出值序列,则可以说a 和b 等价。常用的时序逻辑电 路的逻辑验证方法也有两种: 1 理论证明技术 运用公理和已经证明的定理证明电路的描述是正确的。这种方法几乎可以表 示所有的行为系统特征。但这种方法需要大量的用户知识,需要用户对证明过程 的引导,以便成功地验证实际的设计。理论证明的方法一般基于数理逻辑体系。 如命题逻辑、一阶逻辑、高阶逻辑及时序逻辑等。 2 状态搜索技术 通过自底向上地显示或隐式访问模型电路a b 的所有可达到的状态,判断 对从初始状态出发的各个路径的状态转换结果都使a b 的输出结果c 为常数0 , 从而证明a 与b 等价。引入b d d ( 二叉决策图) 表示状态集合,用深度优先和广 度优先的方法搜索f s m ( 有限状态机) 图,使得这种方法可以用来验证具有大量 状态的硬件设计。状态搜索技术比理论证明更容易用计算机实现,因而可用于验 证实际的硬件设计。 2 1 2 形式验证工具 形式验证工具可分为三大类:等效性检验、模型检验和理论验证。理论验证 是可用的形式验证技术中最先进的,但仍须进一步研究。模型检验是将一个设计 与一组现存的设计所表现出的逻辑属性相比较,这些逻辑属性是设计规格的直接 表述。生成逻辑属性时,模型检验的使用要比等效性检验涉及得更多一些。 在三种形式验证方法中等效性检验用得最为广泛,它用数学方法来验证参考 设计与修正设计之间的等效性。利用等效性检验工具可对这两种设计方案进行彻 底的检验以保证它们在所有可能的条件下都有一致的性能。还可以利用等效性检 验来验证不同r t l 或门级实施方案的等效性,如图2 1 所示。 等效性检验的主要任务是比较两种设计中相应的组合功能块。进行该项检验 时先将设计分成较小的比较点或关键点,然后评估一个设计中给定的比较点上的 逻辑功能是否与另一个设计中对应的比较点关键点的逻辑功能等效。比较点可以 是输入端、状态点( 或寄存器) 和输出端。 因此,等效性检验包括:映射两种设计表述中的等效关键点、比较前面映射 的关键点并将两种设计中不匹配之处标记报告出来。 形式验证工具具有“关闭”设计中的特定模块或步骤的能力,也可在检查等效 性时将信号设置为预定的值。通常形式验证工具允许用v h d l ( r t l i 级) 、v e r i l o g ( r t l f 级) 以及其他门级网表格式( 如e d i f 和n d l ) 进行设计描述。利用门级网表 作为形式验证工具的输入需要技术库中原型的仿真模型。另外,也可限定一些约 束条件以指导等效性验证过程。 浮点f f t 的v h d l 实现及h d l 功能测试方法的研究 形式验证的一个局限性表现在它假设参考设计是正确的。如果参考设计中有 错误,在修正设计中是无法检查出来的。另外一个局限性是不能验证时序,因此 必须与静态时序分析工具配合使用。然而,形式验证并不需要使用任何测试向量。 图2 1 设计在不同抽象级别的比较 2 1 2 1 寄存器传输水平描述 编码方式对合成工具和形式验证工具的输出结果会有显著的影响1 9 】。因此,理 解不同的编码方式及其解释是很重要的。这里列出的一些基本问题将有助于对形 式验证过程的了解。“知1 ( u n k n o w n ) ”和“不介意( d o n tc a r e ) ”:在仿真中,未 知( “x ”) 和不介意( “一”) 可以取任何逻辑值。另一方面,在合成中,与“不介意” 的比较一般可视为f a l s e 。 例1 “不介意”条件 a l w a y s ( b o rs e l ) b e g i n o u t = 1 b x ; c a s e ( s e l ) 3 b 0 0 0 :o u t = b o 】; 3 b 0 0 1 :o u t = b 【1 ; 3 b o l o :o u t = b 【2 ; 3 b 0 1 1 :o u t = b 3 1 ; 3 b 1 0 0 :o u t = b 【4 】; 硕士学位论文 3 1 b 1 0 1 :o u t = b 5 ; 3 b 1 1 0 :o u t = b 6 1 ; e n d c a s e e n d 在例1 中,合成工具将赋予“x ”的值作为“不介意”条件。因此当条件为 s e l = 3 b l l l 时并不能推导出锁存器,即b 【7 】没有输出。如果形式验证工具不将“x ” 的赋值视为“不介意”条件,在此条件下则视为锁存器而且将标记出合成网表和 r t l 的不匹配。 一般都是指定v e r i l o g 中数字的基数和宽度。缺省情况下,当未确定大小时, 0 和1 视为3 2 位整数。在例2 中,假设a 是“l b 0 ”,b 是“1 b l ”。 例2 指定基数和宽度 o u t p u t 【3 :0 】o u t ; i n p u ta , b ,c l k ; r e g 【3 :0 o u t ; a l w a y s ( p o s e d g ec l k ) b e g i n c a s e ( a “一b ) 0 :o u t = a : 1 :o u t = b : d e f a u l t :o u t = a | b ; e n d c a s e e n d 有些e d a 工具先将数值扩展为3 2 位,然后再执行x n o r ( 异或非门) ,而其它 的工具却选择在扩展为3 2 位之前先执行x n o r 操作。如果合成工具先执行x n o r , 再扩展,结果将是o u t = a 即“0 ”。同时,若形式验证工具在执行x n o r 前先扩展 为3 2 位,o u t 将得到a 或b 的结果,即“1 ”,这会导致合成网表和r t l 间的不匹 配。为避免这个问题,一定要指定所列举数值的大小。 v h d l 是一种事件不敏感语言,而v e r i l o g 却是对事件敏感的。在大型的系统 芯片设计中,部分设计可能有不同的资源一v h d l 和v e r i l o g 模块。例如,单个 芯片可能包含由不同h d l 描述的外部第三方i p 。在这种情况下,验证工具在连接 设计和不同语言时,常采用最少限制的命名规则,如连接v e r i l o g 模块和v h d l 实体时就忽略了事件灵敏度。 用形式等效工具不能验证设计相对于设计目标的良好程度。形式等效检验器 检验的是:在不要求任何测试向量的情况下,同一设计的两种不同表述在逻辑上 是等效的。另外,这些检验器并不检验任何时序破坏。因此这些工具应与静态时 浮点f f t 的v h d l 实现及h d l 功能测试方法的研究 序分析结合使用。形式验证并不是要替代向量仿真方法,而是对它的补充。这一 技术正逐渐被接受,有望成为未来设计的基本验证方法。 2 2 基于仿真的验证 在数字电路设计过程中,仿真验证的主要目的是:在设计阶段,检验当前设 计文件的逻辑功能是否正确,是否完全符合设计要求i l o 。准确高效的仿真验证可 以最大限度地避免设计失误造成的风险。通常,仿真验证的基本工具包括仿真器、 文本分析器和第三方的硬件仿真模型。 2 2 1 仿真的层次 由于设计工程师对数字系统设计的层次不同,形成了不同的仿真工具。不同 的仿真层次不但在描述方法上不同,在模型抽象、内部实现和仿真算法中也有很 大区别。 2 ,2 1 1 电路级仿真 电路仿真的对象是晶体管、电阻、电容所组成的电路网络。仿真模型是阻容 等效电路。仿真的方法就是解方程法。电路级的仿真工具是s p i c e 软件。 2 2 1 2 逻辑仿真 逻辑仿真的对象是以逻辑门和逻辑块为描述电路的元件【1 1j ,电路中把这些端 口连接在一起。连接在一起的节点上的信号用逻辑值( 0 、1 、x 、z ) 表示。电路 的功能不直接描述,隐含在电路的元件和连接关系中。仿真的目的就是检查电路 是否达到设计的功能,包括逻辑功能、延迟特性、负载特性等。仿真的方法是在 模型器件的输入端加入激励信号波形,通过内部节点的传播,在输出端得到响应 波形通过分析、观察输入波形来判断功能和时序关系是否正确。 2 21 3 开关级仿真 用晶体管表示电路结构,电阻、电容不作为电路元件而作为晶体管和节点的 参数来描述。开关级的信号值与逻辑级一样,用0 、1 、x 、z 表示。仿真目的也是 根据电路的连接结构验证电路的逻辑功能。 2 2 1 4 寄存器传输级仿真 基本元件是寄存器、存储器、总线、运算单元等。并描述数据在这些元件中 流动的条件和过程。仿真通过控制信号和数据流的运动1 ,来观察描述是否正确。 通过数据在寄存器间的流动来仿真系统的行为,隐含地表达了电路的结构。 2 2 1 5 高屡次仿真 帧士学位论文 以行为算法和结构的混合描述为对象,一般采用v h d l 语言描述,主要着眼 于系统功能和内部运行过程1 1 3 】。基本元素是操作和过程。各操作之间主要考虑数 据传输、时序配合、操作流程和状态转换。高层次仿真的方法一般是对描述的解 释执行,仿真时观察运行结果的数据及其时序配合关系、状态转换关系,来判断 描述的正确性。 2 2 2 仿真系统的组成 现在电子设计方法和e d a 工具的发展,已经不用经典的实验板来仿真大规模、 复杂电路。利用计算机进行仿真,电路模型不用实际元件而用表示电路结构和行 图2 2 仿真系统的组成 为的数据,在输入端加入输入数据,称为测试矢量,在输出端得到输出数据,比 较输出数据,是否达到设计目标,就能完成仿真的目的。对同一个电路模型可以 旋加不同的测试矢量,进行多次仿真。控制仿真过程需要有控制命令,包括仿真 时间、仿真断点、仿真结果输出等。控制命令可以写到一个文件中顺序执行,称 为过程方式:也可以有用户随机键入控制命令,管理仿真过程,称为交互方式。 仿真系统的构成如图2 2 所示。 2 2 3 仿真方法 在硬件系统设计过程中,一般要进行三次仿真:行为仿真、r t l 仿真和门级 仿真。一般前两种为功能仿真i ,用于验证设计模块的逻辑功能:后一种为时序 仿真,用于验证设计模块的时序关系。其仿真方法有两种: 2 2 3 ,1 交互式仿真方法 在众多的e d a 工具中,大多数的v h d l 仿真器允许进行实时交互式的操作【1 5 1 , 允许在仿真运行期间对输入信号赋值,指定仿真执行时间,并观察输出波形,最 终经过多次反复的仿真过程后,在系统的逻辑功能、时序关系满足要求后,仿真 浮点开耳的v h d l 实现及h d l 功能测试方法的研究 过程结束。 2 2 3 2 测试平台法 利用测试平台,我们可以实现自动地对被测试单元输入信号测试矢量,并且 通过波形输出,文件记录输出,或与测试平台的设定输出矢量来进行比较,可以 验证仿真结果。 与交互式仿真方法相比,测试平台具有以下优点: ( 1 ) 简便地对输入和输出矢量进行记录归档。 ( 2 ) 对于手工方式就需要逐个处理输入和输出矢量而言,它提供了更为系 统的仿真途径。 ( 3 ) 一旦建立了测试平台并确立了测试矢量后,在设计经过多次修改后,仍 然可以很容易地重新进行仿真。 ( 4 ) 针对原v h d l 模型的测试平台,同样可以应用在实现后设计的时序仿真 中。 大多数e d a 工具可以生成设计实现后的v h d l 模型,它表达了设计在目标器 件结构下的详细信息。包括目标器件使用的单元结构,及其相连的信号组成。而 且还包括了必要的时序信息,以便让模拟软件检测信号,建立时间冲突,并计算 传导延时。测试平台与原代码具有相同的输入、输出端口,因此,利用测试平台 可以对一个设计进行功能仿真和时序仿真。 在数字电路设计过程中,测试平台是基本的仿真验证手段m 1 ,它的主要作用 是:例化待测试的设计;通过测试向量进行仿真;输出仿真结果。另外, 复杂的测试平台将自动比较当前仿真与目标结果的差别。测试平台主要使用 v h d l 和v e r i l o g h d l 编写,其代码风格比较灵话,不需要保证代码的可综合性。 简单来说测试平台是一个顶层模式。例化了被测单元( u u t ) ,用一系列的测试向 量驱动它,然后把结果和预期结果相比较。典型的v h d l 或者v e r i l o g 测试平台由 三个主要部分所组成: 激励产生器:用某一信号条件( 正确的和不正确的转换,最小化和最大化延 迟,错误条件) 驱动u u t 。 被测单元:表示将要验证的模型。 验证器:自动报告在仿真运行中碰到的任何错误。比较模型响应和预期结果。 f 激励产生器卜型苎皇刮被测单元卜堕竺+ l 验证器f 激励产生器卜叫被测单元卜+ | 验证器 l 图2 3 测试平台模型 为了运用最有效的方法来验证和添加报告的错误条件,激励产生器和验证器 硕士学位论文 运用存有测试向量和仿真结果的文本文件。测试码的编写不是一个简单的过程, 有时模块描述比较简单,但测试码却可以非常复杂【1 6 】。根据测试和模拟的结果, 可以对描述进行反复设计与修改,直至达到最终目的。当然,测试激励信号的选 择应该是全面的、典型的。因为测试是根据被测实体的端口给她加激励信号,测 试本身并不是一个具体的元件,它只是一些测试激励信号,所以实体为空。 2 2 4 不同仿真目的对测试平台设计的要求 仿真分为两个目的、三个阶段。由于仿真目的不同,对测试平台程序的书写 要求就各不相同。 1 行为级仿真 行为级仿真的目的是验证系统的数学模型和行为是否正确,因而对系统的抽 象程度较高1 1 7 】。因此,凡是v h d l 语言中语句和数据类型都可以在测试平台中使 用,在测试程序设计中尽可能用抽象程度高的描述语句,以使程序简洁明了。除 了系统规定的定时关系以外,一般的电路惯性延时,传输延时,在行为级仿真中, 都不予考虑,重点在于功能、行为验证。 2 r t l 级仿真 通过行为级仿真以后,就要进行r t l 仿真。r t l 级的仿真目的,是为了使被 测模块符合逻辑工具的要求,使其能生成门级逻辑电路。测试平台程序为了进行 r t l 级仿真,书写时要注意: v h d l 语言中的部分语句不能使用,如a t t r i b u t e ,带有g u a r d e d 的块 语句,是不能进逻辑综合的。 测试平台程序中,不能使用浮点数,尽量少用整数,最好使用s t d l o g i c 和 s t dl o g i cv e c t o r 这两种类型来表示数据。 尽管可以不考虑门电路的惯性延时,但传输延时应当考虑。用关键字 t r a n s p o r t 和a f t e r 语句在程序中表现出来。 3 门级仿真 被测实体r t l 级描述经过逻辑综合后就生成了门级电路。进行门级仿真是因 为: ( 1 ) 门级延时( 惯性延时) 在上两级中都未验证,不能保证在有门级延时的 条件下,系统的工作速度得到正确验证。 ( 2 ) r t l 级描述中的z 和x 状态,在门级电路是不允许的,当进行 门级综合时,这种状态发生了转移变异,不能保证系统工作正常。 门级仿真时,测试平台程序对数据类型进行转换,输入输出端口只限定使用 s t dl o g i c 和s t d l o g i c v e c t o r 这两种数据类型。 浮点f f t 的v h d l 实现及h d l 功能测试方法的研究 2 3 人机通讯规范 当需要验证设计的正确性时,人们首先必须对设计目的达成一致并清楚的描 述出来。英语是极富表现力的,但它也出名的模糊不清( 这和其它许多自然语言 一样) 。因此,我们需要正式的语言以使得设计目的得到其他人的正确理解,并 且也能被遵从这种规范进行验证的工具理解。 要注意,人们不该感到强迫去做验证,验证工具能够自动地验证设计,但在 本质上是有缺陷的。因为这样的工具最多只能验证一致性、格式或方法,但永远 不能判断设计是否正确。为了判断设计的正确性,工具必须能够识别设计的意图。 其它工具也能找到可能的问题( 正如c 语言及v e r i l o g 语言中的所用的查错软件) , 但并不能确定设计出来的器件的功能的正确性。测试平台是传达设计意图的一种 途径,在一定程度上,它能够结合所有完成正确设计过程的不变量的自检,并足 以验证功能的正确性。此外,还要把技术规范输入到形式验证程序中,或者结合 覆盖数据以引导自动产生激活潜在缺陷的条件。 因为最终测试平台作为一个规范要由其他人理解和修改,所以描述测试平台 的语言必须清楚、易学并具备直观的语义,这一点很重要。不幸的是直观性是一 个主观的尺度。但是如果从现有的v e r i l o g 和c + + 语言中借用,并且只在绝对必要 时对语言做修改,就很可能使语言的直观性得以实现。 硕士学位论文 第3 章h d l 代码验证的覆盖分析 到现在为止,尽管形式验证声称能够验证设计在不同级上的等价性,但是r t l 的功能验证依然主要通过大量的测试向量仿真h d l 代码来完成。在形式验证的复 杂性大规模的下降之前,仿真方法将仍然在验证中充当主要的角色1 1 8 。就是运用 一些功能覆盖方法来定量分析仿真的完备性,这些方法很快得到流行。通过监控 h d l 代码在仿真中的执行,可以知道哪部分代码还没有测试,这样才能集中精力 在这些代码中达到1 0 0 的覆盖。当然即使是1 0 0 的覆盖也不能保证1 0 0 的无错 误,但是它提供了一个更加系统化的方法来丈量验证过程的完备性1 2 0 1 1 2 1 】。提出了很 多功能覆盖方法来验证h d l 代码,在这些方法中,代码覆盖是最流行的方法 2 z l 。 这类覆盖方法最基本的理念就是完全遍历整个语言结构。f s m 覆盖是另一种用的 非常普遍的覆盖方法1 2 3 1 ,主要在仿真过程中应用输入模式来遍历整个状态转换图。 除了这些方法,还有许多覆盖方法应用于功能验证。尽管提出了很多不同的功能 覆盖方法,仍然没有一种方法被普遍接受来作为唯一完备和可靠的方法。在这些 方法中,通常存在着速度和精确度的折衷。因此,设计师经常用多种方法来验证 仿真的完备性。图3 1 表明了覆盖分析在系统设计中的位置。 图3 1 系统设计流程 3 1 代码覆盖 代码覆盖中最常用的是语句覆盖,判定覆盖和路径覆盖a 1 5 浮点h 呵的v h d l 实现及h d l 功能测试方法的研究 3 1 1 语句覆盖 语句覆盖又叫块覆盖i “j ,因为块是由一系列语句构成的,只要执行其中一条 语句,整个模块就会随之执行。块之间并没有明确的界限。 语句覆盖用来计算在测试的过程中共有多少行代码得到了运行,它提供一个 用户图形接口来显示所有的源代码,并鉴别出有那
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 肾活检术术后疼痛评估与干预
- 门诊护理团队建设
- 褥疮护理要点及预防措施
- 血透室常见并发症及处理
- 老年癫痫患者的护理与管理
- 肝脾破裂患者的康复指导
- 预防儿童支气管异物的护理措施
- 门急诊护理工作坊
- 门诊护理查房中的护理质量控制
- 肝胆外科患者营养支持护理
- 《AQ3067-2026化工和危险化学品重大生产安全事故隐患判定准则》解读
- YDT 5102-2024 通信线路工程技术规范
- 4.5.2 外墙板生产及质量控制(装配式混凝土建筑构件生产与管理)
- 中国蚕丝绸文化智慧树知到期末考试答案章节答案2024年浙江大学
- 《视听语言》课件-第一章 视听语言概述
- 2024纪检监察干部培训
- 中小学艾滋病防护知识
- Waters2695高效液相色谱仪操作规程
- 宽宽窄窄量量看
- 2023年十堰市郧阳区事业单位真题及答案
- 性传播疾病病症处理
评论
0/150
提交评论