文獻(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)問(wèn)題,在航空領(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è)試方法展開(kāi)了眾多研究,。國(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)開(kā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)容分為T(mén)MR加固效果測(cè)試和對(duì)XC2V40的配置存儲(chǔ)器進(jìn)行分類(lèi)測(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ò)誤位便可以查詢(xún)到具體的出錯(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ò)誤位置沒(méi)有改變。
(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這幾類(lèi)幀中只存在少數(shù)錯(cuò)誤位,,CLB中敏感位占全部敏感位的比例分別為93.35%、88.68%,、86.84%和70.59%,,可見(jiàn)CLB對(duì)整個(gè)設(shè)計(jì)的影響是最主要的。從資源的分配來(lái)看,,CLB所占的比例也是最大,,GCLK、IOB和IOI所占的比例很少,。結(jié)合得到的敏感位置,,就三模冗余加固而言,可以忽略GCLK,、IOB,、IOI、BRAM和BRAM Int這幾類(lèi)幀的影響,,重點(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這幾類(lèi)幀測(cè)得的敏感位。
最終用分區(qū)測(cè)試法得到的結(jié)果total1與總的測(cè)試結(jié)果total進(jìn)行比較,,如表4所示,。
表4表明,分區(qū)測(cè)試法得到的結(jié)果與沒(méi)有進(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這幾類(lèi)幀中的錯(cuò)誤位相對(duì)較少,,也不容易變化,,可能與所分配FPGA的管腳有關(guān)。在所有的配置幀中,,CLB這類(lèi)幀產(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)