FPGA软件自动化验证平台设计与实践

2016-11-23 10:02费亚男朱伟杰
计算机测量与控制 2016年5期
关键词:测试用例时序静态

费亚男,周 辉,朱伟杰

(北京航天自动控制研究所,北京 100854)

FPGA软件自动化验证平台设计与实践

费亚男,周辉,朱伟杰

(北京航天自动控制研究所,北京100854)

目前,航天任务急剧增多,研制周期大大缩短,FPGA的应用呈阶梯式增长,提高FPGA软件的测试效率成为新的挑战;验证平台的搭建是进行FPGA测试的前提条件,而验证平台的好坏直接影响测试效率和质量;为了提高测试效率,设计搭建了基于Makefile脚本的自动化验证平台,可在该平台上进行FPGA软件静态测试和动态测试,覆盖了目前航天型号FPGA软件测试的全部类型,实验结果表明该平台的应用能够有效地缩短测试时间,并保证测试质量。

FPGA软件测试;自动化;验证平台;Makefile脚本

0 引言

FPGA作为可编程逻辑器件,通过用户自定义编写VHDL程序或者Verilog程序进行配置,实现用户所需功能。但是一旦编写的程序存在缺陷,比如状态机的跳转条件错误、对输入信号未进行滤波处理、计数器的计数值产生溢出等,都会导致FPGA输出信号逻辑状态错误,无法实现预期的设计,严重的会影响系统功能,致使系统运行紊乱,最后造成重大事故,在财力物力上损失惨重。为提高FPGA运行的可靠性,需对其进行测试[3]。

目前,FPGA主要测试方法为:基于软环境的FPGA测试[4]和基于ATE的FPGA测试。其中基于软环境的FPGA测试按照是否要运行程序分为静态测试和动态测试,动态测试又可分为黑盒测试和白盒测试。这种测试方法的优点是,不受硬件环境影响,测试结果稳定性好,测试类型齐全,并且可进行异常测试。缺点是,环节太多为测试工作带来极大不便,并且自动化程度低,测试花费时间长。基于ATE的测试方法原理是:对FPGA进行针对性的配置,然后采用在线测试机对其进行测试。这种测试方法虽然自动化程度高,但是存在着测试覆盖率不足的问题,同时测试对硬件的依赖性强,费用相对较高,且灵活性差。

综合上述两种FPGA测试方法的优点,本文研究出一种自动化程度高、测试类型完备且覆盖率能够达到100%的测试方法,来缩短测试时间、提高测试效率和质量。

1 验证平台设计

搭建验证平台是对FPGA软件进行测试的前提条件,目前,验证平台的结构、功能没有统一化要求,不同测试人员搭建的验证平台有所不同,这样存在很多弊端,不利于管理、可读性差、可继承性差等。为了解决传统验证平台存在的问题,本文设计了通用验证平台的架构,作为验证平台搭建的标准。

可在验证平台上进行测试的类型包括代码规则检查、跨时钟域检查、功能仿真、时序仿真、逻辑等效性检查和静态时序分析共6种,已覆盖载人航天工程和武器装备系统FPGA软件的所有测试类型要求。

代码规则检查:检查代码设计是否存在书写风格和结构的合理性问题,检查代码执行安全规范、编码规范的情况,从而提高代码的可读性、可修改性、可重用性,避免潜在安全性隐患,优化代码综合和仿真的结果。

跨时钟域检查:在多时钟域设计中,当软件进入一个特定的状态或者一组特殊的数据组合正好穿过跨时钟域边界时,就会出现亚稳态问题,跨时钟域分析用于对VHDL/Veri log语言编写的RTL源代码进行多时钟域间数据交互以及接口信号的处理情况进行分析,检查是否缺失亚稳态同步器,是否错误混用同步FIFO和异步FIFO,是否正确处理输入输出接口的时钟域关系等。跨时钟域分析能够有效保证亚稳态值不会传播到设计的其他部分而影响功能的实现。

功能仿真:又称为前仿真,通过输入一组测试激励检查测试结果是否与期望的结果一致,或者验证软件所实现的功能是否满足需求的过程,可以从仿真波形图中分析电路内部逻辑传递关系的正确性。

