




已阅读5页,还剩48页未读, 继续免费阅读
(微电子学与固体电子学专业论文)基于openvera语言的serdes验证环境实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 本课题来源于海思半导体有限公司某一款数据通信芯片的研发项目,s e r d e s 是该芯片与其对接芯片的高速i o 接口。本文主要应用o p e n v e r a 高级硬件验证语 言完成了该模块的功能仿真验证平台及测试。 论文首先简要介绍了芯片验证工作的重要性及其现状,并分析对比了基于模 拟和形式的两种功能验证方法。然后详细阐述了s e r d e s 接口模块的层次化功能验 证平台,并分析了验证平台中各个功能模块的实现方法。在此基础上,完成了 s e r d e s 接口模块的测试点分解,并采用直接测试和基于约束的随机测试两种方法 对该模块进行了仿真测试,最终达到了完全功能覆盖。 目前该芯片功能验证工作己经全部完成,仿真结果表明设计的芯片性能良好, 满足功能指标要求。 关键词:o p e n v e r a 层次化验证平台s e r d e s随机测试测试点功能覆盖率 a b s t r a c t t h ew o r ko ft k st h e s i si sb a s e do no n eo ft 1 1 ed a t a 仃a m cc l l i p sd e v e l o p e db y h i s i l i c o nh l c ,s e r d e si sm em g hs p e e di oi n t e r f a c e t h e 丘m c t i o nv e r i f i c a t i o n p l a t f 0 珊o fs e r d e si n t e r f a c em o d u l eh a sb e e nc o m p l e t e da n dt e s t e d ,u s i n go p e n v 色r a a d v a i l c e dh 砌w a r ev e f i c a t i o nl a n g u a g e f i r s to fa l l ,t 1 1 ei m p o r t a n c ea i l dc u r r e i 】ts i t u a t i o no fc 1 1 i pv e r i f i c a t i o n t a s ka r e 协仃0 d u c e db r i e n ma 1 1 db o ms 曲u l a t i o na n df o n n a l 氕m c t i o nv e f i 矗c a t i o nm 甜1 0 d sa r e a n a l y s e da 1 1 dc o i n p a u r e d h ls u c c e s s i o n ,t 1 1 e1 1 i b e r a r c h y 如n c t i o nv e r i f i c a t i o np l a t f i o 珊o f s e r d e si n t e r f k em o d u l ei se x p l a j n e di nd e t a i l ,锄dh o wt or e a l i z ee a c ho f 劬c t i o n m o d u l e s 访m ep l a t f o mi ss h o w e d b a s e do nt m s ,t e s t - p i o n td e c o m p o s i o no fs e r d e s m o d u l ei sa c c o m p l i s h e d ,a 1 1 db o mm r e c tt e s t 肌dc o i l s 廿a i n t 砌d o mt e s ta r eu s e dt o v e r i f yi t f i n a l l y ,t 1 1 ea 1 1 - r o m l d 缸l c t i o nc o v e r a g ei sa c l l i e v e d n o w ,t h ec 1 1 i pm n c t i o nv 耐丘c a t i o nt 嬲kh 嬲a h e a d yb e e i lc o r n p l e t e d a n dt h e s i i i m l a t i o nr e s u l t ss h o w e dt h a tm ep e r f o 肌a n c e so ft h e 吐岫w e r ee x c e l l e n ta n dc 卸m e e t t h e 劬c t i o n a ls p e c i f i c a t i o n s k e y w o r d s :o p e n v e r ah i b e r a r c h yv b r i n c a t i o np l a t f o r ms e r d e sr a n d o mt e s t t e s tp o i n tf u n c t i o n a lc o v e r a g e 西安电子科技大学 学位论文独创性( 或创新性) 声明 秉承学校严谨的学风和优良的科学道德,本人声明所呈交的论文是我个人在 导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标 注和致谢中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成 果;也不包含为获得西安电子科技大学或其它教育机构的学位或证书而使用过的 材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中做了明确的说 明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切的法律责任。 本人签名: 嗍名耻习vl 西安电子科技大学 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权单位属于西安电子科技大学。学校有权 保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分 内容,可以允许采用影印、缩印或其它复制手段保存论文。同时本人保证,毕业 后结合学位论文研究课题再撰写的文章一律署名单位为西安电子科技大学。 本人签名: 导师签名: 日期: 日期:卑型 芈毕 第一章绪论 第一章绪论 本章首先对芯片设计行业的发展作了简要的介绍,分析了芯片验证工作的重 要性,提出了基于功能的随机约束测试的思想;接着回顾了s e m e s 的发展情况,并 介绍了验证语言o p e n v c 槐的发展历程及其特点;最后介绍了本论文的主要工作及 章节安排。 1 1 引言 集成电路( i n t e 目a t e dc i r c u i t ,i c ) 设计的发展是信息产业前进的动力,也是 整个社会迈向信息化的基石。在现代社会中,人们的生产、生活、社会活动已经 和以集成电路为基础的信息系统密不可分。 但是目前i c 的发展遇到了一系列的困难与挑战,尤其在验证方面更加严重。 因为随着深亚微米集成电路设计技术的进一步发展,在单一芯片上集成微处理器 核、总线、存储器、嵌入式软件等己成为可能【2 2 1 。i c 设计的规模不断扩大( 从几 十万门级到百万、千万门级) ,集成内容不断增加,功能变得也越来越复杂。这导 致了验证的复杂度跟着提升,测试次数和时间也随之增加和延长。而且如果芯片 出现问题,通常很难找出原因。对设计进行重复修改或者在芯片开发的后期再进 行修改的成本都会因为市场原因而变得不现实。所以设计的正确性己经成为i c 设 计周期的一个瓶颈,而只有通过充分的验证才能保证设计的正确性。但即便是对 于一个中等规模的设计来讲,充分的验证所需要的向量数目仍然大到难以接受。 即使英特尔公司拥有全球半数的验证工程师,也不能保证对芯片设计进行完整的 验证,它的c p u 仍然会存在这样或者那样的问题【1 2 】。因此如何快速准确的验证设 计模块或芯片,已经成为解决验证问题的难点和热点。 正是由于以上原因,基于功能的随机约束测试已经成为业界的一个重要验证 方法。本课题就是对这种验证思想的大胆尝试。 1 2s e r d e s 的发展及应用 随着互连网的飞速发展,用户对带宽的需求每五个月就要翻一番,这就要求 信息处理、存储和传输的设备必须跟上带宽发展的需求,而且对芯片之间交换信 息的带宽要求也越来越大。由于封装的限制和总线间干扰的制约,不可能再象以 前那样通过无限制的增加并行总线宽度来提高信号传输的带宽。高速i o 接口技术 就是在这种情况下应运而生并得到了快速发展。通过高速i o 接口可以有效地提高 基于o p e n v e r a 语言的s e r d e s 验证环境实现 信号的传输带宽,并最终实现芯片及系统间大流量数据的交换【3 0 1 。 s e 囝e s ( s 嘶a l i z e r & d e s e r i a 1 i z e r ) 就是高速i o 接口技术中的一种,其主要目 的是完成并行数据和串行数据的相互转换。目前,许多标准和协议都采用s e r d e s 作为其物理接口。这些协议覆盖了很宽的应用范围,包括通信、计算机、工业和 存储,以及需要在芯片与芯片模块之间、在背板上或电缆上传输大量数据的系统。 s e r d e s 主要有两种基本类型的接口:即源同步( s s ) 协议和时钟数据恢复 ( c d r ) 协谢1 8 】。这两种类型的协议主要差别是如何实现时钟控制。源同步接口 拥有一个伴随传送数据的时钟信号;c d r 没有单独的时钟信号,而是把时钟嵌入 在数据中,即c d r 接收器将相位锁定在数据信号本身以获取时钟。 s e r d e s 的基本结构如图1 1 所示。 图1 1s e r d e s 结构图 从图中可以看出,s e r d e s 的主要功能模块包括: 1 ) p l l 及时钟产生电路; 2 ) 复接和分接电路; 3 ) 时钟数据恢复电路( c d r ) ; 4 ) 驱动和接收电路; 5 ) 帧同步和编解码电路: 6 ) 配置和测试用电路( b i s t ) 等: 目前业界有三类提供高速s e r d e s 解决方案的公司: 1 ) 专门提供高速s e r d e s 器件,如a m c c 、v i t e s s e 、c y p r e s s 等; 第一章绪论 2 ) a s i c 供应商( 提供高速i o 的c o r e 用于a s i c 设计) ,如m 、t i 、l s i ; 3 ) 提供高速i op 技术交付的公司。 本论文采用的s e r d e sc o r e 是m m 公司提供的h s s 4 g ( h i 曲s p e e ds e r d e s 4 g ) c o r e 。h s s 4 gc o r e 支持2 肛4 2 5 g b p s 的传输速率,由串行链路核组成,它包括了 发送链路和接收链路,而且与m mc u 6 5 h p 标准库相兼容。传输速率可以通过外 部提供的参考时钟和倍频系数来确定【9 】。比如,参考时钟为4 0 0 m ,设置倍频系数 为8 ( 通过倍频系数接口来设置) ,那么s e r d e s 的传输速率就为3 2 g b p s 。h s s 一4 g c o r e 为每条链路分别提供相互独立的随路时钟( 也叫恢复时钟) ,供链路采样数据 时使用。而且它的并行数据发送端和接收端可以支持8 b i t 、1 0 - b i t 、1 6 b i t 和2 0 - b i t 的数据位宽。因此,在传输速率一定的情况下,随路时钟的频率随并行数据位宽 的不同而改变。比如传输速率为3 2 g b p s ,那么对应8 - b i t 、1 0 - b i t 、1 6 b i t 和2 0 - b i t 的数据位宽,随路时钟频率应该分别为4 0 0 m 、3 2 0 m 、2 0 0 m 和1 6 0 m 。数据位宽 可以通过接口信号t x x w d t h 1 :o 】来决定。 另外,h s s 一4 gc o r e 提供的发送链路和接收链路有2 口、4 口和8 口三种情况。 它不但可以通过自身内部的发送链路和接收链路组对互连实现数据的高速传送, 也可以通过外部有线介质的互连进行串行数据的高速传送。不过大多数情况下应 用于片到片( c 1 1 i p t o c m p ) 或者板到板( c a r d t o c a r d ) 的互连机制中。外部的有线 介质包括有印刷电路板、背板连线、光纤、光缆等【9 】。 h s s 一4 gc o r e 的典型应用就是用单条高速链路替换低速的并行数据总线。这样 做可以减少a s i c 的i o 管脚,提高系统的集成度,减少系统总的开销。在工程应 用中,h s s 4 gc o r e 应该被当作是a s i c 内部的一个模块来实现,而且它的数据, 时钟及功耗都要由主模块来驱动。为了提高数据总线的吞吐量,h s s 4 gc o r e 一般 由多条链路成组使用。 本论文用到的mh s s 4 gc o r e 如表1 1 所示。 表1 1 本文用到的s e r d e sc o r e c e l l n 锄et e s tw r a p p e r ( s ) c o 蚯g u m t i o n c h a n n e l sn u m b e r h s 0 4 g s f 0 2 w r a p l 一h s 0 4 g s f 0 2 f u l ld u p l e x2 h s 0 4 g s f 0 8 w r a p l 一h s 0 4 g s f 0 8 f u l ld u p l e x8 根据实际的应用场景,一共使用了4 个h s 0 4 g s f 0 8c o r e 和1 个h s 0 4 g s f 0 2 c o r e ,组成3 6 条数据链路,如图1 2 所示。 基于o p e n v e r a 语言的s e r d e s 验证环境实现 i h s 0 4 g s f 0 8 : : h i x x 】【 : c r o s s b a r t r a n s m it e r s : r e c e i v e r s ; i r e c e i v e r st r a n s m it e r s h 3 u q l j 3 p u z t r a n s m it e r dr e c e i v e r s 。 r e c e i v e r s t r a n s m it e r s 1 一 b a c k p l a n e 图1 2s e r d e s 的实际应用场景 1 3o p e n v e r a 语言 在芯片的开发过程当中,如果验证工程师经历的步骤与设计工程师完全相同, 那么两者将很可能得到相同的结论,犯相同的错误。因而,设计和验证所经历的 轨迹差别越大,验证的可信度就越高。提高验证工程师工作可信度的一种办法就 是使用与设计不同的语言把规范转换为实现方案模型【7 】。对应于设计语言,这种语 言被称为硬件验证语言( h v l ,h a r d w a r ev e r i f i c a t i o nl a n g u a g e ) 。0 l p e n v e r a 语言就 是硬件验证语言中的一种。 o p e l l v e r a 语言是s y i l o p s y s 公司推出的一种直观的、面向对象的高级语言,它 是专门为了满足功能测试的独特需求而开发的。另外s y n o p s y s 公司还开发了一款 叫做v e r a 的编译器,但绝大多数工程师都不严格区分它们,把e n v 打a 语言也叫 做v e r a 语言,所以本文也不加以区分。目前v e r a 语言己经被s 吼、n e c 、c i s c i 等公司广泛使用以验证其实际产品,从单片a s i c 到多片a s i c 组成的系统,从定 制、半定制电路到高复杂的微处理器以及s o c 芯片上。 v e r a 验证系统的基本思想是产生灵活的、可以自我检测的测试向量,然后将 其结合到验证平台中尽可能充分地测试仿真所设计的电路。v e r a 验证系统适用于 功能验证的各个层次。v 酹a 语言提供了一些内建函数,可以用来随机化输入的激 励,从而达到花费较短时间,覆盖更多功能的目的;同时又可以对随机化激励加 第一章绪论 上约束,使随机化激励的权重侧重一些特定值。它还可以提供功能性的覆盖率分 析、虚拟接口、同步和并行处理机制等功能【3 】o 这些功能在叙述验证平台的具体实 现时都会涉及到。另外,v c 吼语言能够支持业界主流的仿真器,像v c s ,莉1 0 9 x l , n c v c 晒1 0 9 。本文所采用的仿真器是v c s ,版本号为2 0 0 6 0 6 s p 2 。 1 4 论文主要工作及章节安排 论文的研究内容来源于海思半导体有限公司某一款数据通信芯片( 简称h i x ) 【) 【) 的研发项目,高速s e r d e s 是该芯片与对接芯片的主要i o 接口。 本文首先分析了i c 验证的重要性,提出了构建自动化功能验证平台、采用随 机约束测试方法验证模块功能的思想。接着阐述了s e r d e s 接口模块功能仿真验证 环境的搭建,并详细分析了验证平台的组织结构和各个模块的实现方法。在此基 础上,完成了s e r d e s 接口模块的测试点分解,并采用直接测试和基于约束的随机 测试两种方法对该模块进行了仿真测试,最终达到了完全功能覆盖和代码覆盖。 目前该模块已完成了u t 测试和i t 测试,达到了预期的功能覆盖。 本论文一共包括五章: 第一章:介绍论文的背景和意义,以及用到的语言工具和所要验证的设计; 第二章:介绍了两种最主要的验证方法学,及验证平台的组成和验证流程; 第三章:重点阐述了s e r d e s 验证平台中各个模块的功能及具体实现; 第四章:详细讨论了测试点分解、测试向量的编写及覆盖率分析; 第五章,本论文的总结与展望,总结课题实现过程中的成果、经验以及不足, 提出有待进一步完善的地方。 第二章验证方法学 7 第二章验证方法学 本章主要介绍了两种最基本的验证方法学以及s e r d e s 接口模块验证平台的层 次关系和验证流程。 2 1 两种主要的验证方法 设计过程是将一组设计规格转换为规范实现的过程。规范指明了设计所执行 的功能但并不涉及如何去执行;规范的实现方案给出如何提供其功能实现的细节。 规范与其实现方案均为其功能描述的一种形式,但它们的具体性和抽象性是处于 不同层次的。抽象性越高,给出的 。+ 。 细节就越少;因此规范的抽象层次 要比实现方案高。在表示设计过程 抽象性的图谱中,可以看到抽象性 不断降低:即功能规范,寄存器传 输级( r t l ) ,门级网表,晶体管级 网表。设计的抽象层次如图2 1 所 示。沿着图谱的任意一层次,都可 以给出一个更低级层次的多种形式 的描述。所以,设计的过程就是一 个对一组规范进行细化,并产生不 同层次的具体实现方案。 验证是一个与设计相反的过 程,它从一个实现方案开始,并且 确认该实现方案是否满足其设计规 范。于是,在设计的每个步骤都 有验证与之对应。所以,验证包括 许多方面,比如功能验证、时序验 证、布图验证及电学验证等。本论 文只限于研究功能验证。设计过程 与验证过程的关系如图2 2 所示。 功能验证 ( f u n c t i o n a l v e n f i c a t i o n ) 的主要任务就是确定 一个设计是否实现了预定的功能, 设计 功能性规范 较少 + 算法描述 j r t l 细节 门级网表 晶体管级网表 较低层次 物理布图 较多 图2 1 设计的抽象层次图 f 、f 刁 、缸。二, 菡辆i 、磊丽i if 实现了微结构吗1 性质检验任厕槿箍 = 了1 、 验证 e : r t l 一一 k f r ;! 它们等价吗 二二二虱:等价性检验l f 它们等价吗 f _ 石 黾;! 里- 多 图2 2 设计与验证的关系 次 次 层 层高il象 较 抽 基于0 p e l l v e m 语言的s e r d e s 验证环境实现 即验证i 汀l 级皿l 语言所描述的功能是否满足设计规范的要求。功能验证方法可 以划分为两种类型:基于模拟的验证和基于形式方法的验证。这两种类型之间的 主要区别在于是否存在测试向量。基于模拟的验证方法依赖于测试向量,而基于 形式方法的验证则不然。另外一种方法也可以区分这两种类型的验证方法,即模 拟方法是面向输入的( 比如设计者给定输入测试) ,而形式方法是面向输出的( 比 如设计者提供需要测试的输出特征) 。除此之外还有一种采用混合方式的类型,称 为半形式化验证。这种方法采用输入向量并在形式上围绕向量的相邻部分进行验 证,也就是说,半形式化验证是一种把基于模拟的验证和基于形式方法的验证结 合的方法【1 1 。 2 1 1 基于模拟方法的验证 基于模拟的功能验证是一种最为常用的验证方法,也是本文研究的重点。在 基于模拟的验证中,设计被置于一个参考模型( r e f e r e n c em o d u l e ) 之下,把输入 激励同时加载于参考模型和待测设计上,从待测设计上获得输出并将它与参考模 型输出进行比较,以此来验证待测设计功能的正确性。对于规模较大的设计的验 证,尤其是全系统验证,模拟验证仍然是目前主要的验证方法。 在对待测设计进行模拟仿真之前,通过运行一个l i n t e r 程序能够检查静态错误 或者潜在错误或者编码风格冲突。l i n t e r 程序把待测设计作为输入并且查找设计错 误的编码风格冲突,它也可以用来检查容易发现的错误;它并不需要输入向量, 因此能检测与输入激励无关的错误。在运行l i n t e r 程序时不会发现那些需要被输入 向量激励的错误。不需要输入激励就能发现的错误是静态错误。静态错误的例子 包括无驱动的总线,或者某个模块初始化时的端口宽度与模块定义的端口宽度不 匹配。运行l i n t e r 的结果仅对潜在的错误发出警告。 接下来,在测试计划中生成项目的输入向量。针对特定功能和特征要求的输 入向量称为定向测试。由于定向测试在输入空间中偏向于设计者特别注意的区域, 而错误经常会出现在那些设计者不注意的区域,因此,为了把注意力从特别关注 的区域转移到其它区域,可以在采用定向测试的同时进行随机测试。为产生伪随 机测试,软件程序要获取随机种子、建立测试并得到期望的结果。 当测试到非预期的输出时,必须找出其根本原因。如果是一个错误,必须与 设计者沟通并修复错误。错误修复之后,或者i 玎l 代码增加了新的功能,都应该 及时编译、仿真,并回归测试所有向量。所谓回归测试就是把所有已经完成的测 试向量重新编译、运行一遍,以免因为修复错误或新增功能而引入新的错误。 衡量一个设计的模拟测试的质量是该测试所提供的覆盖率。覆盖率度量了该 设计的模拟及验证的程度。衡量覆盖率的工具给出了代码覆盖率或者功能覆盖率 第二章验证方法学 9 的报告。代码覆盖率是指已经由测试所运行过的代码的百分数。它可以是执行过 的语句的百分比或者是 经历的分支语句的百分 比。功能覆盖率是指运行 过的功能的百分比。利用 覆盖率标准,设计者可以 看到设计中未执行到的 部分,并能为这些部分建 立新的测试。另一方面, 用户还可以除去对电路 测试中重复覆盖的部分。 当覆盖率达到了预期设 定的目标时,就可以认为 验证工作可以结束了。基 于模拟验证的典型流程 如图2 3 所示,图中虚线 图2 3 基于模拟验证的流程图 内的部分表示基于模拟验证方法所特有的部分。 2 1 2 基于形式方法的验证 与基于模拟的方法不同,基于形式方法的验证不需要生成测试向量;其它方面, 它们都类似。形式验证可以划分为三种类型【2 4 】:等效性验证、模型验证和理论验 证。 ( 1 ) 理论验证 理论验证就是使用公理和定理来证明系统的正确性,它是一种纯粹的数学推导 和证明过程,该方法要求验证人员掌握扎实的数学功底和推导能力。以前这种证 明完全靠人手工完成。目前,证明的构造仍然需要手上完成,但后续比较机械的 步骤可以使用定理求证程序来帮助完成。由于设计的复杂性,手工完成证明构造 所需时间很可能比整个设计周期还要长。即使有定理求证程序的帮助,理论验证 目前也只适用于中小规模的设计。 ( 2 ) 模型验证 模型验证是形式验证技术的一个新应用,也最具发展潜力,它证明或否定了 设计的断言或特征。例如可以检测设计中的状态机是否有不可到达的状态或孤立 的状态。更强大的模型检测器可以判断状态机是否会发生死锁。模形检验技术最 大的障碍是根据对设计的理解判断应该验证哪些断言。在这些断言中,只有一部 基于o p e n v e r a 语言的s e r d e s 验证环境实现 分可以被证明。现在的技术还不能证明设计的高层次断言,即不能确定是否正确 实现了复杂的功能,它只能处理最多不超过数千门的小型设计。 ( 3 ) 等效性验证 等效性验证在三种形式验证方法中用得最为广泛,它用数学定理和公理来验 证两个模型之间的等效性。在大多数情况下,等效性检验用来比较两个网表,以 保证网表的后处理没有改变电路的功能。其中的后处理包括扫描链、时钟树综合 或手动修改网表等。另一种常见的用法是验证网表和原始r t l 代码的一致性。因 为综合工具是一个巨大的软件系统,它依赖于算法的正确性和库的信息,容易产 生错误。等效性验证可以确保综合软件的正确性。在极少数情况下,也使用等效 性验证来检查r t l 代码和相应门级设计或者两个i 玎l 设计在逻辑上的一致性。然 而,它无法用来比较一个处理器的两个不同实现。举例来说,两个可以运行相同 的机器码并且产生相同结果,但是却有完全不同的内部实现处理器。其中一个可 能具有一个超标量内核和一个高速缓存而另一个却没有。如果存在一个处理器模 型,它和以前的具有相同体系结构但具有不同实现的设计,是无法使用形式化的 等效检查的。因此,等效检查只能适用于同一设计的两个版本间,并且只能保证 设计的相同,而不是行为上的正确。 2 1 3 基于模拟的验证与形式验证的比较 基于模拟验证与形式验证最显著的差别在于:前者需要输入向量而后者并不 需要。基于模拟验证的基本思想是首先生成输入向量,然后产生参考输出。形式 验证的思维过程正好与之相反。用户首先说明所希望的输出行为,然后用形式检 验工具去检验是否能够证明或反驳。在此期间,用户根本不需要关心输入的激励 是什么。简单来说,基于模拟的验证方法学是输入驱动,而基于形式验证的方法 学是输出驱动。 形式验证的另一大优点在于它的完备性,从某种意义上说,形式验证不会遗 漏输入空间中的任何一点,而这正是基于模拟验证方法所无法作到的。但不能错 误地认为一旦某个设计通过了形式验证,那么它就是1 0 0 无错误了。基于模拟的 验证可以看作对输入空间中的点进行取样验证,它工作在点的层面上,每次只检 验一个输出点。而形式验证则工作在性质的层面上,给定一个性质,形式验证工 具会穷尽所有可能的输入和状态,以发现可能的与性质不符合的地方;它工作在 面的层面上,每次检验一组输出点。因此,要用形式验证的方法全面地验证设计 是否满足了设计规范的要求,必须进一步证明这些形式验证中的性质与设计规范 要求的一致性。而形式验证每次对成组的点进行验证的特点也使得形式验证的软 件不太直观甚至于难以使用。 第二章验证方法学 形式验证软件的一个主要缺点在于它们占用很大内存,并且有时需要运行相当长 的时间才能得到验证结果。同时由于目前形式验证的研究与开发应用还不完善, 因此基于模拟的功能验证方法仍是当前的主流验证技术。 2 2 层次化验证平台及其结构 验证平台通常指的是一段仿真代码,用来为设计提供输入信号,并监视设计 的输出信号。验证平台与设计之间的关系如图2 4 所示【5 1 。 这个系统是一个完全封闭的系 统,它没有来自外部的输入信号,也 没有输出信号。验证平台是系统的控 制核心。验证的任务就是确定产生什 么样的输入模式,以及所期望的设计 输出。 层次化验证平台可以分为五层, 每一层独立完成相应的功能【1 9 】,它的 层次结构如图2 5 所示。 图2 4 验证平台与d u t 的关系图 图2 5 验证平台的层次结构 ( 1 ) 信号层 信号层提供验证平台与被测设计( d u t ,d s i 印u n d e rt e s t ) 的信号级连接。验 证平台通过信号层将上层产生的激励驱动到d u t 中。具体实现时,需要定义验证 1 2 基于0 p e n v e m 语言的s e r d e s 验证环境实现 平台与d u t 连接的虚拟端口,当d u t 的接口改变时,只需要修改验证平台虚拟 端口中的信号,上层模块不需要修改,方便整个验证平台的重用。 d u t 一般是使用v e r i l o g 或者皿) l 语言开发的设计代码,本课题所测试的 s e r d e s 接口模块是用v e d l o g 语言开发的。d u t 实际上不属于验证环境的组件。在 黑盒测试时,可以认为d u t 是一个具有输入输出的黑盒子,不管内部逻辑是什么, 也不管内部逻辑是否正确。但是为了设计和验证的并行进行,d u r 可以是一个空 的m o d u l e ,只需要有明确定义的p i n 就可以交给验证人员进行前期验证环境的调 试。这一部分不在验证环境实现的考虑之中。 ( 2 ) 命令层 命令层将信号层的信号抽象为事务,给高层提供d u t 的接口与事务的转换。 命令层主要包括驱动器模块和监视器模块,与上层模块通过事务级通道连接,与 下层模块通过虚端口连接。 ( 3 ) 功能层 功能层模拟d u t 的基本行为,将d u t 的行为抽象为更高一级的事务。功能层 中包括处理器模块,参考模型( i w ) 和自动比较模块。 ( 4 ) 激励产生层 激励产生层用于产生对d u r 的激励事务。这一层包括产生器模块,该模块产 生一系列的事务对象,通过事务级通道传输给下层。 ( 5 ) 测试层 测试层用于对d u t 的逻辑功能进行验证。这一层主要是测试人员为了验证 d u t 的逻辑功能而编写的不同测试向量,在测试向例中可以对各个模块的限制条 件进行修改。通过对不同测试向量运行结果的统计,可以查看j t 的功能覆盖率, 只有功能覆盖率达到一定要求,才能够认为该d u r 已经被完备的验证通过。 2 3s e r d e s 的验证流程 s e r d e s 功能验证的流程大致可以分为三个阶段:验证计划、验证平台搭建及 向量测试、回归测试及覆盖率分析,具体流程如图2 6 所示。 在验证计划阶段,首先分析s e r d e s 的基本功能,确立验证的收敛点:分解需 要测试的功能点,并整理t c 列表,发给相关专家进行r e v i e w ;接下来计划验证平 台的架构及实现方法。在考虑验证平台的架构时,要尽可能在不影响功能点的情 况下,使测试易于操作和管理,而且要考虑到相关模块的重用,提高整个芯片的 开发速度和效率。总之在这一个阶段应该把所有与验证有关的问题都计划在内, 避免后期的返工。 等所有的准备工作完成之后,就可以开始搭建s e r d e s 的验证平台了。搭建验 第二章验证方法学 证平台,首先要编写各个模块的代码,然后 再进行整个环境的调试。在这里,没有必要 把每个模块,每个功能的代码都完成了再进 行调试,如果这样,调试的时候肯定会出现 很多错误,修改起来就很麻烦。可以先搭建 一个框架,让环境动起来,然后再一点一点 的完善整个环境。等环境实现了基本的功 能,就可以开始编写测试向量进行测试了。 根据测试的需求、环境再增加新的功能。 一旦编写的测试向量调试通过,就可以 把它加入到回归测试中。回归测试应该分批 周期性的进行,调试结果要易于检测。所以 要编写回归测试用的脚本,通过脚本的运 行,可以很容易地发现哪条向量没有通过, 并及时发现修改错误的地方。 最后等所有向量调试完成,回归测试没 有问题,就可以进行覆盖率的分析。如果覆 盖率没有达到最初的要求,则针对分析的结 果,补充相应的向量进行测试;如果己经达 到了验证的要求,仿真就可以认为已经完成 了。 图2 6s e r d e s 验证流程图 第三章验证平台的具体实现 第三章验证平台的具体实现 上章介绍了s e r d e s 模块验证平台的层次关系及验证流程。在本章将介绍验 证平台中各个模块的主要功能、具体实现方法,以及各个模块是如何相互配合工 作的。 3 1 1 尉m 的功能 3 1r m 的实现 r m ( r e 向e n c em o d u l e ,参考模型) 处于层次化验证平台中的功能层,一般 用来模拟d u t 的行为,属于行为级的,不带有时序信息,与时钟无关【5 1 。在本文 当中,蹦就是对s e r d e s 接口模块进行功能行为建模。s e r d e s 的功能是把输入的 串行数据转化成并行数据输出,或者把输入的并行数据转化成串行数据输出。在 双工模式下每条链路包括有发送端和接收端,在单工模式下,只有发送端或者接 收端。 3 1 2 跏的实现方法 i 洲主要包括m p i 和v m s s 两个模块,它们都用o p e n v e r a 的“类”( c l a s s ) 来实现,即定义类唧i 和c v 础s s ,然后再定义一个新的类删,如下所 不: c l a s s cr m c j 佃im _ m p i 实例化s e r d e s 中的寄存器模块 cv 础s smv i r t u a lh s s 实例化s e r d e s 中的功能模块 t 2 l s k n e w ( ) 实例化s e r d e s 的初始配置 c j 洲主要是为了把m i 和v 球h s s 提供的函数和任务封装起来,这样在使 用的时候会更加方便。 基于o p e n v c 穗语言的s e r d e s 验证环境实现 i 模块是一个微处理器接口模块,主要功能是对i 配置s e r d e s 进行建模; v 瓜h s s 模块是i 的核心模块,主要完成s e r d e s 功能的建模。 在接收方向上v 础s s 模块主要完成起始帧的检测、数据对齐、串行数据向 并行数据的转换、解扰码等功能,并把数据发送给本芯片的数据处理模块;在发 送方向主要完成并行数据向串行数据的转换、加扰码的功能,并把数据发送给对 接芯片。v 础s s 模块的示意图如图3 1 所示: 一8 微8h s c r 袖e h s e r t ahs e n 十 s e r d e s c r o s s b a r :!il!;:j;i;jj!:!i;!;i!;!-!童6ettl紫9ra一 图3 1r m 的功能流程图 v 琅h s s 模块是由多个函数( 劬c t i o n ) 和任务( t a s k ) 来实现的,它们分别对 应了s e r d e s 串并行处理的每一个步骤以及r m 与环境的交互过程。下面分别作详 细的讨论。 r e c e i v e t x d a t a f r o m s e r d e s ( i n t e g e rl i n kn l 】m ) 用来接收产生器产生的激励。在 这一步,处理器一方面把数据发送给p 触强f m ,然后由p 户岫f m 通过s e r d e s 接 口把数据传送给s e r d e s 的并行数据发送端。另一方面产生器会通过o p e i l v 打a 提供 的邮箱( m a i l b o x ) 功能把这些数据传送给r m 。f u 模拟s e r d e s 的功能并对这些 数据进行处理。由于有3 6 条s e r d e s 链路,所以定义3 6 个m a i l b o x ,每个m a i l b o x 对应一个s e r d e s 链路。m a i l b o x 用于进程间的通信,它与实际生活中的邮箱功能 类似,只要分配到一个邮箱地址,就可以往邮箱里发送数据,当然也可以把邮箱 里面的数据取出来。m a i l b o x 的定义在cv 础s s 类中实现,如下所示: h l t e g e rr e c e i v e j x d a t a j n b 3 6 ;定义m a i l b o x 的d r e c e i v e _ t x d a t a - n 小 i = a 1 1 0 c ( m a i l b o x ,o ,1 ) ;分配m a i l b o x 地址 s c r 锄b l e ( ) 用来对将要转化成串行数据的并行数据进行加扰。加扰的目的是为 了减少数据在传输过程中的干扰,提高信号的保真性。在具体实现的时候,先从 r e c e i v e - t x d a t a j n b 里把数据取出来,按照加扰的算法对数据进行加扰。数据加扰 之后,放进另外一个m a i l b o xs e n dd 【d a t am b 里面,供自动比较的时候使用。具体 实现如下: 第三章验证平台的具体实现 协ks c r 锄b l e ( ) 从r e c e i v et ) 【da _ t ai n b 里获取数据 m b l e l l = m a i l b o x - g e t ( n o 删t ,r e c e i v e _ 上d a t a b i 】,d a t a ,c h e c k ) ; 把经过加扰后的数据放进s e n dd ( d a t a1 n b 里面。 m a i l b o x p u t ( s e i l d d ( d a t a b i ,d a t a ) : ) p 础d 2 s 耐a ( ) 用来将并行数据转化成串行数据,为了自动比较功能的方便实 现,此功能在i 泓中并没有实现。但有一点需要特别说明的是,m 公司所有的 s e r d e sc o r e 都是先发送并行数据的最低有效位,后发送最高有效位,也就是说, 在串行链路上先发送t x ) 【d o ,再发送t x ) 1 ,直到t x x d 7 。 s e n d r x d a t a 2 m b ( ) 非常简单,它主要是把s e n dd 【d a t am b 邮箱里的数据取出来。 在此不作赘述。 g e t t x d a t a f r o 舳( ) 的功能与r e c e i v e t x d a t a f r o m s e r d e s ( ) 的功能类似,都是从 处理器得到数据激励,并放进邮箱当中。 c h e c k p r e 仔锄( ) 用来检测串行数据的起始帧。如果s e r d e s 的s i g d e t 信号为高 ( 1 b 1 ) ,上电之后就开始检测;相反,如果s i g d e t 信号为低( 1 b 0 ) ,就不会检测 起始帧,直到s i 酣e t 信号变为高。s i g d e t 信号通过寄存器配置。每条链路只有独立 检测到n 个固定周期的起始帧之后,才能认为该条链路处于稳定状态。链路如果 没有到达稳定状态,其上所传送的数据将被丢弃。 r e a l i g l l ( ) 用来对齐起始帧。起始帧一般为1 0 b i t 的一个固定值,s e r d e s 将串 行数据转换成并行数据,接收侧不能确保起始帧恰好就在一个1 0 b i t 的数据里,有 可能是b i t 4 0 在第一个1 0 b i t 数据里面,而b i t 9 5 在第二个1 0 b i t 的数据里面。这 样就检测不到起始帧了。接收s e r d e s 并行数据的模块会把s e r d e s 送来的两个连续 的1 0 b i t 数据组成一个2 0 b i t 的数据。除了这个2 0 b i t 数据的高1 0 b i t 和低1 0 b i t ,如 果在其它位置检测到一个起始帧,就会向s e 巾e s 发送一个r e a l i 印信号。s e r d e s 收到r e a l i 印信号之后,就会调整串行数据,直到起始帧完全在高1 0 b i t 或者低1 0 b i t 。 s e r i a 2 p a r a l ( ) 用来将串行数据转化成并行数据。与并行数据转换成串行数据相 同,m m 公司所有的s e r d e sc o r e 都是把最先收到的串行数据放在并行数据的最低 位,直到凑齐一个1 0 b i t 的数据。 d e s c 锄b l e ( ) 用来解扰码,因为数据在串行传送的时候加了扰码,理所当然地, 1 8 基于o p e l l v e r a 语言的s e r d e s 验证环境实现 应该进行解扰码。也就是说它与加扰是一个互相对立的过程。 s e n d t x d a t a 2 m b ( ) 与s e n m & d a t a 2 m b ( ) 的功能一样,它是把经过串转并处理后 的数据放进邮箱里,在自动比较的时候使用。 对于参考模型来说,主要是对功能进行建模,而不是对配置进行建模。而且 参考模型关注的是行为级的功能,所以在实现的时候,无需考虑时序的问题。 3 2 1 产生器的功能 3 2 产生器的实现 产生器( g e n e r a t o r ) 处于层次化验证平台的激励产生层,主要用来生成验证 平台所需要的激励。在生成数据激励的时候,首先要满足所需激励的数据结构; 其次要能够很方便的设置数据结构各个部分为确定的值,也可以指定激励的某些 部分,剩下的部分随机产生;数据激励也需要支持根据特定需求产生错误数据, 对d u t 进行容错测试。另外也要能够很方便地获取数据结构各个部分的值,方便 测试。需要注意,数据激励不具有时序的概念,不占用任何仿真时间。 在本验证平台中,外部注入s e r d e sd u t 的激励主要有三种,一个是i 配 置激励,另一个是本芯片往外发的数据激励,还有一个是对接芯片发过来的数据 激励,如图3 2 所示。 太 芯 片 下 行 芯 片 图3 2s e r d e s 的数据激励类型 i 激励主要通过f m 转化为i 接口时序,完成对s e r d e s 寄存器的 读写操作。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025北京石景山区招聘社区工作者62人考前自测高频考点模拟试题及一套完整答案详解
- 2025福建三明市教育局华东师范大学附属三明中学招聘紧缺急需专业工作人员18人考前自测高频考点模拟试题及答案详解(有一套)
- 辽宁省朝阳市多校2024-2025学年高一下学期6月联合考试地理试卷(解析版)
- 一次勇敢的挑战记事类作文9篇
- 2025年宝鸡千阳县中医医院招聘(15人)考前自测高频考点模拟试题及1套参考答案详解
- 2025广西贵港市公安局招聘警务辅助人员50人模拟试卷及答案详解(名师系列)
- 2025年嘉兴市秀洲区教育体育局所属事业单位公开选聘工作人员2人考前自测高频考点模拟试题及1套完整答案详解
- 2025广西贺州市人民医院招聘残障人士人员考前自测高频考点模拟试题及答案详解1套
- 多功能客户服务响应系统
- 一次春游活动日记(11篇)
- DB4405-T 303-2023 狮头鹅屠宰操作规程
- 经合组织成员国
- 浅谈如何做好危化品安全管控工作
- 人工智能技术及应用习题答案题库
- 县中医院妇科重点专科建设汇报
- 坚持人民至上 工会研讨发言
- 美学原理全套教学课件
- 期末复习(课件)新思维英语四年级上册
- 子宫脱垂试题及答案
- GB/T 90.1-2023紧固件验收检查
- 中国政治思想史复习资料
评论
0/150
提交评论