趙 磊 王祖林 周麗娜 楊 藍
(北京航空航天大學 電子信息工程學院,北京100191)
基于SRAM(Static Random Access Memory)的FPGA(Field Programmable Gate Array)對宇宙中的高能粒子十分敏感,極易誘發存儲單元的信息翻轉,無法直接應用于衛星等高可靠任務.近年來,出現了多種減緩單粒子翻轉(SEU,Single E-vent Upsets)技術用以提高空間環境應用的可靠性.總體而言,主要有兩種策略,分別是基于重構的技術和基于冗余的技術[1-2].前者檢測到 SEU時,利用SRAM型FPGA的可重構特性進行重配置,進而提高可靠性,主要用于糾正錯誤[3];后者通過增加冗余信息進行比較判定來提高可靠性,用于掩蓋錯誤[4].然而,各種SEU減緩技術都無法完全排除錯誤發生的可能,同時設計者也需要驗證系統的可靠性達到了預期目標.因此,在應用于空間環境之前,有必要建立有效地容錯評估機制來檢驗系統的可靠性,并輔助設計.
目前,常用的容錯機制驗證方法有模型分析法、現場實驗法和故障注入法[5].模型分析法適用于系統的方案論證和設計階段,只能實現概略評估;現場實驗法采用重離子或高能質子等模擬源來輻射器件,需要消耗大量的時間和資金投入,無法保證有效地測試所有單元;而故障注入方法通過人為手段直接把故障引入到被驗證目標容錯系統中,可以縮短故障的潛伏期,加速系統的失效過程,具有較好的評測效果,成為地面模擬單粒子翻轉的重要手段[6].
在進行故障注入時,必須考慮故障模型的選擇、故障覆蓋率和實驗效率3個基本問題[7].通常單粒子翻轉的故障模型表現為寄存器中的位翻轉,故障覆蓋率等效為故障序列的設計問題.良好的故障序列設計既可以提高故障覆蓋率,又能減少實驗時間,提高故障注入實驗效率.文獻[8]采用逐位翻轉實現故障注入,利用動態重配置有效地降低了實驗時間,但實質仍然是窮盡法,故障注入沒有針對性.隨著FPGA配置信息位的增加,其故障空間和時間花費顯著增加.文獻[9]采用隨機抽樣法把故障注入實驗當做貝努利實驗,但需要較多的實驗次數才能獲得較準確的目標度量值.文獻[10]利用修改VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)代碼實現模擬邏輯單元的翻轉,但無法模擬FPGA布線資源的單粒子翻轉.
本文提出一種可靠性快速評估故障注入方法,對電路進行邏輯門級的可靠性預分析,為故障序列設計提供依據,將比特流分為不同的敏感級別,在故障注入時優先選擇敏感級別較高的故障序列,從而達到在有限的時間內,最大化檢驗系統的容錯能力.
本文以Xilinx公司的Virtex-Ⅱ系列SRAM型FPGA為例進行研究,其結構由被輸入輸出塊環繞的可配置邏輯單元矩陣組成,并且通過多層次的布線資源相互連接,此外還包括數字時鐘管理模塊、上電復位狀態機等.因此,SEU對SRAM型FPGA的影響按照發生位置的不同可以分為瞬態錯誤和永久錯誤(非損壞)兩類[11].
當粒子擊中用戶的組合邏輯時,SEU會使FPGA產生瞬態錯誤,而這種錯誤可以傳播且被觸發器捕獲.當然,SEU也可能發生在存儲單元直接產生瞬態錯誤.這些錯誤可以采用錯誤檢測糾正技術或者被下次正確值所覆蓋而恢復,因此被稱為瞬態錯誤.主要影響用戶定義的邏輯和觸發器,可通過改變諸如數據路徑寄存器、控制單元寄存器等存儲單元或輸入/輸出及內部信號的值進行故障注入.
而研究表明,SRAM配置單元占FPGA內部所有存儲單元的95%以上,因此發生在配置單元的錯誤在FPGA內部占主導地位,且配置寄存器的單粒子翻轉主要引起布線資源的錯誤[12].布線資源存在3種失效模式:開路錯誤、短路錯誤和橋接錯誤,如圖1所示.其中橋接錯誤又包括連線與和連線或兩種類型.這種SEU改變配置單元引起的永久錯誤將持續到下一次重配置.

