VMM验证方法学研究及SystemC实现

更新时间:2023-08-29 07:55:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

主要讲的是vmm验证方法学的相关知识

复旦大学

硕士学位论文

VMM验证方法学研究及SystemC实现

姓名:黄鉴

申请学位级别:硕士

专业:电子与通信工程

指导教师:沈泊

20070328

主要讲的是vmm验证方法学的相关知识

论文独创性声明

本论文是我个人在导师指导下进行的研究工作及取得的研究成果.论文中除了特别加以标注和致谢的地方外,不包含其他人或其它机构已经发表或撰写过的研究成果.其他同志对本研究的启发和所做的贡献均已在论文中作了明确的声明并表示了谢意.

作者签名蔓蓬.日期:坌!翌Z醒毖

论文使用授权声明

本人完+-r解复旦大学有关保留、使用学位论文的规定.即:学校有权保留送交论文的复印件.允许论文被查阅和借阅:学校可以公布论文的全部或部分内容.可以采用影印、缩印或其它复制手段保存论文.保密的论文在解密后遵守此规定.储签名:童监L导师辑-2型喃壹乏丝扩

主要讲的是vmm验证方法学的相关知识

摘要

随着设计复杂度的增长,验证变得越来越困难,验证往往占到整个产品开

发周期的70%,目前关于验证方法学的研究在硅谷是非常热门的话题。

本文简单回顾了验证方法学的发展史,重点讨论了SoC时代所面临的验证挑

战,并对当前业界公认最权威的VMM验证方法学进行了深入研究。VerificationMethodologyManual(1rMM)的目标就是要针对SoC时代的验证需求创造一个类似的验证方法和验证平台的标准。本文全面的介绍了该方法学所倡导的验证平台框架,以及在这个框架内如何实现可重用、可扩展,以及如何针对SoC的验证需求提供高效、系统的解决方案。

出于商业目的,删是与Synopsys所主推的SystemVerilog语言绑定在一起

的,所以其所倡导的很多实现细节是和语言密切相关的.但正如作者所言,方法学本身是不局限于语言的,你完全可以用其它语言来实现这些方法。从系统建模的角度而言SystemC尸,经成为了事实上的标准,而今天复杂的SoC的验证环境其实就是一个很复杂的系统建模过程。我们自然的想法就是借鉴VMM验证方法学,但在实现语言上全部采用SystemC.所以在实现部分,本文按照VMM验证方法学所定义的验证平台架构架构和规则,采用SystemC设计了一个图像增强模块的验证环境。该环境采用TSystemC的事务级建模技术,实现了验证平台的层次化,并在平台中直接集成了图像增强模块的C模型,在仿真时基于RTL的被测对象和c模型同时运行,实时比对,及时的报告出错信息,方便定位.支持脚本方式的测试激励输入管理和测试流程管理。通过平台的建设我们充分感受到基于VMM验证方法学所定义的架构和高抽象验证语言,如SystemC所带来的高效率.

本文最后部分简要的讨论了该验证平台未来的优化方向.重点探讨了开发一

个统一的平台可以同时满足算法开发、模块级验证,子系统以及系统验证的需求。关键字:砌验证方法学,SystemC,可重用,可伸缩,覆盖率中图分类号:TN47

主要讲的是vmm验证方法学的相关知识

Abstract

Withtheincreasingdesigncomplexity,verificationbecomesmoreandmore

difficult.Italwaysspends70%effortontheproductdevelopmentcycle.Currently

theinvestigationonverificationmethodologyisveryhotinSiliconValley.

Thispaperdemonstratestheverificationevaluationhistoryandconcentratesonthe

challengeswearefacingnowonS0c.Aswellwegiveacomprehensiveintroduction

aboutcurrentlyleadingverificationmethodofogyV咖.VerificationMethodology

Manual(Ⅵ埘)istargetedtoprovidesimilarguidanceforverificationmethodology

andverificationreuse.gedemonstratetheⅧinfrastructureandexpresshowto

implomentreusability,extensibility,andgiveasetofsystematicsolutionsto

handlecurrentSoCverificationchallenges.

Forcommercialconsideration,Synopsysbindsthe删withtheirproposed

