SRAM型FPGA的CLB模块测试技术

2015-02-26 09:42王建超顾卫民
电子与封装 2015年8期
关键词:测试程序触发器器件

王建超,陆 锋,顾卫民

(1. 江南大学物联网工程学院,江苏 无锡 214122;2.中国电子科技集团公司第58研究所,江苏 无锡 214035)

1 引言

现场可编程门阵列(Field Programmable Gate Array,FPGA)是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

FPGA主要由可配置逻辑模块(CLB)、可编程连线资源(PI)、输入输出接口模块(IOB)、用于配置的SRAM、BlockRAM和数字延迟锁相环(DLL)等组成,结构十分复杂。国外大规模FPGA电路设计了专用测试结构,由于技术保密,如何测试为厂商机密。因此需要深入研究其测试结构,开发高效的测试程序。

本文所研究的FPGA为Virtex系列FPGA,而实现FPGA器件的主要功能模块是可编程逻辑模块(CLB),每个CLB由4个基本的逻辑单元(LC)构成,一个LC包括4输入函数发生器(LUT)、进位逻辑、存储单元、多路选择器、与门、异或门、函数发生器级联逻辑等子模块。优点在于每个模块都可以组合互用,但如果要用完这些逻辑模块,需要多次配置以改变不同的功能才能实现。针对FPGA 器件可用的 IO 数目有限,本文基于内建自测试实现CLB全面测试,已达到全覆盖测试的目的。

2 FPGA的内建自测试

对于SRAM型FPGA,由于芯片内有着大量重复的可编程逻辑模块。如果对每一个逻辑单元都进行功能例化测试,将会导致测试实例过多而降低测试效率,因而使用内建自测试(BIST)方法来进行逻辑资源覆盖测试。利用 FPGA 的动态可编程特性把FPGA自身的一部分逻辑资源配置成BIST电路来测试剩余逻辑资源,测试完成后再转换角色继续测试直到覆盖所有的逻辑模块,以此来达到降低测试复杂度和减少测试成本的目的。BIST测试的最大优点是无需借助昂贵的自动测试设备,只需使用简单的仪器观察检验电路ORA的输出响应即可。对FPGA进行BIST测试只需很少的管脚,还可以利用边界扫描寄存器,因此测试门槛很低。

内建自测试(BIST)就是在电路内部建立测试生成、施加、分析和测试控制结构使得电路能够自我测试的一种测试方法。利用 FPGA 内的逻辑资源,将 BIST 电路分为3个模块:测试向量生成模块(TPG)、输出结果分析模块(ORA)和被测模块(BUT)。基本测试原理如图 1所示。TPG 模块是根据不同被测模块(BUT)的功能来进行编写的,它主要是产生被测模块的所有输入组合以及在这些组合下被测模块产生的期望输出结果。ORA 模块是一块比较电路,它的输入是被测模块的实际输出和TPG模块的期望输出,通过比较这两个输入来判断被测模块(BUT)的功能是否正确。

图1 BIST基本构造示意图

3 CLB模块的功能测试

为了实现对CLB内部以及CLB对应的三态缓冲器BUFT进行无差别、100%覆盖率的内建自测试,需要对三态缓冲器、触发器、分布式RAM、CLB内部进位链与门、锁存器、算数逻辑、多路选择器MUXF6、移位寄存器进行内建自测试。通过BUFT以及与BUFT相连的FPGA片内总线(长线),将每列CLB输出数据作为一组待测信号,经对应的BUFT连入FPGA片内总线,从而在结构上实现对CLB内部各器件/功能部件无差别、100%覆盖率的测试;同时FPGA内嵌的BLOCKRAM可以用作测试期望结果存储的ROM,这样只要通过一个简单的状态机控制,即可实现对CLB内部器件/功能部件无差别、100%覆盖率的内建自测试。

依据上述途径实现的FPGA内CLB功能内建自测试程序主要由两部分构成:(1)Xilinx原语描述的被测器件结构功能文件;(2)自测试与测试期望值ROM文件。由于Xilinx原语在synthesize/translate/map/place&route过程中,既不会被优化掉,又方便用户对被测器件进行定位约束,所以在被测器件结构功能文件中使用Xilinx原语描述。

3.1 三态缓冲器内建自测试

由于自测试程序不占用三态缓冲器资源,所以使用一段测试向量即可完成对所有BUFT的测试。其功能框图如图2所示。本文所研究的FPGA中含32行50×2列片内BUFTs,每行BUFTs输出数据依据地址译码器的输出值选出2 bits信号D_O,则32行共计64 bits数据D_O;期望值ROM共计2个单元,0地址存放数据64’b0,1地址存放数据64’Hffff_ffff_ffff_ffff。比较器的结果即为ERROR信号,用户可以依据ERROR信号将错误信息记录在err_msg中输出,从而确保一旦发生错误,用户可以依据err_msg定位到BUFT的具体位置(行/列/Slice)。

