基于分层测试的Virtex系列FPGA互联资源测试新方法
FPGA (现场可编程门阵列)作为一种可编程的逻辑器件,以其丰富的逻辑资源和极其灵活的可编程特性越来越受到广大用户的青睐。然而,随着工艺水平的发展和实际应用的需要,FPGA的逻辑门数量已从最初的几千门增加到现在的几千万门,与此同时,FPGA内部资源的复杂度也呈几何级数增长。这势必给FPGA的测试工作带来极大的挑战。如何在有限的时间内完成对整个FPGA的可靠性测试而达到尽可能高的故障覆盖率,已经成为每一个测试工作者迫切需要解决的问题。针对FPCA的测试非常复杂,因为FPGA内部具有大量的逻辑资源和布线资源,在用户使用之前,FPGA的功能是不确定的,用户可以根据自己的需求把FPGA配置成某种特定的逻辑,还可以根据需要反复编程,但其中大部分的资源仍处于闲置状态,这就导致针对FPGA的测试不可能像针对ASIC的测试那样对FPGA能够实现的所有功能进行的穷举性测试。在FPGA中,互联资源相当复杂,对于最新的FPGA器件,80%以上的晶体管都包含在互联资源中,所以对FPCA互联资源的测试成了整个测试工作的核心,为此,本文将专注于FPGA互联资源的测试。
1 FPGA的结构与互联资源的故障模型
FPGA一般由三种可编程电路和一个可用于存储配置数据的SRAM组成,这三种可编程电路分别是:可编程逻辑块CLB(Configurable Logic Block),输入/输出模块IOB (I/O Block)和互联资源IR(Interconnect Resource)。以xilinx公司的Virtex系列FPGA为例,其结构的基本模型如图1所示,该模型是由可编程逻辑块和开关矩阵组成的二维阵列,在每个CLB内部,逻辑模块通过输入输出多路选择器(I/O MUX)与开关矩阵(SM)相连,开关矩阵同时又为FPGA阵列中不同的CLB之间提供水平和垂直的布线通道。根据布线资源跨越CLB个数的不同,我们将其分为三类:单长线(连接相邻开关矩阵,不跨越任何的CLB的布线),六长线(通过一个开关矩阵跨越五个CLB与另一个开关矩阵相连的布线)和全局长线(贯穿整个FPGA的CLB阵列,具有最小延时的布线)。在每个开关矩阵的内部都具有大量的可编程互联点PIPs (programmable interconnec tpoints),每一个可编程互联点都是一个由可编程的SRAM单元控制的传输门晶体管,图2是一个常用的开关矩阵的基本模型,在开关矩阵的每一个边都有四个连接点,每个连接点都可以通过开关矩阵内部的PIP与其它三边相连接,其中虚线代表了所有可能的连接方式,我们可以通过向SRAM加载配置数据的方式来控制PIP传输门晶体管的通断,当向SRAM单元中写“1”的时候传输管导通,相应的连接建立;当向SRAM单元写“0”的时候传输管断开,相应的连接也就随之断开。
在FPGA里面,互联资源的故障大慨可以分为两类:一类是开路故障,一类是短路故障。开路故障又可以分为PIP的常开故障(PIP开关处于永久性的断开状态)和互联线段的断开故障,而短路故障通常由PIP的常闭故障(PIP开关处于永久性的导通状态)和互联线段短路故障组成。另外,我们将互联资源的固定型故障(固定“1”或固定“0”故障)看成是互连线与电源Vcc和地Vdd的短路故障,而不单独加以考虑。如图3所示,显示了互联资源故障模型的基本分类。
2 互联资源的测试
由于FPGA的互联资源极其复杂,故障的种类又极其的繁多,我们根本不可能存一次配置里面兼顾所有的故障类型完成整个互联资源所有模块的完全测试。为此,我们通常采用层次化的思想将整个互联资源按照一定的关系划分为几大类别(或者几大模块)来加以测定,本文根据互联资源中开关矩阵中PIP两端所连互连线段长短的不同来分类进行测试。
2.1 待测资源的分类
为了简化我们的测试,我们根据开关矩阵中PIP两端连线的不同对互联资源进行如下的划分:PIP两端连接的均是单长线(Single-to-Single),PIP两端连接的是六长线(Hex-to-Hex),PIP一端连接六长线另一端连接单长线(Hex-to-Single)。下面我们将主要根据以上划分对互联资源的测试进行研究2.2 Single-to-Single类互联资源的测试Single-to-Single类互联资源是一类由单长线指向单长线的资源,存Virtex系列FPCA中,开关矩阵东(East),南(south),西(west),北(north)四个方向各有24条单长线,其中任意一条单长线部可以与其他三个方向的单长线连接形成Single-to-Single类连线。其结构与XC4000开关矩阵的结构完全相同,其简化模型如图4所示,对于这部分资源我们可以参考传统的3次测试法来进行全覆盖测试,其测试配置图如图5所示。
2.3 Hex-to-Hex类互联资源的测试
Hex-to-Hex类互联资源是一类由六长线指向六长线的资源,在FPCA的测试中,这类资源的测试比Single-to-Single类互联资源要复杂得多。图6显示了Virtex系列FPGA中这类资源的简单连接关系,与单长线类似,每一根六长线都可以通过不同的PIP与其它三个方向的六长线相连接,唯一不同的是,每根六长线都跨越了六个开关矩阵,在每根六长线的中间还产生了一个分支中点。为了避免出现布线的冲突,在我们的布线里面始终坚持单布线通道的原则(即在一次配置中,每条布线路径上不允许分支路径的存在,每一条互连线段具有唯一的入度和出度),因此六长线的分支中点和端点不可能在一次配置里面完成测试。
为了简化Hex-to-Hex类互联资源的测试的研究,我们将对实际的互联资源的情况作如下模型的提取。以Virtex系列FPGA为例,每条六长线都通过五个流入(指PIP的方向指向该六长线)的PIP与其它五根六长线相连,我们称六长线的入度Vi=5,同时也存在五个流出(指该PIP的方向背离该六长线)的PIP与另外五根六长线相连,我们称六长线的出度Vo=5,注意这些PIP分布在六长线中点与端点所在的三个开关矩阵里面,如图7所示,是这一模型的数学简化图型。
在单布线通道的原则下,要求在每一个配置里的任意一条六长线都具有唯一的出度和入度,因此,要实现Hex-to-Hex类互联资源的全覆盖测试至少需要n=5(n≥max{Vi,Vo})次图形配置。
2.4 Hex-to-Single类互联资源的测试
针对这类互联资源,我们主要目标是测试连接single线(单长线)和Hex线(六长线)的PIP,因为对于单长线和六长线我们在Single-to-Single和Hex-to-Hex两类资源的测试中已经覆盖。对于这类资源,我们可以借助CLB单元中的触发器,将这部分资源都与CLB单元中的触发器的输入端相连,通过回读触发器中的数据实现互联资源的测试。其原理如图8所示。在Virtex系列FPGA中,由于每条单长线最多能够同时与两条不同的六长线相连,因此测试这类互联资源的最小配置次数为2。
2.5 最小配置次数与不同测试方法的比较
通过对互联资源的分类,简化了我们对互联资源的测试。由分析可得,我们的方法针对Single-to-Single类互联资源需要3次测试配置,针对Hex-to-Hex类互联资源需要5次测试配置,针对Hex-to-Single类互联资源需要2次测试配置。但是由于我们对互联资源的分类具有层次性,我们可以让针对三类互联资源的测试同时进行而互不影响,也就是说对互联资源测试的总配置次数并不是三类资源单独测试配置次数的总和,而是等于三类资源测试中需要配置最多的一类资源的配置次数,针对本文提到的Virtex系列FPGA,测试整个互联资源的最小配置次数为5次。
为了检验本文提出的测试方法,我们在Xilinx公司的XOVR300-4-CB228上对互联资源进行了全覆盖测试实验,在整个互联资源的测试中一共用到了5个配置图形,与我们的分析相吻合。如图9所示的是Single-to-Single类互联资源的测试图形TCLD。
我们在Virtex系列FPGA的基础上将本文提到的方法与传统方法和论文中提到的方法在覆盖率和最小配置次数方面进行了一个简单的比较。如下表1所列。
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 基于FPGA的快速并行FFT及其在空间太阳望远镜图像锁定系统中的应用(06-21)
- 3DES算法的FPGA高速实现(06-21)
- 用FPGA实现FFT算法(06-21)
- FPGA的DSP性能揭秘(06-16)