




已阅读5页,还剩72页未读, 继续免费阅读
(微电子学与固体电子学专业论文)对“缓存管理”逻辑进行eda验证.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 “缓存管理”逻辑是对s r a m ( s t a t i cr a n d o ma c e sm e m o r y ) 的地址进行回收、 释放控制的数字逻辑电路,依据其在具体交换网芯片中的应用场景,重点验证寄 存器测试、复位测试、缓存地址申请、缓存地址释放、输出路径选择功能、不同 工作模式缓存共享、线速处理等功能。 v m m ( v e r i f i c a t i o nm e t h o d o l o g ym a n u a lf o rs y s t e m v e r i l o g ) 验证方法学提供一些 公用的“基类,并有一套有效的验证架构,有助于减少验证的时间,同时还借 助于定义验证方法学的机会定义了一些标准,以便使创建可移植的验证环境和组 件成为可能。s y s t e m v e r i l o g 语言是一种直观的、面向对象的高级编程语言,能使 激励的产生实现最大的随机化。基于这一切使验证环境的搭建更加简单、高效、 准确和实用。 本论文讨论如何采用s y s t e m v e r i l o g 语言和v m m 验证方法学搭建完全自动化 的验证平台,并对“缓存管理 逻辑进行测试。最终实现了一个以随机测试为主, 直接测试为辅,代码行覆盖率达到9 5 ,条件覆盖率达到9 0 的e d a ( e l e c t r o n i c d e s i g n a u t o m a t i o n ) 验证平台。整个验证过程中解决了带有约束的随机激励的产生、 接口时序的检测、周期性数据的组包和自动比较、无设计代码下的环境自测试、 通用测试用例模板的编写和调试等瓶颈问题,从而建立起了一套简洁、高效的验 证架构。 关键词:v m ms y s t e mv e r i l o g 验证覆盖率随机测试 a b s t r a c t a b s t r a c t “b u f f e rm a n a g e m e n t l o g i ci sak i n d o fd i g i t a ll o g i cc i r c u i tw h i c hi su s e dt o r e q u e s ta n dr e l e a s ea d d r e s so fs r a m ( s t a t i cr a n d o ma c c e s sm e m o r y ) a c c o r d i n gt o t h ea p p l i c a t i o ni ns w i c hf a b r i cc h i p ,t h i sp a p e rm a i n l yt e s t st h ef u n c t i o n ss u c ha sr e g i s t e r t e s t , r e s e tt e s t , r e q u e s ta d d r e s s ,r e l e a s ea d d r e s s ,t h eo u t p u tw a yc h o o s i n gf u n c t i o n ,t h e b u f f e rs h a r i n gi nd i f f e r e n tw o r k i n gm o d e s ,a n dl i n er a t i n gf u n c t i o n v m m ( v e r i f i c a t i o nm e t h o d o l o g ym a n u a lf o rs y s t e m v e r i l o g ) s u p p l i e ss o m e b a s i c o b j e c t s ”w h i c ha r eo f t e nu s e d i th a sa ne f f e c t i v ew 玎i f i c a t i o ne n v i r o n m e n tt e m p l e t ,s o t h a ti tw i l lr e d u c ev e r i f i c a t i o nt i m eo b v i o u s l y i td e f i n e ss o m es t a n d a r d sw h i c hc a nm a k e c r e a t i n gr 既i s et e s t b e n c ha n dm o d u l e sb ep o s s i b l e s y s t e m v e r i l o gi s a ni n t u i t i o n i s , o b j e c to r i e n t e d ,a d v a n c e dl a n g u a g ew h i c hc a ng e n e r a t er a n d o md a t am o r ee f f e c t i v e l y a b o v ea l li tw i l lm a k ed e s i g n i n gt h et e s t b e n c he a s y , e f f e c t i v e ,p r o p e ra n dp r a c t i c a l t h i sp a p e rd i s c u s s e sh o wt ou s ev m ma n ds y s t e m v e r i l o gt od e s i g na na u t o m a t i c v e r i f i c a t i o ne n v i r o n m e n tt h a ti su s e dt ot e s tt h e “b u f f e rm a n a g e m e n t l o g i c i nt h ee n d a ne d a ( e l c c t r o n i cd e s i g na u t o m a t i o n ) v e r i f i c a t i o ni sr e a l i z e d , w h i c hi sm a i n l yt od o r a n d o mt e s t , t h ed i r e c tt e s ti so n l ya s s i s t a n tw a y , a n dm a k es u r et h ec o d ec o v e r a g ei s 9 5 ,t h ec o n d i t i o nc o v e r a g ei sa b o v e9 0 d u r i n gt h ev e r i f i c a t i o n , m a n yd i f f i c u l t p r o b l e m sa r es o l v e d , s u c ha st h ep r o d u c eo fr a n d o md a t a , t h et e s t i n go f i n t e r f a c et i m i n g , t h ep a c k a g ea n da u t o m a t i cc o m p a r i s o no fc y c l ed a t a , t h ee n v i r o n m e n t a ls e l f - t e s t t e c h n o l o g yo fn o n - d e s i g nc o d e ,t h ew r i t i n ga n dd e b u g g i n go fg e n e r a lt e s tc a s et e m p l a t e , a n ds oo n a tl a s tas i m p l ea n de f f i c i e n tv e r i f i c a t i o np l a t f o r mi se s t a b l i s h e d k e y w o r d :v m ms y s t e mv e r i l o g v e r i f i c a t i o n c o v e r a g e r a n d o mt e s t 西安电子科技大学 学位论文独创性( 或创新性) 声明 秉承学校严谨的学风和优良的科学道德,本人声明所呈交的论文是我个人在 导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标 注和致谢中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成 果;也不包含为获得西安电子科技大学或其它教育机构的学位或证书而使用过的 材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中做了明确的说 明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切的法律责任。 本人签名:盟日期逸2 :墨:5 l 西安电子科技大学 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。学校有权保 留送交论文的复印件,允许查阅和借阅论文:学校可以公布论文的全部或部分内 容,可以允许采用影印、缩印或其它复制手段保存论文。同时本人保证,毕业后 结合学位论文研究课题再攥写的文章一律署名单位为西安电子科技大学。 ( 保密的论文在解密后遵守此规定) 本学位论文属于保密,在年解密后适用本授权书。 本人签名:盟 导师签名:舷鄂迄蟛 日期坦2 :;:丝 日期兰鲤j i 一3 兰生 第一章绪论 第一章绪论 1 1 验证在芯片生产过程中的重要性 近几十年来,集成电路设计技术获得了飞速发展。集成电路的规模从最早的 只是很少门数的小规模电路发展到现在的几千门的大规模集成电路甚至超大规模 集成电路。随着电路规模的增大,设计过程开始变得越来越复杂,设计者可以在 单芯片上集成上万个晶体管,计算机辅助技术成为设计和验证超大规模集成电路 的关键。设计流程也发生了根本性的转变,设计过程由多个迭代的步骤组成,从 行为仿真与性能评估的迭代到功能测试向量生成的迭代。随着工艺的发展,每次 流片的成本越来越高,一次失败的流片往往导致数十万美元的损失。一块芯片从 定义需求开始到最终流片成功需要经过多次评估和测试验证环节,而这些测试验 证环节正式保证芯片设计成功的关键。 在过去的几十年里,摩尔定律一直准确地预测着单个i c 芯片上的晶体管数目 每1 8 个月就增加一倒1 1 。芯片集成度的提高不仅带来了更复杂的芯片功能和更强 的运算能力,也使复杂性呈倍数关系的增加,而确定设计是否符合要求的唯一方 法就是功能验证。功能验证对所有功能进行充分的验证,尽早地暴露问题,保证 所有功能完全正确,满足设计的要求。任何潜在的问题都会给后续工作带来极大 的困难,而且发现问题越迟,付出的代价也就越大,这个代价是几何级数增长的【4 1 。 1 2 验证步骤 在传统的验证方法中,验证工程师一般通过下面的步骤来验证d u t ,图1 1 为验证流程: 首先制定一个验证计划,主要包括由验证工程师基于设计规格基础上提出 的直接测试向量: 写直接测试向量: 执行直接测试向量,发现d u t 中的b u g :由于直接测试向量验证具体的场 景,可以发现这些具体场景中b u g ,但是没有验证的场景中的b u g 可能被 遗留; 增加更多的直接测试向量覆盖新的场景; 执行新增加的直接测试向量发现d u t 中更多的错误,步骤4 和步骤5 重复 进行,指导验证工程师确信直接测试向量已经足够; 2 对“缓存管理”逻辑进行e d a 验证 在步骤4 和步骤5 的多次重复后,通过某种形式的随机激励来,开展随机 测试( r a n d o mt e s t ) 。随机测试发现前面的直接测试中没有发现的b u g , 随机测试经常能够发现验证工程师没有考虑到的边界b u g : 重复步骤6 和步骤7 后,启动功能覆盖率,功能覆盖率提供了验证工程所 关注的测试项目和状态转移的信息,直到达到预定的覆盖率目标,才随机 测试; 在执行了前面的步骤l 到步骤8 后,覆盖率的结果也满足后,判断本次验证 可以结束了i z j 。 1 c r e a t et e s tp l a n 0 2 w r i t ed i r e c t e dt e s t s 0 3 r u nd i r e c t e dt e s t s 一一4 w r i 把m 。他d t r e c t e d 5 w r i t ef f l o l td i r e c t e d o l 叁 图1 1 验证流程 第一章绪论 1 3 课题来源 论文选题来源于企业开发项目,该项目的开发目标是一款复杂的交换网络芯 片,采用的验证工具是s y n o p s y s 公司的v c s ,验证方法采用v m m 验证方法学, 验证语言为s y s t c m v e r i l o g 语言。 1 4 研究此课题的目的和意义 随着科技的进步,i c 芯片的集成度越来越高,规模越来越大。芯片复杂度的 提高,对于验证是一个挑战,验证也成为了芯片设计中的最大瓶颈问题。最近的 统计数据表明,对一个复杂芯片而言,验证要占整个产品周期6 0 - - 7 0 的时间 3 1 。 如何更好的使用工具和技术对设计中的复杂功能进行验证已经成为缩短总体的产 品时间所需要面对的挑战。v m m 验证方法学正是在这种背景下应用而生,v m m 的目的就是要建立一种类似验证方法和验证平台的标准。作者在v m m 中浓缩了当 前最新的技术,包括带约束的随机激励产生、覆盖率驱动的验证、基于断言的验 证、形式验证、基于开放的以及精心定义的方法学的系统级验证。因此采用v m m 验证方法学和s y s t c m v e w i l o g 语言搭建自动化的验证平台是很有现实意义的,通过 实践证明,它可以通过产生带约束的随机激励更全面的覆盖验证空间,让设计的 缺陷尽早暴露出来,并能有效的缩短验证周期,提高验证质量。 本文由浅入深介绍了自动化验证平台的搭建方法和基于v m m 的验证平台的 搭建方法,在此基础上设计出了一款“缓存管理 逻辑的e d a 验证平台,它的实 现基于v m m 传统的验证架构而又不拘泥于、仆n 嗄,通过分析具体的芯片应用场景、 熟练掌握s y s t e m v c r i l o g 和v m m 的基础上,作者解决了带有约束的随机激励的产 生、接口时序的检测、周期性数据的组包和自动比较、无设计代码下的环境自测 试、通用测试用例模板的编写和调试等验证中的疑难问题,并建立了一套简洁和 高效的验证架构,这种验证架构不仅适用于“缓存管理一逻辑的e d a 验证平台实 现,对于其它逻辑电路验证环境的搭建也有积极的借鉴作用。 1 5 本论文的任务及安排 本文主要开展的工作有: l 掌握i c 验证的一般步骤; 2 深入理解基于v m m 验证方法学和s y s t c m v c r i l o g 语言的自动化验证平台的 搭建方法: 3 在准确把握“缓存管理”逻辑的规格要求的前提下,严格按照规格要求分解测 对“缓存管理”逻辑进行e d a 验证 试点和编写测试用例,测试点的分解要准确、完备、可读性强; 4 根据测试点和测试用例的要求搭建验证环境,能够支持所有测试用例的仿 真,并能实现自动比较,能够比较容易发现d u t 的b u g ; 5 对“缓存管理”逻辑进行e d a 验证,并对出现的b u g 进行分析和定位,收集 覆盖率。 基于以上任务,本文章的各章节内容安排如下: 第一章:阐述验证的重要性和通用的验证步骤,介绍课题来源和研究此课题 的目的和意义,最后给出了本文研究内容和安排; 第二章:概述v m m 验证方法学发展史,优势和具体应用,并介绍了自动化 验证平台各个组件的基本原理; 第三章:描述“缓存管理”逻辑的基本原理、应用场景、工作模式、逻辑架构、 功能规格,完成测试点的分解和测试用例的描述: 第四章:着重介绍“缓存管理”逻辑的e d a 验证平台的搭建和各个组成部分的 详细设计,并给出仿真目录层次; 第五章:全文的总结和对未来的展望。 1 6 本章小结 本章主要介绍了验证工作在芯片设计过程中的重要性、通用的验证流程。并 结合实际给出了本课题的研究目的和意义,课题来源,最后给出了所做工作和章 节安排情况。 第二章基于v m m 的自动化验证平台 2 1 1t e s t b 朗c h 的概念 2 1 自动化t e s t b e n c h 的搭建 在整个的验证环境当中,最主要的部分就是t e s t b e n c h 。关于t e s t b c h 的概念, 通常是说对于要被验证的设计,在输入端施加激励,并观察输出端的响应1 3 】。一般 来说,t e s t b e - a c h 用硬件描述语言v c z i l o g i - i d l 或v h d l 编写,也可以用高级验证 语言e 或s y s t e m v c r i l o g 编写,而通常t e s t b e n c h 也会调用外部的数据文件或是c 语言函数。 图2 1 中显示的是t c s t b c n c h 与被测设计的连接情况。t e s t b e n c h 给设计提供输 入,并检测设计的输出。可以从图中看到。整个系统没有输入和输出,整个t e s t b e n c h 像是包在设计外面的一个壳。 图2 1t e s t b e n c h 与被侧设计 编写t e s t b e n c h 是验证人员需要完成的主要任务。t e s t b e n c h 编写的好坏直接影 响着整个验证过程的结果和效率,而验证人员需要解决的主要问题就是需要给设 计的输入施加怎样的一些激励,并且在合适的时间检查这些激励应该在输出端产 生的响应。另外,t e s t b e n c h 的可重用性和易用性也是评价t c s t b c n c h 好坏的一个重 要标准。 2 1 2 自动化的验证平台搭建 早期的被测设计比较简单,所以那时候的t e 灿c h 的结构也不需要特别复杂, 简单的t e 爆 t b c n c h 如图2 2 ,可以看到,t c s t b c n c h 里只有激励的产生模块和响应的 观察模块。这时的激励是在特定的时刻对每个输入引脚指定是高电平( 逻辑1 ) 或是 低电平( 逻辑0 ) ,通常是写到一个i n i t i a l 模块中:而输出通常是在适当的时刻把输 6 对“缓存管理”逻辑进行e d a 验证 出引脚的值打印在屏幕上或是文件里。由于设计比较简单,有些t e s t b e n c h 甚至没 有输出的检测模块,验证人员直接通过仿真器提供的波形查看工具观察波形来判 断设计的正确性。 ,。一。一一一一。一。一一 ;testbench ,一一、 d u t 图2 2 简单的t e s t b e n c h 随着设计越来越复杂,t e s t b e n c h 的结构也随之改进。由于完备的验证需要更 多的测试向量,把所有的输入都一起写在一个i n i t i a l 模块里,会使得阅读和修改 t e s t b e n c h 变得非常困难,无法满足易用性和可重用性的标准。这种弊端可以用图 2 3 的t e s t b e n c h 的结构解决,就是把输入分成许多测试用例,把测试用例封装在 文件或是任务( t a s k ) q 口,这样更加易于管理。 i i u j t e 。t c 躐i 上 v e r i f i c a t i o ne n v i r o n m e n t j 。t。f ft 】 jij 一1 n t t 个】= = l u u1 i 一 图2 3 输入为测试用例的t e s t b e r i c h 另外,由于测试更加复杂,通过观察输出端输出信息来判别设计对错变得更 加困难。所以,t e s t b e n c h 中加入自测试模块成为必然,如图2 4 复杂的的t e s t b e n c h 结构是现在工程中比较通用的验证架构,对于每个测试的输入,预先计算出期望 的输出,并与被验证设计输出端的值进行比较,便可得知设计的正确性。这种方 法极大的提高了验证的效率。 图2 4 复杂的验证平台 各组件详解如下: 1i n p u tg 衄:i n p u tg e n e r a t o r ,即输入激励的产生控制模块。其功能是根据输入 参数( 由t e s t c a s e 控制) 产生d u t 需要的各种测试向量。此模块一般采用高级验 证语言编写,输出的测试向量也为高级的数据结构。一般情况下,此模块支持合 法向量、边界向量( c o m c rc a s e ) 和容错向量( e r l o rc a s e ) 的产生。其产生的测试 向量受t e s t c a s e 约束,生成的结果同时供给r e f e r e n c em o d e l ( 1 洲) 和b f m 模块。 2r e f e r e n c em o d a l :参考模型,简称r m 。此模块是d u t ( d e v i c eu n d e rt e s t ) 行 为级的参考模型,其采用高级语言编写,在行为上( 注意不是时序上) 和d u t 等 价,其和d u t 的设计都源于同一规格书( s p e c ) ,一般以事务( t r a n s a c t i o n ) 级作 为触发条件,其事务级定义颗粒的大小,将直接影响模型的复杂程度和仿真时间 的长短,在建模时需要重点关注。其输入来自i n p u tg e n 提供的高级数据结构,通 过计算产生d u t 的预期结果,此结果仍采用高级数据结构,输出到记分板 ( s c o r e b o r a d ) 此模块编写比较复杂,必须充分理解s p e c 中预期d u t 实现的各 个功能,保证r e f e r e n c em o d e l 在行为上和d u t 是完全一致的。如果输出结果很 容易能得到,则此模块可以裁剪。 3b f m :b u sf u n c t i o nm o d e l 总线功能模块。此模块是t e s t b e n c h 和d u t 相通 对“缓存管理”逻辑进行e d a 验证 的模块,包括两部分:d u t 的输入b f m ,输出b f m 。其功能主要是将高级数据 结构转换为底层的数据流,即转换为d u t 总线上带时钟的b i t 流,或者反之,完 成t e s t b e n c h 到d u t 和d u t 到t e s t b e n c h 间数据的转换。d u t 输入b f m :输入数 据来自i n p u tg e n 模块的高级数据结构,通过完成b i t 流转化后,驱动到d u t 的输 入端。d u t 输出b f m :输入数据来自d u t 的b i t 流,通过b f m 收集打包,还原 为高级数据结构,输入到记分板,以便进行校验。 4s c h e d u l e r :调度模块。负责各个模块间的协同运作,保证系统的同步运行。 5s c o r e b o a r d :记分板。此模块实现校对的功能,通过比较d u t 和r m 输出 结果是否相等,判断当前的t e s t c a s e 是否通过,并打印出相应的校对信息。d u to u t 为来自输出b f m 的高级数据结构,r mo u t 来自r m 输出的高级数据结构,并且 按照一定的序列排好,方便记分板自动进行校对。 6e v e n t s :数据事件。数据事件一般用于中断或同步信号的传递。例如:在完 成一个测试用例的校对时,可以及时通知s c h e d u l e r ,由s c h e d u l e r 进行判断,是继 续进行仿真,还是结束仿真。数据事件可存在于任何模块中,此处只显示其可能 用到的地方。 7l o g s :仿真信息记录。根据需要输出各种信息,一般输出信息要有模块和优 先级( e r r o r 、w a r n i n g 、d e b u g 等) 的控制,以便于信息的分级管理。最后根据当前 测试用例的通过准则,给出测试用例是否p a s s 或者僦l 的信息。 8t e s t c a s e :包括一系列的测试用例。其主要完成对i n p u tg e n 模块的约束,以 便产生当前c a s e 期望的测试向量,构造出预期的测试场景进行测试。 2 2v m m 验证方法学和s y s t c m v e r i l o g 语言 2 2 1v m v l 验证方法学概述 从历史上看,验证方法学随着设计抽象化程度的提高而不断的进化,它与设 计实现的复杂性保持同步发展。最初设计工作是在掩膜层次上进行的,当时的验 证是通过晶体管模型仿真实现的。后来设计转入标准单元,当时的验证也跟着转 变,进入门级数字仿真。当设计进入到利用仿真语言引入逻辑综合的阶段时,验 证也开始利用总线功能模型的事务层测试平台。纵观这些演变过程,验证的途径 没有发生根本的改变:单个设计特性( f e a t u r e ) 是用单个测试案例来验证的,而针对 目标特性的测试案例是用手工精心编写的。然而,传统的单个测试案例的解决途 径不能应付当今几百万门级规模的设计。有1 0 0 0 个分离特性需要验证的项目至少 需要由1 0 名验证工程师组成的小组工作整整一年的时间。这样艰难的工作需要规 模非常大的团队和具有非常高的生产率的工程师才能完成【6 j 。 v m m 验证方法学是在j a n i c kb e r g e r o n 研究的一种方法学的基础上发展而来 的,刚开始这种方法学只是被定为一种行业标准,后来j a n i e kb e r g c r o n 通过许多 工程实践将这种方法学充实丰富,起初v m m 是基于o p e n v e r a 语言的,在2 0 0 5 年的时候发展到使用s y s t e m v e r i l o g 语言,v m m 现在已经很成功的使用在从网络 设备到处理器的多方面的硬件设计的验证中【6 1 。 v m m 不仅是一种方法学,更是方法学的实现,它在具体的验证环境的搭建中 具有一套自己的架构和特性。如图2 5 为基于v m m 的验证结构,它将整个验证分 为测试、验证平台和d u t 三个主要部分,各个分立的测试( t e s t ) 通过一个相对稳定 的验证平台( t e s t b e n c h ) 来完成对d u t 的测试。 图2 5 基于v m m 的验证结构1 7 】 v m m 定义了一些可通用的验证环境组件,这可以减少一个完整的产品所需要 付出的努力。为了简化随机约束机制,方法学中定义了产生事务和数据描述符号 的标准和约定。怎样设计b r i m ,m o n i t o r s ,t r a n s a c t o r s 来为模块和系统级验证提供 激励和检测功能呢? v m m 提供了使之标准化的方法。而且,v m m 也定义了将不 同的验证组件集成到一个验证环境中,以至这些组件可以轻易的被组合,控制和 后期剥离出来应用到不同的环境中;v m m 也定义了开发覆盖率模型和软件验证环 境的标准,当将所有这些标准都纳入到一个完整的方法学中时,在验证过程中, 切实的应用它,有利于减少验证一个设计所花费的努力。 基于v m m 的验证架构具有以下优点: 1 嵌入在咖l o gc l a s s 中的消息接口是最容易采用的结构,它可以很容易地 替换掉大多数设计团队自己开发的消息进程。 1 0 对“缓存管理”逻辑进行e d a 验证 v m m 对这些消息进行了错误严重级别的分类,使用者可以根据错误的类型进 行选用,表2 1 是v m m 消息级别的具体定义。 表2 1v m m 消息级别的具体定义【6 】 消息严重性意义 v m m _ l o g :f a t a l _ s e v 仿真的正确性或完整性已经完全被破坏。在默 认情况下,致命消。g ( f a t a lm e s s a g e s ) 发出后, 即可放弃仿真。 v r a m _ l o g :e r r o r _ s e v 仿真的正确性和完整性已经受到破坏,而仿真 仍能够继续进行,并得到有用的的结果。在默 认情况下,从所有的源发出的错误消息都被计 数,当观测到错误消息达到一定数目时,中断 仿真。 v m ml o g :w a r n i n g _ s e v仿真的正确性和完善性可能已受到破坏,但仿 真仍可以继续进行,且可能产生有用的结果 v m m _ l o g :n o r m a l - s e v 仿真过程中的正常情况产生的,不表示仿真出 现了问题 v m m _ l o g :t r a c es e v 高层次内部信息 v m m _ l o g :d e b u g _ s e v 中层次内部信息 v m m _ l o g :v e r b o s e _ s e v 低层次内部信息 2 将仿真步骤固化下来的操作是第二个采用的步骤,这个步骤直接嵌入在 呦g l l v 类中,为了正确的实现,所有的仿真必须执行相同的顺序的步骤。表2 2 为珊e n v 类中通用的九步法。v 1 1 1 m 9 1 1 1 v 有助于将执行的过程固化下来,而不是 对每一个新的验证环境都要产生一个验证环境。如果采用相同的控制流程,不同 的模块级环境可以很容易的升级到系统级环境。把仿真步骤固化下来容许在适当 的时间调用不同的测试,而不需要违反仿真顺序。 通常成功的仿真步骤如下: 1 ) 测试案例配置的生成:本步骤包括验证环境和d u t 配置的描述,还包括 测试持续时间的描述。自检查结构使用它来确定所期望的正确的响应,验证 环境则使用它来配置d u t 。 2 ) 根据所生成的测试案例配置来建立d u t 的验证环境:为了验证某d u t 的 正确性,需要将特定类型和数目的事务处理器实例化,类型和数目是由具体 的配置确定。 3 ) 关闭d u t 中的所有断言,然后复位d u t 。 4 ) 根据所生成的测试案例的配置来对d u t 进行配置:对d u t 的配置包括 写特定的值到d u t 的寄存器中,或设置接口引脚为特定的电平。 5 ) 使能断言,启动本验证环境中所有的事务处理器和激励发生器:不应该在 实例化事务处理器和激励发生器后就马上将其启动。d u t 必须先被配置好才能正 确的接收激励信号。太早启动激励发生器会使响应检查变得复杂,因为某些初始 化的激励序列肯定会被忽略。 6 ) 检测测试结束条件:测试什么时候结束可能是由一系列条件的组合来决 定的。根据d u t 的不同,测试案例的终止可能是在运行了规定的时间或时钟周期 之后,或者是规定数目的事务之后,或者等到一定数目的错误消息被报告之后, 还可能是等到所有的监视器都进入空闲状态之后。 7 ) 依一定的次序停止所有的激励发生器。 8 ) 排空d u t ,并收集统计数据:了确定仿真是否成功,需要排空d u t 中所 有缓存的数据,并保存所有统计寄存器内的数据。而记分板上还留下的任何预期 数据都被认为是已经丢失的数据。统计寄存器内的值会与期望值进行比较。 9 ) 根据仿真过程中出现的情况作出运行正确或出错报告。 表2 2v m m 一6 矗l v 的九步法 v 砌 用来启动验证环境,一般放在测试用例中 g e n _ c f g随机产生d u t 配置信息 b u i l d 给环境中各个组件分配空间并将各个组件连接起来 r e s e td m对d u t 进行复位操作 c f g _ d u t将d u t 配置寄存器信息写入 s t a r t 各组件开始运行 w a i tf o re n d设置结束标志,可以是绝对时间或事件触发的结束事件 s t o p 将d u t 中数据发送完整,不让d u t 中再残留数据 c l e a n u p 打印仿真结果,p a s s f a i l 3 通过扩展v m md a t a “基类 用事务描述符建模事务模型,保证了统一的激 励产生机制。无论是事务还是数据,所有激励的产生方式都是一样的,都可以采 用相同的机制,很容易被随机和约束。不同的测试能够应用不同的约束,而不需 要重写随机产生器,也可以产生全部直接或者部分直接事务激励。 传统的测试中,数据( d a t a ) 和激励事务( t r a n s a c t i o n ) - - 般是一一对应的简单映射 关系,这样使得数据( d a t a ) 不仅难于使用,而且不易维护和更改。在s y s t e m v e r i l o g 中,事务( t r a n s a c t i o n ) 被看作是一个对象,使用面向对象的思想来封装数据,这既 增强了数据的稳定性和可靠性,而且使事务的相关数据可以灵活地扩展或更改。 在v m m 中,提供了基类v m m作为所有数据型类的基础,利用它可以方便地 封装所需的数据,例如:可以声_ d 明a t a 一个简单的事务b u st r a n s ,用来表示一次总线 对“缓存管理”逻辑进行e d a 验证 传输: 髓u m _ t r a n s - - r e a d ,w r i t e ; c l a s sb u s t r a n se x t e n d sv m m _ d a t a ; r a n db u s t r a i l st r a n s ; r a n db i t 7 :0 c h i p s e l ; r a n db i t 19 :0 a d d r ;, r a n db i t 31 :o d a t a ; e n d c l a s s 在该例子中,所有属性都被标识为可以随机化即标明了类型:r a n d 。实 际上如果没有特殊需求,应当将事务的所有属性都标识为可随机化,这是为了能 够让激励生成器能够最大限度地生成各种类型的事务。同时所有的事务属性都应 当是共有属性( p u b l i c ) ,这样才能通过外部来引用或改变事务的各个属性。 在事务的类声明中,可以根据需要添加一些约束,以便保证所生成的事务是 所需要的。例如:可以在上述例子的事务中加入一个约束,以要求片选信号c h i p s e l 只能取1 、8 、1 6 三个值: c l a s sb u s t r a n se x t e n d sv m m _ d a t a ; c o n s t r a i n tc h i p _ s e l e c t c h i p s e li n s i d e 1 ,8 ,1 6 ) ;) e n d c l a s s 事务的约束中有些是必须遵守的,例如:要求某些属性必须为非零等,这些 约束是不能被关闭的,而其他的约束则是应当遵守的,在必要时,可以通过一些 操作将其关闭,这些需要根据具体需要来指定。在测试平台的编写中,事务的定 义很重要,只有恰当地定义各种事务,才能有效地完成测试。在编写事务类时, 可以利用其各种面向对象的特性,例如:可以使用继承和派生的方式衍生出新的 事务类,在需要时重载或重写约束以达到新的边界情况等。 4 事务和数据以“类”的形式建模,事务产生器之间的接口采用v m m c h a n n e l “基类”扩展的c h a n n e l 来通信。 5 一个定义清楚的事务级接口机制可以让t r a n s a c t o r s 在较高抽象层次来产生, 而不必像传统的b f m 一样与物理层接口相关。这样的结构使得搭建验证环境可以 采用自顶向下的方式:先产生事务级模型,然后应用到r t l 模型;或者也可以采 用自下向上的方式:先验证底层操作,然后验证更复杂和抽象的功能。采用“工 厂模式 ( f a c t o r y _ p a t w m e d ) 产生器必须使用随机激励和回调函数( c a l l b a c k ) 方式,它 们不止提供了在一个文件里用更少的代码产生测试用例的能力,而且不用修改或 者破坏已经存在的代码,这里回调函数( h ib a c k ) 起到了很大的作用。新的测试用 例可以在不影响任何已经存在的测试用例的情况下开发,因为可以用很少的代码 开发测试用例,去测试d u t 的一个特殊的功能,这也使得实现一个真正的覆盖率 驱动的验证方法学更有效。第二个优点是g e n e r a t e r 和t r a n s a c t o r s 可以满足不同测 试的不同的需要,这也满足了不同验证环境或者项目的需要,使它们可以真正得 到重用。 基于这一切,采用v m m 验证方法学极大的提高了验证的代码重用性,它不 但实现了所有测试用例共用一套测试环境,并且不同的测试用例之间只需要几句 代码的添加,就可以实现不同特性的验证,并且在验证项目的集成测试、系统测 试等阶段最大程度的共用验证环境的组件,极大的提高了验证效率。 2 2 2s y s t e m v e r i l o g 语言介绍 随着近年来微电子技术的发展,电子系统变得越来越复杂,芯片系统不再是 一种功能单一的单元电路,而是在单芯片上广泛采用预先设计好的p 模块,通过各 种重用技术快速开发出来的集成电路,即所谓的片上系统( s y s t e mo nc h i p s o c ) 【4 1 。 这使得系统设计不得不同时考虑软硬件两部分的开发和i p 核的集成,同时对电子设 计自动化( 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 ) 的要求也越来越高。传统的硬件描述 语言将难以胜任诸如:系统建模、软硬件协同设计与验证等艰巨任务。 近年来新兴的s y s t c m v c r i l o g 是电子设计和e d a 领域的多家大公司为了应对 s o c 时代的这些新挑战而提出来的,它的维护和发展由开放式s y s t e mv e r i l o g 联盟 ( o p e ns y s t e mv e a i l o gi n i t i a t i v e ,o s c r ) 负责f 1 。s y s t e m v e d l o g 建立在强大、灵活的c + + 语言基础上,具有很强的数据表达能力和计算能力。同时,由于它引入了随机约 束、断言及接口等重要概念,因而不仅具备了寄存器传输级硬件描述能力,还具 备了在系统级抽象层次上进行描述的能力;不仅可以用于软件建模,还可以用于 硬件建模,使软硬件协同设计、仿真和验证得以有效实现。 作为一种完全免费的新型系统级设计和验证语言,s y s t e m v c r i l o g 在e d a 领域 越来越引起人们的关注,也越来越多地受到电子设计公司的支持。 s y s t e m v c r i l o g 是一种硬件描述和验证语言( h d v l ) ,它基于i e e e1 3 6 4 2 0 0 1 v e r i l o g 硬件描述语言( h d l ) ,并对其进行扩展,包括扩充了c 语言数据类型、结构、 压缩和非压缩数组、接口、断言等等,这些都使得s y s t e m v e r i l o g 在一个更高的抽 象层次上提高了设计建模的能力。s y s t e m v c r i l o g i t l a c c c l l c r a 开发,它主要定位在芯 片的实现和验证流程上,并为系统级的设计流程提供了强大的连接能力f 9 】。下面从 几个方面对s y s t 锄v 嘶l o g 所作的增强进行简要的介绍。 1 接口 v e c i l o g 模块之间的连接是通过模块端1 2 1 进行的。为了给组成设计的各个模块 定义端口,我们必须对期望的硬件设计有一个详细的认识。不幸的是,在设计的 对“缓存管理”逻辑进行e d a 验证 早期,我们很难把握设计的细节。而且,一旦模块的端口定义完成后,我们也很 难改变端口的配置。另外,一个设计中的许多模块往往具有相同的端口定义,在 v e r i l o g ,我们必须在每个模块中进行相同的定义,这为我们增加了无谓的工作 量。 s y s t e m v e r i l o g 提供了一个新的、高层抽象的模块连接,这个连接被称为接口 ( i n t e r f a c e ) 。接口在关键字i n t e r f a c e 和e n d i n t e r f a c e 之间定义,它独立于模块。接口在 模块中就像一个单一的端口一样使用。在最简单的形式下,一个接口可以认为是 一组线网。例如,可以将p c i 总线的所有信号绑定在一起组成一个接口。通过使用 接口,我们在进行一个设计的时候可以不需要首先建立各个模块间的互连。随着 设计的深入,各个设计细节也会变得越来越清晰,而接口内的信号也会很容易地 表示出来。当接口发生变化时,这些变化也会在使用该接口的所有模块中反映出 来,而无需更改每一个模块。 2 全局声明和语句 在v e r i l o g q b ,除了一个模块可以作为模块实例引用其它模块外,并不存在一 个全局空间。另外,v e r i l o g 允许任意数目的顶层模块,因此会产生毫无关联的层 次树。s y s t e m v e r i o g 增加了一个被称为$ r o o t 的隐含的项级层次。任何在模块边界之 外的声明和语句都存在于$ r o o t 空间中。所有的模块,无论它处于哪一个设计层次, 都可以引用$ r o o t 中声明的名字。这样,如果某些变量、函数或其它信息被设计中 的所有模块共享,那么就可以将它们作为全局声明和语句。 3 时间单位和精度 s y s t e m v e r i l o g 有两个增强来控制时间单位。首先,时间值可以有一个明确的 指定单位,这个单位可以是s 、m s 、n s 、p s 、f s 中的一个。其次,s y s t e m v e r i l o g 允许时间单位和精度用新的关键字t i m e u n i t 和t i m e p r e e i s i o n 来指
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年宁波大学附属人民医院招聘编外人员1人模拟试卷附答案详解(考试直接用)
- 扬州市二模物理试卷及答案
- 主题营销方案及运营方案
- 丰都活动方案策划
- 中小学国庆节策划活动方案
- 徐州九年级语文期末试卷及答案
- 2025湖北恩施硒茶集团招聘财务人员拟聘对象模拟试卷及一套答案详解
- 建模拟面试题库及答案
- 2025年中国地质调查局廊坊自然资源综合调查中心公开招聘32人模拟试卷及答案详解(夺冠系列)
- 常州八年级期末试卷及答案
- 神经内科医生进修汇报课件
- 第10课《往事依依》教学课件+2024-2025学年统编版语文七年级上册
- 人教版六年级数学上册第一单元测试卷
- 2024年注册安全工程师生产技术押密试题及答案
- 高标准农田设计实施方案(技术标)
- 医院培训课件:《分级护理制度》
- 2024春期国开电大本科《中国现代文学专题》在线形考(阶段作业1至4+专题讨论1至2)试题及答案
- 大型连锁医药零售企业发展模式
- 安全生产教育培训教材
- 王崧舟“诗意语文”教学艺术剖析
- 师德师风负面清单及整改台账
评论
0/150
提交评论