图2 所有三态缓冲器的内建自测试程序功能框图

3.2 触发器内建自测试

为了保证电路内部的所有触发器全部被测试,按照其物理位置分别约束至Slice0和Slice1,触发器的输入引脚特性包括正沿/负沿触发、同步/异步复位、复位高/低有效初始值0/1、使能端高/低有效,通过该方法实现对CLB内部触发器的功能测试。

3.3 分布式RAM内建自测试

考虑到自测试程序需要占用一定的CLB资源,所以分布式RAM最少也需要两段程序方可确保每个CLB的每个LUT都可以被测试到。所以分两次约束分布式RAM内建自测试程序,第一次将分布式RAM约束到每个CLB的Slice0,第二次约束到Slice1。

此外,为了能够获得更高的故障覆盖率,在自测试程序信号发生器使用March算法。March算法正是针对存储电路开发的测试算法。相对于其他算法,March算法具有更加简洁高效的测试向量及更好的故障覆盖率。该算法覆盖了固定0/1失效、固定开路失效和转换失效、地址失效和字间耦合失效,基于字的March算法表示为:

3.4 CLB内部进位链与门(MULT_AND)内建自测试

与分布式RAM一样,与门也采用分别约束至Slice0、Slice1的方式实现,共计2段码方可实现100%覆盖率的CLB内部触发器的功能测试。

3.5 锁存器内建自测试

电路内部的锁存器按照其物理位置分别约束至Slice0、Slice1,通过该方式实现对CLB内部锁存器(包括对高/低有效选通位)的功能测试,其功能框图见图3。

图3 所有CLB内部D锁存器的内建自测试程序功能框图

3.6 算数逻辑内建自测试

电路内部的算术逻辑按照其物理位置分别约束至Slice0和Slice1内,其测试码共计需要2段。为了确保加法器的进位链不会因综合实现等操作的优化而断开,首先必须用Xilinx原语实现2 bits带进位输入/输出的全加器,其次必须按照规定的进位链顺序将加法器约束至对应的CLB中去。

3.7 多路选择器MUXF6内建自测试

由于电路内部MUXF6的输入全部来自同一个CLB的MUXF5,而每个Slice里只有1个MUXF5,所以不可能依据Slice将该程序分别约束到不同的Slice,这里采用按列方式分为两部分约束,第一段码约束至CLB_RiC1~ CLB_RiC24,第二段码约束至CLB_RiC25~ CLB_RiC48。

3.8 移位寄存器内建自测试

电路内部的移位寄存器按照其物理位置分别约束至Slice0、Slice1,共计需要2段码实现移位寄存器功能的100%故障覆盖率。其功能框图见图4。

图4 移位寄存器内建自测试程序的功能框图

4 结束语

为了对故障屏蔽现象进行有效的控制,必须对BLOCKRAM、BUFT和FPGA片内总线进行测试,所以FPGA中CLB模块内建自测试必须依据固定的顺序进行,否则将因故障屏蔽现象导致测试故障覆盖率有所降低。通过分别对三态缓冲器、触发器、分布式RAM、CLB内部进位链与门、锁存器、算数逻辑、多路选择器MUXF6、移位寄存器进行内建自测试,从而达到了缩短测试时间、全覆盖测试的目的。

[1] Ehsan A toofian, Zainalabed in Navabi. A Test Approach for Look Up Table Based FPGAs [J]. Journal of Computer Science and Technology, 2006.

[2] 李文昌,万理,等. 应用于Virtex系列FPGA的IR-CLB资源的联合测试和诊断[J]. 微电子学与计算机,2014(01):31.

[3] 周涛. SRAM 型 FPGA 的测试技术研究[D]. 成都:电子科技大学,2006. 5-7.

[4] 张凯虹,陆锋,等. DDS自动测试技术研究[J]. 半导体学,2009(03):262-265.

猜你喜欢
测试程序触发器器件
基于Castle型机械手的三温量产测试平台实现
手机APP交互界面人因适合性测试程序的设计与实现
使用触发器,强化安全性
毫米波高频器件高效加工方法
旋涂-蒸镀工艺制备红光量子点器件
电气自动化控制设备可靠性测试探讨
一种加载集总器件的可调三维周期结构
高分辨率遥感相机CCD器件精密热控制
几种常见触发器工作方式的讨论
触发器逻辑功能转换的两种方法