FPGA可编程资源测试技术研究

2018-10-11 08:46张金凤唐金慧马成英
电子元器件与信息技术 2018年7期
关键词:功能模块测试方法器件

张金凤,唐金慧,马成英

(中国航天科工集团第三研究院第三〇三研究所,北京 100074)

0 引言

FPGA即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路领域的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA具有动态配置、可重复编程、通用性强、开发费用低、开发周期短等特点。

随着我国电子行业的飞速发展,越来越多的电路系统采用FPGA芯片来替代传统的ASIC芯片或者中小规模芯片来实现设计,这对电路系统的质量和可靠性提出了更高的要求,只有对FPGA芯片进行全面的测试才能形成对电路系统可靠性的有力保证。

1 FPGA测试结构

FPGA按照工艺来分,大致可分为SRAM型、FLASH型和反熔丝型FPGA。反熔丝型FPGA只能一次性编程;FLASH 型FPGA具有非易失性和重配置性,但它的速度慢,写入周期较长;SRAM型FPGA速度快且具有可重编程能力,但掉电后配置数据消失[1]。正是由于SRAM型FPGA掉电时无法保存数据的特性,就需要通过重复下载和上电后自动配置的过程来实现FPGA的多次配置,从而也加大了测试难度。本文主要对SRAM型FPGA的可编程资源测试技术进行探讨。

SRAM型FPGA从结构上看,主要分为可编程逻辑资源(CLB)、可编程输入输出单元(IOB)、可编程互联资源(IR)、内嵌功能模块(DCM、Multiplier、Block Select RAM)等组成部分。如图1所示。

2 FPGA测试流程

目前国外FPGA制造商对其测试均采用的正向测试方法,即在FPGA的设计过程中其测试代码已经生成,每个型号的FPGA都有其对应的测试程序,能对其各项性能进行完整的测试。由于技术封锁和专利权等问题,作为用户无法获取原始测试代码,也就无法实现对器件的正向测试。国内各检测机构对FPGA的测试基本上采取基于应用的测试技术,即对其功能进行符合性检验,本文也是基于自动化测试系统的功能验证性的测试。测试流程如图2所示。

图2 FPGA测试流程图Fig.2 FPGA testing flow chart

3 FPGA测试技术

FPGA器件内部包含可编程逻辑资源、可编程输入输出单元、可编程互联资源、内嵌功能模块等各个模块,本文主要利用“分治法”对不同的模块组成部分采取不同的测试方法,通过FPGA器件的专用开发软件设计将器件各个模块设计成具有一定功能的逻辑电路,即图2中的设计输入,在设计中将本模块中的资源覆盖全面,并进行功能和时序仿真,然后将设计文件下载至FPGA器件中;然后根据设计的电路功能在ATE测试设备编写对应的测试程序,检验FPGA器件各功能模块是否实现了预期的功能,从而检测FPGA器件该模块的性能。针对不同的模块对FPGA进行多次的配置和测试,从而详尽地考察FPGA各部分可编程资源。下面对FPGA的主要模块部分如何进行设计输入进行详细介绍。

3.1 可编程输入输出单元(IOB)测试

可编程输入输出单元(IOB)分布在FPGA的周围,提供外部封装引脚和内部逻辑之间的接口。每个IOB控制一个封装引脚,可以定义为3种不同的功能:输入、输出和双向,可以实现输入缓冲、输出驱动、接口电平转换等功能。

可编程输入输出单元(IOB)测试考察的是用户可用I/O的各种资源,如输入寄存器、输出寄存器、使能寄存器,测试中要将这些资源进行考察。结合这些特点,测试时可以将I/O口编写为带有各种控制端的双向逻辑电路。

3.2 可编程逻辑资源测试

可编程逻辑资源其核心是可编程逻辑功能块(CLB),CLB由查找表(LUT)模块、两个触发器(DFF)、内部控制逻辑和若干多路选择器(MUX)构成。多路选择器用来实现沿触发和输入数据的选择功能。在测试中,主要判断其构成的组合及时序电路的正确性。

测试CLB的直观而简单的方法就是将CLB的输入输出都和FPGA器件的IO连接起来进行测试,但这一方法的主要问题是FPGA器件的IO和CLB的数量相差悬殊,每配置一次只能测试较少数量的CLB,应用此种方法测试CLB模块将大量增加配置次数和测量时间成本。为减少配置次数和节约时间成本,并将FPGA器件中的CLB进行遍历性测试,测试设计输入可将FPGA的若干个CLB设计一个最小的逻辑单元CLBs,此最小逻辑单元能够实现输出等于输入,便于测试过程中进行跟踪测试,再将上一个CLBs的输出作为下一个CLBs的输入,如此进行多次级连组成一个阵列;这样级连的优点是占用了很少的I/O管脚即测试了 FPGA器件的95%以上的CLB, 如图3所示。

图3 可编程逻辑资源测试示意图Fig.3 Schematic diagram of programmable logic resource testing

3.3 内嵌功能模块测试

FPGA的内嵌功能模块主要有嵌入式存储器(Block Select RAM)、数字锁相环(DCM)、乘法器(Multiplier)等部分。嵌入式存储器是FPGA中的一项重要资源。它的存在可以减少逻辑的应用以及寄存器的应用,同时Embedded RAM作为片上存储器可以提高系统运行速度,降低系统设计难度;数字锁相环主要是对时钟信号进行调整,实现对输入时钟的倍频或分频输出,可编程的延时、提前或相移等功能;乘法器是数字信号处理中重要的基本运算,在很大程度上影响着系统的性能。不同系列不同型号的FPGA内嵌功能模块数目不等,但结构和功能类似,具有灵活的可配置端口。