时序仿真:又称为后仿真,与功能仿真的原理相同,区别在于功能仿真加载到仿真器中的被测件为rtl源程序,而时序仿真加载到仿真器中的被测件为布局布线后的网标文件和标准延时信息,测试最坏条件下的电路运行情况,在一定程度上反映芯片的实际运行状态。

逻辑等效性检查:验证布局布线后生成的网表与综合前的rtl代码的一致性,如果对于所有可能的相同输入,其输出也相同,则证明两者之间的逻辑是等效的。

静态时序分析:静态时序分析针对FPGA设计综合及布局布线后生成的门级网表进行时序检查,根据电路网表的拓扑检查所有路径的时序特性,以较悲观的方式预估电路的延迟时间,对于不符合时序限制的分支电路在分析报告中作为关键路径,提醒设计者针对关键路径进行分析和修改,确保所有信号能够准时到达,保证电路功能的正确性。

被测件为开发方提供的被测软件源程序和布局布线后的网标和延时文件,由于确认测试后,开发方会根据测评机构提出的问题重新修改完善软件,同时将软件版本升级,评测机构会对升级版本的被测件进行回归测试,确认修改的正确性,在每个阶段的测试过程中,评测机构都需要对被测件的版本进行管理,严格管控每版被测件的状态,因此在测试平台顶层中设计了被测件版本管理功能。

测试结果显示当前版本所进行的测试类型的执行结果,对于代码规则检查,测试结果为不符合规则的程序语句,跨时钟域检查显示跨越多个时钟域而未进行同步处理的信号,功能仿真和时序仿真显示测试用例通过与否和仿真波形,逻辑等效性检查结果为网标文件与源程序不匹配的位置,静态时序分析显示建立保持时间不满足要求的路径。

验证平台的顶层结构比较直观,能够清楚的展示平台所具备的基本功能。

2 验证过程的自动化实现

自动化测试是FPGA软件测试的一个重要组成部分,它能提高测试效率,快速检测出软件中的性能和功能缺陷。

2.1Makefile介绍

Makefile文件是依据其特有的书写风格、函数和来编写一系列的命令,这些命令执行的先后顺序可以通过规则来确定[7],为测试编写Makefile脚本文件的好处是,测试过程的执行只需要一个命令,一旦提供一个正确的Makefile,测试执行所要做的唯一事情就是在shell提示符下输入make命令,测试过程会自动完成,极大提高测试效率。但是,如何编写我们想要Makefile文件,是自动化验证平台设计关键。

2.2Makefile脚本设计

本文编写的Makefile文件描述了整个测试的编译、连接、执行等规则,其中包括:工程中的哪些源文件需要编译以及如何编译,需要创建哪些库文件以及如何创建这些库文件,需要执行哪些类型的测试及如何进行相关类型的测试,采用哪些仿真工具进行功能仿真和时序仿真及如何进行仿真工具的选择等。

图1所示为本文设计的Makefile脚本结构示意图,在纵向上分为开发方develop、验证方verify、验证工具tools和验证结果results四个方面,开发方需要提供被测FPGA软件源程序rtl和布局布线后的网表netlist和标准延时文件sdf。验证人员需要为不同测试类型设计不同的约束和测试用例;验证工具为本平台上支持的用于不同测试类型的不同工具;测试结果部分存放测试中自动生成的各种数据,包括覆盖率信息,仿真结果、波形文件,日志文件等。

图1 Makefile脚本结构图

在横向上根据测试类型的不同划分为5个部分,其中代码规则检查CC,跨时钟域检查CDC,逻辑等效性检查FM和静态时序分析STA为静态测试,静态测试是指不执行程序代码而寻找程序代码中可能存在的错误或者评估程序代码的过程。功能仿真和时序仿真统称为SIM,为动态测试,动态测试是指需要编写测试用例来执行程序,并验证程序输出结果是否满足指定需求的过程。

对于代码规则检查CC,约束文件rules为依据DO-254、STARC、RMM等安全规范制定的代码规则集,可用于所有被测件的代码规则检查,不需要修改。

跨时钟域检查CDC的约束文件dirtectives为时钟约束文件,该文件中明确每个作为时钟使用的信号的时钟域,并将输入接口约束为虚拟时钟域。验证人员需要依据不用的设计制定不同的约束文件。

