V4系列FPGA全局时钟缓冲器的内建自测试研究*

2017-09-03 10:52董宜平谢达宋林峰周道逵
电子与封装 2017年8期
关键词:缓冲器计数器测试方法

董宜平,谢达,宋林峰,周道逵

(中国电子科技集团公司第五十八研究所,江苏无锡214072)

V4系列FPGA全局时钟缓冲器的内建自测试研究*

董宜平,谢达,宋林峰,周道逵

(中国电子科技集团公司第五十八研究所,江苏无锡214072)

提出一种新的基于V4系列FPGA全局时钟缓冲器的内建自测试方法。目前关键时钟缓冲器内建自测试正面临巨大的挑战,时序问题是目前发现的时钟缓冲器内建自测试的主要问题。由于时钟缓冲器输入端的同步开关会产生不同的相移,使得正常的器件内建自测试中产生故障指示。此外,目前时钟缓冲器内建自测试使用的是普通的布线资源连接时钟信号,而不是使用专用的时钟布线资源,这种方法会加剧时序问题。提出一种改良的方法去解决内建自测试的时序问题,并讨论这种方法对于可测试的最大时钟频率和总测试时间的影响。所有测试环节均在V4系列FPGA上实现。

内建自测试;时钟树

1 引言

内建自测试方法在过去15年里已成为FPGA领域的一个热点话题。其基本要点是配置FPGA使其实现对自身的测试并返回测试结果,通过测试结果可以判断器件是否达到需要的功能和性能。测试完成后,测试逻辑便不复存在,这使得在正常配置特定的功能后没有面积和性能方面的损失。由于其可编程的特性,为保证高覆盖率和测试多模式下运行情况,需要反复多次配置资源。内建自测试BIST方法已被开发用于FPGA的各种主要可编程资源的测试和验证,包括可配置逻辑块(CLB),随机存取存储器(RAM),数字信号处理器(DSP)和输入/输出(I/O)逻辑。

内建自测试方法已经被报道用于测试时钟缓冲器,但是,在使用这种方法的同时也发现:时序问题的存在使得正常的器件通过内建自测试方法测试时会提示测试故障或者测试未通过指示。本文提出一种改良的内建自测试方法用于解决该方法存在的时序问题。

2 内建自测试架构

图1为一个循环对比型FPGA内建自测试构架,使用可编程的逻辑资源(CLB,DSP等)实现若干测试码型发生器(Test Pattern Generator,TPG),输出相应分析仪(Output Response Analyzer,ORA)由CLB实现,而需要被测试的资源(例如CLB,RAM,DSP和IO单元),则被配置成被测试功能块(Blocks Under Test,BUT)。因此,一旦FPGA被离线测试且发现可以正常运行,FPGA就可以被重新编程成需要的系统功能,且在没有面积和性能损失的情况下完成可编程资源的测试。使用多个TPG依次向BUT提供测试信号,这样也可以保证TPG发送错误的测试信号时被及时发现。

图1 循环比较型内建自测试构架

如图1所示,每一个BUT都输出到2个ORA中,并在ORA中和另外相同功能配置的两个BUT输出的值作比较。ORA的内部逻辑结构如图2所示,该模块由一个同或门、一个与门、一个锁存器和一个数据选择器构成;ORA默认输出为0,锁存器默认输出为1,当输入ORA的两个BUT输出不一致时,锁存器锁存的数据为0,并使数据选择器选择0通道输入的数据输出,继而ORA输出的数据为1,这代表被测试的可编程资源存在故障和错误。这种基于比较的ORA结构可以满足所有资源的单字节仅有通过和失败两种测试结果的测试。当存在参考的输出值时,也可以用于可配置存储器的回读校验。

图2 ORA结构

为完成对目前器件的高覆盖率,需要测试的资源必须多次被配置成多种工作模式。每一次内建自测试程序必须依次被下载到FPGA中,且内建自测试结果必须能够确定该器件所测试的功能是否正常;然后周而复始直至完成一个高覆盖率的全部测试内容。使用提高内建自测试方法效率的一个重要途径是尽量减小FPGA配置次数即测试次数,提高单次测试的覆盖率;此外,下载时间也是决定总测试时间的一个重要因素,可以通过使用压缩的配置文件减小下载文件来降低下载配置文件的时间。此外,通过部分可重构技术,只需要改变每一次测试的BUT模块,其他资源保持不变,可以大大减小下载文件的大小和配置时间。

3 全局时钟缓冲器概述

