数据路由系统基于System+Verilog语言的验证

数据路由系统基于System+Verilog语言的验证

ID:75574298

大小:7.87 MB

页数:74页

时间:2024-01-05

上传者:笑似︶ㄣ無奈
数据路由系统基于System+Verilog语言的验证_第1页
数据路由系统基于System+Verilog语言的验证_第2页
数据路由系统基于System+Verilog语言的验证_第3页
数据路由系统基于System+Verilog语言的验证_第4页
数据路由系统基于System+Verilog语言的验证_第5页
数据路由系统基于System+Verilog语言的验证_第6页
数据路由系统基于System+Verilog语言的验证_第7页
数据路由系统基于System+Verilog语言的验证_第8页
数据路由系统基于System+Verilog语言的验证_第9页
数据路由系统基于System+Verilog语言的验证_第10页
资源描述:

《数据路由系统基于System+Verilog语言的验证》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

尹,了沪`硕士学位论文数据路由系统基于语言的验证作者胡晋彬导师李晓光北京交通大学年月 学位论文版权使用授权书本学位论文作者完全了解北京交通大学有关保留、使用学位论文的规定。特授权北京交通大学可以将学位论文的全部或部分内容编入有关数据库进行检索,并采用影印、缩印或扫描等复制手段保存、汇编以供查阅和借阅。同意学校向国家有关部门或机构送交论文的复印件和磁盘。保密的学位论文在解密后适用本授权说明导师签名学位论文作者签“雄晋叫签字日期“”年又月`日签字日期又”年月叼日乙 中图分类号学校代码密级公开北京交通大学硕士学位论文数据路由系统基于七。语言的验证作者姓名胡晋彬学号导师姓名李晓光职称副教授学位类别工学学位级别硕士学科专业微电子学与固体电子学研究方向集成电路设计北京交通大学年月 致谢本论文的工作是在我的导师李晓光副教授的悉心指导下完成的,李老师严谨的治学态度和科学的工作方法给了我极大的帮助和影响。在此衷心感谢三年来李老师对我的关心和指导。李老师悉心指导我们完成了实验室的科研工作,在学习上和生活上都给予了我很大的关心和帮助,在此向李老师表示衷心的谢意。在卖验室工作及撰写论文期间,李媛、孔璐等同学对我论文中的验证平台研究工作给予了热情帮助,在此向她们表达我的感激之情。另外也感谢家人,他们的理解和支持使我能够在学校专心完成我的学业。供 北京交通大学硕士学位论文中文摘要中文摘要摘要随着系统设计的规模和复杂度呈指数上升,传统的验证环境在可重用性、灵活性和验证效率等方面存在的缺点越来越明显,显然已无法满足验证领域的需求,巨大的验证压力迫使验证工程师必须突破传统验证方法,开发新的验证技术和新的验证环境来提高验证效率,保证产品质量。本文的主要任务是完成对数据路由系统的功能验证,因此如何有效地实现其系统级验证平台,使其具有较强的灵活性和可复用性,并且自动化程度高,是本文的研究难点和重点。本文运用语言实现了基于高级验证方法学的可扩展的分层验证平台,有效的提高了验证的充分性和可靠性以及验证效率,加速了项目开发进程。本文通过脚本文件对验证平台进行仿真管理,实现了约束随机激励的生成、断言的监视、输出数据的实时比对以及覆盖率统计等自动化功能。同时,验证平台支持随机测试向量约束条件的更改、自动比对机制按需求定制和功能覆盖点的添加,使验证平台的灵活性和可复用性达到最大化。此外,本文采用基于事务的建模方法,抽象层次高,使验证从信号级抽象到事务级,验证平台的每个层次都能给其上层或测试用例提供一系列的服务,并通过抽象将低层次的细节隐藏起来,针对不同的测试用例,只需要修改测试场景和约束条件。本文实现的系统级分层验证平台已经成功应用于数据路由系统的功能验证中,验证结果和覆盖率均达到了预期的目标,验证过程中充分体现了验证方法学的优势和约束随机激励验证、基于断言的验证和覆盖率驱动验证等高级验证技术的灵活性、高效性和自动化特点。本文采用的基于高级验证方法学的验证思想和先进的验证技术为日益复杂的系统级功能验证提供了坚实的基础,具有一定的创新和应用价值。关键词系统级验证约束随机验证断言验证覆盖率驱动验证分类号少 北京交通大学硕士学位论文,,,一,,,,一,,一,,,',一,,,记'一,,,一一一,广。 北京交通大学硕士学位论从一一一 目录中文摘要…………目录……引言……选题背景及研究意义……研究现状及发展趋势……本文研究内容及章节安排……基于语言的验证方法学……二语言的发展及特点……验证方法学……验证方法学特点……分层验证平台……验证平台组件……标准库及可重用的验证……本章小结……巧数据路由系统验证规划……数据路由系统的结构……数据路由系统验证平台分析……数据路由系统验证过程……测试用例开发……功能验证方法……本章小结……数据路由系统验证平台的实现……、……、……验证平台总体架构……验证平台组件的实现……信号层……指令层……功能层……场景层……`……测试层……验证环境的控制……,……了 4.4本章小结……数据路由系统验证平台的应用……基于覆盖率的功能仿真验证……验证结果及分析…………仿真结果……覆盖率统计……本章小结……结论……参考文献……,……作者简历……,……独创性声明……学位论文数据集……夕 交通大学硕士学位论文引言引言选题背景及研究意义随着半导体工艺水平进入深亚微米和超深亚微米阶段,“,专用集成电路设计规模日益庞大,设计复杂度飞速增长,集成电路在容量和性能两方面都有了显著的提高。随之而来的是更为复杂的验证过程,它伴随着集成电路设计的每个阶段,并且贯穿于整个设计过程的始终。目前,验证工作可占整个芯片设计工作的,而且随着标准化工作的进行,其所占比例还在呈上升趋势'。验证的主要目的就是检查设计模型是否满足设计规范,是否实现了设计所需的功能。对于集成电路来说,具体就是在设计需求规定的激励下,电路是否产生了符合功能要求的输出,以及在设计需求规定的条件下,电路是否能完成正常的功能。随着设计的规模和复杂度呈指数上升,对设计进行充分有效的验证变得非常重要,也变得越来越困难,验证成为整个项目设计的瓶颈,而系统功能验证的不足往往造成系统流片失败,大大增加了芯片开发成本,延缓了芯片上市时间。其问题在于,验证技术的发展未能跟上设计规模和复杂程度不断增加的步伐,而导致两者之间出现了明显的差距。近年来,电子设计自动化工具的发展使得集成电路的设计能力有了空前的提高,而真正制约集成电路设计能力进一步提升的一个重要因素是验证技术的相对滞后,如图一所示,随着设计复杂度的增长,同时设计的验证复杂度逐渐上升,导致了设计能力、验证能力与制造能力之间出现了较大的缺口。因此,传统的验证方法必须加以改革,以适应深亚微米工艺的发展。八目勺物阳目翩翻己任熟︸八州勺沁翻勺内加钾帅钩句肠飞仑马洲图一验证能力远远落后于设计和制造能力一 先进高效的验证技术对于的研发具有关键性的推动作用。目前,业界的设计公司及工具开发商不断创造出专用的硬件验证语言并提出高效的验证方法来推动验证技术的发展。然而,设计和验证之间仍然存在着巨大的鸿沟,验证方法已经远远落后于设计和生产的能力,验证依然是集成电路设计过程中所面临的最大挑战。目前验证环节上所面临的问题主要体现在以下三个方面验证的抽象层次。验证过程中施加定向激励的时候需要分别确定输入引脚的值,这样在验证复杂设计的时候,构建测试用例非常麻烦,而在输出端需要分别检查每个引脚的值也非常繁琐。因此,迫切需要提高验证的抽象层次,突破传统的低层次功能验证方法。验证的自动化程度。验证的过程繁琐而复杂,同时设计功能的日益复杂使验证需要考虑的方面也越来越多,过多的人为因素可能会导致忽略某些边界条件,难以发现系统深层次的设计缺陷。提高验证过程的自动化程度,可以极大的提高验证效率,并且将人为因素造成的不良影响降低到最低程度。在冗长的仿真过程中,人直接干预和检查逻辑错误的可能性是非常低的,必须设计合理的方法和工具提高验证的自动化。验证平台的可重用性。集成电路的芯片规模一直按照由摩尔定律所揭示的发展规律呈指数型增长,单位时间内的逻辑门密度与设计生产率之间的差距越来越大,而此问题又不能简单的通过投入更多的工程师来解决,因此需要一种新的方法来有效的提高设计过程的生产率。验证平台的重用要实现同一个项目中的很多个测试用例都使用同一个验证环境完成。若能尽可能多的重复使用代码,则只需添加几句代码就能完成某个特性的验证。最终,将能把可高度重用的部件经过简单的配置,组合起来构造出针对某个设计的专用验证环境,更理想的是在代码改动量越小的情况下该验证平台能在多个项目之间重用。研究现状及发展趋势传统的基于定向测试的功能仿真验证方法是在信号级的接口上直接施加激励驱动,待钡殴计,通过查看波形或者日志文件来检查的响应,并判断系统功能的正确性。传统验证环境如图一所示,验证平台的输入激励是针对被测设计各个功能点逐个创建的直接测试用例文件,验证平台的仿真流程通过一个简单的测试用例文件来控制。由于测试用例不够充分,这种方法很难在验证中模拟执行被测系统实际运行时可能遇到的所有情况,很难预期到所有可能的边界条件及功能场景,以及发现系统设计中深层次的设计缺陷,因此错误不容易定位,仿真验证平台不可重用,验证消耗过多的项目时间并延长了产品上市时间。 北京交通大学硕士学位论文引言激励波形观察测试用例待测设计测试用例测试用例日志文件图一传统验证环境一传统验证方法抽象级别低,只适用于功能简单、规模较小的设计,对于功能复杂、规模庞大的设计来说,这种方法具有以下局限性都是直接的测试用例,对于有限的人力来说,不可能考虑到所有的测试向量,导致很多场景没有被测试到,验证很难达到比较高的覆盖率缺少高效的约束随机激励仿真功能在整个系统的环境中进行模块的验证,很难定位问题,测试过程冗长,仿真速度很'漫验证平台缺乏层次化,即测试的可读性和可维护性差验证平台可共享的代码非常少,平台的扩展性和可重用性差,每次都需要花费大量的时间开发新的验证平台不支持协同仿真静态特性,如算法的模型不能被直接集成到验证环境中等。随着芯片的设计规模及其复杂度成指数增长,传统的验证环境在可重用性、覆盖率、验证效率等方面存在的缺点越来越明显,传统的验证方法显然已无法满足验证领域的需求,芯片的开发将面临巨大的风险,巨大的验证压力迫使验证工程师必须突破传统验证方法,开发新的验证技术和新的验证环境来提高验证效率,缩短产品的开发周期,从而迅速地将产品推向市场,创造更多的利润,最终在市场竞争中胜出。目前,以约束随机激励验证、覆盖率驱动验证、基于断言的验证为代表的高级验证技术已逐步取代传统的依赖于直接测试的验证技术,显著提高了验证效率,加速了项目开发进程。面对新的验证挑战,验证工程师感觉采用传统的硬件描述语言盯,来建立验证环境和编写验证向量具有很大的局限性,其抽象建模能力不足,验证效率低,于是不断涌现出很多专门的高抽象级验证语言,比如语言、,、以、等。其中,己经成为全球增长最快的设计验证语言,现在己被广泛应用在各大公司和研究机构的验证计划中。图一是根据的一项调查结果所绘制的条形图,从图中可以看出,虽然传统的语言在集成电路的设计和验证中仍然具有明显的优势,但是语言所表现出的增长势头却不容忽视。 verl'。“卜`肖唠`日汤幽·日。【``一年以内目前`州'。“目自一硫丫。〔巨〔图一各种设计验证语言的使用比例一为了尽快弥补验证与现实产品设计之间的差距,很多针对具体验证语言的高级验证方法学不断涌现,比如公司提出的较为通用的基于语言的一石。验证方法学、公司提出的基于和语言的验证方法学、公司与公司联合推出的基于语言的盯验证方法学、公司提出的基于语言的卿验证方法学、公司和公司联合推出的基于语言的验证方法学等`,这些高级验证方法学较好的实现了高速度、高完备性和高度重用性的验证。它们采用基于事务的层次化验证平台,提高了验证的抽象性、验证环境的可重用性以及实现了验证过程的自动化控制,从而可以更早地发现设计错误,减少系统和验证平台的开发时间,加大验证过程的运行效率。基于语言的高级验证方法学研究是目前验证领域的重要研究问题,近年来,用于复杂的芯片设计验证是目前业界的趋势,渐渐成为各大设计公司的主流验证语言。验证工程师使用创建采用覆盖率主导、随机约束和基于断言验证技术的综合验证环境,极大提高了芯片验证过程的质量和生产率。本文研究内容及章节安排本文的结构安排如下引言叙述了验证在集成电路设计中的重要性及验证工作面临的挑战与问题,讨论了传统验证环境的局限性,通过观察国内外发展现状总结了目前先进的验证技术和高级验证方法,阐述了目前验证领域广泛采用的高级方法学的优势。 第二章概述了语言的发展及特点,介绍了验证方法学,包括验证方法学的特点、分层验证平台结构及标准库和可重用的验证。第三章介绍了数据路由系统的功能和外部接口环境,分析了数据路由系统验证平台的目标和自身特点,提出了系统级验证过程的重要步骤,然后讨论了目前验证领域广泛运用的先进功能验证方法。第四章提出并分析了数据路由系统分层验证平台的总体架构,详细介绍了验证平台组件的功能原理和具体实现方法,包括场景发生器、驱动器、监视器、记分板等,然后介绍了验证平台仿真控制的九个步骤。第五章分析基于覆盖率的功能仿真验证流程以及覆盖率收集方法,应用验证平台对进行了功能仿真验证,给出了重要的接口时序波形、记分板比对结果和覆盖率统计信息。结论对课题研究进行了总结,并提出了完善验证平台进一步所需的工作。 北京交通大学硕士学位论文基于语言的验证方法学基于。语言的验证方法学。语言的发展及特点“是对一中标准的扩展,这些扩展可被归纳为两个方面对硬件建模的扩展,主要集成了和语言的很多优秀特性对验证和断言方面的扩展,主要集成了来自、、、十十和语言的特性,同时包括和断言〔川。虽然。是一个整合体,但它大大超越了分立部件的总和,实际上是创造了一种新的工程语言,即硬件描述及验证语言,。使得工程人员可以使用一个统一的标准语言对大型复杂的设计进行建模,并验证设计功能的正确性。在年的会议上一项调查结果显示,成为全球增长最快的设计验证语言,现如今同样在各大公司的验证计划中被广泛应用。具有丰富的语言能力,能描述复杂验证环境,包括带约束随机激励产生、面向对象编程和功能覆盖率统计。这些特点使用户开发出能自动产生大量验证场景的测试平台。作为硬件验证语言具有以下特性面向对象的编程。数据和对数据进行操作的方法被封装到一个独立的、正式的数据结构,即类。类作为一个数据类型,其内部可以定义数据成员和对这些数据成员进行操作的方法,即函数和任务。类的实例化就是对象,中的对象可以动态的创建和析构,每个对象在没有通过构造函数分配空间时,为一个空的句柄'。面向对象的编程技术使验证平台更易开发、调试、维护和重用受约束的随机激励生成。、飞提供了带约束随机激励测试所需要的所有验证语言结构。它提供了一些内建函数,用来随机化输入的激励,以较短的时间,覆盖更多的情况,同时又可以根据实际情况调整约束的权重,使创建激励时灵活性很高功能覆盖率。通过分析覆盖率报告,调整随机约束,显著缩减了达到完全覆盖的时间多线程及线程间的通信。多线程是对所做的重要改进,实现了构成验证平台的所有组件都能够并发执行。除了匀。并行块以外,为了使测试真正做到并发执行,提供了两个新的语言结构并行块和并行块'新增数据类型。增加了很多新的数据类型来帮助描述更抽象的硬件行为。如两态数据类型的引入减少了仿真器对内存的使用并提高了仿真运 北京交通大学硕士学位论文基于。只语言的验证方法学行效率、动态数组的引入意味着不需要在编译的时候指定数组的大小,可以在运行的过程中进行动态分配、关联数组则是通过标号来分配空间和访问的数组等接口。接口采用关键字对和进行构造。接口的定义是独立于模块的,它们用来封装验证平台各个组件之间通信所需要的各种信号。接口包含了连接、同步、甚至两个或者更多块之间的通信功能,连接了设计块和测试平台。此外,接口里面还可以带时钟、断言、方法等定义时钟块。时钟块是语言提供的另一个重要的行为级语言结构。它将属于同一个时钟域的信号全部放在一起,并采用关键字对和进行声明,这些信号在定义的时钟沿发生时都处于激活状态。它解决了以往测试和设计中同步时钟采样的问题,从而避免了可能出现的潜在时序竞争问题。此外,如果有多个时钟信号,可以分别建立多个时钟块,并将属于这些时钟域中的相应信号分别进行封装,然后用于监测'。验证方法学验证方法学特点是这样定义方法学的“由方法、程序、运作概念、规则和假定构成的,在某种科学、艺术或学科采用的个体”。不同的学科和领域有不同的方法学,但是它们都具备己所定义的方法学的基本构成。在验证领域,显见的趋势是语言划一、仿真平台统一、更加正规和高效,而验证方法学的采用正是顺应了这种趋势。不仅是方法学,更是该方法的具体实现,它包括一系列的类库卿、类对象连接关系,以及用户定制的代码等。基于的验证方法学己经得到全球数百家和验证团队的采用,自年月日,验证方法学开始在中国的设计公司使用,用于开发先进的验证环境,这标志着基于、乞的设计验证方法开始在中国推广,缩小了我国与国外先进设计验证技术的差距,大大推动了我国设计与验证的发展。实践证明,验证方法学在中国的广泛运用使新一代芯片开发人员能够利用先进的验证技术进行复杂的验证,加速了开发基于的功能强大的验证环境,并有助于以较少的时间和努力达到可测量的功能覆盖率目标。所具有的很多特点使搭建系统级验证平台的过程大大简化。、可重用性 北京交通大学硕士学位论文基于只语言的验证方法学验证方法学中采用了的接口特性,接口作为一个独立的模块存在,所有输入输出信号都在接口中声明,其他功能模块直接引用接口即可连接。此外,接口模块可以采用时钟块进行同步,这样,时序和连接关系都在接口中得到了很好的定义。在传统的模块连接中,如果增加、减少或者修改一个输入输出,所有与这个信号有关的信号都要跟着改动,在系统级设计中,这样的改动无疑会消耗大量的时间和精力,而采用了接口后,同样的情况下只需要修改接口一个模块即可。接口的使用使得系统级验证平台的可重用性大大增加,如接口协议验证平台,即可被移植到所有具有相同接口的设计中,无需重新搭建平台,这样验证工程师便可以把工作重心放在其它验证组件的研究上,而不再花费时间用于接口的连接。、抽象层次高一个复杂的设计需要开发大量的测试用例,由于传统的功能验证抽象层次较低,开发大量高覆盖率的测试用例会很费时间,并且代码量过于庞大,因为需要开发大量的代码来模拟协议的各种情况。方法学采用了基于事务的验证方法,可以很好的解决这一问题。事务是指一个处理单元和设计之间通过接口进行的数据或控制的单一传输。基于事务的验证是通过在验证的过程中引入事务的概念,将信号级传输提升到一个更高的层次,如总线的读写操作,传统的验证方法需要编写大量的激励来覆盖所有的读写指令,而方法学则通过高层的任务将操作进行封装,然后经过层层解析,最终形成底层的二进制激励,输入到的管肚口。、灵活性验证方法学沿袭了面向对象编程的很多优良特性,如封装性、继承性和多态性,因此具有很好的灵活性。定义了很多个基类,验证工程师可以根据自己的实际需要对它们进行继承和扩展,经过扩展的类可以同时实现子类和父类的全部功能。因此,验证方法学具有很好的可扩展性,运用这些方法的过程,灵活可控。分层验证平台语言实现了硬件验证语言的抽象化设计,从而使验证平台的建模逐渐向高层次发展。验证平台的抽象级别越高,所需要考虑的因素就越少,验证平台的搭建也越简单。验证平台中的各个功能被分化开来,通过类的实现被封装在特定的模块中,同时,使用方法来实现这些需要的功能。这样就能够从多个层次构建验证平台,使模块被抽象到各个不同级别的层次之间,模块之间采用基于事务的通信,大大提高了验证平台的重用性。此外,分层的验证平台具有高度的 北京交通大学硕士学位论文基于只语言的验证方法学灵活性,针对不同系统或者是同一系统中的不同模块具有高度的可移植性,即能够最大限度的实现验证平台代码及其组件的重用。高度重用的验证平台可以极大程度的减少构建验证环境的工作量,从而减少这一环节所投入的时间,使得验证工程师可以将更多的精力投入到后期的验证工作中去,因此大大提高验证工作的效率。图显示了一个完整的分层验证平台结构,该验证平台分为层,使验证从信号级抽象到事务级,每个层次都能给其上层或测试用例提供一系列的服务,并通过抽象将低层次的细节隐藏起来。验证平台独立于之外,可以实现对进行黑盒验证,只须了解外部需要的激励和接口的时序关系。由于验证平台具有抽象和自动化功能,因此可以减少需要编写的测试用例的数目和细节,验证平台无需修改即可被尽可能多的测试用例重用,从而可以减少验证代码的数查且。场景层遍激励鳗发生器卜一—一覆率盖事务处理器记分板检查器功能层喊画枢画曰辱爵功能指令层驱动器断言监视器接口接口待测设计图分层验证平台结构一图所示的分层验证平台是整个验证环境的核心。这种层次化的结构并没有对模型进行假设,模型可以是寄存器传输级或是门级,也可以是事务传输级的。层次结构是一个抽象化的模型,实际中完整的验证平台并不一定要包含图中的每一个层次,在实际验证平台的搭建过程中也没有十分明确的分界。功能仿真时在验证平台的顶层使用信号层与进行通信,而一切事务的执行被封装在验证环境中。图中各层的介绍如下最顶层为测试层,通过分析设计需求而设计的测试用例位于该层,针对不同的系统特性采用不同的测试用例进行仿真。在验证过程中针对每一个测试用例需要修改激励发生器的随机约束,定义新的随机场景,同步不同的事务处理器以及根据覆盖率报告创建一些定向激励。 北京交通大学硕士学位论文基于。只语言的验证方法学场景层中的激励发生器以随机的次序和序列生成对应于场景的事务流,产生各种激励命令和数据给下层的事务处理器,同时针对指令集和数据源可以建立不同的激励发生器,用户根据系统设计的具体需求说明在该层实现激励随机化的约束,以进行各种场景的测试。场景。指有一定关系的随机事务序列。每个场景都代表了一个值得关注的事务序列,用以实现对某种特定边界情况的功能测试。场景管理器根据特定测试用例的定义和指示发起场景,并生成与要求场景对应的事务流。根据测试用例约束范围的不同,其上的测试层可以部分或完全绕过场景层。因此,要求能够在仿真开始或仿真的过程中关闭发生器,以便插入指定的激励。发生器同时需要具有重启动的能力,以便在插入指定激励序列之后能够重新进行随机仿真。功能层提供必要的抽象层次,用以处理应用层的事务,验证的正确性。与物理层中基于接口的事务不同,功能层的事务与接口或物理事务没有一一对应的关系。功能层事务是高层操作的抽象,这类操作由的主要子集或整体来完成。功能层根据物理层事务的完成状态来决定重新发起一些事务还是延迟一些事务。该层包含抽象级别高的事务处理器、记分板和检查单元。事务处理器从通道中获取激励发生器产生的命令或数据,并通过总线功能模型传给底层驱动。记分板建立自动比对机制,利用回调函数实时获取输入及输出数据流,判断的响应是否和期望结果一致,以显示验证通过或失败。指令层直接进行对的读写、配置等指令操作。这一层包含底层驱动器、总线功能模型及监视器,其抽象级别最低,因此该层的模块与的接口和具体物理协议有关。该层为上层提供一个事务级接口,同时经过信号层驱动物理管脚。监视器直接接收的输出数据,并送入记分板进行比对或将某些结果写入日志文件。此外,断言的插入可以比较容易地发现潜在的系统设计的内部错误,显著提高了验证的可观察性和可控制性。最底层为信号层,为提供信号级的连接。运用中的接口技术结构将的端口信号进行抽象,封装在接口类中。在与其他模块通信时,使用基于接口事务的传输,而不是基于以位为单位的信号传输。这样当验证满足同一传输接口协议的来说,验证环境无须修改即可用于不同实现模型之间的验证。对于使用接口层的模型,同一个使用位信号表示的'〕级模型,都可以使用同一个验证环境。在接口层中,使用时钟块来实现接口中信号的同步,同时使用关键字定义接口的主从属性。该层提供了信号抽象,而且当信号层需要访问时,这些信号抽象能够提供给高层次的所有层及测试用例访问或使用。然而,验证环境和测试用例的实现应当使用尽可能高的层次的服务,除非万不得已,应当始终避免直接访问跨层的信号。功能覆盖率模块中定义的不同功能点,通过覆盖率报告发现设计中的缺 北京交通大学硕士学位论文基于。语言的验证方法学陷。功能覆盖率也可以衡量所有测试在满足验证计划要求方面的进展。随着各项测量标准的完成,功能覆盖率代码在整个项目过程中会经常变化。虽然分层测试平台主要用于带约束随机激励产生,但也支持人工定向测试。图左边部分展示了从测试到驱动直接运行路径,完全绕过生成器,这样允许验证工程师直接产生事务级而不需要设置带约束的随机场景。验证平台组件、数据和事务验证过程中产生的大量激励来源于验证工程师事前设计的数据结构。合理的设计数据结构,并结合随机化约束来产生特定的数据是提高验证效率的前提。在使用设计数据结构时,通常把满足特定协议的数据使用面向对象的模式封装在类中,从而形成数据单元。数据单元是指最终或者立即被处理的数据基元。例如包、指令或信元。数据单元可以由很多小的数据单元组成,方法是将多个较小的类组成一个大的类。在类中可以定义方法来对数据对象的操作和变换进行建模,类的实例可以更有效的处理和移动。数据类中还可以包含约束声明,通过约束化随机来产生满足验证条件的特定数据实例。同时,可以不用修改原始的基类模型,就能够通过继承来修改类的默认行为和属性,操作起来十分方便〔'。事务就是与事务处理器之间通过接口在特定的起止时间内所作的一次数据传输【'“,也可以理解为事务处理模块和两个模块之间的一次数据或控制信号交换。这个交换与采用的协议无关,因为事务级模型通常不涉及具体的总线时序等细节。一个事务可以是一个简单事务,如某个存取单元的读取,也可以是一个复杂的事务,如传输整个结构式数据报文。基于事务的验证允许在信号引脚之外的事务级之上对设计对象进行仿真和调试,将系统中各个功能模块之间所有可能的事务类型都建立出来,并系统地加以测试。在基于事务的验证中使用总线功能模型,一,它为在设计对象的硬件接口上运行事务提供了一种手段,它将根据接口协议的要求来驱动各个互连线的信号。这种验证技术不仅提高了验证效率,还可以很容易的实现自核对和定向随机测试,它是当前仿真中采用的主要验证技术。、事务处理器事务处理器用来表示验证环境中的组件,这种组件在特定协议的两个抽象层之间担任接口,或者用来生成协议事务。在图所示的分层验证平台中,驱动器、监视器、检查器和发生器的组件都是事务处理器。对验证环境来说,事务处理器的生存周期是静态的。它们创建于仿真过程的开始时刻,并存在于仿真 北京交通大学硕士学位论文基于语言的验证方法学的整个过程中。它们是验证环境的构造组件,就像中的模块一样。被创建的事务处理器一般只有很少几个,与其相比,事务拥用动态的生存周期由发生器创建的成千上万个事务,流过一系列事务处理器,在记分板中被记录和比较,最后被释放。场景层的事务处理器为激励发生器。依照所需激励的不同,可以编写出各种不同的激励发生器,其具体形态和复杂度也相差很大。在中,最常用的两种激励发生器是基元发生器和场景发生器。基元发生器是最简单的激励发生器,它用于生成相互独立的数据项和事务。也就是说,在基元发生器所产生数据项序列或是事务描述符序列中,每个数据项或者事务描述符与其前后项都是相互独立的。用基元发生器来产生激励就好像调用了一个随机函数,只不过返回的是一个复杂的数据结构而非一个标量。在实际应用中,如果需要产生一个真正有意义的序列,一般都要求发生器能够根据序列的前后项来约束随机激励。只有在产生一些非常简单的数据或事务时,才可以使用基元发生器来完成。与基元发生器相比,场景发生器能够产生更为复杂的数据序列或是事务描述符序列,这得益于它使用了称为“场景描述符”的数据结构。场景发生器和基元发生器相似,唯一的不同在于被随机化的对象的种类基元发生器是直接随机化数据项或是事务描述符,而场景发生器则是随机化包含有数据项和事务描述符的场景描述符。指令层的事务处理器的任务是将事务交易转化为信号级行为或反过来将信号级行为转换为事务交易。该层事务处理器的特点是至少有一个信号级的接口和一个事务交易级的接口,主要包括驱动器和监视器。驱动器将事务交易转变为信号级的动作。监视器就是监控总线,它监视的输出并将其转换为事务交易。监视器是被动的,也就是说它不影响的运行。传统的总线功能模型,被称为指令层事务处理器。是被测设计周边接口芯片的时序建模,它们隔离了被测设计的周边时序,模拟接口芯片的行为对被测设计进行驱动和采样,并提供了底层方法供上层的验证组件调用。比如说,待测设计是一个智能卡,那它的就是读卡器,则要根据具体协议,在中描述出读卡器的具体行为。许多都同时提供监视器的功能,即检查被测设计的接口时序或者数据格式是否满足接口协议。由于直接与被测设计接口,因此需耍处理被测设计的各种输入输出信号时序。一般来说,被测设计具有什么样的接口,就应该有相应的与它对接。在指令层的事务处理器中,事务层接口让验证环境的较高层可借助于指定哪些事务来给提供激励,或将接口在给定位置所观察到的哪些事务及时地通知给验证环境的高层。事务级接口替较高层去掉了物理接口的细节,在功能层的事务处理器中,使用高层的事务接口来接收将要执行的高层事务的描述符。通过 北京交通大学硕士学位论文基于只语言的验证方法学执行一个或多个低层事务来执行或实现这些高层事务。功能层的激励发生器为产生交易事务流。激励发生器可以是随机的,定向的或定向随机的。它们可以自由运行也可以被控制。它们可以独立也可以同步使用。事务处理器事务处理器或测试一一扣通道三卜压生产者消费者上游下游图事务接口通道一事务处理器之间只用通道来交换事务描述符。要建立两个事务处理器之间或测试用例与一个事务处理器之间的连接,可以通过将他们的两个端点指向同一个通道来实现,如图所示。通过实例化端点来建立连接可以依照任何次序,这使得验证环境可自底向上或自顶向下地建立。通道可以使事务处理器,不管是上游的还是下游的,无需修改代码,就能通过一个兼容的通道与任何其它事务处理器相连。、自检查机构自检查机构中往往包含功能模型,功能模型能够模拟的实际功能按照实际情况输出标准数据。施加给的激励同时提供给功能模型,然后将功能模型的输出与被观测的响应进行比较。功能模型与本身以同样的顺序产生输出数据,但是功能模型不必产生与同样精确程度的延时和周期输出,因为比较函数会处理期望的输出与被观测响应之间的延迟和周围的失配。功能模型不必与设计具有相同的外部引脚,功能模型可以在事务层使用高层的事务接口,被观测信号与参考模型的响应在事务层进行比较,而不是在逐个周期进行比较。使用功能模型在很大程度上取决于是否存在功能模型予以使用。若能存在,使用它能够减少很大的工作量若不能使用,则人工转换的方法实现起来比功能模型更加有效。功能模型通常也可以使用语言来实现,然后通过直接编程接口,几集成到环境中。自检查机构能够很好的验证设计模型端到端的响应和输出数据的完整性。它可以高效的检查数据计算、转换和顺序方面的错误,也能很容易的检测到丢失的或虚假的数据。另一方面,它不适合检测在单一响应的间隔方面上故障症状表现不明显的错误。例如,自检查机构难于验证内部资源分配和服务质量仲裁的公平性,也难于使用它来衡量整个设计模型的性能。由于每个自检查结构对于被验证的设计都是唯一的,因此在自检查结构之间几乎没有可重用的功能。 北京交通大学硕士学位论文基于。只语言的验证方法学、记分板和覆盖率收集器记分板是用来确定的正确性。记分板监控进或出的信息,并确定对激励是否发出了正确响应。覆盖率收集器是对事件计数。它深入交易事务流,计算交易事务或交易事务的的各个方面。其目的就是确定仿真的完整性。覆盖率收集器中对特定事件计数取决于设计和特定的测试。覆盖率收集器计数的一般时间包括处理次数、在地址特定段处理的次数和错误数等。覆盖率收集器的计数也可作为完整性检查的一部分。例如,覆盖率收集器可以记录一个开始跟踪数据的运行平均和标准偏差。它也能记录错误或正确处理的比例。标准库及可重用的验证·标准库提供了四个库来方便验证方法学的高效实施标准库,实现环境及组件的类库库,断言检查器库标准库,系统级验证单元及实用的类软件测试架构,一个用于软件验证的库。开发团队利用这些库能够快速建立验证环境,且在项目早期使用能节约很多时间。随着厂商提供的验证单元和标准库的采用使得不同用户、跨项目之间能够建立平台一致性。在本文系统验证中,主要采用前两种库来搭建验证平台。表显示了标准库的几种常用类库在搭建验证平台中的作用。表一标准库中基类库的作用一,标准库作用】控制每个测试用例运行所有事务描述以及数据建模的基础】提供通用事务级接口机制】的事务处理器,作为基类服务于所有事务复制事务到多个通道识别多个源事务中的一个到通道一自动生成定义的事务」们`自动生成定义的场景提供了信息服务接口并发执行线程同步接口提供了强有力的断言结构,能被当前主流仿真器所支持,并更 北京交通大学硕士学位论文基于】。语言的验证方法学易使用。一库即是将断言轻松加入到设计中的一个很好的方法。这些检查器的设计与通用设计单元保持一致,比如、、·二、、等。工程师不用考虑使用的断言与设计结构是否完全保持一致,他们只需要简单将一个请求和应答信号连接到一个检查器或者是将地址线和控制信号连接到一个检查器。、可重用的验证为了能够使验证平台中的模块得到最大限度的重用,在设计验证平台的初期就应考虑编写可重用的验证,。分层的验证平台以及的很多特点可以很方便的产生可重用的。包括事务级模块、发生器、处理器、检查器、断言以及分层验证平台中的其他部分。编写可重用的必须考虑如何能够方便的将之应用于其他不同的项目中。设计较好的可重用,则与相适应的验证环境的开发团队都可以非常方便快捷的采用,从而在项目中能够节省大量的时间和资源。如一个具有特殊接口验证环境单元,只需要合适的封装,在以后具有相同接口的芯片中便可重用这个。本章小结本章主要对语言的发展及特点进行了概述,并介绍了验证方法学,分别阐述了验证方法学的特点、分层验证平台结构及标准库和可重用的验证。 北京交通大学硕士学位论文数据路由系统验证规划数据路由系统验证规划数据路由系统的结构数据路由系统具有两种工作模式,分别为数据存储模式和数据直接输出模式。数据路由系统工作时,将从路高速数据通道、路中速数据通道或路低速数据通道中获取数据源,数据源经过中数据处理模块处理后,分别写入三个进行数据缓冲,避免输出端口溢出,当中达到一定数据量则以一定的仲裁方式响应三个的读请求,从中读出数据,以乒乓操作的方式写入两个存储器或直接输出。此外,通过命令可选择的工作模式、控制三种数据通道的数据传输开始时间和数据传输结束时间、指定数据存储地址和查询数据存储状态。数据路由系统外部接口如图所示人材高速数据被测对象存储器数据路由系统存储器低速数据直接输出图数据路由系统外部接口示意图一数据路由系统功能重要,为了保证各路数据传输的正确性和完整性,避免出现数据丢包和误码等现象,需要搭建一个完备的、高效的验证平台,以实现既能充分验证的所有功能,又能缩短系统验证时间的目的。数据路由系统验证平台分析数据路由系统的验证平台需要尽可能的做到抽象层次高,可移植性好和灵活可控。本文主要采用第章中曾经介绍的公司推出的高级验证方法学来实现,结合当今业界主要应用的约束随机激励生成、覆盖率驱动验证、基于 北京交通大学硕士学位论文数据路由系统验证规划断言的验证等高级验证技术,搭建一个基于语言的可扩展、可重用的功能仿真分层验证平台。通过脚本对整个验证平台进行仿真管理与控制并执行针对设计的测试用例,覆盖到所有可能的边界条件。验证平台实现的目标,即验证平台主要完成的自动化功能约束随机激励的生成断言的监视输出结果与期望结果的实时比对覆盖率统计。验证平台的需求支持随机测试向量约束条件的更改自动比对机制可以按需求灵活定制支持功能覆盖点的添加。数据路由系统验证过程一个完整的系统级验证过程主要包括以下几个步骤、分析设计需求规格说明书、开发测试用例、建立验证平台,进行功能仿真验证、静态分析,包括静态时序分析、跨时钟域检查和形式验证等、板级验证和芯片级验证。如图一所示”。一一维塾燕砚一一一一甲一,,一奋丽赢赢斌一一】盛一一',赢、二一尹「丁产鳄赶当'、,。·,仁一…“」图一系统级验证过程 北京交通大学硕士学位论文数据路由系统验证规划一一验证的过程开始于验证目标的确定,一般来说,验证目标严格地遵守于设计需求规格说明书,它有很多种表现形式,比较常见的是覆盖率目标,即验证的覆盖率只有达到可以接受的百分比才算正确,这一点将在后文中详细介绍。验证目标确定之后,建立验证平台或验证环境,一般所采用的方式是编写,然后采用先进的功能验证方法进行功能仿真验证。由于信号之间的相位关系在功能仿真时无法覆盖,布局布线后信号之间的关系变得更加复杂,与功能仿真有很大的差距,以及连线之间藕合电容器的时序效应和串扰噪声的逻辑效应等均有可能导致系统功能失效。因此高可靠的系统验证应该进行严格的板级验证和芯片级验证。本文主要详细介绍验证平台的搭建和采用先进验证技术的功能仿真验证。测试用例开发测试用例是为某个特定目的而编制的一组测试输入、执行条件以及预期结果的集合,其具体内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,并形成文档。每个测试用例反映不同的场景、条件或经由被测件的事件流。测试用例分为正常测试用例和异常测试用例两种。正常测试用例是用于证明某项需求得到满足的用例。异常测试用例是用于测试非预期的条件或数据是否会导致被测对象出现异常的用例。测试用例具有很重要的作用,具体表现为指导测试的实施、规划测试数据的准备,同时它是编写测试脚本的“设计规格说明书”、评估测试结果的度量基准以及分析缺陷的标准。系统级验证的测试用例的开发主要分为三个步骤、测试需求分析、测试流程分析、测试用例设计。测试需求分析阶段,应从设计需求规格说明书中,找出被测对象的需求,通过自己的分析、理解,整理成为测试需求,清楚被测对象具有哪些功能。再通过进一步归纳、分类或细分测试需求,划分好测试项。为了不遗漏测试点,需要清楚的了解被测对象的业务流程。如果设计需求文档中已经有业务流程设计,则可以从测试角度对现有流程进行补充。如果无法从设计需求文档中得到业务流程,验证工程师应通过阅读设计需求文档,从功能流程、数据流向、关键条件判断等角度考虑,画出业务流程图。业务流程图可以帮助理解被测对象的处理逻辑和数据流向,从而指导测试用例的设计。测试用例设计的类型包括功能测试、性能测试、接口测试、边界测试、数据处理测试、强度测试、安全性测试、恢复性测试等。测试用例可以从不同角度来进行设计,比如从输入的角度考虑使用等价类划分、边界值、因果图等方法来设计测试用例,从系统状态转移的角度来使用状态转移法设计测试用例,从业务流程的角度使用流程分析方法设计测试用例,从输 北京交通大学硕士学位论数据路由系统验证规划出的角度来使用输出域覆盖的方法设计测试用例,如果觉得测试不充分的话,还可以使用错误猜测法来补充测试用例。这样就基本上能设计出需求覆盖率比较高的测试用例了。测试用例与测试需求的关系是多对一的关系,即一个或多个测试用例对应一个测试需求。在测试过程中一般还需要不断完善测试用例。测试用例有一个比较规范的格式,它应该包括测试用例编号、测试项目名称、测试环境要求、预置条件,输入激励,操作步骤、预期输出、优先级等。优秀的测试用例具有准确的操作步骤和可验证的期望结果,这样非常有利于测试执行的自动化实现。通过分析数据路由系统的设计需求规格说明书之后,本文开发的测试用例类型及数量统计如表一所示。表一测试用例统计表一钡试用例类型功能测试性能测试接口测试边界测试强度测试安全测试测试用例个数功能验证方法功能验证的目的就是确保设计实现的功能与设计规范所定义的功能一致,或者说是检验经过人工翻译或工具翻译后的设计与翻译前的设计规范是否一致。功能验证在系统验证过程中处于非常重要的地位,己成为集成电路设计环节中不可分割的一部分,它伴随着设计的每一个步骤而进行。从手工设计阶段的人工实测到计算机辅助设计阶段的设计规则自动检查,再到基于设计的功能模拟,设计方法的每次进步,都会促使新的验证方法产生。相比于具体的验证技术,功能验证方法学着眼于整个功能验证的全局,根本目标是提升整个功能验证的效率。随着功能验证越来越成为集成电路设计效率提升的瓶颈,功能验证方法学的研究一直都没有停止过,下面将分别介绍几种先进的功能验证方法。、约束随机激励验证随着芯片设计规模和复杂程度的增加,采用传统的定向测试可能需要手工编写成百上千乃至上万的测试向量,验证空间成“几何”增长,导致验证工作难以进行。另一方面,定向测试只是针对已知测试空间,无法证明设计中不存在潜在的错误。约束随机激励验证,一能有效的解决这一难题。利用计算机随机生成函数,设计者可以随机产生任意不同的测试向量,从而使验证程序的代码大幅度减少,提高验证工作的效率。但是,仅通过随机函数产生测试向量还不能够有效地验证设计规范的要求,这项技术最重要的特点是能够约束测试向量的生成。通过对要生成的测试向量施加约束,特别是带权值的约束可以 京交通大学硕士学位论文数据路由系统验证规划很容易地按事先确定的比例产生验证工作所需要的具有某些特殊属性值的一类或几类测试向量,从而可以人为地控制向量的生成。验证中很重要的一点在于测试平台质量,应用约束随机激励产生方法,在可控制规则或用户自定义约束下以自动方式产生测试场景,则附加的测试可在对一系列基本测试用例基础上进行简单调整测试参数或加入定义好的约束而产生。图一表明了通过这种方法获得好处。测试功能分百比可约束的随机直接测试测试节省时间时间图一约束随机激励测试与直接测试一用直接测试方法产生一个新的测试用例所需要的时间相对固定,因此功能验证质量的提高与时间基本成线性关系。而一个带约束的随机验证环境,虽然在第一次能正常测试之前有一个前期投入消耗,但此投入是用于建立验证环境中参数化配置能力以及约束测试中的相关部分,这样使得之后的测试更容易基于约束驱动。工程师可以根据规范中所定义的功能或者根据所关心的边角情况,人为地产生各种测试向量来验证设计的正确性。因此,在测试场景类型中建立随机化,不仅仅是产生新数据值,更增加了测试击中边界条件的可能性,从而发现更多深层次设计缺陷。同时,这样的测试用例也能击中更多覆盖点,加速验证收敛。、基于覆盖率驱动的验证覆盖率驱动的验证,一是指随着功能覆盖率逐渐接近极限,需要改变测试,以期能找出新的方法去达到那些尚未被覆盖的区域。覆盖率指标就是将收集到的覆盖率数据与声明的或隐含的目标进行对照,从而得出一个比例关系,通常以百分比的形式来表示。首先由仿真工具或静态分析工具将覆盖率数据收集到一个或多个数据库中,然后再将这些数据通常由多个仿真或静态分析中收集并汇总在每个覆盖率点与其目标进行比较。若收集到的数据完全覆盖了预定目标,则称覆盖率指标达到。覆盖率测量数据有两个方面的重要作用。一方面能明确指出设计中还没有被充分验证到的部分,确定验证过程中的空洞。通过回答下一步如何去做这样的关键问题,有助于指引验证需要努力的方向。比如,需要补充编写哪些直接测试用 北京交通大学硕士学位论文数据路由系统验证规划一图一显示了在验证过程中不同阶段运用不同方法提高覆盖率。此过程的第一部分是建立测试平台环境。通常在验证环境建立前不会进行芯片级或系统级测试。然而在此期间,如果设计者编写代码,他们可以并行进行模块级直接测试或形式分析。一旦验证环境准备就绪,开发团队可以开始运行带约束的随机测试,产生第一次覆盖结果,这个阶段的测试用例对设计覆盖范围明显很宽。随着未覆盖到的点减少,需要有更多特殊用例来填补空洞。此时,验证工程师的注意力转向特殊边界情况覆盖点,小心改变约束条件及配置参数,产生新的测试用例来击中这些点。最后,直接测试在覆盖率驱动验证环境中也具有非常重要的角色。虽然带约束随机测试是主要方法,对于填补一个特定覆盖点来说编写一个直接测试用例比用带约束的随机技术自动生成一个测试更容易【'“〕。总之,测试目标是通过多种方法使定义的覆盖率达到。、基于断言的验证基于断言的验证妞,一可以完美地描述和控制时序相关的问题,很容易找出跨多个时钟周期、顺序相关的一系列操作的时序和功能是否有不符合规范的地方。断言就是对设计属性或行为的描述,它是用描述性语言来描述设计的属性。在仿真过程中,如果一个被描述的属性不是我们期望的那样,那么断言就会失败或者在仿真过程中,如果出现了一个不应该出现的属性,那么断言也会失败'“〕。断言描述了设计意图,理想情况下,当设计者编写代码时,可用断言来证明设计行为是如何达到需求的,研发人员可用断言描述设计行为及相邻连接模块接口的需求。断言能用于对设计单元低层次的描述,规范其应该具有的行为,也能用于贯穿整个设计中端到端所规范的信息。此外,使用断言描述设计的属性特性或行为特性要比自然语言更为优越,这是因为断言不存在模棱两可的特点,并且可以被执行,它的明确性来自于其定义明确的语法,这个特点使验证工程师能够清楚的定义任何属性特征。断言可通过多种方法来指定,包括用普通表达式、硬件验证语言中专门的陈述等。、中内置有断言结构,可以在验证环境或设计本身中声明。具有两种类型的断言即时断言和并发断言。即时断言的执行遵从仿真事件语义并且像一个过程块中的一条语句一样执行。即时断言的主要目的是与仿真一起使用。并发断言基于时钟语义并使用变量的采样值,它描述了贯穿时间的行为。与即时断言基于时钟的计算模型不同,并发断言仅在一个时钟标记出现的时候被计算'〕。断言的目标之一就是为断言提供一个公共的语义,这样它们可以被用来驱动不同的设计和验证工具。许多工具,例如形式验证工具,使用基于周期的语义来评估电路描述,典型情况下这种方法依赖于一个时钟信号或者信号组来驱动电路的评估。 北京交通大学硕士学位论文数据路由系统验证规划在时钟沿之间的任何时序或事件行为都会被忽略,而并发断言结合了这些时钟语义。用描述的断言可以应用于设计过程的各个阶段,它不仅能快而准确地定位设计中的错误、统计功能覆盖率,还显著提高验证准确性和验证效率,加快设计进程,提高工程师对设计的信心。断言验证方法作为传统验证方法的有效补充,改善了传统验证方法中的很多问题,它的优点主要体现在如下几个方面【」断言提高了设计的可观察性和可控性。断言嵌入在代码中,使得观测点更加接近错误发生的地方断言提高了验证效率断言改善了传统验证方法的验证质量断言简化了可重用核的验证。断言很适合对设计中大量可重用核的接口进行验证,并且同样接口的断言可以对不同的重复使用断言增加了模块之间的协调性断言具有可重用性。本章小结本章首先介绍了数据路由系统的功能和外部接口环境,分析了数据路由系统验证平台的目标和自身特点,提出了系统级验证过程的重要步骤,接下来统计了针对数据路由系统开发的测试用例类型和数量,最后,还从如何提高验证效率出发讨论了几种目前验证领域广泛运用的先进功能验证方法。本章的内容为第章验证平台的实现和第章验证平台的应用提供了理论依据和指导。 北京交通大学硕士学位论文数据路由系统验证平台的实现数据路由系统验证平台的实现验证平台总体架构在第章中已经针对设计需求规格说明书设计了测试用例,本章就要针对已提取的功能关键点进行具体验证平台的设计。本文要实现的验证平台,其主要目的就是为了真实地模拟数据路由系统数据传输协议,包括数据发送协议、数据接收协议和命令传输协议,以此来验证数据路由系统功能是否正确。本文采用第章中介绍的高级验证方法学设计的基于语言的分层验证平台,具有抽象层次高、可移植性好、灵活可控的特点。下面将详细介绍该验证平台的具体实现。百公一…口一七`一工少、只只丫只坦】小图一数据路由系统验证平台架构一'图一为数据路由系统验证平台架构,它保持了惯用的层次关系,并根据实际情况加入了介对应的验证组件。图中每个方框内的验证组件并不一定是一个 北京交通大学硕士学位论文数据路由系统验证平台的实现独立的模块,它们只是在抽象意义上的层次关系,具体的实现过程需要构造和调用很多复杂的任务、函数和类库,同时还有不同层次之间的数据解析及传递过程。最底层是与直接连接的信号层,为了更好的体现可移植性,信号层采用语言中独特的接口部件,以体现相对于语言的传统的信号连接方法信号层之上是指令层,包括驱动器、监视器和基于断言的检查器,其中指令层驱动器主要用来向提供激励,指令层监视器用来向上层报告监测到的时序和数据,而基于断言的检查器则根据具体接口协议的关键时序进行时序检查功能层位于指令层之上,同样包括驱动器和监视器,但是却比指令层抽象层次更高,功能层驱动器的主要作用是接收更高层次传来的事务,进行解析后转换成单独的指令提供给指令层驱动器,功能层监视器的作用是根据指令层监视器报告的时序和数据进行相应的判断,并传送给记分板记分板的作用是将功能层驱动器送出的事务和功能层监视器报告的事务进行比较,用来确定是否发生了遗漏场景层在功能层之上,主要用来生成高层场景事务流最高层次是测试层,主要定义测试用例的配置参数和不同的约束条件等。在整个验证过程中,不断收集覆盖率并以此来调整激励约束条件以及测试用例的配置参数,直到覆盖率达到验证计划的目标,便可认为功能仿真验证过程结束。验证平台组件的实现在验证平台的代码实现过程中,一般首先确定信号层的接口模块,然后再定义场景层的具体事务和数据格式,接下来就可以根据数据格式和接口信号进行功能层和指令层的各级解析和驱动的代码编写,最后在测试层实现钡试用例的参数配置、约束条件的修改以及整个验证环境的控制。本节按照验证平台由低到高的层次依次介绍验证平台的实现过程和工作原理。才全只曰了·`二口「刁习习数据路由系统的验证平台需要驱动和采样的信号,本文通过采用语言在语言的基础上扩展的带有时钟块的“接口”结构来实现的。接口中允许一个模块很方便的将一系列信号合成一组,且只需在一个地方对这些信号进行声明,从而使得其它使用到这些信号的模块只需要一个接口类型的端口,而不是多个孤立的信号端口。、乞接口不仅仅是一组连接线,也可以封装模块间通信的所有细节,例如定义通信所需要的各个信号和端 北京交通大学硕士学位论文数据路由系统验证平台的实现口、通信协议、建立协议校验和其他验证程序等。此外,接口还可以包含类型声明、任务、函数、过程块、程序块和断言等。本文的验证平台通过接口来简化信号层的各物理信号与的物理接口之间的连接。这种实现使连接变得不易出错,比如需要在一个接口中添加一个新的信号,就只需要在接口定义和实际使用这个接口的模块中做修改,而不需要改变其他任何模块。高速数据、中速数据和低速数据传输接口的定义如下一几加一一几一一即,而`一````, 北京交通大学硕士学位论文路由系统验证平台的实现几一一品`不,以上代码使用了时钟块来指定同步信号相对于各数据传输时钟的时序。在时钟周期级的验证平台中,需要在相对于时钟信号的合适的时间点驱动和接收同步信号,如果驱动得太晚或采样得太早,验证平台的动作就会错过一个时钟周期。而时钟块中的任何信号都将同步地驱动或采样,这样保证了验证平台在正确的时间点与信号交互,避免了和验证平台的事件之间的竞争,同时也确保在同一个仿真时隙内验证平台可以采集到产生的最新值。此外,以上代码中在时钟块内使用了语句来指定时钟的偏移,这样可以控制验证平台在时钟沿前时刻采样最新的变化值,也可以控制的输入信号在时钟沿后时刻被驱动。定义了时钟块结构后,则验证平台可以用如队、表达式等待时钟,而不需要描述确切的时钟信号和边沿。这样即使改变了时钟块中的时钟信号或时钟边沿,也不需要修改验证平台的代码。指令传输接口的定义如下一一凡,同理,以上代码中使用了时钟块来指定同步信号相对于时钟的时序,使 北京交通大学硕士学位论文数据路由系统验证平台的实现用了结构将接口的信号分组并指定了信号的方向。接口信号包括时钟、使能信号、主出从入信号和主入从出信号。数据存储接口的定义如下一一一少一少一一,,一,哪一,一,少,一,一,,一,,以上代码中使用结构将数据存储接口的信号分组并指定了信号的方向。数据存储接口信号包括数据存储时钟、数据存储请求、数据存储响应和个存储数据信号。数据直接输出接口的定义如下`犯甘娜几品,,,,以上代码中使用结构将数据直接输出接口的信号分组并指定了信号的方向。数据直接输出接口信号包括数据直接输出时钟、数据直接输出请求、数据直接输出响应和个输出数据信号。指令层数据路由系统的验证平台中,指令层的事务处理器包括数据驱动器、指令驱动器、数据监视器、指令监 北京交通大学硕士学位论据路由系统验证平台的实现视器和断言检查器。需要注意的是,虽然指令层和功能层同样具备驱动器和监视器两个相同名称的验证组件,但是功能层的验证组件抽象层次高于指令层,它们与没有直接的接口连接关系,需要将事务进行解析后传递给指令层。而指令层的验证组件与中的各种接口的物理层协议有关,它们往传输的是具休的接口信号。、指令层驱动器指令层数据驱动器接收功能层数据驱动器解析数据包后发起的任务,等,再进一步实现具体任务,直接为输入激励信号,通过数据通道接口与进行连接和操作。其中,发送高速数据任务的具体实现过程为一」,,拼十沟£少二一一令以上代码中,先调用数据包内部打包函数,将数据包的各部分数据存储到」动态数组中,然后再按照高速数据接口协议将数据传输给。同理,指令层驱动器接收功能层驱动器解析数据包后发起的任务,,一等,再进一步实现这些任务,直接为输入指令,通过接口与进行连接和操作。其中,发送指令和接收指令的具体实现过程为一一一饮饮 北京交通大学硕士学位论文数据路由系统验证平台的实现£仪饮饮一多【〕一,勿阿傲〕彻一以上代码是按照协议将指令以单比特方式传输给。、指令层监视器指令层监视器检测数据存储接口、数据直接输出接口等各引脚的变化,将引脚信号变化所代表的信息转换成事务,再通过与功能层监视器的通道反馈给验证平台的高层模块。木文的指令层监视器以数据存储监视器为例进行说明,其主要功能是通过肚任务模块来实现,代码如下多二』【【一一'一一'一令一 北京交通大学硕士学位论数据路由系统验证平台的实现卜妙一〕一,,二`一一。,…一料一舀吮屯石【名一厦`,…一。监视器监测到数据存储请求信号`的下降沿,则将应答信号拉低,再按照数据存储接口协议分别将数据包头、数据存储地址和有效数据存入`【」、【」和``【〕三个动态数组中。当数据存储完毕则将应答信号拉高,置为无效。、断言检查器设计中都包含了一系列设计对象的特征属性叩】,基于断言的验证七计早收搭宇丰子汗色防女名、峪年手工屁讲用睡`兰尸五去。,。一`一,一二仁一△一'一、刀子本足付仅环另,孚阴合一行位漓`王用阶舀冶舌弋,进行描述,然后插入验证平台中作为断言检查器,在动态仿真过程中实时监控设计特性,若特性描述正确执行,仿真器将继续运行仿真,否则,仿真器将打印详细的信息,通过对这些信息的分析可以快速定位设计出现的位置,从而缩短纠错时间,加快验证过程'。本文的断言检查器主要是为了更加准确的检查外部接口时序,运用语言描述接口时序属性。本文对数据存储接口和数据直接输出接口的属性描述如下'几卜〔】 京交通大学硕士学位论文数据路由系统验证平台的实现一毛`一,一洲一一,】一,一洲【一卜一,二礼一属性描述的是在数据直接输出接口的时钟上升沿检测到请求信号的上升沿后,在一个时钟周期内,要检测到响应信号的下降沿,且在下一个时钟周期,请求信号将拉低。属性描述的是在数据存储接口的时钟上升沿检测到请求信号为'后,在一个时钟周期内,要检测到响应信号的下降沿,且在下一个时钟周期,请求信号变为,。属性描述的是数据存储接口,与类似。功能层数据路由系统的验证平台中,功能层的事务处理器包括驱动器、监视器和记分板三个验证组件。下文将分别对侮个组件进行介绍。、功能层驱动器功能层驱动器属于主动性事务发生器,它控制事务的发起和类型,一般还山其提供事务必需的部分或全部数据,它根据中的数据和指令传输协议来处理事务,最终将处理后的事务通过下层接口输入到指令层驱动器中。功能层驱动器扩展自的基本类。本文的验证平台中,功能层驱动器包括数据驱动器和指令驱动器,它们主要完成的工作是分别从各自的通道中接收其上层的场景发生器产生的数据包和指令即表一和表一所示的数据包格式和指令格式,并分别根据数据包中的数据类型和指令的指令类型进行解析。功能层数据驱动器解析功能的代码如下一 北京交通大学硕士学位论文据路由系统验证平台的实现心』刁』刊·`二·`、,”`,,气一'少,”,,刁司,石'盯几,饮以上代码的前两句分别实例化了场景层定义的数据包和数据包相对应的通道,实例化名称为妙和咄,其中通道是由的宏'生成的,即定义一个派生自的名为几的类。在循环块中,判断此时通道在非空的情况下,则调用函数不断从该通道中取出数据包。语句块判断数据包中的数据类型,如果是高速数据通道的数据,则调用任务,如果是低速数据通道的数据,则调用任务,默认情况下,调用任务记。功能层指令驱动器解析功能的代码如下一夕妙夕名'补,`,仓,,,,仁气口'叮,口一`… 北京交通大学硕士学位论文数据路由系统验证平台的实现一口少,均·少,一二、`,一以上代码的前两句分别实例化了场景层定义的指令包和指令包相对应的通道,实例化名称为,和一飞,其中通道同样是派生自的名为的类。在化循环块中,判断此时通道在非空的情况下,则调用函数不断从该通道中取出指令。语句判断指令类型,如果是查询状态命令,则调用任务,和等。这样,通过主动性事务处理器的解析,就将场景层传递下来的抽象数据包和指令包解析成了相应的任务,这些任务将在指令层的驱动器中执行。由于数据包是通过通道从功能层传递到指令层,一条通道对应一个指令层驱动器,进而对应着相应的信号层接口,而数据路由系统有个数据输入接口,因此仅仅使用一条通道来传递事务是不够的,所以功能层驱动器相应为个。对于场景发生器产生的数据包来说,每个数据包信息应该同时被个功能层驱动器获知,才能将此数据包信息正确的解析,从而针对相应的数据输入接口发起具体的任务。为了解决这一问题,本文采用了中的广播机制。简单的通道是点对点的数据传输机制,如果多个用户正在从某个通道中提取事务描述符,那么这些事务描述符被分配到各个用户,如果有个用户,每个用户就只能看到闪描述符。而广播机制,采用的是单点对多点的通信机制,所有的用户都能够看见通道中的全部描述符,因此,需要把来自于单个源通道的事务描述符复制到其它的通道上。的广播机制应用方式非常简单,在'库中定义了的虚函数,它的函数定义格式为,叮' 北京交通大学硕士学位论文数据路由系统验证平台的实现只需在仿真环境模块将它实例化。首先以指定的名称、实例名、源通道和广播模式等参数定义一个广播发生器,并创建对象的新实例。然后根据功能层驱动器的个数,对于每一个驱动器都创建一个新的实例,并且对每一个驱动器都调用函数建立一条通道,这样,就对应一个源通道建立了若干个目的通道,从而实现了广播的机制。本文验证平台实现的广播机制代码如下一一一少二,,,”,,,未侣料【二”',,……·如」`以上代码前三句分别实例化了数据场景发生器、数据通道和广播发生器。接下来用函数创建广播发生器,使用了缺省的方法,仅指明了其名称和源通道。同时,用函数创建了个驱动器,并为每个驱动器建立了广播通道。、功能层监视器功能层监视器属于从动性事务处理器,它只负责提供响应信号或握手信号来正确的终止事务,不控制事务的发起和类型。功能层监视器同样扩展自的基木类。木文的验证平台中,功能层监视器检测数据传输事务,一旦有效的数据传输事务发生,就将收到的数据送到记分板中。功能层数据监视器主要功能的代码如下少少七`叨,刀允,,夕以上代码主要完成的功能是通过调用函数,将指令层监视器接 交通大学硕士学位止宝数据路由系统验证平台的实现收的数据根据表一定义的数据包格式组包后,再通过回调的方式将数据包传送到记分板。本文的验证平台中采用回调方法对功能层驱动器、监视器和记分板进行集成。回调方法主要的作用是,在不修改原始类的情况下注入新的代码,例如注入错误、放弃事务、延迟事物、将事务放入记分板以及收集功能覆盖数据等。一个回调任务在顶层测试中定义,在驱动器或监视器中进行调用,这项技术的好处是回调的子程序可以在每个测试中做不同的定义,这样测试过程中就可以使用回调来为驱动器增加新的功能而不需要编辑驱动器和监视器中的类。回调又分为前回调和后回调,前回调是在发送或接收事务之前进行调用,后回调是在发送或接收事务之后进行调用。本文在功能层驱动器和监视器中分别调用了回调函数,通过回调与记分板连接,将数据包送入记分板中。功能层驱动器的回调函数如下腼一川比`山四少,一饮助加`饮叫,』仁饮几几功能层监视器的回调函数如下尽以,一以一以一二,夕一夕、记分板本文的验证平台中,记分板完成了数据的自动比对功能,即自动判断从接收到的数据和地址是否与期望结果一致。由于很难预测数据包从输出的确切顺序,因此,本文采用了队列来保存数据,队列有一个特点是无论在什么位置添加或者移除一个成员都不会影响它的正常运行。本文记分板的工作原理是在数据场景发生器产生数据包后,将数据包送入记分板的队列中,将从接收到的数据包与此队列中的数据包进行比较,如果此队列中存在与其包内容完全一致的数据包,则输出比对成功的信息,否则表明响应与期望结果不一致。 北京交通大学硕士学位论文数据路由系统验证平台的实现记分板主体功能代码如下`一』妙【夕夕口夕于氏妙一刁·』,均'一,,'、,,均,一,”`,,”,,口汐,以上代码的完成了数据发送前写入队列的二作。当注册到记分板中的回调方法检测到从发送来的数据包后,将此数据包写入队列中。记分板的主函数中,调用了数据比对函数,其具体实现时是将从接收到的数据包与妙队列中的数据包进行比较,当从该队列找到一致的数据包后,调用数据包内部的函数,比较两个数据包的内容是否一致,如果与期望结果一致,则输出“”等信息,否则验证平台停止运行。 北京交通大学硕士学位论文数据路由系统验证平台的实现月月不互巨曰呀`,沪奋口声万又习数据路由系统正常工作时需要两种类型的数据,一是待传输的数据包,二是指令。场景层中有两个场景发生器用来产生这两种类型的数据,分别是数据场景发生器和指令场景发生器一,它们为整个验证平台提供可控制、可约束的数据流,这些数据信息通过通道传递给功能层事务处理器进行处理。为了使验证平台更加灵活且方便配置各种测试用例,本文采用了基于事务的数据建模方法。本文的验证平台中,事务主要是指路高速数据通道、路中速数据通道、路低速数据通道和命令接口输入给的数据和指令,它们扩展自基本类。、数据场景发生器首先对待传输的数据包信息进行建模,由于有路数据输入通道,所以共需定义种数据包类型。一个完整的数据包长度是,由数据包头和数据内容组成。数据包头由一数据类型即、一数据包计数屯和一数据包间隔组成。因此,本文数据传输事务的数据包格式定义如表一所示表一数据传输的数据包格式一而数据类型一数据包计数一数据包间隔一数据内容数据包格式定义的主体部分代码为切帅,,,,,,,一二,,,,,,一一`屯,”允一一二帅,,一'【,仁【」,丸 北京交通大学硕士学位论文数据路由系统验证平台的实现,其中种数据包类型定义为枚举类型,数据包计数和数据包间隔均使用了类型,方便对其进行随机化处理。数据格式定义后,先后对基类中的、、以及甘、等函数进行重写。其中函数用于分配一个相同类型的新实例作为对象实例,函数用于将当前对象实例的值复制给指定的对象实例,函数主要在记分板中被调用,将该对象实例的当前值与指定对象实例的当前值进行比较。和少函数的主要功能是将数据打包和解包,打包是将数据包的各部分数据存储到指定大小的动态数组中,便于在指令层调用发送,解包是将收到的动态数组的内容按照定义的数据包格式存储到本描述符中,并传输到记分板中进行比较。比如将数据包中的数据类型、数据包计数和数据包间隔打包的函数代码为【」,,一面【』面厄娜至〕【」一少【礼【通`【」【姚」,【」沈汇数据传输事务建模后,依据事务编写数据场景发生器,它主要用来规定路数据传输通道中数据事务将以一个怎样的序列发生并传递给下层事务处理器。在中将给每个场景分配一个唯一的场景标识,以区分每个场景。丰上月`占八月一书之子立气千田「刀考,、」,、“,、、门·矛目,、”、功京阴王冰遇过调用龙一仁`,””'`立艺啸,干寺士举谧带自干石产十己专了`、例心去沐了习,月。于。。。,。,。。、一。石,八千门刁。。。,,奋术头现,达忏拟日列土以。一尖,夕目泊刀冲、等的类,本文的验证平台对类进行扩展形成数据场景发生器。为了最大程度的增加激励对系统功能的覆盖率,本文采用了约束随机激励验 北京交通大学硕士学位论文数据路由系统验证平台的实现证方法〕。利用随机约束方法产生激励可以看作一种近似的自动化激励产生过程,由于约束条件限制了随机化的范围,从而可以产生大量随机而有意义的激励,显著提高了随机化效率,且所生成的激励可以覆盖的绝大部分待验证的特性。数据场景发生器主体代码如下'』,,,,加“一一一一」`一〔了、一【」·一飞,毛`二以上中完成了高速数据通道中数据传输的场景约束,其中包括数据类型选择、数据包计数和数据包间隔时间的约束,函数完成对场景的声明,函数主要用来完成数据包计数的递增,每次传送完一个数据包后,数据包计数参数自动加。不同的测试用例可能需要选择不同的数据通道,这些信息的进一步配置和约束可以在测试层完成。、指令场景发生器指令主要有种类型,包括传输开始指令、存储地址指令、传输结束指令、查询地址指令和查询数据存储状态指令。不同的指令类型具有不同的指令格式。 北京交通大学硕士学位论文数据路由系统验证平台的实现数据路由系统的指令格式定义如表一所示表一指令格式几一传输开始指令命令一标识传输一模式数据一类型结束一标识存储地址指令命令一标识数据一类型起始一地址结束地一址结束一标识传输结束指令命令一标识数据一类型结束一标识查询地址指令命令标识结束标识填充数一一少抖…查询存储命令标识结束标识填充数状态指令一一少指令格式定义的主体部分代码为一,,,,,以,少〕一【」少一夕,,,〕,,一,一一其中种指令类型定义为枚举类型,指令各组成部分 使用了类型,方便对其进行随机化处理。重写基类中的、、以及甘、等函数的目的与类中相同。同理,通过调用宏'处男少,“”来实现场景的生成,对。类进行扩展形成指令场景发生器。在此也采用了约束随机激励验证方法来提高了随机化效率,指令场景发生器主体代码如下'』一仁,,,,颐蓬一一一注【七一注【」,【一妙一,,少一,刀…圣允一,以上中定义了数据存储和数据直接输出两个场景,完成了对数据存储模式中指令场景的约束,其中包括条指令的约束,函数完成对场景的声明,任务主要用来控制命令发送的时间点。如果需 北京交通大学硕士学位论文数据路由系统验证平台的实现要重新约束场景,同样可以在更高层次对一类进行扩展,定义新的约束。测试层测试层主要用来完成编写测试用例的过程,具体工作包括修改激励发生器的约束、扩展新的随机场景、同步不同的事务处理器以及根据覆盖率创建定向激励。一般来说,一个测试用例由程序块中的一个块来实现,这样做可以保证把设计、断言和验证环境当作区域的一部分来执行,也就避免了它们之间出现竞争冒险。只使用一个块使得测试用例的执行是单线程的,这样可以更容易的控制测试用例的每一个步骤。程序块代码如下一,,叮,,`”`'”二,…一从·,,申”在测试层中对场景层的类进行扩展,在这个扩展类主要实现的功能是进一步约束数据路由系统的输入数据流场景,根据具体的测试用例来选择需要的数据通道并配置相应通道的数据包个数。约束部分的代码如下少`叱一 北京交通大学硕士学位论文据路由系统验证平台的实现一一一硕二一一叼飞叼一览飞以上代码选择了高速数据通道、高速数据通道、中速数据通道、低速数据通道等,并且约束了各数据输入通道的数据包总数。验证环境的控制数据路由系统验证平台的各组件设计完成后,还需要通过验证环境严格有序的控制每个组件的启动和结束时间,使它们互相联系成为一个整体。验证环境模块的主要功能是清楚地定义好仿真的各个阶段,以便协调验证平台,使各验证组件在同一个仿真环境中共同工作。本文验证环境控制模块主要包括三个基本阶段,即建立、运行和收尾,一共九个步骤。、测试用例配置的生成函数,包括验证环境随机化、配置信息的描述和测试用例持续时间的描述,从而使自检查机构能确定期望得到的正确响应,验证环境能完成对的配置。一几'甘,””一'`,””',”`”、建立环境。基于配置来分配和连接验证平台构件,即为了验证的正确性,需要将特定类型和数目的事务处理器实例化,其类型及数目则由配置信息来确定。验证平台构件指的是存在于验证平台的部分,注意与设计中的物理构件区分开,后者是采用代码描述的。本文验证平台配置了个数据驱动器,那么验证平台应该在这个步骤对它们进行分配和初始化。同时还应在此步骤对数据场景发生器和指令场景发生器、数据监视器和指令监视器、记分 北京交通大学硕士学位论文数据路由系统验证平台的实现板、事务处理器间的通道和回调函数进行实例化。允',,,”一一一一,,,,,一,,,,,刀一一,一一一,,,面,,,,,,,尹,,盯曲,,,”,,一,,姗,,”,一,一一一一,,,,,一一·,,刀一一。苗卜一一二,,,,”`,,鲜刃七屯如名如锁,面,,,,…如,【一一“,,,,,,一刀一,,,,,,,,,,,一一刀一一』一一子一'少,,'',、复位、关闭所有断言。复位后,所有输入管脚都赋初值。'一,”,£少一二多 北京交通大学硕士学位论文数据路由系统验证平台的实现'一,,'”、配置。基于第一步中生成的配置,载入待测设计的命令寄存器、指定接口引脚为特定的电平等。本文通过调用函数对进行配置。乞、,,乞,、启动环境。运行验证平台组件,包括验证环境中的所有事务处理器和激励发生器。由于必须配置完毕之后才能正确接收任何激励,因此事务处理器和激励发生器不应该在其实例化的同时启动,太早运行激励发生器可能会使某些初始激励序列被忽略掉而导致响应检查变得很复杂。启动测试后等待测试完成。定向测试的完成很容易判断,但随机测试却比较困难。可以使用验证平台的层作为引导。从顶层启动,等待一个层接收完来自其上一层的所有输入,接着等待当前层空闲下来,然后再等待下一层。应该同时使用超时检测以确保或验证平台不出现死锁。'一,,,叱飞一少、一`匕一名沙不【不·声卜',,'”、检测测试终止条件。测试的终止可以用一系列条件的组合来决定。对于不同,测试的终卜可以在仿真运行一段规定的时间或是时钟周期之后,也可以在规定的事务之后,或是在产生一定数目的错误信息之时,也可以等到所有的检测器都处于空闲状态。本文采用两种方法进行判断,一是等待两个场景发生器产生完所有的场景,并检测记分板完成所有的数据比对工作,二是当出现或验证平台死锁情况时,则等待一定时间后结束仿真。 北京交通大学硕士学位论文数据路由系统验证平台的实现几,'一,,”一、按照一定的次序停止所有的激励发生器和事务处理器,包括场景发生器,驱动器和监视器等。',,,”一·一一几一一少一一【一·一心飞·声不',,'”、清空。清空缓存数据、清空记分板并收集统计信息。一旦空闲下来,就可以清空遗留在验证平台中的数据了。此步骤调用函数即可。心、报告仿真运行信息,得出结论,并保存日志。有时候保存在记分板中的数据从来就没有送出来过,这些数据可能是被丢弃掉的,可以根据这些信息创建最终报告,说明测试通过或者失败。如果失败,则应把相应的功能覆盖率结果删除,因为它们可能是不正确的。 北京交通大学硕士学位论文数据路由系统验证平台的实现·本章小结本章详细介绍了数据路由系统的基于验证方法学的分层验证平台总体架构,该验证平台包括五个层次,分别为测试层、场景层、功能层、指令层和信号层。接下来详细分析了验证平台各个层次中的组件功能、工作原理和具体实现方法,包括场景发生器、驱动器、监视器、断言检查器、记分板等。最后,详细介绍了该验证平台工作环境的三个基本阶段,即建立、运行和收尾,逐步分析了仿真控制的九个步骤。 北京交通大学硕士学位论文数据路由系统验证平台的应用数据路由系统验证平台的应用基于覆盖率的功能仿真验证功能仿真验证过程中,测试向量是否能完全覆盖验证空间,决定了验证工作的优劣。随着设计变得越来越复杂,功能验证量的不断增大,使用穷尽模拟所有的输入组合的方式进行验证不再可行,如何利用合理的时间和计算资源达到最理想的模拟效果,这是一个具有实际意义的问题。采用约束随机激励验证方法及覆盖率驱动验证方法是对进行全面验证的有效途径。用来检查和显示验证是否完全的这种机制,叫做覆盖率分析侧〕。基于覆盖率的功能仿真验证流程如图一所示,通过使用一个带反馈的环路来分析覆盖的结果,根据覆盖率数据决定如何修改测试用例。如果覆盖率在稳步增长,则只需添加新的随机种子继续运行已有的测试,或者加长测试的运行时间。如果覆盖率增长缓慢,则需要针对测试向量添加新的约束条件,产生更多有意义的测试激励。如果当覆盖率稳定下来,而的某些部分尚未被测试过,即仍然存在覆盖盲区,则需要考虑采用定向测试方法,增加定向测试用例,使覆盖率达到。测试用例一厂一功能仿真覆盖率收集一添加新的随机种一子或新的约束条定向测试用例件不正确一气是少巡漪为检红人正确毓率是否增哥一否丈、袜不满足一乒一盖率评宿满足完成图一基于覆盖率的功能仿真验证流程一一 北京交通大学硕士学位论文数据路由系统验证平台的应用、代码覆盖率目前,几个主要的商用软件都提供了对代码覆盖率的支持,比如的、的和的等,这些工具通过在代码中插入特殊的任务在动态仿真过程中自动捕获代码覆盖率。本文在仿真工具下进行基于覆盖率的功能仿真验证,并利用脚本文件对功能仿真和代码覆盖率的收集进行控制,具体步骤为编译代码。此时需要加覆盖率开关,例如一一一,其中,、表示覆盖率结果保存的路径一后面是希望得到的覆盖率的类型,表示行覆盖率,。表示条件覆盖率,表示翻转覆盖率,表示状态机覆盖率,表示路径覆盖率,表示分支覆盖率表示验证平台的顶层名字。编译完成后,会自动生成相应的文件夹,文件夹包含提取的关于的有关数据,例如,,,少等。文件夹中保存的数据可以被覆盖率查看工具读入,可以方便的观察覆盖率情况。运行仿真,运行一个带多个种子的测试。编译完成后会生成一个名为的可执行文件,直接运行此文件,并添加覆盖率选项即可,例如一一,其中,一后面是希望得到的覆盖率的类型,与第一步中的说明相同、表示覆盖率结果保存的文件名。检查仿真运行通过与否。功能覆盖信息只在仿真运行成功时才有效。当由于存在漏洞而使仿真失败时,必须丢弃覆盖率信息。覆盖率数据衡量的是验证计划中有多少项己完成,而验证计划则是基于设计规范的。如果设计不符合规范,则覆盖率数据就没意义了。观察并分析有效的覆盖率。自带的覆盖率查看工具具有友好的图形化界面,打开,加入第二步中生成的覆盖率文件,就可以观察各模块的各种覆盖率。代码覆盖率是衡量验证进展的最简易的方式,但它存在一定的局限性。它衡量的是测试对于设计规范的“实现”究竟测试得多彻底,而非针对验证计划。它最大的缺点就是永远都“不知道”被测的设计到底想做什么,只能局限于设计的代码,而不能提供我们的更关心的设计功能的覆盖情况〕。即使达到了的代码覆盖率,也不能表明验证工作已完成。此外,由于工具在功能仿真过程中调用大量任务而造成仿真速度显著降低,因此随着设计规模的增大,代码覆盖率分析的效率也越来越低。、功能覆盖率功能覆盖率着眼于被测设计的体系结构,用来检查的功能〕。它主要是 北京交通大学硕士学位论文路由系统验证平台的应面对设计的功能而不是代码,所以功能覆盖率可以更有效地描述所需捕获的边脚逻辑功能以及所有感兴趣的数据及控制信号的组合。它更加关注的关键特性、边界情形和可能的故障模式,而不是具体的数据数值等内容。功能覆盖率是与设计意图紧密相连的,有时候也被称为“规范覆盖率”,而代码覆盖率则仅仅是衡量设计的实现情况。如果某个代码块在设计中被漏掉,代码覆盖率不能发现这个错误,但功能覆盖率可以发现。功能测试覆盖率还可以有效地表明哪些功能己经被测试,根据这些信息我们可以动态调整产生随机测试激励的约束条件,从而实现的功能覆盖。本文在第四章中介绍的基于断言的检查器就是功能覆盖率分析的一种途径。只要在属性中添加如下的覆盖语句`在日志文件中将会记录属性匹配的次数,从而获得功能覆盖信息。功能覆盖率分析在很多方面可以提高验证的质量和效率第一,它可以检测出不合法的事件,从而帮助发现设计中的第二,它的结果可以告诉验证人员验证程序中的状态信息,从而帮助发现验证的漏洞,比如说,某块区域没有被覆盖到第三,验证程序中是否已经没有新的进程被覆盖第四,它还可以帮助验证程序更直接驱动测试生成程序产生测试向量,测试没有被覆盖到的区域,填补验证的漏洞。、代码覆盖率和功能覆盖率比较衡量验证完备性时,需要同时考虑代码覆盖率和功能覆盖率结果,以便确认是否己经达到验证目的。两种覆盖率的比较如图一所示。需要更多的功能覆盖好的覆盖率测量方式点,包括各种边界案例检查漏洞率覆率功盖能设计是否完整也许可项目开始以尝试形式验证工具低高代码覆盖率图一代码覆盖率和功能覆盖率比较一在开始对进行验证时,代码覆盖率和功能覆盖率都很低。随着测试用例 北京交通大学硕士学位论文据路由系统验证平台的应用的运行以及不同随机种子的反复运行和激励约束条件的更新,两种覆盖率都不断的增加。如果功能覆盖率很高而代码覆盖率很低,说明可能因为验证计划不完整,测试过程中没有执行设计的所有代码。此时,需要回到设计规格说明并更新验证计划,然后增加更多针对未测试功能的功能覆盖点。如果代码覆盖率很高而功能覆盖率很低,说明验证平台很好地执行了设计的所有代码,但是测试用例没有定位到所有感兴趣的状态上。此时,需要查看设计是否实现了所有指定的功能,如果测试不到某些功能,可能需要一个形式验证工具来提取设计状态并创建适当的激励。总之,覆盖率的目标是要同时取得高的代码覆盖率和功能覆盖率。验证结果及分析只才亡招与今士甲口·`二于资二目刁又数据路由系统的验证平台实现后,需要在验证平台顶层将该验证平台和被测设计进行集成,再根据第章中编写的具体测试用例,完成场景层和测试层的配置和约束,以产生需要的激励事务流或信号。数据路由系统验证过程中采用的工具是公司的。是采用了周期仿真技术的事件驱动仿真器,能支持、、和等多种语言的混合仿真,运行时内存需求量小。采用了增量编译的方法,因此,编译速度较快。同时,还支持覆盖率驱动的验证,具有强大的覆盖率分析功能,并集成了图形界面,方便察看波形以及进行调试。由于数据路由系统处理的数据量非常大,如果仅仅采用软件仿真器进行功能仿真,则大部分用例执行时消耗的时间都太长,将会严重影响了项目验证进度。因此,为了提高仿真验证效率,消除软件仿真器导致的仿真性能瓶颈,本文采用了硬件加速器,它用硬件实现逻辑,利用物理硬件高速运行的特点使得系统仿真的速度得到成千上万倍的提高。数据路由系统验证平台中测试用例的仿真结果可以通过两种方式查看,一种是仿真日志文件,一种是波形文件。仿真日志文件中会记录一切验证平台中需要关注的信息,其中,最重要的信息是验证平台的记分板输出的比对结果一致的信息。由于日志文件信息量太大,可以通过脚本文件将关注的信息提取出来后再查看。提供了用于控制打印信息的基类,的打印等级分为、、和'四个等级,可以根据需要在测试用例中更改任何一个验证平台组件的打印等级。在仿真的最初阶段可以将所有组件的打印等级都设为,这样方便调试。当验证平台工作比较稳定后,可以将打印等级设置为 高等级。由于保存波形文件会显著增加仿真时间,因此只有在必要时才保存波形文件。本文在功能仿真过程中保存的波形文件是用于对进行芯片级验证。此外,当验证平台的记分板比对结果出现不一致的情况时,会导致数据路由系统功能仿真失败而停止本次测试用例的执行。本节将以数据路由系统的主要功能为例,介绍应用验证平台进行功能仿真验证的结果。、数据存储功能数据存储的指令传输以指令对高速数据存储控制为例进行介绍。一是公司推出的一种同步、高速、全双工的串行通信总线,主要用于嵌入式与各种外围设备的通信。的信号线为同步串行时钟、主出从入、主入从出、从机选择。协议规定了主、从两种工作模式,工作在主模式的器件负责输出通讯时钟,并初始化数据传输。数据路由系统工作在从模式。图一为高速数据传输开始的指令传输波形,根据传输协议,在时钟下降沿发送数据,数据发送过程中使能信号低有效,数据以为单位进行传输,每次传输完成则使能信号拉高一次。从图中可看出高速数据传输开始的指令时序正确。卜才`飞、飞肌肌朋拟朋朋刃叮叮盯皿盯侧侧侧侧侧现阻阻肌肌删训现阻阻叹肌朋万日讥几几叮侧丁皿用卜几日日「「几一几、一厂几一门丁飞一丁习二一口几产唱图一高速数据传输开始指令一如一'图一为高速数据存储地址的指令传输波形,从图中可看出高速数据存储地址的指令时序正确。咖仁…姗朋口呱匕刚到撇匕服曰阴撇匕例口摊绷匕姗』七翻口侧删匕翻月姗匕撇曰删匕姗到删删匕撇口撇匕礴姗习姗匕口姗甜匕眼月姗匕朋撇口硼压卜里些卫三丝卫巴上丛工一一卫兰暨图一高速数据存储地址指令一一,图一为低速数据、中速数据和高速数据发送的接口时序波形,低速数据单比特串行发送,中速数据每个时钟发送,高速数据每个时钟发送,数据发送过程中,使能信号高有效。从图中可看出三种数据发送的时序正确。日泪甘日一习一甘一日一甘仁一匕泪一甘习一日泪万习一目一钊一一匕匕一目一日一日一廿一匕,厂一了泪飞田万甘汀田沮且几几几百甘田见 图一数据发送接口时序一图一为数据存储接口时序波形,当发出数据存储请求信号低有效后,验证平台在一定时间内给出正确的数据存储应答信号,则待存储到存储器的数据从输出,从图中可看出数据存储接口时序正确。口仁,,,门一,`”“】几几用万田柑砚川万川几刚甘日几刀甘叭几附。`谧,一,”,`”】一一一匕一——————一—口叭的礼八,`匕。—一一一一匕一一一———“``,”'”飞戮———一一—一一忍溅工二二巫二二翘仁二三二二〕哑更啊四哑更恻图一数据存储接口时序一而图一为高速数据传输结束的指令传输波形,从图中可看出高速数据传输结束的指令时序正确。几撇脚姗田四川一几几图一高速数据传输结束指令一一'图一为高速数据存储状态查询的指令传输波形,当高速数据传输结束的指令传输完成后,验证平台通过给发送查询状态指令的同时接收来自的信号来确认数据是否存储完毕,从图中可看出高速数据存储状态查询的指令时序正确,数据存储完毕。皿皿例图一高速数据存储状态查询指令一一'验证平台的记分板会自动加载输入给的数据和从输出的存储到存储器的数据,并对其进行实时比较,比较结果一致,信息显示如下」£ 交通大学硕士学位论文数据路由系统验证平台的应用一,,飞,,,刀少二,帅,邪刃,一,,,刀,,刀,,、数据直接输出功能图一为低速数据、中速数据和高速数据发送的接口时序波形以及数据直接输出接口时序波形。数据发送协议与工作在数据存储模式时相同。从图中可看出三种数据发送与数据直接输出接口时序正确。卜欠口下只口又尸士日卜八口众八只卜一〔卜口口口。`口一。口口【』口之图一数据发送与数据直接输出接口时序一图一为数据直接输出接口时序波形,当根据不同的数据类型发出数据葺接输出请求信号后,验证平台在一定时间内给出正确的数据直接输出应答信号,则从直接输出数据,从图中可看出数据直接输出接口时序正确。 J匕通大学硕士学位论文数据路由系统验证平台的应用权'匕飞厂口一匕习几刊一一匕刊刘几丁习日一盯习一匕习一日日一叮口'卜之”一饭'匕之目`百丫不护万飞」所飞图一数据直接输出接口时序一验证平台的记分板会自动加载输入的数据和从直接输出的数据,并对其进行实时比较,比较结果一致,信息显示如下化斤切困」四,,比困,此,,,面石七,,,,困」刀叮刀,,乃,,覆盖率统计本文应用数据路由系统验证平台进行功能仿真验证后,将收集到的各模块覆盖率信息进行合并,得到的覆盖率统计信息如表一所示表一数据路由系统覆盖率统计信息一行覆盖率 北京交通大学硕士学位论文数据路由系统验证平台的应用分支覆盖率状态机跳转覆盖率条件覆盖率通过对覆盖率信息进行分析可以得出,验证平台对数据路由系统的验证基本上达到了期望目标,但是由于代码中存在一些难以覆盖的情况,比如语句中的语句、状态机中的极小概率跳转到的状态等,使覆盖率只是接近。但是通过改变随机种子,添加激励约束条件,增长仿真时间和针对特定功能点设计定向测试用例等方法,使仿真验证的功能覆盖率达到了。本章小结本章首先介绍了基于覆盖率的功能仿真验证流程以及如何根据覆盖率信息调整测试用例,接下来介绍了代码覆盖率和功能覆盖率的收集方法及两者的比较,最后通过正确的重要接口时序波形图、验证平台中记分板比对一致的结果和覆盖率统计信息说明了本文实现的验证平台很好的完成了对数据路由系统的功能仿真验证,验证结果符合期望要求。 北京交通大学硕士博士学位论文结论结论随着系统设计的规模和复杂度呈指数上升,传统的验证环境在可重用性、灵活性和验证效率等方面存在的缺点越来越明显,传统的验证方法、验证工具和验证理念在复杂的系统级验证中已不再适用,巨大的验证压力迫使验证工程师必须突破传统验证方法,开发新的验证技术和新的验证环境来提高验证效率,保证产品质量。因此如何有效地建立系统级验证平台,并不断提高验证平台的灵活性、可复用性、高效性,成为系统级验证亚待解决的问题。本文的主要任务是完成对数据路由系统的功能验证,因此如何有效地实现其系统级验证平台,使其具有较强的灵活性和可复用性,并且自动化程度高,是本文的研究难点和重点。本文运用语言实现了基于一化二高级验证方法学的可扩展的分层验证平台,有效的提高了验证的充分性和可靠性以及验证效率,加速了项目开发进程。本文实现的系统级验证平台具有如下特点、事务级建模方法验证平台分为层,采用基于事务的建模方法,使验证从信号级抽象到事务级,验证平台的每个层次都能给其上层或测试用例提供一系列的服务,并通过抽象将低层次的细节隐藏起来,针对不同的测试用例,只需要修改测试场景和约束条件,从而提高了验证平台的复用性和高效性。、约束随机验证验证平台实现了约束随机激励的生成,并且支持随机测试向量约束条件的更改。验证过程中,通过改变测试激励的随机生成约束条件,避免了大量无效测试激励的生成,与完全随机测试相比,避免了测试激励生成的盲目性。约束随机激励的生成保证了验证平台能够最大程度地遍历系统的各个功能点,同时批量产生随机约束激励相比于定向激励也具有较高的验证效率。、基于断言的验证验证平台的指令层插入了断言检查器,它在动态仿真过程中实时监控定义的设计属性。基于断言的验证增加了验证过程的可控制性和观察性,有助于在仿真过程中快速定位设计中的,从而提高了验证效率。、覆盖率驱动的验证验证平台实现了自动统计覆盖率功能,并且支持功能覆盖点的添加。以覆盖率为目标的验证方法,能够有效地指导验证工作始终朝验证需求的方向进行,从而大大提高验证的效率,同时为验证的完备性度量提供了有力的保证。 北京交通大学硕士博士学位论文结论、验证平台自动化控制验证平台通过脚本文件进行仿真管理和自动化控制,实现了输出数据的实时比对,并且支持自动比对机制按需求定制。总之,本文实现的数据路由系统验证平台层次结构清晰、代码简洁、易于维护和调试、运行速度快。本文实现的系统级分层验证平台已经成功应用于数据路由系统的功能验证中,验证结果和覆盖率均达到了预期的目标,验证过程中充分体现了验证方法学的优势和约束随机激励验证、基于断言的验证和覆盖率驱动验证等高级验证技术的灵活性、高效性和自动化特点。因此,本文采用的基于高级验证方法学的验证思想和先进的验证技术为日益复杂的系统级功能验证提供了坚实的基础,具有一定的创新和应用价值。研究展望本文在实现数据路由系统验证平台的过程中,主要工作集中在的功能验证,由于时间和技术的局限性,还有很多工作需要进一步的探索和研究,主要表现在以下几个方面、深入理解验证方法学。验证方法学是一套科学的系统的验证方法体系,针对一个项目建立的基于分层验证平台并不能将其本质理解得十分深入和全面,还有很多先进的验证机制未能理解和应用,因此,如何充分发挥验证平台的效能是一个需要研究的问题。、覆盖率驱动验证的研究。本文是在仿真结束后通过分析覆盖率,找出验证盲点,有针对性的改变约束,再次生成激励来覆盖特定场景。因此不仅需要对的内部细节非常熟悉,而且降低了验证效率。为了进一步提高系统验证的效率和质量,需要在仿真过程中根据覆盖率信息实时的调整激励约束,自动覆盖验证盲点。目前,业界普遍利用遗传算法川〕来自动生成约束激励,其基本思想是动态分析覆盖率反馈信息,根据进化论思想自动生成下一代验证向量,从而快速增加覆盖率,提高验证效率,缩短验证时间。 北京交通大学硕士博士学位论文参考文献参考文献侯海军,郭斌林基于的芯片验证平台设计中国水运一【〕,,,,,石一〔吴向宇功能验证技术研究学位论文〕国防科技大学硕士论文一石花基于的局端验证【学位论文西安电子科技大学一【」,,飞,一章玮,杨晓峰,徐盛基于语言的验证自动化系统电子设计应用一【刘强基于的系统级芯片设计方法研究现代电子技术一【贺珊,张多利,何伟基于的总线接口功能验证平台的搭建合肥工业大学学报自然私学版一〔闰沫,张媛基于语言的设计验证技术现代电子技术一【吕欣欣,刘淑芬通用验证平台建立方法研究微电子学与计算机一〔川公司应用工程师钟文枫下一代芯片设计与与验证语言验证篇电子设计应用一〕闰沫基于、乞的验证平台建模技术设计验证与测试一【〕币一己已,,一〕,,。一巧〕叶茂基于的验证平台的研究与实现学位论文华中科技大学一〔常勇,申敏一种基于事务的功能验证方法微计算机信息一【神州龙芯集成电路设计公司徐伟俊,杨鑫,陈先勇。夏宇闻针对功能覆盖率的验证过程中国集成电路一〔〕神州龙芯集成电路设计公司徐伟俊,杨鑫,陈先勇,夏宇闻断言及其应用中国集成电路一〔'朴,二,,一 北京交通大学硕士博士学位论文参考文献一「〕刘晓,杨军基于断言的控制器功能验证电子工程师年一杨鑫,徐伟俊,陈先勇,夏宇闻中的随机化激励中国集成电路设计一【」许彤,吕涛基于覆盖率模型的接口随机验证方法计算机应用研究一【」·一飞一肆】王赵君北桥芯片功能验证中的覆盖率分析〔学位论文〕中国科学院研究生院一【」一〔」,'【一一一石一一【,门一,一【,一〔〕,,,一,一一一 北京交通大学硕士博士学位论文作者简历作者简历胡晋彬,女,年出生,湖南省长沙县人,年月至年月,于北京交通大学电子科学与技术专业,攻读学士学位年月至今,免试攻读北京交通大学微电子学与固体电子学专业硕士学位。攻读学位期间发表的论文如下丛丛几过达,一检索,丛鱼远卫卫,一检索望置迷,李修函植入式片上系统的发展与现状微电子学,卷期一中文核心期刊 北京交通大学硕士博士学位论文独创性声独创性声明本人声明所呈交的学位论文是本人在导师指导下进行的研究工作和取得的研究成果,除了文中特别加以标注和致谢之处外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得北京交通大学或其他教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。学位论文作者签名签字日期加”年`月刁日 北京交通大学硕士博士学位论文学位论文数据集学位论文数据集表数据集页关键词密级中图分类号论文资助学位授予单位名称学位授予单位代学位类别学位级别码北京交通大学论文题名并列题名论文语种作者姓名学号培养单位名称培养单位代码培养单位地址邮编北京交通大学北京市海淀区西直门外上园村号学科专业研究方向学制学位授予年两年半论文提交日期导师姓名职称评阅人答辩委员会主席答辩委员会成员电子版论文提交格式文本图像视频音频多媒体其他推荐格式可即电子版论文出版发布者电子版论文出版发布地权限声明论文总页数'共项,其中带为必填数据,为项。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
大家都在看
近期热门
关闭