首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

一种FPGA的可编程逻辑单元的全覆盖测试方法

一种FPGA的可编程逻辑单元的全覆盖测试方法

1 引言
            现场可编程门阵列(FPGA)是一种通用器件,包含大量重复的可编程逻辑块(CLB)、输入输出单元(IOB)、可编程互连线(PI)等基本单元。
            FPGA的测试分为2类:生产测试(MTP)和应用测试(ATP)。FPGA的制造厂商采用MTP,因为MTP是覆盖了整个FPGA资源的测试;然而FPGA的使用者更关心ATP,因为他们只关心使用的那部分资源是否有缺陷。例如有人使用了自动测试仪(ATE)和FPGA厂商提供的嵌入式软件测试FPGA。本文研究的是MTP。
            FPGA是一种“事先”无功能的器件,对它的测试需要经历功能配置和故障扫描2个阶段,为了实现高的测试覆盖率,往往需要对FPGA进行多次配置。
            由于FPGA中90%的逻辑功能都是由CLB所实现,所以CLB的测试在FPGA测试中占有重要地位。要完成FPGA中所有CLB的测试,需要多次下载不同的配置图形和进行故障扫描。在过去10年间,有大量的文章研究CLB故障的诊断,例如研究了减少单个CLB的配置次数的算法,但这些算法仅能证明一个CLB内部是否有错误,却不能直接应用于对一个FPGA中的所有CLB进行全覆盖测试,不能发现一个FPGA中发生错误的CLB的具体位置,而这是FPGA制造测试中最需要关注的问题。对于一个FPGA中的CLB的测试,目前有直接测试方法、基于异或门扫描链的测试方法,基于与门和或门扫描链的测试方法、基于阵列的测试方法、基于内建自测试(BIST)的方法等。上述的几种测试方法不能实现对一个FPGA的全部CLB的全覆盖测试,原因是利用FPGA生产厂商的软件,如Xilinx公司的ISE或Ahera公司的Quartus II产生配置图形时,采用的是自动布局布线的功能,不能保证覆盖每一个CLB中的所有器件和端口。
            如果要对FPGA中CLB单元进行全覆盖测试和定位,就必须对一个FPGA中所有CLB单元进行有序的编号,也就是需要软件能够控制FPGA中CLB单元的位置及其单元之间的连线,实现CLB的规则排列。因此,本文通过自主开发的软件(ConPlacement软件)产生规则布局CLB串行移位阵列,在此基础上形成的FPGA定位配置图形,以及FPGA自动定位算法。
        2 FPGA自动测试方法
            2.1 概述

            本文提出的基于SOC软硬件协同技术的FPGA自动测试方法包括软件和硬件两个部分。硬件部分的实现参照文献。软件部分实现了表1中相对应函数的分别调用。一方面,当自动配置时,首先调用ConPlacement函数来实现FPGA中CLB单元按顺序布局和布线,然后调用Function for configurati-on函数来实现对被测试FPGA进行配置,最后调用configuration timing函数来实现配置时序,产生保证能把配置图形成功地下载到被测试FPGA中的时序。当自动故障扫描时,首先调用Function for scan函数来开始故障扫描,然后调用Virtual FPGA-under-test函数和Testbench函数来实现FPGA内部被测试CLB单元的激励的添加,最后调用Function for waveform displaying函数来收集响应数据。另一方面,硬件部分实现了在软件控制下的系统时钟管理、数据通信以及数据管理。这样就实现了连续的对被测试FPGA自动配置、自动施加扫描激励、自动接收输出响应等。综上所述,本文提出的FPGA自动测试方法连续重复地实现了FPGA自动配置和FPGA自动扫描。
            2.2 CLB全覆盖定位测试方法
            要完成CLB全覆盖定位测试方法除了需要上节提到的基于SOC软硬件协同技术的FPGA测试平台及其自动测试和自动扫描技术外,还需要研究如何实现CLB的规则排列以及定位测试算法。

       


            1)如果要对FPGA中CLB错误单元进行定位,就必须对一个FPGA中所有CLB单元进行有序的编号,也就是需要软件能够控制FPGA中CLB单元及其单元之间的连线,实现CLB的规则排列。
            本文提出的CLB全覆盖定位测试方法是基于把所有的被测试CLB串联成一个CLB阵列。由于每一个CLB配置通过5次配置就能够遍历单个CLB单元中所有的资源,所以通过自主开发的软件ConPlacement实现FPGA中所有CLB都有规则排列的配置图形,使其成为一个串行联接的CLB阵列。
            如图1所示,在CLB移位测试链中,把被测试的FPGA的所有LUT(Look Up Table)模块配置成为移位串行链,其输入信号F1~F3为FPGA中所有FLUT的F1~F3的公共输入端,为并行输入信号;F4为串行输入端口,被测试FPGA的第1个CLB的F4接输人信号端口,其他的CLB单元的F4端口接上一个CLB的输出信号Y。对于G—LUT使用相同的连接方法。把被测试的FPGA的所有DFF(D FLIP.FLOP)模块配置成为移位串行链,被测试FPGA的第1个CLB的C1接输入信号端口,把C1接到DFF的输入端,其他的CLB单元的C1端口接上一个CLB的DFF的输出信号YQ。对于另一个DFF使用相同的连接方法。这样就能完成了一个FPGA中所有CLB的配置图形。

       


            2)定位测试算法
            在实现了把FPGA配置成图1的图形后,开始定位测试过程。其方法如下,首先从输入端施加激励,通过时钟信号,把施加的激励在CLB间顺序传递。当发现输出信号出错时,根据输出信号与时钟之间的对应关系,就能定位第几个CLB出错,最后标示出错CLB并且在串行联接的CLB中剔除掉出错CLB和其之后的CLB单元。将输出管脚连接到出错CLB的前一个单元,重新生成配置图形,并进行测试。重复这个过程直到所有的CLB单元都被测试。整个过程如图2所示。

       

继承事业,薪火相传
返回列表