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