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