逻辑等效性检查FM的约束svf为等效性检查约束文件,可通过FPGA综合文件结果日志转化得到。

静态时序分析STA的timing constraints约束文件中描述时钟频率和接口延时等信息。

Makefile中对以上每种静态测试类型建立工作目录,创建work库,并将当前的逻辑工作库映射到实际工作库work上,然后启动工具并加载源程序和约束文件,最后运行。

在功能仿真和时序仿真的SIM中,tb为测试平台,用于实例化需要测试的设计,将被测件DUT与外围器件的标准模型连接,有效模拟FPGA的真实运行环境;tc为测试用例集,测试用例是为了验证被测件是否具有期望的功能而编写的程序驱动,是仿真测试的最小执行单元,为了确定被测件的全部功能是否满足需求,需要设计多个测试用例,称为测试用例集;vip为标准模型库,用于模拟FPGA外围器件的功能和接口时序,提高测试充分性。目前,已经开发完成的vip模型主要包括3个类别:总线协议vip、算法vip、控制vip,覆盖了现有型号FPGA软件中的常用算法和协议;lib为库文件,目前包含三大主流FPGA器件厂商Xilinx、Actel、Altera提供的库文件,包括verilog库和VHDL库。

对于动态测试,Makefile中除了定义以上静态测试的规则外,还定义了对不同的工具进行编译、仿真和运行的配置,如仿真器精度、寄存器初始值、覆盖率类型,优化选项开关,硬件语言类型等。

Makefile脚本的使用减少了大量人工手动点击鼠标和敲击键盘的过程,用简单的命令代替了复杂的操作,能够极大地提高测试的自动化程度。

3 自动化验证平台的使用

本文设计的FPGA自动化验证平台具有易于理解和操作流程简单的特点,下面结合图2所示的测试流程对不同测试类型的测试方法和测试过程进行介绍。

图2 FPGA软件测试流程图

准备工作:1)在linux服务器的终端计算机上创建一个验证项目目录;2)将验证平台的工作目录指定到该项目目录上;3)准备相应版本的被测件;4)准备用于静态测试的约束文件。

自动化验证平台支持的静态测试类型包括代码规则检查、跨时钟域检查、逻辑一致性检查和静态时序分析,这4种测试类型的执行过程非常简单,只要执行make命令就会输出测试结果。

自动化验证平台中包含的动态测试类型有功能仿真和时序仿真,对于功能仿真,测试人员首先需要设计tb,将被测软件程序与驱动程序建立连接关系,然后编写用于测试各个功能点的测试用例tc,最后执行功能仿真的make命令,测试结果数据会自动保存在数据库中;当所有功能仿真测试用例执行完成之后,进行覆盖率统计,对于关键级软件的覆盖率统计要求为语句覆盖率100%,分支覆盖率100%,在执行覆盖率统计的make命令时,平台会自动调用功能仿真的数据库,将所有执行过的测试用例所覆盖的语句和分支情况进行分析,并且分析结果中指出哪些语句和分支没有覆盖到,测试人员可以根据覆盖率分析结果进一步添加或者完善功能仿真的测试用例,该过程能够提高测试的充分性;对于时序仿真,要使用功能仿真时设计的tb,然后编写用于接口时序测试的用例集并执行时序仿真的make命令,测试所有与FPGA接口有连接关系的外围器件接口是否满足芯片手册中的时序要求。

动态测试流程与静态测试流程的主要区别在于动态测试需要搭建tb,编写测试用例,而静态测试不需要。

4 结果验证与分析

4.1配置项测试耗时分析

921样例测试是为了验证第三方评测机构是否具有评测载人航天工程项目的能力。样例FPGA软件存在的潜在问题较多,且设计比较复杂,功能之间的交互性较强,具有典型性、代表性。本文以921样例测试的FPGA软件为被测件,分为两个项目组对其进行测试,每个项目组有四名测试人员,项目组A的测试人员采用传统的测试平台,项目组B的测试人员采用FPGA自动化测试平台,两个项目组并行开展工作。表1所示为每个项目组在各个测试环节的耗时对比。