圖1 配置寄存器的單粒子翻轉形式
FPGA利用配置寄存器完成不同的邏輯描述,而單粒子翻轉會影響輸入、輸出、邏輯功能、配置信息等,因此可以根據FPGA的工作特性及單粒子效應的影響,建立FPGA的單粒子效應故障分析模型.
分析模型由邏輯功能、配置信息、輸入、輸出和時間5部分組成.假設X(nT)表示在nT時刻邏輯功能的狀態矢量;H{·}表示狀態轉移算子,代表邏輯功能;S(nT)為邏輯功能模塊在nT時刻的輸入矢量;T為狀態轉換間隔.那么,邏輯功能的狀態轉換狀態方程可由下式描述:

假設Y(nT)為邏輯功能模塊在nT時刻的輸出,G為輸出算子,由電路配置信息決定.那么,輸出方程可以表述為

因此,單粒子翻轉引起的錯誤主要表現為狀態方程中的S(nT)、算子H或算子G的錯誤.具體表現為:
1)輸入型錯誤:S(nT)→s(nT)=S(nT)+e(nT);
2)函數型錯誤:H{·}→h{·}或G{·}→g{·};
3)時序型錯誤:T→t=T+ΔT.
其中,s(nT),h{·},g{·}和 t分別為發生故障后的狀態、轉移算子、輸出算子和時間參考;e(nT)和ΔT表示狀態和時間參考的誤差.
通過上述分析,本文采用一個四元組組成的故障注入模型MF進行容錯分析,如式(3)所示.

其中,FL表示故障注入位置,用來反映故障發生位置;FT表示故障注入時間,可以在某一特定時間對存儲單元或地址進行數據操作;FM為故障掩碼,用來決定具體對目標數據的哪些位進行注入操作;FK則表示故障類型,可以是瞬時故障、持續故障等,本文特指單粒子翻轉引起的瞬時故障.
2.1.1 網表錯誤概率
電路中某個節點的錯誤率可由下式表示[13]:

式中,pSEU表示器件固有翻轉概率,由入射粒子的能量、類型以及器件特性決定;pl(ni)表示發生在節點ni的錯誤被觸發器捕獲的概率;ps(ni)表示節點ni錯誤時傳播到輸出或觸發器的概率.
在實際應用中,ps(ni)通常用錯誤傳播概率(EPP,Error Propagation Probability)表示,當采用隨機向量模擬方式進行估算時,其時間消耗是相當可觀的[13].而本文將采用電路拓撲遍歷和信號概率(SP,Signal Probability)相結合的方式,在邏輯門級對可靠性進行評估.
首先假定電路中的一個節點是故障源,利用網表信息建立從此節點到可達輸出端或觸發器的路徑;然后利用不在通路上的線端信號概率[14],計算故障源通過不同的門電路后所有可到達輸出端的錯誤概率;最后利用下式計算得到錯誤傳播概率pEPP(ni):

式中,po(j)為第j個輸出端的錯誤概率;k為節點ni可達輸出端的數目.
產教融合就是要將產業與教學進行深度融合,強調應用型專業教育要有實踐情境,探索專業與行業、企業間的深層次合作,區別于傳統的人才培養教育模式,產教融合意在努力實現從教學到行業發展的全方位緊密結合,從而使職業院校的人才培養與企業、行業發展融為一體,打破傳統的封閉式辦學模式。這對職業院校、行業、企業都提出了新的要求,職業院校在烹飪專業發展設置上要緊緊圍繞行業的發展特征,立足于區域社會的經濟發展,以職業特征為基礎設置專業,充分依托區域行業的產業背景確定專業建設目標,使專業能更好的與行業、企業進行對接。
針對不同類型的錯誤,采用錯誤傳播概率和信號概率計算網表故障概率(NFP,Netlist Failure Probability).
對于開路錯誤或固定型錯誤,其計算公式為

式中,pEPP(ni|0)和pEPP(ni|1)分別表示節點ni的錯誤是0和1的情況.由于pEPP(ni|0)=pEPP(ni|1),所以此類型錯誤等于pEPP(ni).
類似的,對于線網i和j之間的連線與和連線或橋接錯誤,其計算公式分別如式(7)和式(8)所示.