每个Virtex-4器件有32个全局时钟缓冲器(BUFGCTRL)并分布在器件的中心列,这些缓冲器既可以用于驱动专用时钟布线资源也可以用于系统中的其他高扇出信号(例如全局时钟使能信号)。全局时钟缓冲器可以配置成7种不同的模式,其中就包括BUFGCTRL模式。而BUFGCTRL模式是其他6种模式的集合,所有其他全局时钟缓冲器模式均出自对BUFGCTRL的某些配置,所以,对全局时钟缓冲器的内建自测试其实就是针对BUFGCTRL模式的全局时钟缓冲器的测试。如图3所示,每一个缓冲器有8个输入和1个输出。BUFGCTRL具有S0、S1、CE0和CE1 4条选择线。它还有IGNORE0和IGNORE1两条附加控制线路。这6条控制线路用于控制输入I0和I1,BUFGCTRL的设计目的是在两个时钟输入之间切换而不会产生毛刺信号。当目前所选时钟在S0和S1变化后从High转为Low时,输出保持为Low,直到另一(待选)时钟从High转为Low。然后,新的时钟开始驱动输出。BUFGCTRL的默认配置是对下降沿敏感,并且在输入切换之前保持为Low。BUFGCTRL也可以对上升沿敏感,并且在输入切换之前保持为High。

图3 BUFGCTRL模式

在某些应用中,并不需要前述条件。将IGNORE引脚置为有效会忽略BUFGCTRL检测在两个时钟输入之间进行切换的条件。换言之,将IGNORE置为有效会使多路复用器在选择引脚变化的瞬间切换输入。IGNORE0使输出在选择引脚变化时立即切离I0输入,而IGNORE1则使输出在选择引脚变化时立即切离I1输入。

输入时钟的选择需要将一个“选择”对(S0和CE0或者S1和CE1)置为High有效。如果S和CE二者之一未置为High有效,就不会选择所需的输入。在正常操作中,并不希望将S对和CE对二者(全部4条选择线)同时置为High有效。通常仅将“选择”对的一个引脚用作选择线,而将另一引脚固定为High。真值表如表1所示。

表1 时钟资源真值表

虽然S和CE二者都用于选择所需输出,但其中各引脚的行为略有不同。当使用CE切换时钟时,时钟选择的变化会比使用S时更快。违反CE引脚的建立/保持时间会在时钟输出端造成毛刺信号。另一方面,使用S引脚允许用户在两个时钟输入之间切换而无须顾及建立/保持时间,这样不会导致毛刺信号。CE引脚的设计允许从Virtex-II和Virtex-II Pro FPGA向后兼容。

BUFGCTRL的其他功能有:

誗在配置之后但在器件运行之前,预选I0和I1输入。

誗可以将配置后的初始输出选定为High或Low。

誗仅用CE0和CE1(S0和S1固定为High)选择时钟,无须等待预选的时钟从High向Low转换即可改变时钟选择。

4 现有的全局时钟缓冲器内建自测试

现有的针对全局时钟缓冲器在BUFGCTRL模式下的内建自测试如表2所示,该方法可以在对V4系列FPGA进行两次配置后实现对全局时钟缓冲器测试的完全覆盖。每个时钟缓冲器的9个配置选项在第一个内建自测试时钟后检测的结果如表2所示。其他时刻的值通过FPGA内部储存器配置和分析。

这种方法的第一个挑战是:为了减小下载次数和测试次数,必须同时测量32个时钟缓冲器,问题是不但专用时钟树互连线资源与时钟缓冲器是有限的,而且那些时钟树互连线资源连接到一般路由网络,并最终连接到ORA的数据输入的资源也是有限的。如图4,时钟缓冲器产生一个8位的信号并通过专用时钟互连线资源(图4中的加粗线)加载到查找表中,此时查找表(look-up table,LUT)被配置成缓冲器,然后扇出并通过普通互连线资源连接到两个ORA中用于监控每个缓冲输出信号。这些LUT均匀分布在时钟树互连线资源的4个象限中。

表2 时钟缓冲器内建自测试配置

图4 内建自测试的TPG走线

如图5所示,每一个TPG由一个2位的扭环形计数器和一个有限状态机(finite state machine,FSM)构成,这个FSM在扭环计数器的每个周期使能一次,并生成BUFGCTRL六控制端(S0,S1,CE0,CE1、ignore0和ignore1)测试信号,该测试信号的值如表3所示。BUFGCTRL的输入信号I1和I0由扭环形计数器产生,两个信号频率相同,相位相差90°。这样便可以提供4种组合的输入值,同时I0和I1初始化时提供了相反的逻辑值,这是测试配置选项的关键,只能在第一个时钟周期中检测到。

