鄭 丹,胡勝旺,封 亮,崔紅軍
(中國電子科技集團(tuán)公司第三十二研究所測評中心,上海 201808)
現(xiàn)場可編程邏輯門陣列(Field Programmable Gate Array,FPGA)由于其靈活性和高計算能力,在嵌入式、網(wǎng)絡(luò)、信息系統(tǒng)等領(lǐng)域中得到了廣泛的應(yīng)用。在航空航天應(yīng)用中,傳統(tǒng)上人們更傾向于使用對輻射高耐受性的反熔絲型FPGA。近年來,由于低成本、高性能和飛行中的可重構(gòu)性,基于靜態(tài)隨機(jī)存取存儲器(Static Random-Access Memory,SRAM)的FPGA在空間嵌入式系統(tǒng)中的應(yīng)用越來越受到關(guān)注。然而,SRAM型FPGA由于其定義用戶電路的配置存儲區(qū)易受單粒子翻轉(zhuǎn)效應(yīng)(Single Event Upset,SEU)的影響,對輻射特別敏感,易引起系統(tǒng)失效。根據(jù)對商用飛機(jī)的問題統(tǒng)計,有20%的“不可重現(xiàn)”問題來源于SEU導(dǎo)致的軟錯誤。2011年,美國聯(lián)邦航空局DO-254認(rèn)證文檔第6節(jié),明確要求在驗證和確認(rèn)階段,能夠驗證目標(biāo)系統(tǒng)SEU緩解對策的有效性[1]。2014 年,波音等航電設(shè)備廠商,專門發(fā)布了針對SEU的航電設(shè)備安全性認(rèn)證報告。美國聯(lián)邦航空局(Federal Aviation Administration,FAA)、歐洲航空安全局(European Aviation Safety Agency,EASA)等監(jiān)管機(jī)構(gòu)也已經(jīng)開始將單粒子防護(hù)設(shè)計和評價要求納入工程化標(biāo)準(zhǔn)或適航要求。國內(nèi)針對抗SEU設(shè)計需求分析和驗證要求寫入了國標(biāo)、國軍標(biāo)規(guī)范:2017年5月31日發(fā)布的GB/T33781《可編程邏輯器件軟件開發(fā)通用要求》,2018年8月1日發(fā)布的GJB9432《軍用可編程邏輯器件軟件開發(fā)通用要求》在需求分析階段指出需針對抗?fàn)顟B(tài)翻轉(zhuǎn)開展必要和可行性分析,并明確抗?fàn)顟B(tài)翻轉(zhuǎn)技術(shù)方法。同期發(fā)布的GB/T33783《可編程邏輯器件軟件測試指南》、GJB9433《軍用可編程邏輯器件軟件測試要求》在安全性測試中也明確要求“測試抗?fàn)顟B(tài)翻轉(zhuǎn)措施的有效性”。本文基于SRAM型FPGA對三模冗余技術(shù)、糾錯編碼技術(shù)、配置刷新技術(shù)三類SEU緩解技術(shù)進(jìn)行深入研究和分析,并從仿真驗證與故障注入兩種驗證方法展開探討。
三模冗余防護(hù)方法(Triple Modular Redundancy,TMR)由于有工具支持、使用方便,因此是較常用的SEU緩解技術(shù)。TMR建立硬件冗余結(jié)構(gòu),對關(guān)鍵電路復(fù)制三份,通過對三路輸出結(jié)果表決來屏蔽任何一路的SEU故障。FPGA廠商Xilinx推出RTL級的TMR設(shè)計工具TMR Tool幫助實現(xiàn)基于綜合后網(wǎng)表的三模冗余加固。目前國內(nèi)可購買的TMR Tool最高版本為9.2i,支持Xilinx V1~V5系列,適配ISE 9.2及其之前的版本。此外,更簡單經(jīng)濟(jì)的方式是使用帶TMR功能的第三方綜合工具。例如Mentor Graphics的綜合工具Precision Hi-Rel提供三模冗余功能,支持用戶電路TMR插入,需做抗SEU加固設(shè)計的FPGA設(shè)計可通過關(guān)聯(lián)第三方綜合器實現(xiàn)TMR。Libero開發(fā)環(huán)境中適配Synopsys公司的Synplify/Synplify Pro綜合器支持在模塊或寄存器聲明后添加三模冗余屬性設(shè)置“/*synthesis syn_radhardlevel="tmr"*/”,完成模塊級或寄存器級的三模冗余電路設(shè)計。考慮到資源開銷,目前常用的三模冗余方式只對時序電路復(fù)制三份,三模前后對比如圖1所示,圖(b)中PS0_1、PS0_1_tmr2、PS0_1_tmr3為在圖(a)基礎(chǔ)上復(fù)制的三份電路,PS0_1_maj為表決電路。