SystemVeriloglanguagetogether.somanyofthedetailedrulesproposedin删are

relatedwithSystemVeriloglanguage.Astheauthorsaid,methodologyisindependent

withlanguageyoucanimplementitinanylanguages.Forsystemlevelmodeling,

SystomCiswidelyacceptedstandard.BuildingSocverificationplatformactually

isacomplexsystemlevelmodelingprogress.SoweprefertodeployingtheSystemC

asimplementationlanguageandfollowingthesame咖methodology.

Intheimplementationchapter。wefollowedthe删verificationmethodology

definedinfrastructureimplementedavideoenhancementverificationenvironment.

Ontechnicalside,SystemClanguageandSystemCbasedTransactionLevelModeling

technicalareemployed.Onthelayeredverificationenvironment,theCmodelis

integratedindirectlyandrunswiththelH.Lon—the—fly.Dependsonthis.wecan

achieveantnmaticallyself—checking.bugfixism01"eeasy.Thisverification

environmentsupportsstimulusinputandsimulationprogressmanagementthrough

scriptfile.Withtheplatformsetup,Ifullytastethesweetof删andhighabstract

languageofferedhighproductivity.

Intheendofthispaper。Ibrieflydiscussedthefutureoptimizationplanon

verificationplatform.

ClassificationCode:TN472

主要讲的是vmm验证方法学的相关知识

1引言

随着SoC芯片成为市场的主流,巨大的验证压力迫使验证工程师必须寻找新的

方法来解决面临的挑战。芯片设计的复杂度持续增长,如果继续采用传统的方

法,芯片的开发面临巨大的风险。因此传统的验证方法已经不再让人觉得安全,

为了尽快的弥补验证与现实产品设计之间的巨大差距.很多专门的高抽象级的

验证语言不断涌现,比如VERA,e语言,Jeda等.这些语言普遍采用先进的技

术,比如带约束的随即,基于断言以及覆盖率驱动的功能验证。然而只有验证

方法才能建立起一个更好的验证环境,才能充分的利用这些点技术的优点。从

而完成复杂芯片的验证挑战。

对于验证而言,今天我们正处在一个转折点一一逐步抛弃已经熟悉的传统验证环

境去开发全新的验证环境。关于这些环境的一些共同的特性如下:

可重用、可扩展

易于管理,配置

易于学习

可以完全取代传统的环境

可以提高验证效率

更高的仿真速度

在介绍新的方法前,让我们一起来回顾一下验证方法学的发展历史.

1.1验证方法学的发展史

验证方法的发展是伴随着半导体的设计规模逐渐变大而兴起的.在半导体

发展早期,设计规模比较小,并且也不存在专门的EDA工具,更多的是工程实

践中的经验和产品测试。随着70~80年代专门的硬件描述语言、仿真器以及综

合工具的出现,设计规模急剧变大,设计效率也有了质的改变。随着设计规模

的增大,大家发现功能验证的缺陷导致的芯片失败或重新流片的比例逐步提高,目前公认的比例是70%!

主要讲的是vmm验证方法学的相关知识

在HDL语言时代,最早的验证方法局限于语言本身的描述能力.VHDL本身

具有比verilog更强的抽象描述能力以及更好的文件接口,所以在Testbench

的开发上更高效。但随着时间发展,大家更渴望HDL语言能提供高抽象语言接

口,于是verilog因为其特有的PLI接口能直接和c通讯,而大获成功,并大

大的提高了人们在建testbench时的抽象描述能力,在这个基础上验证方法进

入了一个繁荣时期。首次出现了层次化的验证平台思想,这一时期在验证方法

学方面最负盛名的著作就是JanickBergeron的(WritingTestbenches:

FunctionalVerificationof耶LModels).而工业界最成功的验证产品就是

Cadence公司基于PLI开发的Testbuilder.

80年代末到90年代中,随着通讯的快速发展和工艺的进步,带动半导体的

设计规模又上了新台阶。在新的验证挑战面前,大家感觉原有的验证方法和语

言从验证的角度来讲都不够高效,于是出现了专门的高抽象级的验证语言,像

VERb.、Jeda、e语言。从方法学上他们都在朝层次化的方向发展,并具有高效