图5 TPG功能框图和I0、I1时序

表3 BUFGCTRL控制端测试数据模型

5 改良的全局时钟缓冲器内建自测试

在实现TPG配置并将程序下载到FPGA时,存在一个无法避免的时序问题。其他一些现有的TPG用于实现6个控制信号的输入,其中包括一个6位二进制计数器,一个6位格雷码计数器和作为一个存储了表3数据的存储器的4位寻址计数器。在内建自测试程序执行足够长的时间后,无论器件是否正常工作,所有这些器件的TPG最终都会产生故障信号。经过多次实验和验证发现,在测试中输入时钟I0和I1需要一个额外的时钟周期以保证当I0和I1均稳定在同一个逻辑值时(I0=I1=0)改变控制输入信号(S[0:1],CE[0: 1],IGNORE[0:1]),如图6所示,在扭环形计数器中添加一个使能信号,逻辑与EN相反,使I0和I1延后一个时钟。这种结构可以产生一个额外的时钟周期,同时可以防止扭环形计数器状态锁定,有了这个额外的时钟周期,我们可以用一个6位格雷码计数器产生26=64个可能的输入值组合,从而避免产生无效的重复输入值以及时序问题。

图6 新的TPG设计方法框图

使用如图6所示的设计方法后,一次完整的内建自测试序列增加到320个时钟周期。这以增加极小的测试时间为代价解决了时序问题,格雷码计数器通过一个格雷码译码电路实现了一个二进制计数器。该解码器电路后添加6个触发器以消除由异或门产生的毛刺。

解决时钟缓冲器内建自测试时序问题另一个需要优化的地方是使用区域时钟缓冲器(BUFR)和专用区域时钟互连线资源驱动TPG和ORA。这种优化可以在同时测试所有的BUFGCTRL时消除时钟布线在通用互连线资源上导致的时序问题。由于BUFR的测试时包含在可编程输入输出(Input Output,IO)逻辑的测试中,故本文不作赘述。

6 在FPGA平台实现新的内建自测试方法及试验结果

改良后的时钟缓冲器的内建自测试在FPGA平台JXCLX25的功能框图如图7所示,图中LX25器件分为12个区域,每个区域时钟资源主要集中在芯片中间列。中间列分布着BUFG、GC、DCM、PMCD及GCLK Nets等全局时钟资源。此外,在IOB、GC周围分布有BUFIO、BUFR等局部时钟资源。每个区域的内建自测试架构由BUT(时钟资源)、ORA(CLB可编程逻辑单元)和TPG(CLB可编程逻辑单元)组成。

在JXCLX60的配置实现如图8所示。实现内建自测试模式只占用很小的空间,各个组件摆放的位置是实现完整布线的关键因素。此外,改进的BIST方法时钟缓冲器不但可以在已有V4系列的产品上实现,还可以在未来推出的V5系列FPGA产品上完全实现。新的测试配置被下载到JXCLX25、JXCLX60电路中并加以验证,在器件运行足够长的时间后也没有出现由于时序问题导致的正常器件出现错误的指示。

图7 时钟的内建BIST在芯片上的功能框图

图8 NCD中TPG和ORA的布局绕线

使用改良后内建自测试和未改良的内建自测试能达到的测试最大工作频率如表4所示,改良后的内建自测试达到的测试频率明显高于未改良时的测试频率,最高提升了45%。

表4 两种内建自测试方法能达到的最大测试频率对比

本文提出的内建自测试方案使得测试频率得到较大的提升,提升效果如图9所示。

图9 两种内建自测试测试频率对比图

改良的内建自测试方案在配置时间上也有提升,这里用压缩的配置时间相对于完整配置时间的比例作为对比参数,新型内建自测试配置时间提升效果如图10所示。

图10 两种内建自测试配置时间提升对比图

7 总结与讨论

本文提出了改进的时钟缓冲器内建自测试方法并在本单位已有的产品上实现,内建自测试适用于所有级别的测试,且该测试过程不影响系统运行的面积和性能。此外,通过在输入的时钟I0和I1添加一个额外的时钟周期以丰富BUFGCTLR的控制输入值,使用区域时钟缓冲器和专用互连线资源连接到TPG和ORA等手段改良内建自测试方法,解决了时序问题,使得器件不会在无故障时出现故障指示,且通过一个格雷码计数器实现了BUFGCTLR控制端64个可能的输入值组合。虽然不能确定每一次改良对于解决时序问题的贡献度,但是若干种改良的组合使得现有的内建自测试方法有了很大的改进。