圖1 基于時序邏輯TMR三模前后對比
TMR對SEU引起的功能錯誤緩解效果較好,但邏輯資源開銷較大,且三模冗余的引入對時序會造成一定影響,一般對關(guān)鍵寄存器或者關(guān)鍵模塊進(jìn)行三模冗余。對于空間應(yīng)用領(lǐng)域使用較多的Xilinx器件,可通過廠商提供的TMRTool進(jìn)行基于綜合后網(wǎng)表的TMR,結(jié)合刷新技術(shù)可防止SEU錯誤累積;對于Actel器件,可在RTL源碼中添加TMR屬性設(shè)定,實現(xiàn)綜合后網(wǎng)表的三模冗余,后者在靈活性上更勝一籌。文獻(xiàn)[2]分別基于Xilinx和Actel器件的TMR實現(xiàn)效果進(jìn)行分析比較。
通過TMR加固的FPGA系統(tǒng)發(fā)生SEU后,關(guān)鍵電路的錯誤狀態(tài)可能暫時不會傳入下一級,但在系統(tǒng)長時間運行條件下,錯誤狀態(tài)可能進(jìn)行累積從而導(dǎo)致系統(tǒng)失效。引入糾錯編碼技術(shù)(Error Detecting And Correcting,EDAC)可對各模塊關(guān)鍵信號實時監(jiān)測,并將檢測到的錯誤信號及時糾正,防止了空間輻照對系統(tǒng)的影響。具有單比特錯誤糾正、雙比特錯誤檢測(Single Error Correction - Double Error Detection,SEC-DED)功能的漢明碼EDAC技術(shù)已被證明是保護(hù)內(nèi)部配置存儲器和其他外部易失性存儲器的有效方法。目前,用于加固的EDAC電路多通過線性分組碼實現(xiàn),在編碼過程中生成待編碼信息數(shù)據(jù)的校驗位,校驗位與數(shù)據(jù)一同存儲,利用譯碼過程與編碼過程中產(chǎn)生校驗位的異或結(jié)果對錯誤進(jìn)行糾正。從資源占用和性能考慮,相比于TMR,EDAC更適合防護(hù)RAM器件,糾錯編碼技術(shù)與TMR均屬于用戶電路加固技術(shù)[3]。文獻(xiàn)[4]提出了TMR與EDAC相結(jié)合的技術(shù),可糾正雙比特錯誤。
針對SEU的SRAM型FPGA故障模式如圖2所示:BRAM翻轉(zhuǎn)故障將改變用戶數(shù)據(jù),可通過EDAC校驗檢測;組合邏輯故障、時序邏輯故障、互連關(guān)系故障將改變電路邏輯結(jié)果,可通過TMR方式緩解用戶數(shù)據(jù)故障。但由于組合/時序邏輯及其內(nèi)連關(guān)系由配置編程點決定,一旦配置區(qū)受SEU影響,直到原始配置位流重新載入到FPGA中用戶數(shù)據(jù)才能恢復(fù)。且配置存儲容量占FPGA存儲資源的85%以上,因此需要結(jié)合配置刷新技術(shù)防止配置存儲區(qū)的SEU效應(yīng)。

圖2 SRAM型FPGA故障模式
配置刷新是指系統(tǒng)配置成功后,按預(yù)定時間間隔或幀校驗結(jié)果,將配置區(qū)數(shù)據(jù)重寫入FPGA,以消除已有SEU錯誤積累的方法,刷新的對象為FPGA內(nèi)部CLB配置。配置刷新的基本流程為:回讀數(shù)據(jù)幀->與原始幀數(shù)據(jù)比對->校正幀中的錯誤位->寫回數(shù)據(jù)幀至FPGA,如圖3所示。

圖3 配置刷新流程
配置刷新依賴于外部刷新或內(nèi)部刷新電路。以Xilinx器件為例,JTAG接口、SelectMAP接口為外部刷新,需要外部刷新電路通過FPGA外部引腳進(jìn)行讀寫[5]。(1)使用JTAG接口占用外部引腳少,且具有其他配置接口中的最高優(yōu)先級,甚至可以中斷正在運行的重新配置過程。該接口以串行模式傳輸,最大速率為24 Mb/s,相對讀取配置數(shù)據(jù)時間長。(2)SelectMAP為并行接口,讀取配置數(shù)據(jù)時間短,占用FPGA外部引腳較多,對于高輸出引腳利用率的應(yīng)用是個缺點。(3)ICAP接口為內(nèi)部刷新接口,使用內(nèi)部刷新方式無需占用FPGA外部接口,讀寫配置寄存器時間短,配置速率可達(dá)3.2 Gb/s。目前,空間應(yīng)用系統(tǒng)中常用的Xilinx V2~V5系列器件多采用SelectMAP方式,V7系列器件采用ICAP方式進(jìn)行配置刷新。根據(jù)刷新方式不同,可分為全局復(fù)位刷新、盲刷新、配置回讀刷新,其刷新過程和優(yōu)缺點分析如表1所示。