2.1.2 系統失效率估計
如前文所述,錯誤傳播概率和線網故障概率都是在門級網表的基礎上計算得到的,但在進行FPGA可靠性評估時只考慮邏輯門級是不夠的,還需考慮 FPGA 詳細布局布線的影響[15-16].于是,節點錯誤率不僅與器件固有翻轉概率有關,還需要考慮實現節點ni的SRAM配置單元數目NSRAM,具體可以表示為

于是,系統中每個節點的失效率可以表示為S(ni)=pe(ni)×pEPP(ni),遍歷所有節點后得到系統的失效率:

同時,由于系統可靠度服從泊松分布,所以系統可靠度可以表示為

綜上,通過對邏輯門級電路的分析,再結合節點對應的SRAM配置單元,就可得到SEU敏感位故障序列.
TMR系統通常由3個邏輯功能相同的模塊和1個多數表決器組成.如果3個模塊之一發生錯誤,表決器通過比較可以選出正確值,即只要系統中有2個或2個以上模塊正常工作,就可以使組合邏輯和時序邏輯免受翻轉的影響.但如果表決器發生SEU,TMR將輸出錯誤值,同時翻轉的積累將會使TMR逐漸失效.因此,最簡單形式的TMR其可靠度不會高于表決器的可靠度.通常情況下多采用TMR的改進形式來抵抗SEU,由于結構的不同,其可靠性評估相對復雜.
對于每一個TMR容錯結構,為了便于進行預評估,本文采用樹的形式進行描述.即將輸入作為根節點,表決器和三模冗余模塊作為子節點,而在表決器和冗余模塊之間的連接關系是通過布線資源實現的,因此在布線過程中通過的布線資源開關盒等都作為子節點,這樣每個被使用的配置寄存器都可以和樹中的節點進行對應.于是,TMR容錯結構分析分為以下3個步驟:
1)讀取原始電路描述,分析創建每一個表決電路的布線資源R(i)和邏輯資源T(i).
2)創建2個含有FPGA矩陣中信息的集合:CS(x,y)和 RS(x,y).集合中 x,y 分別對應 FPGA二維空間中的行和列,CS(x,y)用來記錄用戶存儲器和配置寄存器的比特位信息,RS(x,y)則用來描述對應的布線連接圖,對于TMR中的相同模塊采用不同的顏色進行標示并給每一個表決器創建索引.然后,假設 CS(x,y)中的某一位發生SEU,根據這一位的變化產生一個SEU影響列表,此列表包括受此位變化影響的邏輯和布線資源的錯誤節點.
3)對包含RS(x,y)布線樹進行更新,將所有的錯誤節點作為錯誤頂點,進行路徑SEU繁殖樹演變.如果繁殖樹的葉子節點中包含2種及2種以上的顏色,并且其表決器索引相同,則將此位定義為SEU關鍵位置.在實際應用過程中,如果出現這種情況,SEU的影響將繁殖到同一個表決邏輯的兩個以上的電路中,因此TMR策略不再有效.
故障注入流程如圖2所示.本文在傳統的故障注入的方法上,增加了電路描述分析和容錯結構分析部分,分別產生敏感節點和SEU關鍵數據位置信息,構成不同級別的故障序列;利用故障注入器根據故障觸發類型和時間對目標系統進行故障注入,注入實現方式將在3.2節中詳細論述;最后對目標系統進行監視,搜集相關信息,用來對系統運行情況進行判斷.

圖2 故障注入流程
故障注入系統如圖3所示.
具體方法是將Virtex-Ⅱ系列FPGA中內嵌的PowerPC核作為故障注入的控制器,首先通過OPB(On-chip Peripheral Bus)總線從System ACE(Advanced Configuration Environment)Compact Flash或 PLB(Processor Local Bus)總線上的BRAM(Block Random Access Memory)中讀取重配置位流;其次依據電路分析結果對位流文件進行修改,生成故障注入序列;然后利用ICAP(Internal Configuration Access Port)接口對FPGA結構進行重配置,最后對結果進行收集,通過RS232接口反饋給上位機,整個過程反復進行,遍歷敏感節點和SEU關鍵位置,完成測試.Virtex-Ⅱ系列FPGA最小訪問單元為幀[17],因此,對FPGA配置寄存器每幀進行動態重構即可完成單粒子模擬,縮短試驗周期.

