通用验证方法学在核安全级仪控平台的应用.docx
- 文档编号:3816672
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:9
- 大小:134.98KB
通用验证方法学在核安全级仪控平台的应用.docx
《通用验证方法学在核安全级仪控平台的应用.docx》由会员分享,可在线阅读,更多相关《通用验证方法学在核安全级仪控平台的应用.docx(9页珍藏版)》请在冰豆网上搜索。
通用验证方法学在核安全级仪控平台的应用
通用验证方法学在核安全级仪控平台的应用
韩文兴吴志强水璇璇余波李昆
【摘要】核电数字化仪控系统需要高可靠性和安全性,对其进行充分的验证和测试至关重要。
为促进FPGA技术在核电行业发展,需要能够被普遍认可的FPGA验证方法。
然而现阶段的国际标准和研究报告(如IEC62566和NUREG/CR-7006)僅阐述了基于FPGA核安全级仪控系统的生命周期,并未涵盖具体的FPGA验证方法。
因此,本文将介绍通用验证方法学(UVM)在核安全级仪控平台(NASPIC)FPGA软件自动化测试方面的应用,为同行提供一个技术参考。
本文首先介绍UVM的架构,叙述基于UVM的FPGA验证平台搭建流程;其次,本文描述了NASPIC平台高速串口收发器(transceiver)的测试流程;最后,通过对比UVM与传统FPGA验证方法,说明UVM的优缺点。
【关键词】通用验证方法学;核安全级仪控平台;FPGA;自动化测试
TL362:
B:
2095-2457(2018)16-0056-004
DOI:
10.19694/ki.issn2095-2457.2018.16.024
【Abstract】AshighreliabilityandsafetyisrequiredbyDI&C;systemsofNPP,adequatetestingandvalidationisessential.TopromotethedevelopmentofFPGAtechnologyinnuclearpowerindustry,awidelyrecognizedFPGAverificationmethodiscritical.However,currentinternationalstandardsandresearchreports,likeIEC62566andNUREG/CR-7006,whichhavedemonstratedthedevelopmentlifecircleofFPGA-basedsafetycriticalDI&C;inNPPs,dontcoverspecificFPGAvalidationmethods.Asaresult,thispaperintroducestheapplicationofUniversalVerificationMethodology(UVM)onNuclearAdvancedSafetyPlatformofInstrumentationandControl(NASPIC),toprovideatechnicalreferenceforpeerengineers.Firstly,thispaperdescribesthestructureofUVMandtheconstructionprocessoftheUVMverificationplatform.Secondly,thispaperdetailsthetestflowofthehigh-speedserialtransceiverofNASPIC.Finally,thispapershowsthestrengthsandweaknessesofUVMbycomparingUVMandtraditionalFPGAverificationmethod.
【Keywords】UVM;NASPIC;FPGA;TestAutomation
0引言
与基于微处理器的数字化仪控系统相比,基于现场可编程控制门阵列(FPGA)技术的系统可以做的更简单,更易于测试,不依赖于复杂软件(比如操作系统)使得其更适用于执行安全功能。
在全球范围内,FPGA技术在核电数字化仪控系统方面的应用受到了越来越高的关注,尤其是安全功能方面。
除此之外,FPGA的开发可以独立于硬件,具有高度可移植性,对于核电仪控系统的长期维护具有巨大的好处。
基于FPGA的系统和设备已经开始出现在新建核电厂的仪控系统和在运核电站仪控系统的改造当中[1]。
近些年来,中国核电行业迅速发展。
国内的一些核电研究机构和公司已经开始在新建电厂仪控系统中使用FPGA技术。
当前,FPGA在核电仪控系统的应用方式主要有两种:
第一种方式为纯FPGA技术方案,比如国核自仪开发的NuPAC平台;第二种方式是FPGA与微处理器技术相结合,比如中国核动力研究设计院研发的NASPIC平台。
现有的标准和导则,比如IEC62566[2]、NUREG/CR-7006[3]和IEEE1012[4]等,能够指导制定FPGA测试计划,但并不能具体指导FPGA测试方案的设计、测试步骤的执行。
由于这些标准各有侧重点,IEC62566对FPGA的开发和V&V;提出了许多需求,但并未提及具体做法。
NUREG/CR-7006对FPGA的设计开发提出了具体要求(包括硬件描述语言的编码风格和典型模块的设计方式等),提出FPGA要有可测试性,但测试方法并未涵盖。
IEEE1012则是对软件、硬件、系统的V&V;过程提出了具体要求。
因此,提出一种切实可行、高效可信的FPGA测试方法对于FPGA技术在核仪控领域的发展至关重要。
当前核电领域的FPGA测试主要依赖直接测试用例,对每个功能特性设计一个测试用例,测试结果须人为查看和判断。
除此之外,测试人员要多次修改直接测试用例进行仿真测试,直到HDL代码覆盖率达到100%为止。
由于这些因素使得传统的验证方法往往需要测试人员花费大量的时间和精力在修改测试用例和观察测试结果上。
通用验证方法学(UniversalVerificationMethodology)提出了一种基于自动化、随机化测试激励生成机制的HDL代码验证平台。
在此平台上,测试激励能够按照测试人员设定的约束条件自动、随机地生成,待测设计的结果能够自动与参考模型的结果进行对比,能够节省测试人员的时间和精力,提高测试效率和正确率。
由于通用验证方法学已经在其他高可靠性行业(汽车、航空航天、医疗)以及IC设计行业得到充分的应用,因此该方法是成熟的。
本文具体介绍了通用验证方法学在NASPIC平台的使用情况,具体分为四部分。
第一部分,介绍UVM测试平台架构及其搭建流程;第二部分,对NASPIC高速串行收发器的测试流程进行详述;第三部分,对比传统FPGA测试方法和UVM,阐述其优劣;第四部分,结束语。
1基于UVM的验证平台
UVM的前身是OVM,由Mentor和Cadence于2008年联合发布。
2010年,Accellera(SystemVerilog语言标准最初的制定者)把OVM采纳为标准,并在此基础上着手推出新一代验证方法学UVM。
目前最新的UVM代码库为UVM1.2,2014年6月发布。
UVM的特性主要表现在以下几个方面:
(1)功能模块化——UVM定义了HDL验证平台的基础功能组件,使得验证平台的搭建像搭积木一样方便。
具体包括uvm_driver、uvm_scoreboard、uvm_agent、uvm_monitor、uvm_env、uvm_test等基类;
(2)测试用例的随机化与自动化——UVM的测试用例生成依赖于测试人员定义的随机化对象以及其随机约束条件,会根据这些定义好的特性自动、随机生成;
(3)参考模型——UVM中的参考模型具有和待测设计相同的功能,可以用SystemVerilog语言编写,也可以C语言编写并使用DPI接口导入到验证平台;
(4)测试结果自动对比——UVM的自动对比机制在计分板中实现,可使待测设计的结果与参考模型进行自动化对比,实时记录测试结果,打印、保存定制的错误信息,便于设计人员分析错误原因;
(5)覆盖率为导向的测试流程——UVM的随机化运行的同时会统计代码覆盖率与功能覆盖率,直到多次运行之后的测试覆盖率均达到覆盖率目标为止。
这些UVM的特性使得FPGA的验证变得更加简单、省时、高效,也是将其应用到核仪控领域FPGA验证的主要原因。
1.1UVM平台架构
UVM是一个库,在这个库中,几乎所有的东西都是用类(class)来实现的。
类有函数(function)和任务(task),通过函数和任务来实现每个平台组件的功能。
验证平台所有组件应该派生自UVM中的类。
图1展示了基于UVM的验证平台架构。
其中:
top——顶层模块,在其中例化了test_case对象和DUT(待测设计);
test_case——测试用例对象,sequence和env兩个对象的容器类;
sequence——测试序列对象,根据约束条件,随机创建测试激励;
env——测试环境对象,测试平台组件(i_agt,o_agt,model和scoreboard)的容器;
o_agt——输出代理对象,读取DUT的测试结果并将其发送到scoreboard;
i_agt——输入代理对象,在其中例化sequencer和driver,用于将测试数据写入DUT的输入端口;
sequencer——测试序列发生器,用于从sequence对象接收测试数据序列,随机化后将数据传输到driver对象;
driver——驱动器对象,顺序地接收测试数据,并按照接口时序将测试数据驱动到DUT输入端口;
model——参考模型对象,具有与DUT相同的功能,接收相同的测试数据并将其结果传递给scoreboard对象;
scoreboard——计分板对象,用于将DUT结果和model结果进行对比,记录并打印错误的测试数据。
这些组件结合在一起完成FPGA的验证工作。
1.2高速串行收发器
在NASPIC平台中,高速串行收发器执行链路层通信功能,由收发器传送和收发器接收两个子模块构成。
收发器传送模块负责发送待发出的数据,给外部提供交互接口;收发器接收模块负责接收外部接口传输过来的数据,并对数据做基本逻辑处理和判断,保障数据传输的正确和可靠。
其输入输出端口如表1所示。
1.3UVM测试平台搭建流程
UVM测试平台与待测对象(DesignUnderTest)之间是一一对应的关系,不同的待测对象对应的测试平台虽有差异,其大体的功能组件是相同的。
本小节以收发器测试平台为例说明测试平台的搭建流程。
1.3.1接口
UVM验证平台与DUT是通过虚接口(VirtualInterface)进行交互交互数据的,因此每个待测设计都有一个对应的接口定义文件***_if.sv。
根据如表1的收发器接口列表,定义了transceiver_if.sv,如图2所示,接口输入为DUT需要的是时钟信号,接口内为DUT其他输入输出端口。
1.3.2驱动器与监视器
UVM验证平台通过驱动器向DUT接口发送数据,通过监视器从DUT接口读取数据,在这两个组件内根据待测设计功能特性列表定义功能覆盖组。
不同的DUT对应不同的驱动器和监视器,其大体功能相同,差异在于不同的接口时序。
收发器的驱动器和监视器的定义文件分别为transceiver_driver.sv和transceiver_monitor.sv。
由于驱动器和监视器的时序正好相反,在此仅讨论驱动器的搭建。
图3展示了transceiver_driver.sv,可看出此驱动器类带有transceiver_trans(数据帧)参数,且扩展自UVM类库中的uvm_driver。
由于数据帧在下文中讨论,在此不做赘述。
其第2行为虚接口的声明,用于连接待测设计,第3行为邮箱声明,用于发送数据帧,第4行为UVM宏,用于注册此功能组件到UVM树中。
此驱动器类中定义了两个函数new、build_phase,以及两个任务main_phase、drive_transceiver。
new函数为生成函数,每个SystemVerilog类中均存在。
build_phase、main_phase为UVM平台运行过程中的两个阶段,所有扩展自uvm_driver的驱动器类均包含。
drive_transceiver任务将每个transaction数据帧按照接口时序驱动到收发器的接口上,也是不同驱动器之间的差异之处。
1.3.3参考模型
UVM验证平台中参考模型组件与DUT有着相同的功能,用于产生DUT结果的对比对象。
收发器测试平台的参考模型定义文件为transceiver_model.sv,如图4所示。
如下图所示,参考模型类扩展自uvm_component类,其实所有的UVM平台的组件类均扩展自此类。
参考模型类的第2行接收邮箱定义,用于接收transaction数据包;第3行为发送邮箱定义,用于发送transaction数据包。
第4行为UVM宏,用于将参考模型注册到UVM树。
参考模型类中有两个函数new和build_phase,一个任务main_phase。
new函数为构造函数,有两个参数name和parent,用于指明该类在UVM树中位置。
build_phase用于UVM平台运行时创建邮箱、接口等组件。
main_phase为UVM运行时的主进程,参考模型在此任务中实现DUT的功能。
1.3.4计分板
计分板组件用于比较来自于参考模型组件的transaction和来自检测器组件的transaction,可在此功能组件内定义错误打印信息。
收发器UVM测试平台的计分板定义为transceiver_scoreboard.sv,如图5所示。
如图中代码所示,参考模型类扩展自uvm_scoreboard。
第2行定義了transaction数据包对列,用于存放来自参考模型组件的transaction。
第3、4行定义了两个接收邮箱,分别用于接收来自参考模型组件和监视器组件的transaction。
第5行为UVM树组件注册。
计分板类中有两个函数new和build_phase,实现功能与参考模型相同,在此不做赘述。
main_phase任务为UVM运行时的主进程,计分板在此任务中实现期望transaction与实际transaction对比功能。
1.3.5数据包与序列发生器
在UVM平台各组件之间传递的transaction数据包,是根据待测设计的协议格式来定义的,在其中声明随机化对象。
序列发生器用于自动生成随机化的transaction序列。
收发器的transaction数据包定义为transcerver_trans.sv,序列发生器定义为transceiver_sequence.sv,如图6所示。
由于不同协议的数据包内容不同,在此不再具体展开transaction_tran.sv的代码,仅讨论序列发生器。
序列发生器类扩展自UVM类库中的uvm_sequence。
第2行声明了一个transaction对象指针,用于指向自动化生成的transaction对象。
其new函数只有一个参数name,表明序列发生器并非UVM平台组件。
此类中的body任务是完成随机化生成transaction序列的主体任务,在代码的第10行调用UVM宏`uvm_do_with,用于根据约束条件生成一个随机化transaction。
1.3.6环境与代理
UVM平台的环境类为容器类,在其中例化各功能组件。
代理类同为容器类,在其中例化与DUT接口相关的功能组件。
环境类与代理类对于大部分待测设计是相同的,因此定义一次即可,在不同的测试平台可以重复使用。
收发器UVM验证平台的环境组件定义为transceiver_env.sv,代理组件定义为transceiver_agent.sv。
这两个类的例化关系在1.1小节已讨论,其代码不再展开。
1.3.7测试用例及其测试平台的运行
当完成了所有UVM验证平台的组件定以后,就需要定义测试用例了。
在测试用例中例化测试环境,指定使用哪个序列发生器作为测试激励。
收发器的测试用例为transceiver_test.sv,如图7所示。
测试用例代码第2行声明了测试环境的对象指针,第3行为外部new函数声明,第4行为外部build_phase函数声明,在此函数阶段中建立序列发生器与测试平台的连接关系。
定义完成测试用例后需在仿真环境中启动测试平台,一般使用如下指令:
+UVM_TESTNAME=transceiver_test。
这条指令会告诉仿真环境要使用哪个测试用例搭建UVM验证平台。
2收发器的测试流程
UVM验证平台可以用于FPGA的RTL级行为仿真、门级仿真以及时序仿真。
本小节将按照三类仿真类型进行阐述,说明收发器模块的仿真测试流程。
2.1RTL级行为仿真
使用HDL语言完成RTL级行为描述后,要进行RTL级行为仿真。
此类仿真往往需要达到100%测试覆盖率(包括代码覆盖率和功能覆盖率)。
整个测试流程是以测试覆盖率为导向,只有当测试覆盖率达到目标才能结束测试。
功能覆盖率体现在功能覆盖点上,当所有的功能覆盖点全被覆盖后,功能覆盖率达到100%。
代码覆盖率由仿真环境进行统计,包括表达式、分支、条件、有限状态机(分支,状态迁移)等的覆盖率。
在RTL级行为仿真开始前,在sequence类中设定UVM测试激励数量,激励生成的约束条件。
运行UVM测试平台,若测试中断则查看错误打印信息。
修复错误后继续运行UVM测试平台,平台自动运行结束后,保存覆盖率信息到ucdb文件中。
重新运行UVM测试平台,并保存覆盖率信息。
如此反复多次后,将所有生成的覆盖率文件合并,查看分析有哪些代码没有运行到,或者哪些功能覆盖点没有被覆盖。
根据分析结果,调整测试激励约束条件,重新运行UVM测试平台。
如此反复,直到达到测试覆盖率目标位置。
表2为收发器模块最终的测试覆盖率报告。
2.2门级仿真与时序仿真
在HDL代码经过综合后生成门级网表,对于门级网表的仿真称为门级仿真。
门级网表经过编译、布局布线后可以生成反标注文件,对于添加凡标注文件的门级仿真称为时序仿真。
时序仿真和门级仿真主要以功能覆盖率为目标。
其测试流程与RTL级行为仿真类似,在此不做赘述。
3UVM的优势与不足
与传统的FPGA验证方法相比,UVM的优势主要体现在:
3.1测试激励随机化生成
与测试人员定义的直接测试用例相比,随机生成的测试用例可以使得测试覆盖率导向的测试流程更快地达到测试覆盖率目标,所用的测试时间更短。
3.2测试激励自动化生成
直接测试用例的定义需要测试人员去修改测试代码,特别是对于大的工程而言,在修改、调试测试代码上花费的劳动力是巨大的。
自动化的好处在于解放了测试人员,让他们专心于查看测试过程中的异常情况,发现代码漏洞,大大提高了测试效率。
3.3测试结果自动对比
传统的FPGA验证方法,测试结果需要测试人员去查看核对。
难免会出现遗漏,并且效率相对较低。
自动化对比测试结果可以使得测试结果更可信,更具有说服力,并且能够令测试工作效率更高。
3.4功能覆盖率自动统计
传统的FPGA测试方法每个功能特性均需要编写直接测试用例进行测试,并且要人工统计是否通过,计算功能覆盖率情况。
在UVM平台,测试人员只需要在起始阶段定义好了功能覆盖点,测试平台就可以自动的帮助测试人员统计功能覆盖率的情况。
降低了时间成本、人工成本,提高了测试效率。
3.5DUT与参考模块相互印证,测试结果可靠
传统的FPGA测试方法,需要测试人员去查看波形图,人为判断测试结果是否正确。
效率低的情况下,还有可能引起误判断。
UVM平台引入了参考模型,由测试人员编写,使得待测设计的结果与参考模型进行对比,使得测试结果进行相互印证,测试结果更可靠。
3.6测试过程的错误记录功能
传统的测试方法往往需要测试人员多次暂停测试流程去查看波形图,人工记录错误信息。
而UVM平台有着强大的错误信息打印和记录功能,可以实时记录测试过程中的错误信息,方便测试人员在测试结束后进行分析,同样节省了测试人员的时间,提升的测试效率。
和传统的FPGA验证方法相比,UVM有着巨大的优势,但是其应用也有一定的局限性。
其不足之处主要体现在UVM测试平台的搭建比较复杂,用时较多。
相比于直接测试用例,UVM学习成本更高、搭建测试平台的时间更多。
因此,对于较简单的设计,传统的FPGA验证方法更能节省时间。
4结束语
本文中以高速串行收发器为例较为详细地介绍了UVM测试平台的搭建以及测试流程。
在核电行业FPGA验证方面推广使用UVM,能够使基于FPGA的仪控系统更加的可靠和安全。
希望经验分享能够为同行的工程师提供一些建議和启发。
【参考文献】
[1]ELECTRICPOWERRESEARCHINSTITUTE,GuidelinesontheUseofFieldProgrammableGateArrays(FPGAs)inNuclearPowerPlantI&C;Systems,Rep.EPRITR-1019181,EPRI,PaloAlto,CA(2009).
[2]BOBREK,M.,BOULDIN,D.,HOLCOMB,D.E.,KILLOUGH,S.M.,SMITH,S.F.,WARD,C.,WOOD,R.T.,ReviewGuidelinesforFPGAsinNPPSafetySystems,Rep.NUREG/CR-7006,OfficeofNuclearRegulatoryResearch,Washington,DC(2010).
[3]INTERNATIonALELECTROTECHNICALCOMMISSION,NuclearPowerPlants—InstrumentationandControlimportanttoSafety—DevelopmentofHDL-ProgrammedIntegratedCircuitsforSystemsPerformingCategoryAFunctions,IECStandard62566,IEC,Geneva(2012).
[4]INSTITUTEOFELECTRICALANDELECTRonICSENGINEERS,IEEEStandardforSystemandSoftwareVerificationandValidation,IEEEStandard1012-2012,IEEE,NewYork(2012).
-全文完-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通用 验证 方法 安全 级仪控 平台 应用