面向应用的FPGA的延迟故障测试方法及系统
技术领域
本发明涉及延迟故障测试技术领域,特别涉及一种面向应用的FPGA的延迟故障测试方法及系统。
背景技术
FPGA(Field Programmable Gate Array,现场可编程门阵列)具有应用设计开发周期短、可重配置等优点。目前,FPGA不仅被用于原型设计的验证,同时也在众多应用领域的电子系统中被用于实现部分甚至主要功能。而其中某些应用领域,如医疗设备、航空电子等对系统的可靠性有较高的要求,这就使得FPGA的测试对于这些应用具有特殊的重要性。
通常情况下,FPGA应用者为了保证电路的可靠性,会对FPGA中所有资源进行固定故障的测试。但是随着FPGA器件尺寸的不断下降,电路可以运行的频率越来越高,因此测试除了要满足功能正确性的需求外,对性能的需求也日趋提高。所以针对FPGA延迟故障的测试越来越受到人们的重视,延迟故障的测试不仅可以覆盖固定故障模型中的故障,还可以对电路的性能做出最精确的诊断。
现在针对FPGA延迟测试开展的工作已经很多,已经发表的文章对FPGA的延迟测试提出了一些方法。例如2004年7月发表的BISTof delay faults in the logic architecture of symmetrical FPGAs中对FPGA的内部结构模型化,为测试提供了模型基础;1999年9月发表的文章Application-dependent testing of FPGA delay faults中提出一种基于FSM的测试方法,并分别对存在反馈和不存在反馈两种情况进行讨论,同时给出了时间代价的计算方法;Design-specific path delaytesting in lookup-table-based FPGAs中提出了一种基于BIST的FPGA 延迟测试,先将电路所有路径按一定特征分组,然后选取同一组中全部路径利用BIST电路进行测量。文章Application-Dependent DelayTesting of FPGAs给出的一种简化测量的模型,将所有的LUT配置成与门的形式,然后通过施加两次测试向量就可以对全部路径进行测试。现有技术中还存在着FPGA故障覆盖率的统计方法和可靠性衡量方法等内容。上述所有这些方法都有一个共同的局限性,就是他们只能针对纯LUT的逻辑电路进行测试,而不考虑其他固定逻辑单元。在电路规模较小逻辑较简单的情况下,这种测试是有效的。但是通过对一些稍大规模的电路进行布局布线就会发现,其中大量使用了MUX这种固定逻辑单元,并且通过MUX的使用,使得电路的性能得到很好的改善。有些人提出通过闲置LUT实现MUX逻辑,从而替代MUX进行测试,但这种方法会改变电路结构,也会大大降低电路的性能,并不可取。
发明内容
本发明的目的是提供一种在不改变原始设计使用逻辑单元的情况下、对FPGA设计所使用到的逻辑类型不加限制的前提下,故障覆盖率高的面向应用的FPGA的延迟故障测试方法及系统,以克服现有技术的缺陷。
为实现上述目的,本发明采用如下技术方案:
一种面向应用的FPGA的延迟故障测试方法,该方法包括步骤:
S1.按照电路设计要求的时钟周期确定被测的各关键路径,并将所有关键路径按照逻辑级数排序;
S2.以逻辑级数最高的关键路径的终端寄存器为根节点,从所有终端为该寄存器、子节点不属于所述关键路径的路径中选取第二被测路径构成被测电路测试二叉树;
S3.将构成所述测试二叉树的所有被测路径的LUT查找表配置函数修改为MUX多路复用器逻辑函数;
S4.将BIST内建自测电路与所述被测电路相连,并修改网表;
S5.重新读取并下载修改后的网表,检测是否有延迟故障存在;
S6.重复步骤S2-S5,直至所有关键路径均被覆盖,完成测试。
其中,所述关键路径为延迟大于电路设计要求的时钟周期的70%的路径。
其中,所述选取第二被测路径的依据为:当一个节点拥有两个以上的子节点,且子节点为叶节点的情况下,选取延迟较大的叶节点所在路径作为第二被测路径;或当一个节点拥有两个以上的子节点,且子节点不是叶节点的情况下,选取子节点扇入最大的节点所在路径作为第二被测路径。
其中,所述BIST内建自测电路是具有如下功能的电路:
a.其测试激励生成部分可保证测试过程中同时测试被测路径的上升路径延迟故障、下降路径延迟故障以及MUX控制端的转变延迟故障;
b.其控制电路中寄存器的位数等于被测电路中最大延迟路径的逻辑级数;
c.其输出比较器可在外部端口直接观测。
其中,所述LUT配置函数修改为MUX逻辑函数的修改方式为:
F=A1·A3+A2·A3
A1、A2为所述第二被测路径的输入端,A3为所述第二被测路径的控制端,F为该LUT的输出端。
其中,所述BIST电路与所述被测电路相连方式为:所述BIST内建自测电路的测试激励生成端与所述被测电路的输入端相连;所述BIST内建自测电路的输出比较器与所述被测电路的输出端相连;所述BIST内建自测电路的控制电路依次连接MUX的控制端。
其中,所述控制电路为计数器。
其中,所述控制电路依次连接MUX的控制端的连接方式为:所述计数器的高位与所述测试二叉树的根节点控制端相连接;所述计数器的低位与所述测试二叉树的叶节点控制端相连接。
一种面向应用的FPGA的延迟故障测试系统,该系统包括:排序模块,用于将所有关键路径按照逻辑级数排序;构建模块,以逻辑级数最高的关键路径的终端寄存器为根节点,从所有终端为该寄存器、子节点不属于所述关键路径的路径中选取第二被测路径构成被测电路测试二叉树;转换模块,将构成所述测试二叉树的所有被测路径的LUT查找表配置函数修改为MUX多路复用器逻辑函数;连接模块,将BIST内建自测电路与被测电路相连,并修改网表;检测模块,重新读取并下载修改后的网表,检测是否有延迟故障存在;控制模块,控制所述构建模块、转换模块、连接模块以及检测模块循环执行其动作,直至所有关键路径均被覆盖,完成测试。
有益效果:
1、通过在测试配置中将FPGA设计中所使用到的LUT配制成2选1多路复用器,提高了被测电路的可控制性;
2、构建了一种无故障传播障碍的MUX阵列测试模式,简化了测试激励生成步骤,节约测试成本;
3、设计通用BIST测试方法和测试电路,完成应用电路中所有关键路径上延迟故障的精确测试,可以对延迟故障发生路径准确定位;
4、同时给出了优化的测试顺序和测试组选择方法,可以用最少的配置次数测试到尽可能多的路径,提高测试效率;
5、给出了故障测试覆盖率和测试效率的估算方法,为完整测试时间代价估算提供了理论依据;
6、BIST电路规模小,配置简单,故障覆盖率高,无附加成本。
附图说明
图1为本发明的面向应用的FPGA的延迟故障测试方法流程图;
图2为二叉树示意图;
图3为非纯LUT部分示意图;
图4为LUT配置示意图;
图5为测试激励生成信号图;
图6为控制电路与被测电路连接图;
图7为BIST电路与被测电路连接关系图;
图8为本发明的面向应用的FPGA的延迟故障测试系统构成图。
具体实施方式
本发明提出的面向应用的FPGA的延迟故障测试方法及系统,结合附图和实施例说明如下。
如图1所示,本发明的面向应用的FPGA的延迟故障测试方法,首先,需按照电路设计要求的时钟频率确定关键路径,所有路径延迟大于时钟周期70%的路径均定义为关键路径。再进行如下步骤
S1.按照电路设计要求的时钟周期确定被测的各关键路径,并将所有关键路径按照逻辑级数排序;
S2.以逻辑级数最高的关键路径的终端寄存器为根节点,标记该终端寄存器为已测,从所有终端为该寄存器、子节点不属于该关键路径的路径中选取第二被测路径构成被测电路测试二叉树,选择依据为:
当一个节点拥有两个以上的子节点,且子节点为叶节点的情况下,选取延迟较大的叶节点所在路径作为第二被测路径;或
当一个节点拥有两个以上的子节点,且子节点不是叶节点的情况下,选取子节点扇入最大的节点所在路径作为第二被测路径。
如图2所示,假设选取路径ABCD作为关键路径,首先可以确定路径ABCE与ABF为两条同时被测试的路径,它们与关键路径拥有共同的输出端,且每级逻辑的输入数都是2。由于A有三个输入端,因此除了B已经被选定外,只能在M和G中选取一个。因为B和G都不是叶节点,因此按照上述的选择依据,选取扇入大的节点作为第二被测 路径。可以看到,M的扇入数为1,G的扇入数为3,因此,选取G节点作为A的另一个输入端。这样选取的好处有两个,首先,在FPGA中,扇入多的节点输入并联电容大,电容大则延迟时间长,因此可以测试到延迟更长的电路。同时,由于扇入多,可供选择的路径也多,可以在一次配置中测试到更多的路径。确定G节点后,由于G节点同样拥有3个扇入端,因此首先选取扇入大的H节点,然后选取延迟时间长的K节点(假设GK的延迟时间大于GL)。这样一来,就构建了与关键路径ABCD相关联的被测二叉树。
S3.将构成被测电路测试二叉树的被测路径中所有路径的LUT(look-upTable,查找表)配置函数修改为MUX(Multiplexer,多路复用器)逻辑函数,修改方式为:
F=A1·A3+A2·A3
其中,A1、A2为第二被测路径的输入端,A3为第二被测路径的控制端,F为该LUT的输出端。
如图3所示,在测试二叉树中,节点不仅包含LUT,也同样可以包含MUX,将所有可配置的LUT都转换成MUX,如图4所示,在配置过程中,需要按照上述路径选取依据进行配置,例如A1,A2端所在的路径在二叉树中,则应将A1,A2配置成路径输入端,A3或A4配置为控制端。
S4.设计BIST(Built-in Self Test,内建自测)电路,并将BIST电路与该被测路径相连,构成完整的测试环境,并利用xdl工具修改网表,网表就是包含所有电路信息并以文本形式展示的文件,包含逻辑方程式和连接关系,FPGA中的网表与一般电路网表不同,只能通过xdl工具修改,网表的建立由设计工具ISE自动完成。
BIST电路包含三部分:测试激励生成、控制电路和测试比较。测试比较由一个异或门完成,如果测试到延迟故障,则输出高电平。测试激励生成要求生成的信号如图5所示,其中,clk为系统时钟信 号,path1为MUX第一个输入端被施加的信号,path2表示MUX第二个输入端被施加的信号,ctr为MUX的控制信号,ctr=0时,即路径1被选中,这时路径1的上升跳变延迟将被传播到MUX输出端,在这个时钟周期内完成路径1的上升跳变延迟故障测试。同理的,第3个时钟周期完成路径1的下降跳变延迟故障测试,第5个时钟周期完成路径2的上升跳变延迟故障测试,第7个时钟周期完成路径2的下降跳变延迟故障测试。在第4个时钟周期,路径1上的信号稳定在0,路径2的信号稳定在1,当MUX的控制端有变化发生时,由原来的路径1被选中转变为路径2被选中,因此输出端将随着控制端的变化而变化,即在第4个时钟周期完成对控制端的延迟故障测试,所以,对这样一对路径进行完整的测试总共需要7个时钟周期。控制电路由一个计数器构成,其连接方式如图6所示,计数器的高位与被测二叉树的根节点的控制端连接,低位与叶节点的控制端连接,通过计数器可以在每增加1个测试单位时间时测试一条路径,同时也可以对延迟故障进行准确定位。
所设计的BIST电路具有如下功能:
a.其测试激励生成部分可保证测试过程中同时测试被测路径的上升路径延迟故障、下降路径延迟故障以及MUX控制端的转变延迟故障;
b.其控制电路中寄存器的位数等于被测电路中最大延迟路径的逻辑级数;
c.其输出比较器可在外部端口直接观测。
如图7所示,BIST电路与该被测电路相连的方式如下:
BIST电路的测试激励生成端与被测电路的输入端相连;
BIST电路的输出比较器与被测电路输出端相连;
BIST电路的控制电路依次连接MUX的控制端。
S5.设计工具ISE重新读取并下载修改后的同时包含BIST电路和 被测电路的网表,通过chipscope工具检测是否有延迟故障存在;
S6.针对所有关键路径重复步骤S2-S5,测试中如果遇到已经标记过的寄存器,则跳过该路径,直至所有关键路径均被覆盖,完成测试。
这种面向应用的FPGA测试方法,对于初始设计中所使用到的逻辑类型没有限制,而且它无需复杂的测试激励生成步骤,即可有效地检测出初始设计配置中所使用到的资源中的故障,是一种实际可行而且有效的测试方法。
本发明还提供了一种面向应用的FPGA的延迟故障测试系统,如图8所示,该系统包括:排序模块,用于按照电路设计要求的时钟周期确定被测的各关键路径,并将所有关键路径按照逻辑级数排序;构建模块,以逻辑级数最高的关键路径的终端寄存器为根节点,从所有终端为该寄存器、子节点与所述关键路径不同的路径中选取第二被测路径构建被测电路测试二叉树;转换模块,将构成所述测试二叉树的所有被测路径的LUT查找表配置函数修改为MUX多路径复用器逻辑函数;连接模块,将BIST电路与被测电路相连,并修改网表;检测模块,将修改后的网表重新读取并下载,检测是否有延迟故障存在;控制模块,控制所述构建模块、转换模块、连接模块以及检测模块循环执行其动作,直至所有关键路径均被覆盖,完成测试。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。