圖3 故障注入系統
選擇通用的數據處理算法——快速傅里葉變換(FFT,Fast Fourier Transform)和 FIR(Finite Impulse Response)濾波器作為被測算法,Xilinx公司的Virtex-II系列FPGA XC2V1000作為測試硬件,利用Xilinx公司的X-TMR軟件進行FPGA加固設計.故障序列分別為遍歷逐位翻轉方式(ALL)、敏感節點故障序列(Type-1)、敏感節點和SEU關鍵位置故障序列(Type-2),其中Type-2只針對進行TMR容錯的電路進行測試.測試輸入矢量集為32組測試矢量,考察運行時間和故障注入后產生錯誤的SEU敏感位數變化,用來檢驗邏輯和配置單元抗單粒子翻轉的能力.
故障注入運行時間的實驗結果對比如表1所示,其中Type-1和Type-2的運行時間為分析時間與注入時間之和.從表中得出,逐位遍歷所有配置信息位所需時間較長,而采用Type-1和Type-2的運行時間約為逐位遍歷方式的10.5%和12.2%.故障注入SEU敏感位數的實驗結果對比如表2所示.采用Type-1和Type-2的方式得到的SEU敏感位分別為逐位遍歷方式的95.2%和97.4%.因此,本文所述方法在故障注入時間顯著小于逐位遍歷的情況下,具有良好的故障覆蓋率和準確性.

表1 故障注入運行時間對比

表2 故障注入SEU敏感位數對比
對于Virtex-Ⅱ系列芯片,當入射粒子能量為63.3 MeV 時,其靜態翻轉截面為 7.86×10-8cm2/器件[17],配置位翻轉率 4.4×10-7/(bit·d).于是,可得其對應的可靠性變化曲線,如圖4、圖5所示.

圖4 不同設計的可靠性變化曲線(FIR)