表1 配置刷新方式及優(yōu)缺點
驗證SRAM型FPGA設(shè)計抗翻轉(zhuǎn)措施有效性的手段通常包括輻射實驗和故障注入。輻射實驗成本高,實驗周期長,目前國內(nèi)能做模擬單粒子轟擊的實驗室不多,且輻射實驗對發(fā)現(xiàn)問題難以定位故障點。故障注入方式具有周期短、成本低、可測試性高等優(yōu)點,是評估SEU緩解措施有效性的一種重要手段。
針對加固設(shè)計(如TMR)的仿真驗證手段可通過門級仿真實現(xiàn),門級仿真能夠發(fā)現(xiàn)三模冗余失效、異常情況下狀態(tài)機(jī)死鎖、特殊用途寄存器被優(yōu)化等問題。在針對綜合后網(wǎng)表的門級仿真環(huán)境下模擬單比特或多比特翻轉(zhuǎn),能驗證冗余設(shè)計的有效性。例如模擬關(guān)鍵模塊的狀態(tài)機(jī)寄存器出現(xiàn)單粒子翻轉(zhuǎn)故障,通過仿真命令(如force)修改某一時刻的狀態(tài)寄存器進(jìn)入無效狀態(tài),查看仿真波形確定狀態(tài)機(jī)是否能回到有效的狀態(tài),之后的狀態(tài)機(jī)遷移是否正確,沒有出現(xiàn)死鎖。
針對配置刷新的SEU緩解設(shè)計通常包括一個外部存儲器存放原始配置位流,可參照圖4的仿真測試驗證框架對其進(jìn)行驗證,對加載控制、回讀判定、刷新功能進(jìn)行驗證,仿真測試還能測試接口時序、重載時間、回讀周期和刷新周期等。圖中PROM仿真模型能模擬外部存儲器(存放原始配置位流)的接口時序。配置區(qū)仿真模型存儲配置數(shù)據(jù),模擬selectMAP接口時序與被測件(Device Under Test,DUT)交互。上電復(fù)位后,DUT應(yīng)能從PROM中讀出配置數(shù)據(jù)實現(xiàn)加載過程;拉低PROG信號,DUT應(yīng)能從PROM中讀出配置數(shù)據(jù)實現(xiàn)配置重載。

圖4 仿真測試驗證框架
FPGA特有的配置電路加載過程包括上電過程(設(shè)備上電、清配置區(qū)等)、配置位流加載過程(同步、設(shè)備ID檢測、加載配置數(shù)據(jù)、CRC檢測等)、啟動過程。針對配置回讀檢測刷新設(shè)計的驗證流程包括去除同步位、寫回讀指令、讀取配置區(qū)位流和外部存儲區(qū)原始配置位流、數(shù)據(jù)比較[6]。測試人員應(yīng)關(guān)注回讀配置數(shù)據(jù)與PROM數(shù)據(jù)一致時,DUT是否不會重載;設(shè)置配置數(shù)據(jù)出現(xiàn)SEU錯誤,查看被測設(shè)計是否能檢測到單比特或者多比特翻轉(zhuǎn),并在檢測失敗后能夠控制接口時序進(jìn)行PROM原始配置數(shù)據(jù)重載。
NASA專門研發(fā)了面向大容量FPGA系統(tǒng)的測試驗證工具XRTC Fault Injector,這也是當(dāng)前業(yè)界使用的功能最齊全、最具代表性的FPGA故障注入測試系統(tǒng),每分鐘能自動測試1 000+配置編程點。歐空局支持開發(fā)的FLIPPER工具能評估基于Xilinx SRAM型FPGA的SEU和MBU(Multi Bits Upset)效應(yīng)。此外,通過FLIPPER工具收集導(dǎo)致功能故障所需的配置存儲器中隨機(jī)注入故障概率分布,有助于定義配置刷新率。文獻(xiàn)[7]中對FLIPPER與靜態(tài)分析工具STAR進(jìn)行實驗對比,并提出可通過STAR工具產(chǎn)生用于故障注入的點,結(jié)合FLIPPER進(jìn)行故障注入,評估加載用戶應(yīng)用的SRAM型FPGA設(shè)計SEU緩解措施是否有效。配置存儲器故障注入已被廣泛用于空間應(yīng)用系統(tǒng)的失效率統(tǒng)計,以及加固設(shè)計的有效性評估上[8]。這類故障注入系統(tǒng)通常由三部分組成:用于控制故障注入過程的控制板(基于FPGA)、測試板(DUT)、用于在線調(diào)試的PC。配置存儲器故障注入流程如圖5所示。

圖5 故障注入流程圖
配置存儲器故障注入系統(tǒng)具有測試速度快、統(tǒng)計效率高等特點,但由于需要搭建額外電路結(jié)構(gòu),更適合于研制單位測試產(chǎn)品抗SEU特性。
本文對針對易受軟錯誤影響的SRAM型FPGA進(jìn)行深入研究分析,闡述了三模冗余、糾錯編碼、配置刷新三種主流軟錯誤緩解措施的原理和方法,以及基于故障注入的驗證手段。隨著FPGA在空間系統(tǒng)的廣泛應(yīng)用,F(xiàn)PGA軟件針對軟錯誤緩解措施的技術(shù)和驗證方法亟需加強(qiáng)。參考國內(nèi)外研究現(xiàn)狀,結(jié)合FPGA軟件研制工作的實際特點,選擇合理的加固或刷新手段,對于切實提高空間應(yīng)用FPGA軟件研制質(zhì)量具有重要意義。