基于软件测试技术的FPGA测试研究
输入、输出的时间变化趋势进行规定,并提供动态输出信号的判断准则,同时需要开发时序测试环境支持测试用例的执行。
3 FPGA测试技术框架
3.1 测试级别
把抽象的实体结合成单个或统一实体的过程称为综合,FPGA系统的每一步开发过程都可以称为一个综合环节,即将自然语言表示经过自然语言综合转换为HDL算法表示,再通过行为综合转换在寄存器传输(RTL)级,进一步通过逻辑综合转换为逻辑门的表示,最终通过结构综合转换为版图表示。对于每一个综合环节,都对应响应的测试级别,FPGA测试的"V"模型如图1所示。
与软件测试一样,在FPGA的开发阶段,测试就扮演着验证和确认的角色。但不同的是,FPGA的每一个综合环节的输出结果都是一种对设计的形式化表示方法,不但可以通过静态的方法检查验证,而且有强大的仿真工具能够支持在开发阶段对各个综合环节进行动态仿真验证,这样更有利于尽早发现缺陷,减少缺陷修改的成本。
而在测试阶段,在真实环境下,自底向上依次进行门级、单元级、元件级和系统级测试,以分别对门级模型、RTL模型、行为模型和系统需求进行验证。
(1)门级测试:验证基本逻辑门的正确性。
(2)单元测试:FPGA的单元包括并行代码块,以及顺序代码中进程、函数和过程。在这一级别的测试中,对RTL模型规定的各单元功能、逻辑、接口等逐项进行测试。
(3)元件测试:在FPGA开发中,将具有一定功能和接口的电路封装成的可复用单元称为元件(component),通过对元件的例化和连接构成具有更复杂功能的元件,直到构成整个系统。在元件测试中,通过元件的输入输出接口,对元件的行为进行验证。元件测试包括对元件集成的测试,从对最底层元件测试开始,是一个自底向上逐层集成的过程。
(4)系统测试:针对完整的FPGA系统的测试,验证FPGA系统对规定的功能、性能等需求的满足性。
在FPGA系统开发过程中,逻辑综合和结构综合过程基本通过综合工具由计算机自动完成,开发者主要是依据仿真结果进行修改与优化;而在自然语言综合和行为综合中,需要大量的人工介入,是缺陷引入的主要环节,也是FPGA测试的重点。
3.2 测试类型
与软件测试相同,FPGA测试可分为静态测试和动态测试。静态测试包括文档审查、代码审查、静态分析、代码走查等类型。在代码审查中,除了进行软件测试的相关检查项外,还包括检查代码运行时序的正确性、代码的鲁棒性和代码的可综合性。而在代码走查中,需要沿程序的时序和信号流两个相关维度,验证代码的动态执行情况。
动态测试不但沿用软件测试中一般采用的逻辑测试、功能测试、性能测试、接口测试、强度测试、余量测试、安全性测试、恢复性测试、边界测试、数据处理测试等,还包含FPGA系统特有的下载与配置测试、鲁棒性测试等。
(1)下载与配置测试:测试系统是否能够正确实现程序的下载和芯片的配置。一般需要进行不同目标芯片和编程方式的下载与配置测试,对可重构FPGA系统重构能力的测试。
(2)鲁棒性测试:验证系统能否避免干扰和冲突得到稳定而可靠的输出测试,一般需要测试输出电平的稳定性、输出逻辑的确定性及系统抗电磁干扰的能力。
3.3 测试方法与测试环境
白盒测试和黑盒测试是软件测试中的两大方法,在FPGA测试中同样适用。除此之外,由于嵌入式逻辑分析仪的支持,使得灰盒测试在FPGA测试中具有很好的应用前景。
(1)白盒测试是结构性测试方法,根据代码的内部特征设计、选择测试用例。FPGA的白盒测试一般在仿真环境下进行,可分为代码仿真、门级仿真和时序仿真。代码仿真不考虑硬件特性,输出理想情况下源代码执行结果,具有直观、速度快的特点,可以在设计的最初阶段尽早发现问题;门级仿真是针对代码综合后生成的门级网表或是实现后生成的门级模型进行的仿真,可以检验综合或实现后对系统或模块功能的满足性。时序在门级仿真的基础上加入时延文件即时序仿真,时序仿真能够比较真实地反映逻辑的时延与功能,但对于逻辑量大的系统耗时较长。
(2)黑盒测试是一种功能性测试方法,只测试产品对功能、性能等需求的满足性,而不考虑产品的内部结构和处理过程。软件测试中的测试方法和测试环境可以对FPGA中的组合逻辑进行有效的测试。而对于时序逻辑,测试环境还包含了对动态输入、动态数据采集的支持,以及对采集数据的比较分析。在测试用例的设计中,规定系统输入、输出随时间变化的趋势,并对特殊的评价方法和通过准则进行定义。
(3)目前主流的FPGA开发工具都提供了嵌入式逻辑分析仪工具,使得灰盒测试成为了可能。嵌入式逻辑分析仪
- 软件测试术语整理(08-07)
- alpha测试和beta测试(07-01)
- 黑盒测试方法揭密(01-14)
- 完整黑盒测试的五个阶段与操作步骤(01-20)
- LM-STAR 基于NI 软件测试系统节省百万成本(02-27)
- 借助探头和软件测试功能完善各种测试(01-13)