圖5 不同設計的可靠性變化曲線(FFT)
從圖4、圖5中可以看出,無論是否采用TMR方式,本文所述的方法得到的可靠度與逐位翻轉得到的可靠度基本相同.
根據實驗結果可以得到以下分析:
1)本文所述方法在時間上明顯小于逐位翻轉方法,尤其是當FPGA配置信息位增加時,這種優勢將更加明顯.此外,在實際應用過程中往往需要大量的測試數據,對于一個n輸入的組合電路而言,若要完全實現對電路的功能測試需要2n個激勵輸入;即便采用隨機測試向量,其測試激勵矢量也會遠大于本仿真實驗的32組數據,更多的測試向量將增加測試時間.因此,對于故障注入運行時間的實驗結果,應更關注于相對比例.
2)通過對SEU敏感位數的進一步對比分析發現,Type-1與Type-2中未覆蓋的SEU敏感位來自于布線資源中的部分開關盒.這種開關盒與多個線網使用的開關盒相鄰,當其發生SEU時,可能導致其他線網發生橋接故障.因此,在可靠性分析環節中考慮此類錯誤就可以進一步提高故障覆蓋率.
3)本文所述方法通過對邏輯門級電路描述文件的分析,再結合FPGA的布線資源信息就可以得到SEU敏感位和SEU關鍵位置的故障序列集合.對于所需分析的FPGA,只需在故障注入前進行上述分析即可獲得故障序列,因此,本文所述方法可以應用于不同的FPGA任務.
提出的可靠性快速評估方法可以利用網表信息分析SEU敏感比特位,同時還可以分析TMR冗余方式中的SEU關鍵位置,得到不同的故障序列集合,通過故障注入方式對SRAM型FPGA進行可靠度評測.仿真實驗證明,相比逐位翻轉算法,本方法在故障覆蓋率達到94.5%以上時,仿真時間減少約87.8%,有效地降低了仿真時間.
References)
[1]Kastensmidt F L,Neuberger G,Hentschke R F,et al.Designing fault-tolerant techniques for SRAM-Based FPGAs[J].IEEE Design and Test of Computers,2004,21(6):552-562
[2]Sterpone L,Battezzati N.A novel design flow for the performance optimization of fault tolerant circuits on SRAM-based FPGA's[C]//Keymeulen D.Proceedings of NASA/ESA Conference on Adaptive Hardware and Systems.Los Alamitos:IEEE Computer Society,2008:157-163
[3]費爾南達·利馬·卡斯騰斯密得,路易吉·卡羅,里卡多·賴斯.基于SRAM的FPGA容錯技術[M].楊孟飛,龔健,文亮,等譯.北京:中國宇航出版社,2009:28-30 Fernanda L K,Luigi C,Ricardo R.Fault-tolerance techniques for SRAM-based FPGAs[M].Translated by Yang Mengfei,Gong Jian,Wen Liang,et al.Beijing:China Astronautic Publishing House,2009:28-30(in Chinese)
[4]Manuzzato A,Gerardin S,Paccagnella A,et al.Effectiveness of TMR-based techniques to mitigate alpha-induced SEU accumulation in commercial SRAM-based FPGAs[J].IEEE Transactions on Nuclear Science,2008,55(4):1968-1973
[5]Alderighi M,D'Angelo S,Mancini M,et al.A fault injection tool for SRAM-based FPGAs[C]//Metra C.Proceedings of IEEE International On-Line Testing Symposium.Los Alamitos:IEEE Computer Society,2003:129-133
[6]Alderighi M,Casini F,D'Angelo S,et al.A tool for injecting SEU-like faults into the configuration control mechanism of Xilinx virtex FPGAs[C]//Martin D C.Proceeding of IEEE International Symposium on Defect and Fault Tolerance in VLSI System.Los Alamitos:IEEE Computer Society,2003:71-78
[7]Clark J A,Pradhan D K.Fault injection:a method for validating computer system dependability[J].IEEE Computer,1995,28(6):47-55
[8]宋凝芳,秦姣梅,潘雄,等.SRAM型FPGA單粒子效應逐位翻轉故障注入方法[J].北京航空航天大學學報,2012,38(10):1285-1289 Song Ningfang,Qin Jiaomei,Pan Xiong,et al.Evaluating SEU effects in SRAM-based FPGA with bit-by-bit upset fault injection[J].Journal of Beijing University of Aeronautics and Astronautics,2012,38(10):1285-1289(in Chinese)
[9]Maheshwari A,Koren I,Burleson W.Techniques for transient fault sensitivity analysis and reduction in VLSI circuits[C]//Martin D C.Proceedings of the IEEE International Symposium on Defect and Fault-tolerance.Los Alamitos:IEEE Computer Society,2003:597-604
[10]Baraza J C,Gracia J,Gil D,et al.Improvement of fault injection techniques based on VHDL code modification[C]//Harris I G.IEEE International High-Level Design Validation and Test Workshop.Los Alamitos:IEEE Computer Society,2005:19-26
[11]Ceschia M,Violante M,Reorda M S,et al.Identification and classification of single-event upsets in the configuration memory of sram-based fpgas[J].IEEE Transactions on Nuclear Science,2003,50(6):2088-2094
[12]邢克飛.星載信號處理平臺單粒子效應檢測與加固技術研究[D].長沙:國防科學技術大學,2007 Xing Kefei.Single event effect detection and mitigation techniques for spaceborne singal processing platform[D].Changsha:National University of Defense Technology,2007(in Chinese)
[13]Mohanram K,Touba N A.Cost-effective approach for reducing soft error failure rate in logic circuits[C]//Ambler A.Proceedings of International Test Conference.Los Alamitos:IEEE Computer Society,2003:893-901
[14]Liu B.Signal probability based statistical timing analysis[C]//Preas K.Proceedings of IEEE Design,Automation and Test in Europe.Los Alamitos:IEEE Computer Society,2008:562-567
[15]Kehl N,Rosenstiel W.An efficent SER estimation method for combinational circuits[J].IEEE Transaction on Reliability,2011,60(4):742-747
[16]Monson J S,Wirthlin M J,Hutchings B L.Fault injection results of Linux operating on an FPGA embedded platform[C]//Prasanna V.Proceedings of International Conference on Reconfigurable Computing and FPGAs.Los Alamitos:IEEE Computer Society,2010:37-42
[17]Yui C,Swift G,Carmichael C.SEU mitigation testing of the XILINX Virtex II FPGAs[C]///Wert J L.IEEE Radiation Effects Data Workshop.Piscataway:IEEE,2003:92-97