FPGA测试的核心在于检测器件内部的逻辑块、可编程互联线和输入输出块等资源。这个过程分为两个主要步骤:配置FPGA和测试FPGA。配置FPGA是将配置数据下载到FPGA中,使其内部待测资源形成特定结构,以保证测试覆盖率。配置数据,简称TC,对整个测试流程至关重要。而测试FPGA则是施加设计好的测试激励,并收集响应数据,这些测试激励被称为TS。
传统的FPGA测试需要针对不同的资源设计多种配置图形,多次下载到FPGA,并反复施加激励。这显然是一个耗时且复杂的过程。因此,FPGA测试仪器或系统的关键技术在于如何加快单次配置时间,以及如何实现自动重复配置和测试。
通用集成电路自动测试仪ATE通常不适合FPGA测试,因为FPGA在功能测试前需要特定的配置。ATE在测试步骤中配置FPGA时,需要人工或通过电脑编程修改配置数据,生成测试系统能够执行的测试激励。这个过程在配置数据较多时可能变得复杂,难以高效应用于FPGA测试。因此,设计专用的测试平台成为必要。
我们设计的系统实现了快速重复配置和测试的功能。它可以直接引用EDA软件生成的位流文件,而不需要转换成繁杂的测试激励形式。这一点相比ATE有显著优势,为FPGA测试提供了实用的解决方案。
该系统的结构分为软件和硬件两部分。硬件部分包括PCI桥接芯片、FPGA1中的数据接口模块、配置模块、测试模块和被测FPGA。软件部分则包括实现FPGA配置和测试的代码。FPGA1中的各硬件模块通过EDA软件以JTAG接口固化在其中。配置模块负责接收来自PC的配置数据,并产生配置时序,而测试模块则负责发送测试激励和收集响应数据。
系统启动后,首先进行FPGA的数据配置。软件向硬件发送配置开始指令,硬件接收指令后产生配置时序。当软件检测到配置模块的状态寄存器值表示等待数据时,开始发送配置数据。配置完成后,软件通过读取状态寄存器值判断配置是否成功,并决定是否开始测试。如果配置成功,软件则发送测试激励并收集响应数据。根据分析结果,决定是否进行下一轮配置和测试。
软硬件的数据交互通过PCI总线实现。软件通过PCI应用编程接口函数将数据放到总线上,PCI桥接芯片将复杂的PCI信号转化为简单的Local Bus信号。而数据读取通路则相反。在V++6.0环境中,可以通过断点调试发送指令,并通过嵌入式逻辑分析仪SignalTAP II捕捉指令数据和接口模块波形,以监控整个交互过程。
这种高效的测试系统能够显著缩短FPGA测试时间,提高测试效率,对于确保FPGA器件的质量和性能具有重要意义。随着电子技术的不断发展,这样的测试系统将更加不可或缺。
从制造的角度来讲,FPGA测试是指对FPGA器件内部的逻辑块、可编程互联线、输入输出块等资源的检测。完整的FPGA测试包括两步,一是配置FPGA、然后是测试FPGA,配置FPGA是指将FPGA通过将配置数据下载编程使其内部的待测资源连接成一定的结构,在尽可能少的配置次数下保证FPGA内部资源的测试覆盖率,配置数据称为TC,配置FPGA的这部分时间在整个测试流程占很大比例;测试FPGA则是指对待测FPGA施加设计好的测试激励并回收激励,测试激励称为TS。
通常来说,要完成FPGA内部资源的完整测试需要针对不同的待测资源设计多种配置图形,多次下载到FPGA,反复施加激励和回收测试响应,通过对响应数据的分析来诊断故障。因此,用于FPGA测试的仪器或系统的关键技术在于:如何加快单次配置的时间,以节省测试过程中的配置时间开销;如何实现自动重复配置和测试,将FPGA较快速度的在线配置和快速测试结合起来。
由于一般的集成电路自动测试仪ATE为通用IC测试设计,但FPGA测试有上述特殊性,在芯片功能测试之前必须对其进行特定的配置,否则芯片是不具备内部电路结构的,内部资源将无法测试,而通用的ATE要完成测试步骤中的配置功能时,需要以人工或通过电脑专门编程修改配置数据生成测试系统可执行的测试激励形式进行配置,且如果配置数据较多,这个转换过程将可能比较复杂,易用性不强,无法高效地用于FPGA器件的测试中,需要对FPGA测试设计专用的测试平台以满足其配置测试需求。
我们设计的系统实现了快速重复配置和测试的功能,配置数据可以直接引用EDA软件生成的位流文件而不需要像ATE一样转换成繁杂的测试激励形式,相较于ATE有一定的优势,对FPGA测试有一定的使用价值。
FPGA可重复配置和测试系统结构概述
系统框图如图1所示。
图1 可重复配置测试系统结构框图
统功能的实现包括软件和硬件两部分。硬件部分包含PCI桥接芯片、FPGA1中的数据接口模块、配置模块、测试模块和被测FPGA。软件部分包含对实现FPGA配置部分的代码和实现FPGA测试部分的代码。FPGA1中的各硬件模块通过EDA软件以JTAG接口固化FPGA1中,其中FPGA1中的配置模块负责接收来自PC方软件发送的配置数据,并产生对被测FPGA的配置时序,完成配置步骤,测试模块负责发送测试激励和回收被测FPGA的响应数据,等待PC方软件的回收。
系统软硬件交互流程
整个系统通过软硬件的数据交互实现对被测FPGA的自动配置和测试的流程,软硬件交互的流程从图2可以体现:系统启动后,首先需要开始对被测FPGA进行数据配置,由软件向硬件发送配置开始指令,硬件接收指令后对被测FPGA产生配置开始的时序,告诉被测FPGA准备接收配置数据。当软件查询到配置模块中的状态寄存器值代表等待数据时开始发送配置数据。配置数据发送完成后,软件通过读取配置模块的状态寄存器值判断配置是否成功,决定是否可以开始测试。如果配置成功,软件则开始向被测FPGA发送测试激励数据并读回测试响应保存在电脑中,由软件对测试响应进行分析决定是否需要进行下一次配置和测试流程。如果需要,在一定的延时之后软硬件将回复初始状态,并选择新的配置数据和测试数据,开始新一轮的配置后测试流程。
图2 FPGA芯片自动重复下载自动测试系统软硬件交互流程图
软硬件数据交互的通路是PCI总线,软件向FPGA1发送指令或数据时,软件通过PCI应用编程接口函数将数据放到PCI总线上,PCI桥接芯片将较为复杂的PCI接口信号转化为相对简单的Local Bus数据信号,由FPGA1中的接口模块接收并产生相应的动作。而软件向FPGA1读取数据的通路则相反。图3和图4分别是软件在VC++6.0环境中断点调试发送指令和软件向FPGA1发送指令时由嵌入式逻辑分析仪SignalTAP II捕捉到的指令数据和接口模块波形。
图3 VC++6.0环境中断点调试指令发送
图4 嵌入式逻辑分析仪SignalTAP II波形