文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.170808
中文引用格式: 王鵬,張道陽(yáng),蘆浩,等. 基于分區(qū)測(cè)試的翻轉(zhuǎn)故障注入方法研究[J].電子技術(shù)應(yīng)用,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 引言
隨著航電技術(shù)不斷發(fā)展,對(duì)信號(hào)處理能力、處理器及集成電路的要求越來(lái)越高,由于SRAM型FPGA具有高性能、可重復(fù)編程的特點(diǎn),使得其在航空領(lǐng)域的應(yīng)用越來(lái)越廣泛[1]。航空器在飛行期間,航空電子設(shè)備一直處于大氣層中的帶電粒子輻射環(huán)境中,隨著應(yīng)用在航空電子設(shè)備中芯片的集成度越來(lái)越高,以前主要集中在航天領(lǐng)域的單粒子效應(yīng)問題,在航空領(lǐng)域出現(xiàn)的幾率也越來(lái)越高,其中的SRAM型FPGA對(duì)大氣中帶電粒子更是十分敏感,很容易產(chǎn)生單粒子翻轉(zhuǎn)效應(yīng)[2]。但是在航空領(lǐng)域?qū)瘟W有?yīng)的研究卻相對(duì)較少。歐美航空局方已明確提出[3],應(yīng)考慮機(jī)載電子硬件的翻轉(zhuǎn)故障,并采取相應(yīng)的措施。因此,對(duì)于應(yīng)用在航空環(huán)境中的電子設(shè)備,必須要對(duì)其進(jìn)行單粒子翻轉(zhuǎn)效應(yīng)的測(cè)試,確保其設(shè)計(jì)的可靠性滿足要求。
目前,國(guó)內(nèi)外對(duì)基于FPGA的單粒子翻轉(zhuǎn)故障注入測(cè)試方法展開了眾多研究。國(guó)外YOSHIHIRO I等人提出了一種基于幀的局部可重構(gòu)方法[4],能夠快速地對(duì)SRAM型FPGA進(jìn)行故障注入。此外ELYAS A G等人提出一種故障注入框架設(shè)計(jì)[5],評(píng)估FPGA設(shè)計(jì)的可靠性。國(guó)內(nèi)在該領(lǐng)域起步較晚,但是也已經(jīng)有了很大的進(jìn)展。北京航空航天大學(xué)的宋凝芳等人設(shè)計(jì)一種逐位翻轉(zhuǎn)故障注入方法[6],按照逐位進(jìn)行故障注入,但是逐位翻轉(zhuǎn)會(huì)占用許多時(shí)間。朱明達(dá)等人則提出對(duì)SRAM型FPGA進(jìn)行單粒子翻轉(zhuǎn)的定位故障注入方法[7],但是未能對(duì)故障注入后的FPGA設(shè)計(jì)功能危害性進(jìn)行評(píng)估,因此實(shí)際的測(cè)試效果還需要進(jìn)一步分析。
本文提出一種基于分區(qū)測(cè)試的翻轉(zhuǎn)故障注入方法,將被測(cè)FPGA程序的配置幀分成若干區(qū)域,根據(jù)Xilinx Virtex的結(jié)構(gòu)特性,采用動(dòng)態(tài)重配置的配置方法,對(duì)劃分出來(lái)的每個(gè)區(qū)域中的配置幀進(jìn)行翻轉(zhuǎn)故障注入測(cè)試,分析其中每個(gè)區(qū)域?qū)PGA功能的影響。
1 故障注入測(cè)試系統(tǒng)實(shí)現(xiàn)
本文的故障注入測(cè)試系統(tǒng)是基于動(dòng)態(tài)重配置方法實(shí)現(xiàn),總體結(jié)構(gòu)包含硬件部分和軟件部分,系統(tǒng)結(jié)構(gòu)如圖1所示。
故障注入測(cè)試系統(tǒng)的硬件部分基于FPGA搭建,硬件平臺(tái)是整個(gè)測(cè)試系統(tǒng)的關(guān)鍵部分,承載整個(gè)測(cè)試系統(tǒng)的運(yùn)行。故障注入測(cè)試系統(tǒng)的硬件設(shè)計(jì)包括:主控FPGA模塊、被測(cè)FPGA設(shè)計(jì)模塊、配置數(shù)據(jù)存儲(chǔ)模塊、被測(cè)設(shè)計(jì)存儲(chǔ)模塊。根據(jù)動(dòng)態(tài)重配置方法,采用兩片F(xiàn)PGA設(shè)計(jì),一片F(xiàn)PGA用于控制整個(gè)測(cè)試系統(tǒng)的運(yùn)行,采用Altera FPGA Cyclone-III系列EP3C16;另一片F(xiàn)PGA作為被測(cè)芯片,采用Xilinx FPGA Virtex-II系列XC2V40。
主控FPGA模塊是故障注入測(cè)試系統(tǒng)的核心,該模塊用來(lái)對(duì)被測(cè)FPGA模塊進(jìn)行翻轉(zhuǎn)故障注入以及記錄被測(cè)設(shè)計(jì)功能出錯(cuò)的錯(cuò)誤位,同時(shí)與故障注入軟件控制模塊進(jìn)行數(shù)據(jù)交互。被測(cè)FPGA設(shè)計(jì)模塊用于加載待測(cè)試的FPGA設(shè)計(jì),主控FPGA通過(guò)SelectMAP方式對(duì)被測(cè)FPGA進(jìn)行故障注入。配置數(shù)據(jù)存儲(chǔ)模塊,用于存放主控FPGA設(shè)計(jì)以及被測(cè)FPGA設(shè)計(jì)的prom格式配置文件,上電自動(dòng)配置對(duì)應(yīng)的FPGA。被測(cè)設(shè)計(jì)存儲(chǔ)模塊用于存放被測(cè)FPGA的.mcs格式配置文件,主控FPGA會(huì)根據(jù)接收到初始配置數(shù)據(jù)提取指令,提取該存儲(chǔ)模塊中的配置數(shù)據(jù)存放至片外SRAM中。
故障注入測(cè)試系統(tǒng)的軟件部分基于LabVIEW平臺(tái)開發(fā),作為故障注入工具,用來(lái)實(shí)現(xiàn)故障注入功能,同時(shí)也具有故障顯示以及數(shù)據(jù)分析功能,用于控制整個(gè)故障注入測(cè)試過(guò)程,通過(guò)串口與主控FPGA相連接進(jìn)行數(shù)據(jù)指令交互。其主要功能包括:指令控制、數(shù)據(jù)分析、測(cè)試結(jié)果保存、故障顯示。
2 故障注入測(cè)試及結(jié)果分析
2.1 翻轉(zhuǎn)故障被測(cè)對(duì)象
本文的被測(cè)芯片為Virtex-II XC2V40。實(shí)驗(yàn)對(duì)兩種電路進(jìn)行單位翻轉(zhuǎn)故障注入測(cè)試分析,并且還分別對(duì)兩種電路進(jìn)行三模冗余(Triple Modular Redundancy,TMR)加固后重新測(cè)試。測(cè)試內(nèi)容分為TMR加固效果測(cè)試和對(duì)XC2V40的配置存儲(chǔ)器進(jìn)行分類測(cè)試。
采用的被測(cè)電路有4個(gè),分別為:移位寄存器電路(Shift)、經(jīng)過(guò)三模冗余設(shè)計(jì)的移位寄存器電路(Shift_TMR)、FIFO電路(FIFO)和經(jīng)過(guò)三模冗余設(shè)計(jì)的FIFO電路(FIFO_TMR)。
2.2 翻轉(zhuǎn)故障注入實(shí)驗(yàn)
本次測(cè)試主要從3個(gè)方面進(jìn)行考察:(1)被測(cè)電路敏感位信息;(2)對(duì)FPGA配置幀進(jìn)行分區(qū)測(cè)試;(3)TMR加固效果。
敏感位測(cè)試是本次測(cè)試的一個(gè)重要測(cè)試內(nèi)容,敏感位也即錯(cuò)誤位,這些錯(cuò)誤位直接導(dǎo)致FPGA程序的功能產(chǎn)生錯(cuò)誤。FPGA在受到粒子輻照后,這些內(nèi)部的能夠?qū)е翭PGA程序功能出錯(cuò)的敏感位很有可能產(chǎn)生位翻轉(zhuǎn),而一旦產(chǎn)生翻轉(zhuǎn)則必將對(duì)FPGA程序的功能產(chǎn)生影響。因此對(duì)一個(gè)FPGA程序,其敏感位的確定對(duì)于抗輻射設(shè)計(jì)來(lái)說(shuō)是尤為重要的信息,如果能夠知道這些敏感位的準(zhǔn)確位置,便可以對(duì)這些敏感位所對(duì)應(yīng)的程序進(jìn)行相關(guān)的防護(hù)措施,避免FPGA設(shè)計(jì)的功能產(chǎn)生故障,保證其設(shè)計(jì)的可靠性。測(cè)試程序Shift和shift_TMR的敏感幀地址信息分別如圖2和圖3所示。
通過(guò)本故障注入測(cè)試系統(tǒng)對(duì)Shift、Shift_TMR、FIFO和FIFO_TMR這幾個(gè)測(cè)試程序進(jìn)行翻轉(zhuǎn)故障注入后,檢測(cè)到了被測(cè)程序的輸出與期望的輸出結(jié)果不一致,這就表明這幾個(gè)被測(cè)程序在故障注入測(cè)試過(guò)程確實(shí)產(chǎn)生功能故障。故障注入測(cè)試系統(tǒng)在檢測(cè)到故障產(chǎn)生的同一時(shí)間記錄了產(chǎn)生故障的配置位地址信息,表明本設(shè)計(jì)系統(tǒng)能夠?qū)收线M(jìn)行相對(duì)應(yīng)的記錄。圖2和圖3顯示了部分的敏感位地址信息,通過(guò)幀地址和該幀中的錯(cuò)誤位便可以查詢到具體的出錯(cuò)地址。
2.2.1 被測(cè)電路的敏感位
根據(jù)上述的測(cè)試流程對(duì)4個(gè)測(cè)試電路分別進(jìn)行翻轉(zhuǎn)故障注入測(cè)試,首先對(duì)4個(gè)測(cè)試電路進(jìn)行全幀故障注入測(cè)試,最終的測(cè)試結(jié)果統(tǒng)計(jì)如表1。
根據(jù)測(cè)試得到的數(shù)據(jù)可以計(jì)算出系統(tǒng)的錯(cuò)誤率Rerror以及功能失效率λ[7],計(jì)算公式如式(1)和式(2):
從表1可以看出,引起被測(cè)FPGA設(shè)計(jì)的錯(cuò)誤位置分布在不同的區(qū)域中,在各個(gè)區(qū)域中所占的比例也有所不同。
(1)從表1中統(tǒng)計(jì)的錯(cuò)誤信息可以看出,經(jīng)過(guò)三模冗余加固的Shift和FIFO設(shè)計(jì),其IOB和IOI部分的配置幀錯(cuò)誤未能得到改善,并且錯(cuò)誤數(shù)目以及錯(cuò)誤位置沒有改變。
(2)對(duì)Shift、Shift_TMR、FIFO和FIFO_TMR這4個(gè)被測(cè)FPGA設(shè)計(jì)進(jìn)行翻轉(zhuǎn)故障注入測(cè)試,最終得到的大部分敏感位都在CLB中,GCLK、IOB、IOI、BRAM和BRAM Int這幾類幀中只存在少數(shù)錯(cuò)誤位,CLB中敏感位占全部敏感位的比例分別為93.35%、88.68%、86.84%和70.59%,可見CLB對(duì)整個(gè)設(shè)計(jì)的影響是最主要的。從資源的分配來(lái)看,CLB所占的比例也是最大,GCLK、IOB和IOI所占的比例很少。結(jié)合得到的敏感位置,就三模冗余加固而言,可以忽略GCLK、IOB、IOI、BRAM和BRAM Int這幾類幀的影響,重點(diǎn)關(guān)注CLB,主要考察該部分幀即可。
(3)經(jīng)過(guò)三模冗余加固的被測(cè)設(shè)計(jì),其出錯(cuò)的數(shù)目明顯少于未經(jīng)過(guò)三模冗余的被測(cè)設(shè)計(jì),被測(cè)shift設(shè)計(jì)和shift_TMR設(shè)計(jì)產(chǎn)生的錯(cuò)誤分別為189個(gè)和53個(gè),其錯(cuò)誤率分別為2.04%和0.57%;被測(cè)FIFO設(shè)計(jì)和FIFO_TMR設(shè)計(jì)產(chǎn)生的錯(cuò)誤分別為38個(gè)和17個(gè),其錯(cuò)誤率分別為0.41%和0.18%;從這些數(shù)據(jù)可以說(shuō)明三模的加固效果還是較好的,能夠?qū)挝环D(zhuǎn)起到一定的防護(hù)作用。
2.2.2 分區(qū)測(cè)試結(jié)果
分區(qū)測(cè)試是將FPGA中的配置存儲(chǔ)器分成若干的不同區(qū)域,然后對(duì)這些不同的區(qū)域單獨(dú)進(jìn)行故障注入測(cè)試。本測(cè)試將配置存儲(chǔ)器分為4個(gè)區(qū)域,如表2所示。通過(guò)對(duì)配置幀進(jìn)行分區(qū)翻轉(zhuǎn)故障注入測(cè)試的測(cè)試結(jié)果如表3所示。
被測(cè)Shift設(shè)計(jì)的CLB配置存儲(chǔ)器中錯(cuò)誤位存在于CLB1中,錯(cuò)誤的數(shù)目為184個(gè);被測(cè)shift_TMR設(shè)計(jì)的CLB配置存儲(chǔ)器中錯(cuò)誤位存在于CLB1中,其錯(cuò)誤數(shù)目為47個(gè)。
被測(cè)FIFO設(shè)計(jì)的CLB配置存儲(chǔ)器中錯(cuò)誤位存在于CLB1和CLB2中,其錯(cuò)誤數(shù)目分別為19個(gè)和14個(gè);被測(cè)FIFO_TMR設(shè)計(jì)的CLB配置存儲(chǔ)器中錯(cuò)誤位存在于CLB1中,其錯(cuò)誤位數(shù)為12個(gè)。從測(cè)試結(jié)果可以看出,敏感位主要集中在幀地址范圍為30~117幀中。
2.2.3 分區(qū)測(cè)試法結(jié)果分析
本文提出的分區(qū)測(cè)試方法,集中測(cè)試幀地址范圍為30~117幀的區(qū)域,并將測(cè)得的敏感位數(shù)進(jìn)行擬合計(jì)算,擬合結(jié)果如式(3):
其中,total1為采用分區(qū)測(cè)試法得到的敏感位;NCLB1為CLB1中測(cè)得的敏感位;NGBI為GBI這幾類幀測(cè)得的敏感位。
最終用分區(qū)測(cè)試法得到的結(jié)果total1與總的測(cè)試結(jié)果total進(jìn)行比較,如表4所示。
表4表明,分區(qū)測(cè)試法得到的結(jié)果與沒有進(jìn)行分區(qū)測(cè)試法得到的結(jié)果非常接近。根據(jù)分區(qū)測(cè)試法,被測(cè)Shift設(shè)計(jì)根據(jù)分區(qū)測(cè)試法得到的結(jié)果準(zhǔn)確度為100%;被測(cè)Shift_TMR設(shè)計(jì)根據(jù)分區(qū)測(cè)試法得到的結(jié)果準(zhǔn)確度為98%;被測(cè)FIFO設(shè)計(jì)根據(jù)分區(qū)測(cè)試法得到的結(jié)果準(zhǔn)確度為63%;被測(cè)FIFO_TMR設(shè)計(jì)根據(jù)分區(qū)測(cè)試法得到的結(jié)果準(zhǔn)確度為100%。可以看出,采用分區(qū)測(cè)試法得到的結(jié)果能夠準(zhǔn)確地表示出整個(gè)測(cè)試結(jié)果。
2.3 可靠度曲線
本文采用常規(guī)的TMR來(lái)作為防輻射設(shè)計(jì)。根據(jù)式(1)和式(2),通過(guò)軟件計(jì)算得到錯(cuò)誤率和失效率。根據(jù)得到的失效率計(jì)算電路的可靠度R(t),如式(4):
其中,t為時(shí)間,R(t)為系統(tǒng)可靠度。
通過(guò)式(4)繪制出被測(cè)Shift電路和被測(cè)Shift_TMR電路的可靠度曲線,如圖4所示。
從表1中得知被測(cè)Shift設(shè)計(jì)和Shift_TMR設(shè)計(jì)的失效率分別為8.32×10-5和2.33×10-5;被測(cè)FIFO設(shè)計(jì)和FIFO_TMR設(shè)計(jì)的失效率分別為1.67×10-5和7.48×10-6;通過(guò)分區(qū)測(cè)試法計(jì)算得到幾個(gè)測(cè)試程序的失效率如表4,被測(cè)shift設(shè)計(jì)和shift_TMR設(shè)計(jì)的失效率分別為8.32×10-5和2.32×10-5;被測(cè)FIFO設(shè)計(jì)和FIFO_TMR設(shè)計(jì)的失效率分別為1.07×10-5和7.48×10-6??梢钥闯霾捎萌H哂嗉庸淘O(shè)計(jì)后的程序其失效率要比未采用三模冗余設(shè)計(jì)程序的失效率低很多,系統(tǒng)出錯(cuò)的可能性也就低了許多。通過(guò)圖4看出,分區(qū)測(cè)試法得到的結(jié)果與未經(jīng)過(guò)分區(qū)測(cè)試法的測(cè)得的結(jié)果很接近,表明本文提出的分區(qū)測(cè)試法有著較好的準(zhǔn)確性。從可靠度曲線也可以看出,采用三模冗余的FPGA設(shè)計(jì)的可靠度要高出許多,系統(tǒng)的可靠性更好。
3 結(jié)語(yǔ)
本文基于FPGA動(dòng)態(tài)重配置方法,針對(duì)FPGA內(nèi)部配置幀提出了一種分區(qū)測(cè)試方法,該方法旨在定位FPGA配置數(shù)據(jù)中的敏感位,能夠幫助程序設(shè)計(jì)人員更加便捷有效地進(jìn)行翻轉(zhuǎn)故障注入測(cè)試。本文提出的基于分區(qū)測(cè)試的翻轉(zhuǎn)故障注入方法,能夠?qū)PGA的配置幀劃分不同區(qū)域進(jìn)行翻轉(zhuǎn)故障注入測(cè)試,發(fā)現(xiàn)在不同的FPGA電路設(shè)計(jì)中其配置數(shù)據(jù)的分布也是不盡相同。測(cè)試結(jié)果發(fā)現(xiàn)配置幀中GCLK、IOB和IOI這幾類幀中的錯(cuò)誤位相對(duì)較少,也不容易變化,可能與所分配FPGA的管腳有關(guān)。在所有的配置幀中,CLB這類幀產(chǎn)生的敏感位最多,通過(guò)對(duì)CLB分區(qū)測(cè)試發(fā)現(xiàn)敏感位主要集中在CLB1幀中,且GBI中的敏感位數(shù)較固定。因此對(duì)于本次使用的測(cè)試FPGA程序只需對(duì)幀地址范圍為30~117幀進(jìn)行翻轉(zhuǎn)故障測(cè)試,再進(jìn)行擬合計(jì)算,即可得到被測(cè)設(shè)計(jì)的翻轉(zhuǎn)失效率。該方法既能節(jié)約測(cè)試時(shí)間,也能保證測(cè)試結(jié)果的準(zhǔn)確性。在對(duì)兩個(gè)測(cè)試程序進(jìn)行TMR加固設(shè)計(jì)后發(fā)現(xiàn),其CLB幀中的敏感位大大減少,錯(cuò)誤率和失效率降低許多,程序的可靠性明顯提高,說(shuō)明TMR對(duì)CLB幀中的加固有一定作用。
參考文獻(xiàn)
[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] 鄧先坤,肖立伊,李家強(qiáng).SRAM型FPGA的SEU故障注入系統(tǒng)設(shè)計(jì)[J].微電子學(xué)與計(jì)算機(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單粒子效應(yīng)逐位翻轉(zhuǎn)故障注入方法[J].北京航空航天大學(xué)學(xué)報(bào),2012,38(10):1285-1289.
[7] 朱明達(dá).SRAM型FPGA單粒子翻轉(zhuǎn)故障定位注入研究[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.
作者信息:
王 鵬1,張道陽(yáng)1,2,蘆 浩1,薛茜男1
(1.中國(guó)民航大學(xué) 天津市民用航空器適航與維修重點(diǎn)實(shí)驗(yàn)室,天津300300;
2.中國(guó)民航大學(xué) 安全科學(xué)與工程學(xué)院,天津300300)