率的带约束的随即引擎。这些帮助他们取得了成功,其中尤以e语言为最。

随着90年代末SoC兴起,系统中往往有更多的软件,这时有更多的系统建

模和软硬件协同验证的需求。并且芯片的设计规模成指数发展,原有的这些特

殊语言抽象建模能力不足的缺点也暴露出来了.于是业界一致把目标指向了统

一的高抽象描述语言,中所周知目前最成功的编程语言当数C/C++,并且这也

是目前软件开发的语言。所以大家的想法就是在C/c++的基础上增加硬件的描

述能力,这就是今天大家看到的SystemC,目前SystemC已经成为了系统建模

事实上的标准。另外一个需要提一下的就是SystemVerilog,它不具备软硬件

协同仿真的能力,但因为其具有的Assertion更适合搭建一些RTL级别

MethodologyManualFor

4Testbench的工作。在这个时期最好的验证方法学的著作依然来自JanickBergeron,他和ARM公司合作完成的(Verificationsystemverilog》。验证方法学本身并不局限于语言。所以我的研究方向就是采用SystemC来实现VMM,把系统建模和验证平台更完美的结合起来。

主要讲的是vmm验证方法学的相关知识

1.2本文的内容及章节安排

本文研究了Ⅷ验证方法的Syste《实现。整个章节安排如下:

第一章,

第二章,介绍验证方法学的发展过程介绍传统验证环境的优点和不足,同时重点描述了今天所面临的验证

挑战

第三章,V删验证方法学的介绍。其中重点介绍了v删验证方法学所提倡的验

证平台架构、验证平台可扩展的特性,以及该平台如何系统的解决

SoC验证过程中不同的挑战。

第四章,基于删的模块级验证平台的SystemC实现。该平台的实现可以为公

司提供了一个可伸缩、易于扩展的高效的模块级验证平台。这是我一

直以来的研究方向,全面的采用SystemC完成testbench的建模。

第五章,在这部分我思考了自己实现的验证平台的不足,给出了未来改进的方向.

主要讲的是vmm验证方法学的相关知识

2传统Testbench的不足

2.1传统验证环境的特点

传统的Testbench把被测对象作为最核心的部分实例化在Verilog或VHI)L语言环

境中。Testbench的仿真流程通过一个简单的测试用例文件来控制,该测试环境

采用专门定制的Testbench来为DUT创建特别的测试激励,为了提高Testbench本

身的描述能力,一般会开发一个行为级的处理器模型,用来和外部的脚本交互.

脚本(Perl)把图像和其它数据转换成预先定义好的格式,这些数据就能通过文

件接口被灌进仿真环境。其它脚本被用来比较仿真结果和期望的参考结果,并判

断该测试用例是失败了还是成功了。

ASIC模块一般会在系统级的环境中进行验证,也就是说即使你只修改了某个模块

哪怕是一行HDL代码,你也必须对整个系统的验证环境进行配置,并花几个小时

才能看到整个系统的仿真结果,时间浪费非常严重。在系统级环境中你无法直接

控制模块的接口时序,再加上仿真速度慢,所以很难大量的跑测试用例,导致覆

盖率较低。当然这种方式也有优点,那就是不用为每个模块搭建一个单独的验证

环境,确实可以节省很多时间,大家可以在相同的环境下工作,并且设计工程师

就可以同时完成验证工作。6

主要讲的是vmm验证方法学的相关知识

2.2多媒体数字信号处理算法开发环境

ChipModeler是我们公司数字信号处理(DSP)T程和芯片的验证工具。

ChipModeler最基本的目标是支持快速的DSP算法开发和IC功能验证,尽可能

的减少未来软件升级和维护的成本。以下是平台细化的特性:

支持DSP工程师遵循一个简单、系统的流程来建立算法开发环境

从芯片实现版本中分离出R&D版本,具有良好的版本管理。

为IC工程师提供多层次的芯片验证和stim文件的生成环境

Chipmodeler开发环境为VC6.0,它可以输出当前算法的寄存器配置供RTL仿真

用。并输出t08/tlO格式的数据作为RTL的输入图像和中间检测点。

