王艷軍,姜婷婷,張峻瑋
(1.91404部隊 軟件測評中心,河北 秦皇島 066001;2.江蘇自動化研究所 信息技術(shù)部,江蘇 連云港 222002)
近年來,集成電路已經(jīng)融入我們的生活之中,如汽車、手機(jī)、熱水器.軍工方面集成電路被廣泛應(yīng)用于航天、船舶領(lǐng)域[1].集成電路的廣泛應(yīng)用要求其有較高的可靠性與實時約束性.可靠性評估常用的方法有兩種:輻射測試和故障注入[2-5].輻射測試可以比較真實地模擬空間環(huán)境,但是成本高昂,并且實驗周期較長[6].故障注入是一種評價重要的評估微處理器和尋找決定可靠性參數(shù)的方法.故障注入方法大致可以分為4類[7]:① 硬件故障注入;② 軟件故障注入;③ 模擬故障注入;④ FPGA故障注入.相對于硬件故障注入與軟件故障注入[8],模擬故障注入有更好的可觀察性和可控制性,但模擬故障注入耗時高,F(xiàn)PGA故障注入既能保證不錯的可控制性和可觀察性,還可以加快故障注入測試.因此基于FPGA的故障注入具有重要的研究價值.
目前,基于FPGA的故障注入方法研究主要著眼于兩個方面:基于配置技術(shù)的研究及基于儀表技術(shù)的研究.基于配置技術(shù)的FPGA故障注入主要是通過修改FPGA的配置數(shù)據(jù),進(jìn)行故障注入實驗來達(dá)到故障注入的目的.例如王鵬等[9]根據(jù)FPGA配置幀的結(jié)構(gòu)特點,對其進(jìn)行分區(qū)測試,分析配置存儲器中的敏感位,找到FPGA配置幀中最為敏感的區(qū)域,設(shè)計了故障注入測試系統(tǒng),并進(jìn)行了試驗驗證.基于儀表技術(shù)的FPGA故障注入技術(shù)主要是通過在原來電路上加上額外的電路進(jìn)行故障注入.這兩種方法都存在一定的問題.首先,基于配置技術(shù)的FPGA故障注入雖然注入過程可控制性和可觀察性都很高,但FPGA需要進(jìn)行重新配置,時間開銷大.而基于儀表技術(shù)的FPGA故障注入雖然不需要增加時間開銷,但需要增加額外的空間開銷.為移除主機(jī)與FPGA間的交互時間,加速故障注入測評實驗,本文提出一種面向FPGA的故障注入測試框架,實現(xiàn)面向FPGA的故障注入技術(shù)研究.
人類的生活環(huán)境中充滿了宇宙射線、太陽的粒子輻射、電磁輻射等[7].在輻射環(huán)境中,集成電路容易受到影響[10-13],發(fā)生單粒子效應(yīng).單粒子效應(yīng)可以劃分為單粒子翻轉(zhuǎn)(single event upset,SEU)、單粒子閂鎖(single event latch-up,SEL)等[14-15].為了注入SEU缺陷,在元電路中增加額外的電路,如圖1所示,當(dāng)設(shè)置FIS為高電平時,原輸入信號數(shù)據(jù)進(jìn)行反轉(zhuǎn),反轉(zhuǎn)后的數(shù)值將被輸入觸發(fā)器中.這種方法的好處是在每次進(jìn)行故障注入時不用進(jìn)行中斷處理,更符合實際應(yīng)用需求.
如圖2所示,面向FPGA的故障注入測試架構(gòu)主要包含3個模塊.
① 故障注入管理模塊:這個模塊負(fù)責(zé)在需要進(jìn)行故障注入時將FIS置1并觸發(fā)觀察模塊.
② 觀察模塊:當(dāng)觀察模塊被觸發(fā)后,觀察模塊開始從觀察點記錄數(shù)據(jù),該功能通過觀察電路實現(xiàn).
③ 結(jié)果分析模塊:當(dāng)觀察模塊記錄到兩組實驗后開始觸發(fā)結(jié)果分析模塊.其中,第一組是無故障運(yùn)行實驗,第二組是故障注入實驗.結(jié)果分析模塊比較兩個實驗的觀察結(jié)果,并報告測試結(jié)果.
故障注入模塊負(fù)責(zé)管理和執(zhí)行故障注入測試實驗.該模塊在剛開始時設(shè)置故障注入定時器.設(shè)置定時器后,模塊開始計數(shù)直到達(dá)到預(yù)定的故障注入時間.最后,決定是否進(jìn)行故障注入(通過設(shè)置FIS來實現(xiàn)).在這里,交替運(yùn)行故障注入實驗和無故障運(yùn)行(無故障注入)實驗.無故障運(yùn)行實驗結(jié)果作為實驗比較的基準(zhǔn).在實際操作時,也可以在幾個時鐘周期內(nèi)進(jìn)行無故障運(yùn)行實驗.設(shè)置相同的輸入波形和時鐘周期,運(yùn)行故障注入實驗.這樣的好處是可以避免記錄所有的故障、無故障數(shù)據(jù).
當(dāng)觀察模塊被觸發(fā)后,模塊開始從觀察點記錄數(shù)據(jù),觀察電路如圖3所示.在實驗中,無故障運(yùn)行和故障實驗交替運(yùn)行,用無故障運(yùn)行觸發(fā)器來區(qū)分它們.無故障運(yùn)行和故障運(yùn)行實驗一共會產(chǎn)生兩種路徑.用加法電路將新觀察到的結(jié)果與原先觀察到的結(jié)果相加.這里用加法器的原因是如果觀察的數(shù)據(jù)與無故障運(yùn)行結(jié)果不同,它會影響到加法結(jié)果,并且更容易產(chǎn)生兩組不同的結(jié)果.
我們通常假設(shè)故障注入會維持幾個時鐘周期,這樣我們僅需要記錄這幾個時鐘周期的數(shù)據(jù),便能大大加速故障注入實驗.
當(dāng)觀察模塊記錄到兩組實驗后開始觸發(fā)結(jié)果分析模塊.它僅比較無故障運(yùn)行與故障寄存器,然后提取故障統(tǒng)計信息.它的工作主要是找出兩組數(shù)據(jù)中的不同值,并進(jìn)行統(tǒng)計.
(1) 故障注入管理器設(shè)置定時器與無故障觸發(fā)器.故障注入管理器首先檢查無故障觸發(fā)器,如果它為1,根據(jù)故障注入時間與實驗時間為定時器設(shè)置新值.如果觸發(fā)器為0,定時器保持在之前無故障運(yùn)行時的數(shù)值.(2) 故障注入定時器開始進(jìn)行定時,直到數(shù)值變?yōu)?.(3) 故障定時器變成0后,故障注入管理器開始檢查無故障觸發(fā)器,如果它是0,故障注入管理器將FIS置為1.(4)故障注入管理器觸發(fā)觀察模塊,觀察模塊設(shè)置觀察計時器并且開始記錄觀察值.觀察計時器決定觀察電路的觀察時間.(5)如果觀察時間變成0,檢查無故障觸發(fā)器為0還是為1.如果無故障觸發(fā)器為1,觀察模塊將無故障觸發(fā)器清空,執(zhí)行過程將從步驟(1)重新開始.
首先,通過幾種故障注入方法的對比分析,強(qiáng)調(diào)了基于FPGA的故障注入方法研究的重要性;其次,提出了一種面向FPGA的故障注入測試框架架構(gòu),包括管理、觀察及結(jié)果分析等模塊;最后,對故障注入過程進(jìn)行了詳細(xì)介紹,并給出相關(guān)結(jié)論.在后續(xù)工作中,將進(jìn)一步對該注入方法進(jìn)行研究,將其擴(kuò)展到其他領(lǐng)域,爭取應(yīng)用到復(fù)雜裝備系統(tǒng)的故障注入研究.