《电子技术应用》

基于分区测试的翻转故障注入方法研究

2017年电子技术应用第8期 作者:王 鹏1,张道阳1,2,芦 浩1,薛茜男1
2017/9/7 11:24:00

王  鹏1,张道阳1,2,芦  浩1,薛茜男1

(1.中国民航大学 天津市民用航空器适航与维修重点实验室,天津300300;

2.中国民航大学 安全科学与工程学院,天津300300)


    摘  要: 针对航空器中SRAM型FPGA的单粒子翻转效应故障注入研究越来越重要的趋势,提出基于分区测试翻转故障注入方法。根据FPGA配置帧的结构特点,对其进行分区测试,分析配置存储器中的敏感位,找到FPGA配置帧中最为敏感的区域。基于动态可重构技术设计了故障注入测试系统,并进行了试验验证。测试结果表明,该方法具有较好的准确率,且能够大大提高翻转故障注入测试的测试效率。

    关键词: 分区测试;故障注入;FPGA;翻转故障

    中图分类号: TN47

    文献标识码: A

    DOI:10.16157/j.issn.0258-7998.170808


    中文引用格式: 王鹏,张道阳,芦浩,等. 基于分区测试的翻转故障注入方法研究[J].电子技术应用,2017,43(8):88-91.

    英文引用格式: Wang Peng,Zhang Daoyang,Lu Hao,et al. The research of flip-flop fault injection method based on partition test[J].Application of Electronic Technique,2017,43(8):88-91.

0 引言

    随着航电技术不断发展,对信号处理能力、处理器及集成电路的要求越来越高,由于SRAM型FPGA具有高性能、可重复编程的特点,使得其在航空领域的应用越来越广泛[1]。航空器在飞行期间,航空电子设备一直处于大气层中的带电粒子辐射环境中,随着应用在航空电子设备中芯片的集成度越来越高,以前主要集中在航天领域的单粒子效应问题,在航空领域出现的几率也越来越高,其中的SRAM型FPGA对大气中带电粒子更是十分敏感,很容易产生单粒子翻转效应[2]。但是在航空领域对单粒子效应的研究却相对较少。欧美航空局方已明确提出[3],应考虑机载电子硬件的翻转故障,并采取相应的措施。因此,对于应用在航空环境中的电子设备,必须要对其进行单粒子翻转效应的测试,确保其设计的可靠性满足要求。

    目前,国内外对基于FPGA的单粒子翻转故障注入测试方法展开了众多研究。国外YOSHIHIRO I等人提出了一种基于帧的局部可重构方法[4],能够快速地对SRAM型FPGA进行故障注入。此外ELYAS A G等人提出一种故障注入框架设计[5],评估FPGA设计的可靠性。国内在该领域起步较晚,但是也已经有了很大的进展。北京航空航天大学的宋凝芳等人设计一种逐位翻转故障注入方法[6],按照逐位进行故障注入,但是逐位翻转会占用许多时间。朱明达等人则提出对SRAM型FPGA进行单粒子翻转的定位故障注入方法[7],但是未能对故障注入后的FPGA设计功能危害性进行评估,因此实际的测试效果还需要进一步分析。

    本文提出一种基于分区测试的翻转故障注入方法,将被测FPGA程序的配置帧分成若干区域,根据Xilinx Virtex的结构特性,采用动态重配置的配置方法,对划分出来的每个区域中的配置帧进行翻转故障注入测试,分析其中每个区域对FPGA功能的影响。

1 故障注入测试系统实现

    本文的故障注入测试系统是基于动态重配置方法实现,总体结构包含硬件部分和软件部分,系统结构如图1所示。

ck5-t1.gif

    故障注入测试系统的硬件部分基于FPGA搭建,硬件平台是整个测试系统的关键部分,承载整个测试系统的运行。故障注入测试系统的硬件设计包括:主控FPGA模块、被测FPGA设计模块、配置数据存储模块、被测设计存储模块。根据动态重配置方法,采用两片FPGA设计,一片FPGA用于控制整个测试系统的运行,采用Altera FPGA Cyclone-III系列EP3C16;另一片FPGA作为被测芯片,采用Xilinx FPGA Virtex-II系列XC2V40。

    主控FPGA模块是故障注入测试系统的核心,该模块用来对被测FPGA模块进行翻转故障注入以及记录被测设计功能出错的错误位,同时与故障注入软件控制模块进行数据交互。被测FPGA设计模块用于加载待测试的FPGA设计,主控FPGA通过SelectMAP方式对被测FPGA进行故障注入。配置数据存储模块,用于存放主控FPGA设计以及被测FPGA设计的prom格式配置文件,上电自动配置对应的FPGA。被测设计存储模块用于存放被测FPGA的.mcs格式配置文件,主控FPGA会根据接收到初始配置数据提取指令,提取该存储模块中的配置数据存放至片外SRAM中。

    故障注入测试系统的软件部分基于LabVIEW平台开发,作为故障注入工具,用来实现故障注入功能,同时也具有故障显示以及数据分析功能,用于控制整个故障注入测试过程,通过串口与主控FPGA相连接进行数据指令交互。其主要功能包括:指令控制、数据分析、测试结果保存、故障显示。