表1 两个项目组耗时

表2 测试耗时对比

从表1中可以明显看出,项目组B的耗时短,效率高,并且两个项目组在进行测试结果汇总时,发现测得的问题均相同,都没有漏测、误测的情况。

此外,以已经测试完成的多个项目为样本,对测试效率进行分析。表2中左侧为采用传统测试平台进行测试的项目规模、项目耗时和千行代码耗时率,右侧为采用自动化测试平台完成的同等规模的项目耗时和千行代码耗时率。

从表2中可以分析出,FPGA通用自动化测试平台在配置项测试中的使用能够降低千行代码耗时率,提高测试效率,从而节约测试成本。

4.2回归测试耗时分析

回归测试是指修改了旧代码后,重新进行测试以确认修改是否达到了预期的更改要求并证明修改对原有功能、性能没有损害。

FPGA自动化测试平台的使用能提高测试效率,不仅体现在配置项测试中,在回归测试中体现的更为突出。对于回归测试的传统做法是重新搭建测试平台,并编写测试用例,过程复杂。而在使用自动化测试平台时,只需简单的2步即可完成。

步骤1:将被测件的版本升级。

步骤2:选择测试类型并执行测试用例。

简单的2步操作之后,就可以对回归测试结果进行分析,确认修改的正确性。

综上所述,FPGA自动化测试平台的使用,能够使回归测试的工作量最大化压缩,并在实践中验证测试效率能够提高60%以上。

5 总结

本文设计的自动化验证平台结构简单,操作方便,并且具有测试过程自动执行,测试结果自动保存的功能,自动化程度极高,能够在保证测试质量的情况下提高测试效率。

[1]张焱,任勇峰,齐蕾,等.基于FPGA的CRC校验算法的实现[J].电子器件,2015,38(1):223-226.

[2]杨东,张超英.基于FPGA的电子表决器电路的设计与实现[J].电子科技,2015,28(1):61-63.

[3]邱云峰,秦鲁东.FPGA可编程逻辑单元测试方法研究[J].计算机与数字工程,2015,43(1):65-69.

[4]刘子宜,刘畅,郑军.基于软件测试技术的FPGA测试研究[J].电子技术应用,2011,37(5):28-30.

[5]毕泗国,王力生.基于硬环境的动态FPGA测试平台架构设计[J].计算机工程应用技术,2013,9(1):198-199.

[6]孙黎,张涛,周珊.基于ATE的FPGA软件自动化测试技术的研究[J].计算机技术与发展,2014,24(8):6-9.

[7]杜小平,周顺平,赵秋荣.一Linux下makefile文件的分析[J].现代电子技术,2004.(7):61-63.

Auto Verify Platform Design and Practice for FPGA Software

Fei Yanan,Zhou Hui,Zhu Weijie
(Beijing Aerospace Automatic Control Institute,Beijing100854,China)

At present,the rapidly increase of space missions shorten the development cycle,as a resulf,the application of FPGA growth greatly,improving the test efficiency of the FPGA software become a brand new challenge.The precondition of FPGA test is to build the verification platform,which has a direct impact on the test efficiency and quality.This paper designs an automatic verification platform based on Makefile script,static and dynamic test of FPGA software can be done on this platform,it also support all test types of current aerospace FPGA software.The experimental results show that the platform should be used to shorten the test time and ensure the test quality.

FPGA software test;automatic;verification platform;Makefile scripts

1671-4598(2016)05-0139-04

10.16526/j.cnki.11-4762/tp.2016.05.040

TP306

A

2015-11-24;

2016-01-04。

费亚男(1988-),女,吉林长春人,硕士研究生毕业,工程师,主要从事FPGA软件测试方向的研究。

猜你喜欢
测试用例时序静态
顾及多种弛豫模型的GNSS坐标时序分析软件GTSA
基于相似性的CITCP强化学习奖励策略①
清明
测试用例自动生成技术综述
最新进展!中老铁路开始静态验收
静态随机存储器在轨自检算法
你不能把整个春天都搬到冬天来
基于FPGA 的时序信号光纤传输系统
油罐车静态侧倾稳定角的多体仿真计算
测试工时受限的测试策略研究