(电路与系统专业论文)关于hdl测试的研究.pdf_第1页
(电路与系统专业论文)关于hdl测试的研究.pdf_第2页
(电路与系统专业论文)关于hdl测试的研究.pdf_第3页
(电路与系统专业论文)关于hdl测试的研究.pdf_第4页
(电路与系统专业论文)关于hdl测试的研究.pdf_第5页
已阅读5页,还剩57页未读 继续免费阅读

(电路与系统专业论文)关于hdl测试的研究.pdf.pdf 免费下载

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

文档简介

摘要 在现代微电子设计过程中,随着门电路数目和系统复杂性以指数倍增,功 能测试的作用日益变得重要,人们将在测试上投入更多的人力物力。为了保证系 统测试的侠捷和精确,我们必须改进测试工具,革新测试方法,探讨独立于开 发工具和设计过程的测试方法。 本文首先阐述了测试平台的基本概念:归纳了常用的功能测试方法:白箱测 试、黑箱测试和灰箱测试,并说明了其不同的应用场合;列举了常用的测试工具; 代码静态分析工具、代码检查、仿真器、示波器和代码覆盖;接着讨论了如何在 测试计划中分析测试粒度、确定待测特征;阐明了待测特征、测试实例和测试平 台之间的结构关系。和t r l 代码相比,行为描述代码可以减少代码量和测试的 工作量,提高仿真的性能,并更有利于在串行处理器上实现并行结构。并在此基 础之上,探讨了在测试平台中如何产生各种激发信号;如何对波形的产生过程进 行封装;以及如何解决死锁和异步接口的问题,与此对应,也论述了响应和激发 之间的反馈、预测输出结果和响应的检测和激发的产生并行处理等问题。最后研 究了如何通过优化结构来提高构件和模型的可再用性;对采用不可再用和可再用 结构的测试平台进行了比较,得出了后者更能提高测试效率的结论,并通过实际 的编程验证了这个结论;提出了总线功能模型的封装方法;给出了i 3 8 6 s x 总线 功能模型的结构、代码和调用过程,并在使模型自动激发和监控方面做了初步的 尝试。 关键词:硬件描述语言 测试平台功能测试仿真 a b s t r a c t i nt h em o d e r nm i c r o e l e c t r o n i c s d e s i g n s ,w i t hg a t e s c o u n t sa n d s y s t e m c o m p l e x i t yg r o w i n ge x p o n e n t i a l l y ,f u n c t i o nv e r i f i c a t i o nw i l lp l a y am o r ea n dm o r e i m p o r t a n tr o l e ,a n dv e r i f i c a t i o n w i l lc o n s u m em o r ed e s i g ne f f o r t t o r a p i da n d a c c u r a t es y s t e mv e r i f i c a t i o n ,n e wa n di n n o v a t i v ea p p r o a c h e sa n dm o r ep o w e r f u l t o o lss h o u l db ei n t r o d u c e d ,a n dv e r i f i c a t i o na p p r o a c h e si n d e p e n d e n to ft o o l sa n d d e s i g n ss h o u l db ep u r s u e d a tf i r s t ,t h ea r t i c l ed e s c r i b e st h eb a s i cc o n c e p to f t e s t b e n c h ;s u m m a r i e sg e n e r a l f u n c t i o nv e r i f i c a t i o na p p r o a c h e s :w h i t e b o xv e r i f i c a t i o n ,b l a c k b o xv e r i f i c a t i o n ,a n d g r e y b o xv e r i f i c a t i o n ,a n ds h o w st h e i rd i f f e r e n ta p p l i c a t i o ns i t u a t i o n s ;e x a m p l e s g e n e r a lv e r i f i c a t i o nt o o l s :l i n t i n gt o o l s ,c o d er e v i e w ,s i m u l a t o r ,w a v e f o r mv i e w e r a n dc o d ec o v e r a g e a f t e rd o i n gt h a t ,i td i s c u s s e sh o wt oa n a l y s i st h eg r a n u l a r i t yf o r v e r i f i c a t i o na n dh o wt os p e c i f yt h ev e r i f i c a t i o n ,a n dd e t a i l st h ec o n s t r u c tr e l a t i o n s b e t w e e nv e r i f i c a t i o ns p e c i f i c a t i o n ,t e s t c a s ea n dt e s t b e n c h c o m p a r e dt or t lc o d e , u s i n gb e h a v i o r a lc o d ec a nr e d u c ec o d ea n dv e r i f i c a t i o ne f f o r t ,i m p r o v es i m u l a t i o n p e r f o r m a n c e ,a n di t i sp r o n et or e a l i z ep a r a l l e lc o n s t r u c t so ns e r i a lp r o c e s s o r a n d o nt h eb a s i so ft h a t ,t h ep a p e rp r o b e si n t oh o wt og e n e r a t es t i m u l u si nt h et e s t b e n c h , h o wt oe n c a p s u l a t ew a v e f o r mg e n e r a t i o n ,h o wt oa v o i dd e a d l o c ka n dh o wt of i n da s o l u t i o nt oa s y n c h r o n o u si n t e r f a c ei ta l s od i s c o u r s eo nt h ef e e d b a c kb e t w e e n s t i m u l u sa n dr e s p o n s e ,t h ep r e d i c t i o no fo u t p u ta n dt h ec o n c u r r e n to fr e s p o n s e v e r i f i c a t i o na n ds t i m u l u sg e n e r a t i o n f i n a l l y ,i tr e s e a r c h e s o nh o wt o o p t i m i z e c o n s t r u c t si no r d e rt oi m p r o v et h er e u s a b i l i t yo fc o m p o n e n t sa n dm o d e l s ,c o m p a r e s t h et e s t b e n c hu s i n gt h en o n - r e u s a b l es t r u c t u r ew i t ht h a tu s i n gt h er e u s a b l es t r u c t u r e , c o n c l u d e st h a tt h el a t t e rc a ni m p r o v et h ev e r i f i c a t i o n e f f i c i e n c y , v e r i f i e st h e c o n c l u s i o nb yp r o g r a m m i n gaf e we x a m p l e s ,p r o p o s e st h ew a yo fe n c a p s u l a t i n gb u s f u n c t i o n a lm o d e l ,g i v e st h ec o n s t r u c t s ,c o d ea n dr e c a l lo fi 3 8 6 s xb u sf u n c t i o n m o d e l ,a n da t t e m p t st or e a l i z em o d e lg e n e r a t i o na u t o m a t i o na n dm o n i t o r i n g a u t o m a t i o n k e y w o r d s :h d l t e s t b e n c hf u n c t i o nv e r i f i c a t i o ns i m u l a t i o n 湖南大学硕士学位论文 第一章引言 随着门电路数目和系统复杂性以指数倍增,在产品设计中使设计人员最费神 的将会是功能测试。在新型集成电路和大型系统的设计过程中,必须在功能测试 上投入大量的时间。工程技术人员在长期的实践过程中应该早就意识到,要设计 诸如有1 2 0 0 万个门电路,以6 0 0 兆赫运行这样的集成电路,真正的问题不在于 如何设计,而是如何测试。 1 1测试的重要性 关于编写代码和建立测试平台在时间上的分配问题,一般人肯定认为前者比 后者更费时问,但硬件设计的经验证明事实上正好相反。 现在,集成电路上可能集成数以百万计的门电路【2 1 。在智能系统和片上系统 ( s o c ) 中,测试占去总投入的7 0 以上。设计人员中要分出专门的人去进行测 试,其中包括专职从事测试的人员。测试人员通常是r t l 设计人员的两倍。设 计方案完成以后,建立测试平台的代码占代码总量的8 0 。 鉴于测试的巨大投入以及繁重的编码工作,可以说测试是设计过程的重中之 重【”。 要想系统测试更加快捷和精确,就必须改进工具,革新方法。设计人员通常 会尽量采用最好的测试工具和设计工具,以缩短设计周期。但仅仅拥有最好的开 发工具,不一定就能开发出高质量的集成电路和系统。事实上,成功开发集成电 路和系统的关键在于如何进行测试i ”。而近年来,人们在测试方法方面并无多大 改进,大部份设计人员用的还是多年前的测试方法,显然无法提高测试效率。如 果要明显提高测试效率,就必须对设计人员的测试方法进行真正意义上的改进。 首先要做到的是采用独立于开发工具的测试方法,这中间的理由当然不言 自明。独立于开发工具的测试方法使得测试过程更加具有可预测性,更加灵活, 费用更少,并且不受开发工具在技术上是否领先的约束【扪。今天技术方面的龙头, 明天也许就会被市场淘汰,这在e d a 行业屡见不鲜。独立于开发工具的测试方 法,使得它们既能适应今天最好的开发工具,又不妨碍将来采用更为先进的开发 工具。 毫无疑问,未来的系统开发将会采用更为先进的方法和功能更为强大的开发 工具。软硬件联合测试方面才刚刚起步。适用于面向对象技术的测试语言有着广 湖南大学硕士学位论文 阔的前景。未来最好的测试方法将会是独立于开发工具的,以便于随时采用更为 先进的方法来进行测试。 1 2 测试平台的定义 对于v h d l 和v e r ij o g 来说,测试平台是指为某种设计产生预先设定的输入 结果,并能随意观测响应的代码,其目的是保证转换结果和预先设想的一致6 1 。 它通常用v h d l 和v e r i l o g 来实现,但可能同时包括外部数据文件和c 语言程序。 图11 说明了测试平台和测试对象之间的关系。测试平台将自己的输出结果 输入到测试对象和监测程序。注意这是一个完全封闭的系统,既没有外部输入, 也没有外部输出。对于测试对象来说,测试平台实际上是个普遍适用的模型。 测试要解决的问题就是向测试对象输入什么,以及正常工作的测试对象应该输出 什么。 图1 1 测试平台和测试对象的结构关系 1 3 功能测试方法简介 功能测试可以用三种不同但互补的方法:黑箱测试,白箱测试,灰箱测试。 1 3 1黑箱测试 黑箱测试是在对设计的具体情况一无所知的前提下进行的,所有的测试都是 利用外部接口,而不考虑其内部状态,更不知道其结构和实现方法。这种方法显 然缺乏可观察性和可控性,它很难进行状态组合或独立测试某些功能,也难以观 察它对输入的反应或找到问题所在之处。从出现问题到它在输出结果中表现出来 通常都有很长的延时。 这种测试方法的好处是不用考虑测试对象是如何实现其功能的,无论它是用 a s i c ,f p g a ,电路板,还是用软件实现的,都无关紧要。黑箱测试可以不考虑 一项设计的实现方法,而只检测它是否实现了其功能。 在一些大型复杂设计中,黑箱测试可以作些非功能性的改进,以便实现某种 2 湖南大学硕士学何论文 程度的可观察f ! 主和可控性。例如可以用一些可读写的寄存器来控制或观察内部状 态,或修改所处理数据的长度,以尽可能减少测试时间。这些寄存器在正常运行 时并不起作用,它们只是在原始系统的组合阶段才用到。 黑箱测试方法的建立可以和设计同步进行,因为它是唯一可以事前对设计本 身一无所知的测试方法。 1 3 2白箱测试 顾名思义,白箱测试就是对测试对象的内部结构完全可观察和可控。这种方 法的好处是可以很快对状态和输入结果进行组合,或独立测试某项功能。它能在 测试的过程中随便观测任何结果,并能立即发现运行中出现的错误。 但是,这种方法和测试对象本身联系太紧密,换一个测试对象就不行了,也 不能用于将来的重新设计。它要求对设计过程有详细的了解,才能知道要预设什 么样的条件,要观察什么样的结果。 白箱测试和黑箱测试具有很强的互补性。白箱测试能保证设计特定功能的实 现,例如计数器到达计数终值翻转,以及数据正确的传输过程和顺序。 1 3 3 灰箱测试 灰箱测试是在黑箱测试的独立性和白箱测试的依赖性之间取个折衷。因为 前者不能完全测试设计的每一个部份,而后者太麻烦了。 灰箱测试可以通过最高级接口来控制和观测设计对象,这一点和黑箱测试是 相同的。但它同时也有针对设计特定功能的专门测试。它对别的测试对象也可能 适用,但这时候充其量也就只能当黑箱测试用了。 湖南大学硕士学位论文 第二章测试工具 在现代功能测试环境中将会用到很多工具。有些工具,例如仿真器,对功能 测试来说是必不可少的。另外有一些,例如代码覆盖工具,可以使得测试中某些 单调的任务自动执行,并增加功能测试输出结果的可信度。其实,新的自动测试 工具还在不断涌现。 在测试的过程中,要完成的: 作就是使用必要的工具来保证测试结果的正确 性。站在开发商的角度,就是用预定的资金,按预定的计划出产品_ l 。 2l代码静态分析工具 代码静态分析( 1 i n t ) 一词源于一个专门用来检测c 语言程序错误的u n i x 设备【8 】 它允许编程者尽可能快的发现常规错误,而不是在测试的过程中发现了 致命错误以后才知道。代码静态分析能够发现很多问题,例如变量和函数调用的 类型不匹配,以及变量的数目不匹配。代码静态分析过程也有助于编码和变量的 命名,因此,它应该是保证代码的可读性和可维护性必不可少的一种手段。 了解v e r i l o g 的人可能会觉得它和c 语言比较相似,其实不然。c 语言是类 型区分比较严格的语言,在c 语言中,不能把整数值赋给实变量,反过来也不 行,在v e r i l o g 中就可以这样做。其实v e r i l o g 更象汇编和b a s i c ,它并不区分 类型,我们可以把任何值赋给任何寄存器或任何子程序的变量,但有时会带来严 重的后果( 比如把一个表达式的值赋给一个位数较少的寄存器,就可能把重要的 位截去) 。 对v e r i l o g 源代码进行代码静态分析可以保证所有的数据都得到正确处理, 既不丢失数据,也不添加数据 9 1 。例2 1 所示模型的代码看似正确 1 0 l ,编译也没 有错误,但某些情况下的运行结果并不尽如人意。 问题出在输出结果“o u t ”和常量“b z ”的长度不匹配。长度不固定的常量的的长 度可以是3 2 位长( 可赋值“3 2 h z z z z z z z z ”) ,然而输出则由用户设定长度,当输出 的长度小于或等于3 2 位时,运行完全正确,常量将自动适应输出的长度。但当 输出的长度大于3 2 位时,就出问题了,v e r i l o g 将会自动把常量加0 扩展,使之 和输出的长度相匹配,这时就会产生错误的结果。最低有效位被设为高阻态,而 其它位则被置为0 。 例21 可能出错的v e r i l o g 代码 4 湖南大学硕士学位论文 m o d u l et r i s t a t eb u f f e r ( i n , o u t ,e n a b l e ) : p a r a m e t e r w i d t h = 8 : i n p u t w i d t h - l = 0 】i n ; o u t p u t w i d t h 一1 :0 】o u t ; i n p u te n a b l e ; a s s i g no u t = ( e n a b l e ) ? i n :b z ; e n d m o d u l e 这种错误是不容易通过仿真检查出来的,除非采用的是长于3 2 位的数据, 产生错误的结果时又恰好被观察到。而代码静态分析工具只需要几秒钟就可以检 查出这种错误。 2 2代码检查 代码检查是由人工完成的,但它和代码静态分析工具的作用是一样的:即在 测试和仿真之前找出功能错误和编码格式错误。在代码检查的过程中,设计人员 所写的源代码将由多人过目,这样可阻找出自动检错工具发现不了的错误。 可以通过代码检查来评估源文件的可维护性以及其代码的正确性,还能发现 编码格式方面的问题i “i 。如果能完全读懂代码,也可能找到功能错误。 2 3仿真器 仿真器是用得最普遍,最为人所熟知的测试工具。仿真器顾名思义就是它的 作用是用来模仿实际的情况。但仿真绝不是最终目的,硬件设计的最终日的是创 造出能打入市场的产品。仿真器以虚拟来代替现实,使得人们可以在产品制造出 之前就对它有所了解,从而及时的发现错误,改正错误。 但仿真器所做的终归只是仿真,为了降低工作难度,仿真过程中很多实际特 征都简化了,甚至被忽略。例如,数字仿真器假设一个信号的状态只可能为0 , “l ”,未知,或高阻态。然而,在现实中,信号实际上是以通过电路的电压和电 流为自变量的一个连续函数,有无数的可能值。 仿真器并不是静态的测试工具。静态测试工具不能执行用户外加的功能,也 不能认同用户外加的信息。比方说,代码静态分析工具就是静态的测试工具。而 仿真器则要求提供一个仿真环境,即测试平台。测试平台提供测试对象所需的输 入,仿真器则模拟测试对象将会作出的响应。 湖南大学硕士学位论文 但仿真器并不知道设计者的意图,它不知道设计本身是否正确。必须由设计 者本人根据仿真器的输出结果来判断设计的正确性。在一定条件下给了仿真器一 个激发信号后,就应该检查其输出,并判断其响应是否符合要求。 2 4示波器 示波器是在仿真过程中用得最多的测试工具,它能用来观察多个信号是如何 随时间而变化的,以及这些变化之间的关系d 2 。有了乐波器,可以放大或缩小 特定的时间段,可以测量两个变化之间的时间差,可以把很多位作为位串,十六 进制数值或符号数值显示出来。 示波器在进行一项设计或建立一个测试平台的初始阶段是必不可少的。可以 用它来检查代码的运行是否符合要求,还可以判断测试对象或测试平台什么时候 可能会出问题,为什么出问题。它可以在仿真的过程中使用,也可以在仿真完成 以后使用。仿真完成后的波形演示可以使我们能很快了解长达几个小时的仿真过 程,但要知道追踪文件对仿真的过程压缩得很厉害。所追踪的信号的数量和范 围,以及延续的时间,都是尽可能减到最少。 在功能测试的环境中,用示波器来判断一项设计是否正确,还必须能正确判 别屏幕上意外出现的一些波形线。如果信号的数量不是很多,有时这种情况是可 以接受的。但是随着信号数量,信号变化增多,重要变化之间的关系变得复杂, 必须检测的仿真过程的增长,以及所要检测的结果的增多,出错的可能性则以指 数上升【”】。 有些示波器能对两种波形进行比较,假定其中的一种为标准波形,找出另一 种波形和它的不同之处,在不同的地方作上记号,或对不同的地方进行高亮显 示。 2 5 代码覆盖 代码覆盖在软件开发领域已有多年的应用了。有些错误的设计和正确的看起 来没什么两样,几乎不可能完全肯定正在测试的对象功能正确。即使所有的测试 平台都仿真成功,也不能保证没有遗漏掉一个或几个功能没有测试。代码覆盖可 以帮助解决这个问题。 代码覆盖通常首先对源代码进行分解,分解的过程就是在源代码的关键位置 加上断点,来记录该位置是否有一个特殊结构。分解的方法因工具的不同而有别。 湖南大学硕士学位论文 有的可能用到文件的输入输出功能( 如v e r i l o g 中的$ w r i t e 语句或v h d l 中的 t e x t i ow r i t e 过程,还有的可能用到仿真器自带的某些功能。 对需要检测的代码进行分解的目的是为了确定是否遗漏了某些代码。测试平 台的代码并不需要确认是否执行过,这是因为,如果有些部份没有执行的话,它 就表现为设计的某些部份不运行,要不然就是这些部份并不怎么重要。 接下来用测试平台来对这些分解的代码进行仿真( 这些测试平台本身并不需 要分解) ,全部的追踪信息都放进一个数据库。根据这个数据库,就可以确定所 有测试组件的覆盖程度。 最常用的三种覆盖分别是语句覆盖,路径覆盖和表达式覆盖1 1 4 】。 代码覆盖表示的是测试过程对源代码的覆盖程度,但它并不能辨别测试过程 是否正确。 代码覆盖可以体现测试工作的彻底程度,它可以让我们了解测试范围有多 广,但这并不是唯一的指标。代码覆盖率较低表明测试工作尚未完成,但代码覆 盖率较高并不就表明测试工作已经完成。 7 湖南大学硕士学位论文 第三章测试计划 在进行测试之前,必须为要测试对象制定详细的说明文档,而且要以书面的 形式写出来1 。 设计要求是设计和测试总的依据,它是不能变的。要是测试平台的结果和测 试对象的结果不一致,就由设计要求来决定到底哪一个是对的。如果事先没有一 个说明文档,是不可能设计出集成几百万个门电路的集成电路的。测试所花的时 间是设计本身的一到两倍,它为什么不能有自己的说明文档呢? 测试计划就是测 试的说明文档。 测试计划制定了一条界线,越过了这条界线,就意味着设计没有成功。根据 测试计划,才能知道要建立多少测试平台,它们的复杂程度和相互依赖程度。可 以通过制定详细的测试方案,把测试平台分配给各个测试对象,并尽可能让测试 能够同步进行【“l 。只有在所有测试功能的测试平台建立起来了,并且r t l 代码 又通过了测试实例之后,才能说设计成功了。 3 1 测试的粒度 制定测试计划的首要问题是确定测试的粒度,每个设计都可以分为几个层, 有些处于物理层,如印刷电路板,f p g a 和a s i c ,有的处于逻辑层,如组合单 元,可再用构件和子系统。 测试的每个层次都有自己最适用的场合和对象,尤其是采用可再用构件的设 计,其单元级测试和系统级测试都会发生很大变化。设计采用了可再用构件之后, 并没有减少对测试的依赖程度,单元级和系统级之间是一个逻辑界限,而非一个 物理界限。 如果划分的粒度较小的话,则可控性和可观察性更强,因此也就更易于测试 要建立所需的条件和状态组合以观察响应是否符合预期值,也要容易的多【1 7 】。如 果粒度较大的话,要对较小的部分进行整合,测试时可控性和可观察性要差得 多。 测试对象必须有相对稳定的接口并实现预定的功能,如果接口和功能不断 的发生改变,则测试平台也要不断改变,也就很难加以改进。一旦确定在一定的 粒度下进行测试,则应该及早的规定其接口和整体功能,并尽可能的保持不变, 最好是每个层次都有自己的说明文档。 湖南大学硕士学【节论文 3 1 1 单元级测试 是为了便f 合成,设计单元是按逻辑来划分的,所以有时比较简单( 如f i f o 和状态机) ,有时比较复杂( 如p c i 从接口和d s p 数据通道) 。随着在实际过程中 不断的暴露初始设计的缺陷和不足,其接v i 和功能会不断的改变,它们在测试时 通常没有独直的说明文档可资利用。 因为这些设计单元不断的在发生改变,所以最好另外专门进行测试,由设计 者本人来测试这些单元的基本运行,这样做的目的是确保r t l 代码中没有语法 错误,并且实现了基本功能i ”】。 对于现在较复杂的a s i c 和f p g a 来说,在a s i c 和f p g a 级别进行测试可 能不太理想,因为其内部有高灵敏度的复杂功能模块,所以只有进行单元级测试 才能获得足够的可控性和可观察性。最好是单元级测试的每个功能单元都有自己 的说明文档。 在单元级测试时要注意使所要测试的该项功能完全包含在一个单元中,并 能独立的进行测试,一旦通过了测试,在进行更高级别的测试时就可以假设这些 功能是正确的。如果在该单元的功能和别的单元有接口,在更高的级别上就要重 新进行测试,以确保其组合也是正确的。 3 1 2 可再用构件测试 可再用构件可以在别的设计中原封不动的采用。其可再用的范围可以是一种 产品,一系列产品,甚至是能用到其功能的任何产品。它必须完全独立的进行设 计和测试。 可再用构件通常采用标准接口,这些接口根据标准片上总线或是工业标准 的外部物理接口来设计。用来激发和监测这些接口的测试构件本身也可以在不同 的测试环境中用来测试不同的可复用构件。 可再用构件在很多设计中都会用到,如果为了纠正错误或是增强功能,而必 须作出修改的话,则要保证它向后兼容。 3 1 3a s i c 和f p g a 测试 a s l c 和f p g a 是从物理上划分的,因为在最初对系统作出规定并写成说明 文档之后,它们的功能和接口就不会再作大的改动,所以这样划分比较合理。 随着半导体的集成度越来越高,单个设备上集成的功能也越来越复杂,从设 计和测试的角度看,应该把它做成一系列独立设计和测试的构件的集合,最好是 湖南大学硕士学位论文 可再用的。a s i c 被称做片上系统( s o t ) ,有时其测试和系统级测试类似,但大部 分的功能测试还是在单元级进行的。 通常,f p g a 省略某些测试步骤或完全不测试也行,它的可编程性较好,而 且不需要另外添加构件,所以随时都可以进行修改。但现在的百万门级f p g a , 在组合之后再进行测试和调试就太复杂了,所以必须在组合之前就对r t l 代码 进行功能测试。 3 1 4 系统级测试 一般认为系统是由可独立测试的构件组成的,是一个逻辑概念,一个系统可 以是由几个可再用构件组成的,可以是一个片上系统a s i c ,也可以由不同的几 个a s i c 组成。 系统级测试忽略单个构件的具体功能,注重的是其组合关系,因为具体的功 能在单元级测试中已经测试过开始进行系统测试的前提就是单个构件的功能 正确。 3 2 测试策略 如果给定了所要测试的功能,就要制定相应的测试策略,要确定测试的粒度, 还要确定每种粒度所采用的测试实例的类型,测试实例是采用白箱还是黑箱,这 取决于测试对象内部结构的可见性以及测试人员的了解程度。 此外还要确定测试的抽象程度,抽象程度越高,测试对象的粒度越大,激发 和响应的时序以及相互之间协调的可控性也就差一些,但易于产生大量的激发 信号并测试较长的响应,如果需要对某些测试实例进行精确的控制,则要降低抽 象程度。 例如,处理器接口可以在单个的读和写周期级别进行测试,但这需要对存储 器映射寄存器有较深的了解,并知道如何对其进行编程,这种接1 2 1 也可以在设备 驱动器级别进行驱动,测试实例可以调用较高级别的子程序来完成操作,每一个 步骤都是由很多的读周期和写周期来对存储器映射寄存器进行操作。 进行激发相对来说容易些,因为这种情况下可以完全控制激发的时序和过 程。测试响应相对来说就比较困难,需要确定预期输出,并要证明测试对象所产 生的就是预期输出。 如果在仿真过程中产生一系列输出结果,然后和参考值进行比较,效率当然 要高的多。输出结果可以在仿真过程之外进行进一步处理,以确定仿真成功与否 湖南大学硕士学位论文 在仿真过程中检测响应,就能在出错不久发现错误,这样改正起来要容易的多。 系统级测试常用的一种策略是随机测试,随机测试并不是给测试对象随意 的输入信号,因为这并不能模拟测试对象在实际中的应用,所以也起不到测试的 作用,在随机测试中,所谓随机指的是这些操作的顺序和传送的数据的内容、但 前提条件是这些操作和数据本身必须是合法的。 随机测试可以产生在编写测试计划时没有考虑到的情况,它的用途就是产 生意外情况和边缘条件,同时也能校正在建立测试平台时的偏差,它产生的激发 信号更接近实际情况。 因为要实现随机,所以随机测试描述起来比较麻烦,数据和操作的顺序必须 和测试对象在实际应用场合遇到的一样。随机测试要说明数据和操作的范围及分 布,还要预测其输出,由于激发信号是随机产7 芒的,当然就不易确定其响应、所 以随机测试实例必须说明如何检测非法响应。 3 3 确定待测特征 编写测试计划的第一步是鉴别出所要测试的特征,首先从说明文档中统计 出所有的特征,另外系统工程师和r t l 编码人员可以提出所要测试的一些附加 特征,这些附加特征在说明文档中必须一目了然,使得对设计的目的和特点不了 解的人也能看懂。 所有的特征都应该加以标记并附加简短的说明,在说明这些特征时还要说 明哪些需要测试,以及如何在设计中实现该特征,每个特征都应该有索引,可以 在说明文档中找到详加说明的章节或段落,最好是在说明文档中也有索引,可以 在测试计划中检索到该特征。例3l 所示的是一个u a r t 的特征表子集。 例3 1u a r t 设计中的某些特征 1 当u a r t 能够接收一个字并通过c p u 接口发送时,必须使清除发送端 ( c t s ) 有效,见u a r t 说明文档的4 2 节 2 状态寄存器中的c t s 位必须反映c t s 端的状态,见表a 2 3 当c p u 接e l 可以读取接收数据时,必须使数据就绪端( d t r ) 有效,见 u a r t 要求说明文件的4 1 节 4 状态寄存器的d t r 端必须反映d t r 端的状态,见表a 2 5 数据位串行发送和接收,先送最低有效位,见u a r t 说明文档的52 节 在统计特征时,要注意把它们放在测试计划中的相应等级,有些特征必须放 在构件级,而有些则必须放在系统级。 湖南大学硕士学位论文 3 3 1 构件级特征 这里所说的构件,可以是一个单元,一个可再用构件,或者整个的a s i c ,构 件级特征完全包含在所要测试的构件中,所以并不包括和其它构件的系统级接 口,在测试其正确性时不需要考虑更高级别组合是否正确。 大部分的特征都是构件级特征,在进行系统级测试时必须假定这些特征都 是正确的。 3 3 2 系统级特征 一个系统可以是一一个a s i c ,来自不同电路板的几个a s i c ,整块电路板,或 是整件产品。因为系统级仿真规模较大,运行时间较长,所以要尽量减少系统级 特征,对于所有的系统级特征,都要考虑一下能否用构件级特征来代替。 3 4 建立测试实例 3 4 1排列优先级别 并非所有的特征都是同等的重要,对所有的特征统计完后,就必须对它们排 列优先级别,在实现功能或满足客户需要方面,有些特征是”必不可少”的,产品 要想如期投放市场,就必须具备这些特征,这些特征的测试决定了项目是否能如 期完成,因此用来测试这些特征的测试平台就处于关键路径。 有些特征是”应该有的”,但它们在设计时并不是优先考虑的,它们只是用来 扩展功能或为了在市场竞争中获得有利地位。当然测试的主要目的是保证基本功 能的实现,在时间和资源允许的情况下,可以对这类特征进行仔细的测试,但如 果时间不允许或是有更重要的特征等着测试,也可以不必测试。 还有一类”最好有的”特征,它们完全是可选的,而且只是在时间允许的情况 下才测试,并也只是粗略的测试一下,一般设计的进度安排都比较紧,所以一般 都没有测试。 对所要测试的特征排列优先级别,这样的话,在进度较紧的情况下,就可以 酌情取消某些测试,如果时间更为紧迫的话,还可以取消某些”应该有的”特征的 测试。 3 4 2 组合成测试实例 待测特征可以进行分门别类,某些特征在测试时用相似的配置,粒度和测试 方法,为了提高效率,这些特征可以归为一类,分配给一个测试人员,例如,所 1 2 湖南大学硕士学位论文 有和c p u 接口有关的特征可以归为一类,还比如,对u a r t 的波特率,数据位和 奇偶位的测试也可以归为一类,每一类特征的测试构成一个测试实例。 有些测试实例并玎:是根据说明文档中的特征直接建立的,例如,用于提高代 码覆盖率的测试实例并不和任何一类特征有关,这类测试实例应该单独予以考 虑。 每个测试实例都应该进行标注,对其目的进行简短说明,并且列举所有在 该测试实例中测试的特征,同样的,每个特征也应该给出注释,说明是在哪一个 测试实例中测试。如果特征没有注明相应的测试实例,就不会得到测试。 在测试实例的说明中还要列举出哪些是已经假定实现了的特征,根据这些、 可以确定测试的顺序、还可以确定哪些测试可以并行处理。 同时也要说明测试实例的激发信号的顺序和特点,例如,要描述各种操作和 总线周期,对于随机测试实例,还要说明输入数据的范围和分布,以及操作的类 型。 测试实例不仅要给出预期响应,还要说明如何确定响应是合法的。例如,数 据包处理器的输出只有在目的地址和输出端口一致的情况下才算是正确的,有 时还可以加上一个更严格的要求,来自不同源址的数据包以一定的顺序产生,并 服从一定的形态分布。 还有一个更为明确的方法是直接列出所要查找的错误,例如,看一个数据包 的c r c 校验值是否正确,还可以检查互斥事件,比如同时向f i f o 写入f u l l 和 e m p t y 值,如果一个测试人员对设计本身不是很了解的话、采用这种方法建立的 测试平台会更好一些。 一般说来,测试平台都会产生一些出错信息,每个测试实例都会插入一些错 误,以便确认是否能被测试平台检测到,如果没有检测到出错,只能证明测试实 例失败,比如,测试u a r t 的奇偶位的测试实例会故意弄错奇偶位,来看测试平 台是否能检测出。 3 5 建立测试平台 和待测特征一样,测试实例也可以分门别类,它们可能采用相似的配置,相 同的抽象级别,产生类似的激发信号,用类似的方法确定响应的合法性,或测试 紧密相关的特征。例如,测试u a r t 正确传输数据的测试实例和测试其配置控制 的测试实例就可以分为一类,它们用的是相似的激发信号( 一系列的数字) ,用相 似的方法测试输出的正确性( 数值相等,奇偶校验正确) 。因此,一类测试实例可 湖南大学硕士学位论文 以归结为一个测试平台。 每个测试平台都应该用特有的标识符进行标记,在编写测试平台的顶级 h d l 代码时这种标识符可以用作文件名。测试平台应该时所包含的测试实例进 行统计,然后在每个测试实例中给出所在测试平台的索引;,测试实例的说明中应 该注明所在的测试平台名,如果没有注明测试平台名,则说明该测试实例可能没 有建立。 建立测试平台的目的是保证设计符合要求,如果说测试计划是测试的要求 那么如何确认测试平台达到了要求,如何防止由于人为错误而漏掉测试实例的 重要部分呢7 测试平台通常会采用添加一些临时性的代码结构的方法来省掉某 些部分,以加快关键部分的调试,如何确保这些部分在被省略之后,测试平台还 能按要求实现所有的测试实例, 一种解决方法是采用缺陷模型,但我们要为测试计划中的每个特征建立一 个缺陷模型,还要对每个缺陷模型进行及时更新,以保证其特征符合测试对象的 最新版本。我们可以采用某些特定的控制方法来引进缺陷,但可能会给所设计的 产品造成真正的缺陷,同时因为要维护大量可控的缺陷模型,所以这种方法并不 实用。 测试平台建立之后,还应该进行反复检查,以确认它是按要求实现了测试实 例,其具体操作和“代码检查”类似。还要对测试平台的仿真输出记录进行检验, 看是否按要求运行。为了做到这一点,测试平台应该有规律的产生提示信息,如 将要产生什么样的激发信号,所检测的是何种错误和响应输出记录还应该包括 所执行过的测试实例的要求。 1 4 湖南大学硕士学位论文 第四章行为硬件描述语言 在完成测试工作时,不能局限于”r t l 思维模式”,而要学会使用行为( 也就是 不可台成的和高度算法化的) 描述方式。1 9 1 。要想正确的使用v h d l 和v e r i l o g 的 行为结构,就必须了解其仿真算法的边缘作用和该硬件描述语言的局限性,还要 知道如何去避免,而在建立r t l 模型时就不用了解这么多。 41行为描述模型和r t l 模型的区别 下面讨论的是建立r t l 模型和建立行为描述模型在方法上的区别 人们在建模时都倾向于建立可合成模型,因为这方面的技术发展比较成熟, 仪局限于一个定义好的v h d l 和v e r i l o g 集合,只需要遵循某一种编码风格即可。 h 需要参考几本指导r t l 编码的书,就可以设计出体积小,高速和低功耗的产 品。如例4 1 所示的编码指导规则就可以帮助省去不必要的硬件构件设计,如锁 存器,内部总线和三态缓存之类1 2 0 1 2 ”。而且这些指导规则还可以在可合成模型 和门级设计之间维持等价行为,如例42 所示。 例41省去不必要硬件构件的r t l 编码指导规则 1 为了省去锁存器,在可合成模块开始运行时将其所有的输出值设为缺省 值 2 为了省去内部总线,不要从两个不同的a l w a y s 模块给r e g s 赋值( 只对 v e r i l o g 而言) 3 为了省去三态缓存,不要赋给数值z ( v h d l ) 和l b z ( v e r i l o g ) 例4 2 维持仿真行为等价的r t l 编码指导规则 1 所有的输入量都要列入可合成模块的敏感量列表 2 时钟和异步复位必须列入串行模块的敏感量列表 3 在给r e g 赋值,并准备把r e g 作为触发器的情况下,要采用非阻塞赋值 ( 仅对v e r i l o g 而言) 。 是否遵守了正确的编码规则,通过代码静态分析工具很容易就可以出来检 测。如果有一两个项目的经验,基本上就会适应可合成编码的这种子集形式:状 态机,操作符,多路选择器,解码器,锁存器和时钟等等。 可合成子集用来描述特定设计的实现是很管用的。它能够说明硬件结构和 寄存器之间的逻辑转换,并且符合逻辑合成规则。然而,如果只是建立测试平台, 湖南大学硕士学位论文 而没有打算用硬件来实现,显然这时可合成子集就不能满足要求r 。v h d l 和 v e r i l o g 两种硬件描述语言都有着丰富的结构和语句,如果在建立测试平台时还 局限于r t l 思维模式,局限于设计底层硬件结构时的编码方式,就不可能充分发 挥硬件描述语言的作用,测试工作也会因此而变得既单调又复杂。 下面就举例说明了一个简单的握手协议,用v h d l 来实现图41 所示的握手 协议,它检测到在产生一个请求信号( r e q ) 之后产生了一个应答信号( a c k ) ,检 测到应答信号之后,就清除请求信号,随后应答信号也被清除。 a c k = 0 图4 1握手协议的状态图 a c k = l 如果采用r t l 模式编写代码,那么所写出的v h d l 代码可能如例43 所示, 需要用2 8 行代码和两个过程来实现,如果状态机更为复杂的话,还需要两个额 外的状态。 如果采用行为描述模式编写代码,那么所注重应该是协议的行为,而不是如 何用状态机来实现,写出的代码可能如例4 4 所示1 2 2 1 2 ”,只是用简单的四条语句 来描述其功能。 用行为结构来实现这个协议和用可合成结构比起来,至少可节省l o 的时 间,因为它不但少写一些代码( 1 4 ) ,而且对其正确性进行测试也要少花些时间。 例43 简单握手协议的可合成v h d l 代码 t y p es t a t e t y pi s ( ,m a k e r e q ,r e l e a s e ,) : s i g n a ls t a t e n e x ts t a t e :s t a t et y p ; c o m b :p r o c e s s ( s t a t e ,a c k ) b e g i n n e x t s t a t e 1 6 湖南大学硕士学位论文 r e q = 1 i f a c k = 1 t h e n n e x t s t a t e r e q = 0 : i fa c k = 0 t h e n n e x t s t a t e = , e n dj f e n dc a s e : e n dp r o c e s sc o m b ; s e q :p r o c e s s ( e l k ) b e g i n i fc l k e v e n ta n de l k = l t h e n i f r e s e t = 1 t h e n s t a t e ( = e l s e s t a t e 2 n e x t s t a t e e n di f ; e n di f ; e n dp r o c e s ss e q ; 例4 4 简单握手协议的v h d l 行为描述代码 p r o c e s s b e g i n r e q = 1 ; w a i tu n t i la c k = 1 ; r e q = 0

温馨提示

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

最新文档

评论

0/150

提交评论