2 故障注入测试及结果分析

2.1 翻转故障被测对象

    本文的被测芯片为Virtex-II XC2V40。实验对两种电路进行单位翻转故障注入测试分析,并且还分别对两种电路进行三模冗余(Triple Modular Redundancy,TMR)加固后重新测试。测试内容分为TMR加固效果测试和对XC2V40的配置存储器进行分类测试。

    采用的被测电路有4个,分别为:移位寄存器电路(Shift)、经过三模冗余设计的移位寄存器电路(Shift_TMR)、FIFO电路(FIFO)和经过三模冗余设计的FIFO电路(FIFO_TMR)。

2.2 翻转故障注入实验

    本次测试主要从3个方面进行考察:(1)被测电路敏感位信息;(2)对FPGA配置帧进行分区测试;(3)TMR加固效果。

    敏感位测试是本次测试的一个重要测试内容,敏感位也即错误位,这些错误位直接导致FPGA程序的功能产生错误。FPGA在受到粒子辐照后,这些内部的能够导致FPGA程序功能出错的敏感位很有可能产生位翻转,而一旦产生翻转则必将对FPGA程序的功能产生影响。因此对一个FPGA程序,其敏感位的确定对于抗辐射设计来说是尤为重要的信息,如果能够知道这些敏感位的准确位置,便可以对这些敏感位所对应的程序进行相关的防护措施,避免FPGA设计的功能产生故障,保证其设计的可靠性。测试程序Shift和shift_TMR的敏感帧地址信息分别如图2和图3所示。

ck5-t2+t3.gif

    通过本故障注入测试系统对Shift、Shift_TMR、FIFO和FIFO_TMR这几个测试程序进行翻转故障注入后,检测到了被测程序的输出与期望的输出结果不一致,这就表明这几个被测程序在故障注入测试过程确实产生功能故障。故障注入测试系统在检测到故障产生的同一时间记录了产生故障的配置位地址信息,表明本设计系统能够对故障进行相对应的记录。图2和图3显示了部分的敏感位地址信息,通过帧地址和该帧中的错误位便可以查询到具体的出错地址。

2.2.1 被测电路的敏感位

    根据上述的测试流程对4个测试电路分别进行翻转故障注入测试,首先对4个测试电路进行全帧故障注入测试,最终的测试结果统计如表1。

ck5-b1.gif

    根据测试得到的数据可以计算出系统的错误率Rerror以及功能失效率λ[7],计算公式如式(1)和式(2):

ck5-gs1-2.gif

    从表1可以看出,引起被测FPGA设计的错误位置分布在不同的区域中,在各个区域中所占的比例也有所不同。

    (1)从表1中统计的错误信息可以看出,经过三模冗余加固的Shift和FIFO设计,其IOB和IOI部分的配置帧错误未能得到改善,并且错误数目以及错误位置没有改变。

    (2)对Shift、Shift_TMR、FIFO和FIFO_TMR这4个被测FPGA设计进行翻转故障注入测试,最终得到的大部分敏感位都在CLB中,GCLK、IOB、IOI、BRAM和BRAM Int这几类帧中只存在少数错误位,CLB中敏感位占全部敏感位的比例分别为93.35%、88.68%、86.84%和70.59%,可见CLB对整个设计的影响是最主要的。从资源的分配来看,CLB所占的比例也是最大,GCLK、IOB和IOI所占的比例很少。结合得到的敏感位置,就三模冗余加固而言,可以忽略GCLK、IOB、IOI、BRAM和BRAM Int这几类帧的影响,重点关注CLB,主要考察该部分帧即可。

    (3)经过三模冗余加固的被测设计,其出错的数目明显少于未经过三模冗余的被测设计,被测shift设计和shift_TMR设计产生的错误分别为189个和53个,其错误率分别为2.04%和0.57%;被测FIFO设计和FIFO_TMR设计产生的错误分别为38个和17个,其错误率分别为0.41%和0.18%;从这些数据可以说明三模的加固效果还是较好的,能够对单位翻转起到一定的防护作用。

2.2.2 分区测试结果

    分区测试是将FPGA中的配置存储器分成若干的不同区域,然后对这些不同的区域单独进行故障注入测试。本测试将配置存储器分为4个区域,如表2所示。通过对配置帧进行分区翻转故障注入测试的测试结果如表3所示。

ck5-b2.gif

ck5-b3.gif

    被测Shift设计的CLB配置存储器中错误位存在于CLB1中,错误的数目为184个;被测shift_TMR设计的CLB配置存储器中错误位存在于CLB1中,其错误数目为47个。

    被测FIFO设计的CLB配置存储器中错误位存在于CLB1和CLB2中,其错误数目分别为19个和14个;被测FIFO_TMR设计的CLB配置存储器中错误位存在于CLB1中,其错误位数为12个。从测试结果可以看出,敏感位主要集中在帧地址范围为30~117帧中。