对内嵌功能模块的测试主要是针对相应的功能设计相应的电路进行验证,如对内嵌Block Select RAM测试,测试设计输入文件将Block Select RAM编写为双口RAM模式进行测试,并将所有的存储器编写为地址、数据共享的双口RAM,通过片选端来控制哪一个存储器的数据输出到I/O口。

3.4 可编程互联资源测试

可编程互连资源连通FPGA内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。FPGA的可编程互联资源由开关矩阵、直接互连以及长线资源组成。连线资源占芯片面积的60%以上,所以其发生故障的概率大大高于逻辑元件。可编程互连资源存在着多种故障模型,每种故障模型都可能会影响FPGA的正常工作。为了尽量发现器件中可能存在的故障,就需要对可编程互连资源进行全面的测试。

对可编程互连资源测试,可以采用内建自测试的方法。内建自测试电路主要由测试图形产生器(TPG)、输出响应分析器(ORA)和待测电路(WUT)组成。由于FPGA的内部有着丰富的逻辑和互连线资源,测试时可使用CLB资源生成测试图形产生器和输出响应分析器,而互连资源作为待测电路。内建自测试有多种基本的方法,常用的有基于计数器的测试方法、基于比较的测试方法、单元自动控制寄存器(CAR)方法和基于线性反馈移位寄存器等方法。根据FPGA互连资源的结构特点,基于奇偶的方法在互连测试中使用更加灵活方便,而且易于连接[2-4]。

4 FPGA测试发展趋势

随着片上系统芯片市场竞争优势的逐渐明显,各大FPGA器件生产厂商也加入了朝着片上系统发展的行列。Xilinx公司在生产的高端FPGA中嵌入了DSP核;Altera公司的Stratix10 FPGA芯片上集成ARM处理器、DSP;Actel公司在其Smart Fusion系列FPGA芯片中也嵌入了12位ADC、MCU、电源管理等功能模块,已经做到了系统芯片。系统的结构与工艺应用于FPGA技术,给FPGA的发展注入了新的活力,同时也给测试技术带来了严峻的考验。

(1)系统内动态可重构。可重构技术可以像软件那样通过编程来配置达到系统内硬件的功能。我们可以利用FPGA的动态可重构特性,通过软硬件相结合的技术,改变FPGA的内部功能,但这种动态可重构的FPGA会带来比较严重的系统内部的延迟。另外,为了满足未来复杂高速电子系统的要求并保证高速系统的稳定,FPGA器件的延时可预测性问题也必须引以重视。由于在进行系统重构的过程中各种延时特性可能因重新布线的改变而发生变化,这样会对高速运行的系统带来巨大的损失。因此,我们必须研究芯片内部延迟的测试方法,比如利用BIST技术对芯片内部的延迟进行测试[5-7]。

(2)高性能内嵌资源核的测试。随着FPGA系统级密度的进一步提升,FPGA内嵌的高性能资源核越来越多,如内嵌DSP核,FPGA与DSP结合实现数字信号处理最显著的特点就是高速性能好[8]。此外,FPGA也嵌入了CPU、ADC、DAC、ARM等一些内核。性能的不断提升使得FPGA的结构已超出了基本架构范围,基本的测试方法也已不能满足这些功能模块的测试,因此,内嵌高性能资源核的测试也是一个值得研究的热点和难点。

(3)测试配置的完备性。FPGA集成度的越来越高,FPGA测试配置的完备性也是FPGA测试不得不考虑的一个问题。文献提出了一种基于配置词典的FPGA测试配置分析评价方法,它通过建立FPGA基本可编程单元的配置词典,给出其完备测试需要的所有配置码;然后采用模板化的方法分析测试配置,计算测试配置对配置词典的覆盖率;最后根据计算的覆盖率评价测试配置的完备性。这种方法一方面可以对FPGA内部各种资源的测试配置完备性进行快速的分析评价,另一方面可以分析测试配置对FPGA内部资源的详细覆盖情况,优化了测试配置的质量,提高了故障覆盖率[9-11]。

FPGA的发展也将会使得FPGA测试技术复杂多样,所以存在着这些测试技术能否真正适应工业发展的需要的问题,这个问题很大程度上取决于软件的发展程度。因为,随着FPGA规模的不断扩大,自动化平台的搭建是不可能大量地依靠人工,所以软件的发展也是FPGA测试发展的一个因素。另外,还要研究能适应多种结构的有效的通用结构模型和故障模型,从而实现针对各种不同结构、模型FPGA的专用和通用测试方法。对于FPGA的测试不单单是把FPGA分成若干部分分别进行测试,还要研究把一个FPGA作为一个整体进行测试的方法,从而达到减少编程次数的目的[12]。

5 结论

本文基于SRAM型FPGA的各个组成模块,对其各可编程资源的测试方法进行了分析,并对FPGA的测试发展进行了展望。本文为研究FPGA的测试技术提供了有力的理论支持,对FPGA测试发展具有深远的意义。

猜你喜欢
功能模块测试方法器件
基于泊松对相关的伪随机数发生器的统计测试方法
基于云计算的软件自动化测试方法
DLD-100C型雷达测试方法和应用
基于ASP.NET标准的采购管理系统研究
输电线路附着物测算系统测算功能模块的研究
对改良的三种最小抑菌浓度测试方法的探讨
M市石油装备公服平台网站主要功能模块设计与实现
旋涂-蒸镀工艺制备红光量子点器件
面向高速应用的GaN基HEMT器件
功能模块的设计与应用研究