[1]C Stroud,B Dutton.The First Clock Cycle is a Real BIST [C].Proc.International Conf.on Embedded Systems and Applications,2010:86-92.

[2]L T Wang,C Stroud,N Touba.System-on-Chip Test Architectures[M].Morgan Kaufmann,2008.

[3]S Toutounchi and A Lai,FPGA Test Coverage[C].Proc. IEEE International Test Conf.,2003:1248-1257.

[4]B Dutton et al.,Built-In Self-Test of Configurable Logic Blocks in Virtex-5 FPGAs[C].Proc.IEEE Southeastern Symp.on System Theory,2009:235-240.

[5]B Garrison,et al,Built-In Self-Test of Embedded Programmable Memory Resources in Virtex-4 FPGAs[C]. Proc.International Conf.on Computers and Their Applications,2009:63-68.

[6]M Pulukuri et al.,Built-In Self-Test of Digital Signal Processors in Virtex-4 FPGAs[C].Proc.IEEE Southeastern Symp,on System Theory,2009:34-38.

[7]B Dutton et al.Built-In Self-Test of Programmable Input/Output Tiles in Virtex-5 FPGAs[C].Proc.IEEE Southeastern Symp,on System Theory,2009:235-239.

[8]Virtex-4 FPGA User Guide[EB/OL].UG070(v2.5),Xilinx Inc.,2008.(available at www.xilinx.com)

[9]Virtex-5 FPGA User Guide[EB/OL].UG190(v5.2),Xilinx Inc.,2009.(available at www.xilinx.com)

[10]Virtex-6 Clocking Resources User Guide[EB/OL].UG362 (v1.2),Xilinx Inc.,2010.(available at www.xilinx.com)

[11]Virtex-4 FPGA Configuration User Guide[EB/OL].UG071 (v1.1),Xilinx Inc.,2008.(available at www.xilinx.com)

[12]R Mahmud,An FPGA Primer for ASIC Designers[EB/OL]. EETimes,April,2004.

[13]F Gray,Pulse Code Communication[P].US Patent#2, 632,058,1953.

Study of BIST for FPGA-based Global Clock Buffer

DONG Yiping,XIE Da,SONG Linfeng,ZHOU Daokui
(China Electronic Technology Group Corporation No.58 Research Institute,Wuxi 214072,China)

In the paper,a new built-in self-test method based on V4 series FPGA global clock buffer is presented.The built-in self-test of these critical clock buffers is currently facing a huge challenge while timing issues are principal problems.Due to the synchronous switching of the input terminal of the clock buffer,the utility model can generate a fault indication in the built-in test of the normal device.In addition,the current clock buffer built-in self-test uses universal wiring resources to connect the clock signal rather than dedicated clock routing resources,which will deteriorate the timing problem.An improved method is proposed to solve the problem of timing,and the influence of which on the maximum clock frequency and the total test time is discussed.Alltests are implemented on the V4 series FPGA.

built-in self-test;clock tree

TN407

A

1681-1070(2017)08-0008-05

董宜平(1983—),男,2006年东南大学电子工程学院学士,2011年日本早稻田大学理工学院、系统大规模集成电路专业工学博士,研究方向为基于FPGA的高性能片上网络NoC研究;2012年4月至2014年7月任职于日本日立制作所研究开发中心,从事高精度扫描电子显微镜FPGA控制基板的研究;2014年8月开始任职于中国电子科技集团公司第五十八研究所,从事自主高性能大规模FPGA芯片的研发工作。

2017-5-16

江苏省自然基金青年基金(BK20160202)

猜你喜欢
缓冲器计数器测试方法
基于泊松对相关的伪随机数发生器的统计测试方法
更正
采用虚拟计数器的电子式膜式燃气表
重载货车用缓冲器选型的研究及分析
基于云计算的软件自动化测试方法
DLD-100C型雷达测试方法和应用
对改良的三种最小抑菌浓度测试方法的探讨
计数器竞争冒险及其处理的仿真分析
任意N进制计数器的设计方法
面向TIA和缓冲器应用的毫微微安偏置电流运放可实现500MHz增益带宽