以下是一个ChipModeler的框图。

图IDSP软件开发环境示意图

说明:

}.Pm表示算法参数数配置文件

Imagefiles:函像输入文件

Outputimage:内部定义的格式t08或tlO

跟每个算法或灏试用铆相关

7STM:毒存器配置文件t

主要讲的是vmm验证方法学的相关知识

图2Cbilmodeler工具示意图

2.3ASIC芯片级开发环境

下图是一个简化版芯片级验证环境框图,芯片中其它的模拟、外设都没有被包含

进来。下面我们将只关注平台最核心的部件。事实上这些模块全部都是在TBProc

提供的脚本指令集控制之下。该脚本是80186类似的指令,能支持基本的判断控

制,同步等待等。该平台和算法开发环境实现无缝连接。

图3芯片级验证环境框图

主要讲的是vmm验证方法学的相关知识

Testbench部件介绍

TBProc:

这是一个80186行为级的模型,它提供和chipmodeler无缝的接口来直接解释

ChipModeler输出的stim:丈件(寄存器配置文件)。同时它还提供许多其它的指

令来完成内部BFM的控制。它是整个Testbench中央控制单元。

指令集略强:

i2"a)6then

tstatements,

ejsirb>atben

【statements,

else

£StatementsJ

点ndif

图像生成模块:

在TBProc的控制之下,该模块能从文件读取激励并灌给DUT,它也可以被TBProc

打开或关闭。以下是负责图像生成模块配置的指令集例子:

//DefineVideoGeneratorSetup

GP20x15,0,0

//cTLVLPFVPWVBKVREsfIcPLHPW船KHREScLf(SEEDINc

dataOx083403161540612203100

pattern

9//Oxl03=QSTART,DIGITAL’VS+,HS+patternend显示模块:该模块负责从输出接口提取数据流并和期望的结果比对.

主要讲的是vmm验证方法学的相关知识

12C主器件:

内部寄存器的配置接口,在TBProc的控制下完成所有寄存器的读写操作。

以上只是Testbench最主要的部件,依赖于这个平台公司已经成功的完成了几十

颗芯片的流片,下面我们来总结一下该平台的优点:

一为仿真相关的配置和控制提供统一的指令集

一高效的仿真过程控制

●Testcase文件可以从模块到系统测试之间重用

●和ChipModeler之间无缝连接

一一个环境满足从模块到系统所有的验证需求

Testbench的不足

以下是一个系统的描述:

缺乏层次化,Testbench的结构缺陷主要是由基于VHDL的描述语言所决定

●很难扩展和维护

静态特性,算法的C模型不能被直接集成到验证环境中.

●缺少现在很高效的带约束的随机仿真功能.

●不支持协同仿真

都是直接的测试用例,他们的目标都是固定的来测试规格中某项特殊的

功能项。很多没有想到的情况可能被忽略了,很多测试场景在真个系统

的环境中难以被构造出来。因此这种方法很难达到比较高的覆盖率,尤

其是控制逻辑比如memory控制模等。

在整个系统的环境中进行模块的验证,很难定位问题,大量的仿真时间

被浪费. 仿真速度很慢.2.4随着SoC的深入发展,该Testbench方法的不足逐步暴露出来了,主要的问题还是纯粹的HDL语言所带来的局限性一一复杂的非透明的扁平结构。

主要讲的是vmm验证方法学的相关知识

总而言之,传统的验证环境在可重用性、覆盖率、验证效率等方面存在明显的缺

点。现在最新的验证手段在最新的工具、高抽象级的验证语言帮助下,使得开发

人员可以克服以上不足。

2.5面临的验证挑战

随着SoC的快速发展,从验证角度来看我们面临以下挑战:

●越来越大的快速产品上市的压力

●快速增长的产品开发和验证复杂度

●传统的验证方法不能满足今天的验证挑战

●标准的EDA工具也不再满足所有的验证需求

●没有时间和资源被分配来学习跟踪最新的EDA和验证方法

没有时间和资源可以分配到重新开发满足自己需求的验证平台中来

●软硬件的协同验证的问题

在系统级仿真速度太慢的问题