2.2.3 分区测试法结果分析

    本文提出的分区测试方法,集中测试帧地址范围为30~117帧的区域,并将测得的敏感位数进行拟合计算,拟合结果如式(3):

    ck5-gs3.gif

其中,total1为采用分区测试法得到的敏感位;NCLB1为CLB1中测得的敏感位;NGBI为GBI这几类帧测得的敏感位。

    最终用分区测试法得到的结果total1与总的测试结果total进行比较,如表4所示。

ck5-b4.gif

    表4表明,分区测试法得到的结果与没有进行分区测试法得到的结果非常接近。根据分区测试法,被测Shift设计根据分区测试法得到的结果准确度为100%;被测Shift_TMR设计根据分区测试法得到的结果准确度为98%;被测FIFO设计根据分区测试法得到的结果准确度为63%;被测FIFO_TMR设计根据分区测试法得到的结果准确度为100%。可以看出,采用分区测试法得到的结果能够准确地表示出整个测试结果。

2.3 可靠度曲线

    本文采用常规的TMR来作为防辐射设计。根据式(1)和式(2),通过软件计算得到错误率和失效率。根据得到的失效率计算电路的可靠度R(t),如式(4):

    ck5-gs4.gif

其中,t为时间,R(t)为系统可靠度。

    通过式(4)绘制出被测Shift电路和被测Shift_TMR电路的可靠度曲线,如图4所示。

ck5-t4.gif

    从表1中得知被测Shift设计和Shift_TMR设计的失效率分别为8.32×10-5和2.33×10-5;被测FIFO设计和FIFO_TMR设计的失效率分别为1.67×10-5和7.48×10-6;通过分区测试法计算得到几个测试程序的失效率如表4,被测shift设计和shift_TMR设计的失效率分别为8.32×10-5和2.32×10-5;被测FIFO设计和FIFO_TMR设计的失效率分别为1.07×10-5和7.48×10-6。可以看出采用三模冗余加固设计后的程序其失效率要比未采用三模冗余设计程序的失效率低很多,系统出错的可能性也就低了许多。通过图4看出,分区测试法得到的结果与未经过分区测试法的测得的结果很接近,表明本文提出的分区测试法有着较好的准确性。从可靠度曲线也可以看出,采用三模冗余的FPGA设计的可靠度要高出许多,系统的可靠性更好。

3 结语

    本文基于FPGA动态重配置方法,针对FPGA内部配置帧提出了一种分区测试方法,该方法旨在定位FPGA配置数据中的敏感位,能够帮助程序设计人员更加便捷有效地进行翻转故障注入测试。本文提出的基于分区测试的翻转故障注入方法,能够对FPGA的配置帧划分不同区域进行翻转故障注入测试,发现在不同的FPGA电路设计中其配置数据的分布也是不尽相同。测试结果发现配置帧中GCLK、IOB和IOI这几类帧中的错误位相对较少,也不容易变化,可能与所分配FPGA的管脚有关。在所有的配置帧中,CLB这类帧产生的敏感位最多,通过对CLB分区测试发现敏感位主要集中在CLB1帧中,且GBI中的敏感位数较固定。因此对于本次使用的测试FPGA程序只需对帧地址范围为30~117帧进行翻转故障测试,再进行拟合计算,即可得到被测设计的翻转失效率。该方法既能节约测试时间,也能保证测试结果的准确性。在对两个测试程序进行TMR加固设计后发现,其CLB帧中的敏感位大大减少,错误率和失效率降低许多,程序的可靠性明显提高,说明TMR对CLB帧中的加固有一定作用。

参考文献

[1] BANERJEE P,SANGTANI M,SUR-KOLAY S.Floor planning for partially reconfigurable FPGAs[J].Computer-Aided Design of Integrated Circuits and Systems,IEEE Transactions on,2011,30(1):8-17.

[2] 邓先坤,肖立伊,李家强.SRAM型FPGA的SEU故障注入系统设计[J].微电子学与计算机,2014,31(3):134-137.

[3] RTCA/DO-254.Design assurance guidance for airborne electronic hardware[S].2010.

[4] YOSHIHIRO I,KOHEI T,MOTOKI A.Accelerated evaluation of SEU failure-in-time using frame-based partial reconfiguration[C].Field-Programmable Technology,2012 International Conference on,2013:220-223.

[5] ELYAS A G,ZANA G,SEYED G M.A non-intrusive portable fault injection framework to assess reliability of FPGA-based designs[C].Field-Programmable Technology,2013 International Conference on,2014:398-401.

[6] 宋凝芳,秦姣梅,江云天,等.SRAM型FPGA单粒子效应逐位翻转故障注入方法[J].北京航空航天大学学报,2012,38(10):1285-1289.

[7] 朱明达.SRAM型FPGA单粒子翻转故障定位注入研究[J].电光与控制,2016,23(11):134-137.

[8] YUI C,SWIFT C,CARMICHAEL C.Singel event upset susceptibility testing of the Xilinx Virtex Ⅱ FPGA[C].Military and Aerospace Applications of Programmable Devices and Technologies Conference(MAPLD),2002:212-217.

继续阅读>>