还有很多其它潜在的风险,比如在一个公司内部,经常发现自己并不具备足够

的知识或者是验证专家可以为公司定义一个足够好的验证方法来解决他们所面

临的那些负责的需求。即使有这样的人.他们还是无法避免开发早期的平台不

稳定所带来的验证效率降低问题,以及重新开发所带来的巨大工作量。

从整个芯片开发的角度,以下挑战也非常关键:

●早期的算法评估,包括功能和性能的评估

●系统架构评估

●早期的软件开发

●可重用的规划

仿真速度慢的问题

所有以上挑战都要求我们转变现有的设计和验证流程,全面采用基于ESL的设

计和验证流程。下面我将重点介绍目前业界最领先基于V删(Verification

MethodologyManual)的SoC验证方法学。

主要讲的是vmm验证方法学的相关知识

3VMM验证方法学介绍

MethodologyManualfor大约十年前,VMM的作者曾经著有Reuse

System-on-ChipDesing(R删),现在基于IP重用的SoC设计已经被工业界所广

泛的接受并采用。目前作者敏锐的感觉到业界迫切的需要有类似的关于验证方

法和验证重用的指导。众多的研究显示,验证已经一跃成为了SoC开发最大的

挑战,在大部分项目上都耗费了最多的时间和资源。在小型设计中已经被实践

证明非常有效的手写直接测试激励的方式,以及只做最小的覆盖率衡量的方式

在SoC时代是绝对行不通的。

VerificationMethodologyManual(V删)的目标就是要创造一个类似的验证

方法和验证平台的标准。革命性的改变验证工程师的工程实践,就像PAIM为设

计者所提供的那样一一更好的方法,更加可预测的结果。作者在VMM中浓缩了

当前最新的技术,包括带约束的随即激励产生,覆盖率驱动的验证,基于断言

的验证,形式验证,基于开放的以及精心定义的方法学的系统级验证。

这章将首先将介绍删验证方法学所倡导的验证平台的架构,然后讲述如何采

用这个架构来满足SoC设计中不同的验证需求。

3.1层次化的验证环境

为了使验证环境具有较高的效率,最好的方式就是采用层次化的结构。众所周

知,只有精心的规划才能使重用得以实现.为了满足广泛的验证需求,验证平

台必须具有层次化的结构,同时还必须具有相当的灵活度以满足不同验证环境

的需求。以下是VMM所倡导并被业界目前广泛认可的层次化验证环境结构图.12

主要讲的是vmm验证方法学的相关知识

Test

S“舶羽{o

Fmlctional

Command

sign且I

LayeredVerificstionEnvironmentArchi“枷rt

3.1.1信号层(SignalLayer)

本层提供与BUT直接的信号互连。该层提供的信号抽象可以被它以上的任何层

次直接访问,这将保持平台极大的灵活性。当然功能验证环境和测试用例应该

在底层提供的封装基础上实现尽可能高的抽象,保持完整的层次调用关系,并

避免直接访问接口信号,除非是万不得己。

3.1.2命令层(CommandLayer)

典型情况下命令层包含了总线功能模型、物理层的驱动、检测模块、结果比对

模块以及相关的各种接口和DUT的物理接口协议,而不用去关心DUT的具体功

能。在这个层中,事务被定义为基于接口的最小数据传输或命令操作,比如寄

存器读写,发送一帧图像。从时序角度来看,典型的基于接口协议的最小操作

是完全根据接口规格书来定义独立的时序图。

3.1.3能层(FunctionalLayer)功能层提供必要的抽象层来处理应用层事务并验证DUT功能的正确性。不像物

主要讲的是vmm验证方法学的相关知识

理层基于接口的事务,功能层的事务不要求和某个接口或物理事务有一对一的

对应关系。功能层的事务是被整个DUT或其主要的子系列所执行的高抽象层的

操作,其抽象级远远超过物理层接口模块。一个简单功能事务可能需要执行几

十个命令层的事务。它可能会根据物理层事务完成的状态来决定重新发送一些

事务或者是延迟发送其它事务。

3.1.4测试场景层(ScenarioLayer)

该层负责提供可控和同步数据以及事务的生成。缺省情况下负责DUT所需的基

本激励.不同的激励生成模块的管理或管理模块被用来提供数据和事务给不同

的功能子层。该层也包含了一个DLrr配置生成模块。该模块可以从文件中读取

DUT寄存器的配置。最小的原子操作生成模块可以产生独立的带约束的事务,

它还适合产生不带约束的事务序列.测试场景是一系列随机的有着某种关联的

事务,每种测试场景代表一种有趣的独立的事务来针对一个特殊的边界功能.

3.1.5测试层

测试用例包括修改对激励产生模块的约束,定义新的随机场景,同步不同的事

务并创建直接测试用例。该层也可以提供额外的特别的测试用例,一般是功能

层不提供的事务,并自己检测。该层还提供文件接口来方便快速的测试用例开

发。

完成了v姗验证平台的框架介绍,下面让我们一起来看看它在不同应用中的情况.

主要讲的是vmm验证方法学的相关知识

3.2Datapath验证环境

一’o

.量

懈三二l一

『:j}

LayeredVerificsttonEnviroum∞tArchitecture

该环境的目的是验证HDL所实现的全部功能。一般来讲,数据通道的实现就是

把对应的C/c++算法翻译成硬件。只是在实现的时候期望在实现成本和性能之

间取得最优.从验证的角度我们可以把c/c++算法作为硬件的黄金参考模型

(GoldenReferenceUodel)。通过这个参考模块、带约束的随机引擎和层次化

的验证环境,我们可以得到:

●提供比传统纯皿L验证环境更快的仿真速度

每个模块都有独立的验证环境

可以很容易快速的完成验证环境的搭建

专主要是因为层次化的结构、可重用和易于扩展的特性

々Testbench全部采用高抽象的SystmeC语言

●实时的自动比对

采用c/SystemC模型作为黄金参考模型,并且把他们集成到验证环境当

中。

●快速的问题定位

在设计种,我们会要求systemC参考模型具有和硬件类似的结构,通过这

主要讲的是vmm验证方法学的相关知识

些结构可以增加一系列的中间检测点来,在仿真时这些中间检测点可以实

时的自动比对,从而可以自动的把问题的定位缩小到很小的范围。

●带约束的随机

通过采用System(;的验证库(SCV),Testbench可以提供带约束的随机激

励生成,这将极大的提高验证效率和覆盖率。

●支持文本的测试用例

3.2.1模块级验证环境参考模型结构

模块级的验证环境共享如下图所示的通用结构,在这里让我们把注意力集中在参

考模型的结构上。理想情况下,每个Datapath模块都会有一个对应的C/C什模型,

我们把这个c/c++模型当作HDL的参考模型。以下是一个典型的参考模型和

Scoreboard的结构图。

BlockLevclVerificationEnvironment

RMArchitecture16

主要讲的是vmm验证方法学的相关知识

SystemC参考模型内部结构

为了尽量少的改动并重用已有的C模型,一般推荐以下结构,这是一个没有时间

概念的参考模型.在这个结构中,以前存在的C模型会被一个c++外壳封装起来,

对外提供一系列的方法供访问,例如,寄存器访问、输入数据、数据读取等。

另外一个很重要的特性是中间检测点(Checkpoint)。中间结果的检测点对于问题

的定位是非常实用的机制,通过这些检测点可以快速的定位改正问题,从而大大

的节省开发周期。在这里我们应该定义一个可扩展的结构使得中间检测点的添加

和删除变得更加容易.

一般来讲,算法开发者在开发C算法的时候,他们更喜欢用高抽象的,比如在图

像领域,他们通常喜欢每次处理一帧图像,为了统一C算模块的管理,必须统一

输入、输出接口,以及内部观测节点的管理,以及控制寄存器的配置管理。这些

接口都统一采用同样的数据结构,并提供相同的访问方法。这样模块的扩展就变

得非常容易,可以达到即插即用。可以很好的提高验证效率。

建议如下:

为了使得模块能够从模块级到子系统甚至是系统级之间实现重用,必须遵从以下

夺标准化的结构

夺统一模块的接口访问方法

争统一中间结果的存储与访问结构17几点:

本文来源:https://www.bwwdw.com/article/q4fi.html

Top