鄭 丹,胡勝旺,封 亮,崔紅軍
(中國(guó)電子科技集團(tuán)公司第三十二研究所測(cè)評(píng)中心,上海 201808)
現(xiàn)場(chǎng)可編程邏輯門陣列(Field Programmable Gate Array,FPGA)由于其靈活性和高計(jì)算能力,在嵌入式、網(wǎng)絡(luò)、信息系統(tǒng)等領(lǐng)域中得到了廣泛的應(yīng)用。在航空航天應(yīng)用中,傳統(tǒng)上人們更傾向于使用對(duì)輻射高耐受性的反熔絲型FPGA。近年來,由于低成本、高性能和飛行中的可重構(gòu)性,基于靜態(tài)隨機(jī)存取存儲(chǔ)器(Static Random-Access Memory,SRAM)的FPGA在空間嵌入式系統(tǒng)中的應(yīng)用越來越受到關(guān)注。然而,SRAM型FPGA由于其定義用戶電路的配置存儲(chǔ)區(qū)易受單粒子翻轉(zhuǎn)效應(yīng)(Single Event Upset,SEU)的影響,對(duì)輻射特別敏感,易引起系統(tǒng)失效。根據(jù)對(duì)商用飛機(jī)的問題統(tǒng)計(jì),有20%的“不可重現(xiàn)”問題來源于SEU導(dǎo)致的軟錯(cuò)誤。2011年,美國(guó)聯(lián)邦航空局DO-254認(rèn)證文檔第6節(jié),明確要求在驗(yàn)證和確認(rèn)階段,能夠驗(yàn)證目標(biāo)系統(tǒng)SEU緩解對(duì)策的有效性[1]。2014 年,波音等航電設(shè)備廠商,專門發(fā)布了針對(duì)SEU的航電設(shè)備安全性認(rèn)證報(bào)告。美國(guó)聯(lián)邦航空局(Federal Aviation Administration,FAA)、歐洲航空安全局(European Aviation Safety Agency,EASA)等監(jiān)管機(jī)構(gòu)也已經(jīng)開始將單粒子防護(hù)設(shè)計(jì)和評(píng)價(jià)要求納入工程化標(biāo)準(zhǔn)或適航要求。國(guó)內(nèi)針對(duì)抗SEU設(shè)計(jì)需求分析和驗(yàn)證要求寫入了國(guó)標(biāo)、國(guó)軍標(biāo)規(guī)范:2017年5月31日發(fā)布的GB/T33781《可編程邏輯器件軟件開發(fā)通用要求》,2018年8月1日發(fā)布的GJB9432《軍用可編程邏輯器件軟件開發(fā)通用要求》在需求分析階段指出需針對(duì)抗?fàn)顟B(tài)翻轉(zhuǎn)開展必要和可行性分析,并明確抗?fàn)顟B(tài)翻轉(zhuǎn)技術(shù)方法。同期發(fā)布的GB/T33783《可編程邏輯器件軟件測(cè)試指南》、GJB9433《軍用可編程邏輯器件軟件測(cè)試要求》在安全性測(cè)試中也明確要求“測(cè)試抗?fàn)顟B(tài)翻轉(zhuǎn)措施的有效性”。本文基于SRAM型FPGA對(duì)三模冗余技術(shù)、糾錯(cuò)編碼技術(shù)、配置刷新技術(shù)三類SEU緩解技術(shù)進(jìn)行深入研究和分析,并從仿真驗(yàn)證與故障注入兩種驗(yàn)證方法展開探討。
三模冗余防護(hù)方法(Triple Modular Redundancy,TMR)由于有工具支持、使用方便,因此是較常用的SEU緩解技術(shù)。TMR建立硬件冗余結(jié)構(gòu),對(duì)關(guān)鍵電路復(fù)制三份,通過對(duì)三路輸出結(jié)果表決來屏蔽任何一路的SEU故障。FPGA廠商Xilinx推出RTL級(jí)的TMR設(shè)計(jì)工具TMR Tool幫助實(shí)現(xiàn)基于綜合后網(wǎng)表的三模冗余加固。目前國(guó)內(nèi)可購(gòu)買的TMR Tool最高版本為9.2i,支持Xilinx V1~V5系列,適配ISE 9.2及其之前的版本。此外,更簡(jiǎn)單經(jīng)濟(jì)的方式是使用帶TMR功能的第三方綜合工具。例如Mentor Graphics的綜合工具Precision Hi-Rel提供三模冗余功能,支持用戶電路TMR插入,需做抗SEU加固設(shè)計(jì)的FPGA設(shè)計(jì)可通過關(guān)聯(lián)第三方綜合器實(shí)現(xiàn)TMR。Libero開發(fā)環(huán)境中適配Synopsys公司的Synplify/Synplify Pro綜合器支持在模塊或寄存器聲明后添加三模冗余屬性設(shè)置“/*synthesis syn_radhardlevel="tmr"*/”,完成模塊級(jí)或寄存器級(jí)的三模冗余電路設(shè)計(jì)??紤]到資源開銷,目前常用的三模冗余方式只對(duì)時(shí)序電路復(fù)制三份,三模前后對(duì)比如圖1所示,圖(b)中PS0_1、PS0_1_tmr2、PS0_1_tmr3為在圖(a)基礎(chǔ)上復(fù)制的三份電路,PS0_1_maj為表決電路。
圖1 基于時(shí)序邏輯TMR三模前后對(duì)比
TMR對(duì)SEU引起的功能錯(cuò)誤緩解效果較好,但邏輯資源開銷較大,且三模冗余的引入對(duì)時(shí)序會(huì)造成一定影響,一般對(duì)關(guān)鍵寄存器或者關(guān)鍵模塊進(jìn)行三模冗余。對(duì)于空間應(yīng)用領(lǐng)域使用較多的Xilinx器件,可通過廠商提供的TMRTool進(jìn)行基于綜合后網(wǎng)表的TMR,結(jié)合刷新技術(shù)可防止SEU錯(cuò)誤累積;對(duì)于Actel器件,可在RTL源碼中添加TMR屬性設(shè)定,實(shí)現(xiàn)綜合后網(wǎng)表的三模冗余,后者在靈活性上更勝一籌。文獻(xiàn)[2]分別基于Xilinx和Actel器件的TMR實(shí)現(xiàn)效果進(jìn)行分析比較。
通過TMR加固的FPGA系統(tǒng)發(fā)生SEU后,關(guān)鍵電路的錯(cuò)誤狀態(tài)可能暫時(shí)不會(huì)傳入下一級(jí),但在系統(tǒng)長(zhǎng)時(shí)間運(yùn)行條件下,錯(cuò)誤狀態(tài)可能進(jìn)行累積從而導(dǎo)致系統(tǒng)失效。引入糾錯(cuò)編碼技術(shù)(Error Detecting And Correcting,EDAC)可對(duì)各模塊關(guān)鍵信號(hào)實(shí)時(shí)監(jiān)測(cè),并將檢測(cè)到的錯(cuò)誤信號(hào)及時(shí)糾正,防止了空間輻照對(duì)系統(tǒng)的影響。具有單比特錯(cuò)誤糾正、雙比特錯(cuò)誤檢測(cè)(Single Error Correction - Double Error Detection,SEC-DED)功能的漢明碼EDAC技術(shù)已被證明是保護(hù)內(nèi)部配置存儲(chǔ)器和其他外部易失性存儲(chǔ)器的有效方法。目前,用于加固的EDAC電路多通過線性分組碼實(shí)現(xiàn),在編碼過程中生成待編碼信息數(shù)據(jù)的校驗(yàn)位,校驗(yàn)位與數(shù)據(jù)一同存儲(chǔ),利用譯碼過程與編碼過程中產(chǎn)生校驗(yàn)位的異或結(jié)果對(duì)錯(cuò)誤進(jìn)行糾正。從資源占用和性能考慮,相比于TMR,EDAC更適合防護(hù)RAM器件,糾錯(cuò)編碼技術(shù)與TMR均屬于用戶電路加固技術(shù)[3]。文獻(xiàn)[4]提出了TMR與EDAC相結(jié)合的技術(shù),可糾正雙比特錯(cuò)誤。
針對(duì)SEU的SRAM型FPGA故障模式如圖2所示:BRAM翻轉(zhuǎn)故障將改變用戶數(shù)據(jù),可通過EDAC校驗(yàn)檢測(cè);組合邏輯故障、時(shí)序邏輯故障、互連關(guān)系故障將改變電路邏輯結(jié)果,可通過TMR方式緩解用戶數(shù)據(jù)故障。但由于組合/時(shí)序邏輯及其內(nèi)連關(guān)系由配置編程點(diǎn)決定,一旦配置區(qū)受SEU影響,直到原始配置位流重新載入到FPGA中用戶數(shù)據(jù)才能恢復(fù)。且配置存儲(chǔ)容量占FPGA存儲(chǔ)資源的85%以上,因此需要結(jié)合配置刷新技術(shù)防止配置存儲(chǔ)區(qū)的SEU效應(yīng)。
圖2 SRAM型FPGA故障模式
配置刷新是指系統(tǒng)配置成功后,按預(yù)定時(shí)間間隔或幀校驗(yàn)結(jié)果,將配置區(qū)數(shù)據(jù)重寫入FPGA,以消除已有SEU錯(cuò)誤積累的方法,刷新的對(duì)象為FPGA內(nèi)部CLB配置。配置刷新的基本流程為:回讀數(shù)據(jù)幀->與原始幀數(shù)據(jù)比對(duì)->校正幀中的錯(cuò)誤位->寫回?cái)?shù)據(jù)幀至FPGA,如圖3所示。
圖3 配置刷新流程
配置刷新依賴于外部刷新或內(nèi)部刷新電路。以Xilinx器件為例,JTAG接口、SelectMAP接口為外部刷新,需要外部刷新電路通過FPGA外部引腳進(jìn)行讀寫[5]。(1)使用JTAG接口占用外部引腳少,且具有其他配置接口中的最高優(yōu)先級(jí),甚至可以中斷正在運(yùn)行的重新配置過程。該接口以串行模式傳輸,最大速率為24 Mb/s,相對(duì)讀取配置數(shù)據(jù)時(shí)間長(zhǎng)。(2)SelectMAP為并行接口,讀取配置數(shù)據(jù)時(shí)間短,占用FPGA外部引腳較多,對(duì)于高輸出引腳利用率的應(yīng)用是個(gè)缺點(diǎn)。(3)ICAP接口為內(nèi)部刷新接口,使用內(nèi)部刷新方式無需占用FPGA外部接口,讀寫配置寄存器時(shí)間短,配置速率可達(dá)3.2 Gb/s。目前,空間應(yīng)用系統(tǒng)中常用的Xilinx V2~V5系列器件多采用SelectMAP方式,V7系列器件采用ICAP方式進(jìn)行配置刷新。根據(jù)刷新方式不同,可分為全局復(fù)位刷新、盲刷新、配置回讀刷新,其刷新過程和優(yōu)缺點(diǎn)分析如表1所示。
表1 配置刷新方式及優(yōu)缺點(diǎn)
驗(yàn)證SRAM型FPGA設(shè)計(jì)抗翻轉(zhuǎn)措施有效性的手段通常包括輻射實(shí)驗(yàn)和故障注入。輻射實(shí)驗(yàn)成本高,實(shí)驗(yàn)周期長(zhǎng),目前國(guó)內(nèi)能做模擬單粒子轟擊的實(shí)驗(yàn)室不多,且輻射實(shí)驗(yàn)對(duì)發(fā)現(xiàn)問題難以定位故障點(diǎn)。故障注入方式具有周期短、成本低、可測(cè)試性高等優(yōu)點(diǎn),是評(píng)估SEU緩解措施有效性的一種重要手段。
針對(duì)加固設(shè)計(jì)(如TMR)的仿真驗(yàn)證手段可通過門級(jí)仿真實(shí)現(xiàn),門級(jí)仿真能夠發(fā)現(xiàn)三模冗余失效、異常情況下狀態(tài)機(jī)死鎖、特殊用途寄存器被優(yōu)化等問題。在針對(duì)綜合后網(wǎng)表的門級(jí)仿真環(huán)境下模擬單比特或多比特翻轉(zhuǎn),能驗(yàn)證冗余設(shè)計(jì)的有效性。例如模擬關(guān)鍵模塊的狀態(tài)機(jī)寄存器出現(xiàn)單粒子翻轉(zhuǎn)故障,通過仿真命令(如force)修改某一時(shí)刻的狀態(tài)寄存器進(jìn)入無效狀態(tài),查看仿真波形確定狀態(tài)機(jī)是否能回到有效的狀態(tài),之后的狀態(tài)機(jī)遷移是否正確,沒有出現(xiàn)死鎖。
針對(duì)配置刷新的SEU緩解設(shè)計(jì)通常包括一個(gè)外部存儲(chǔ)器存放原始配置位流,可參照?qǐng)D4的仿真測(cè)試驗(yàn)證框架對(duì)其進(jìn)行驗(yàn)證,對(duì)加載控制、回讀判定、刷新功能進(jìn)行驗(yàn)證,仿真測(cè)試還能測(cè)試接口時(shí)序、重載時(shí)間、回讀周期和刷新周期等。圖中PROM仿真模型能模擬外部存儲(chǔ)器(存放原始配置位流)的接口時(shí)序。配置區(qū)仿真模型存儲(chǔ)配置數(shù)據(jù),模擬selectMAP接口時(shí)序與被測(cè)件(Device Under Test,DUT)交互。上電復(fù)位后,DUT應(yīng)能從PROM中讀出配置數(shù)據(jù)實(shí)現(xiàn)加載過程;拉低PROG信號(hào),DUT應(yīng)能從PROM中讀出配置數(shù)據(jù)實(shí)現(xiàn)配置重載。
圖4 仿真測(cè)試驗(yàn)證框架
FPGA特有的配置電路加載過程包括上電過程(設(shè)備上電、清配置區(qū)等)、配置位流加載過程(同步、設(shè)備ID檢測(cè)、加載配置數(shù)據(jù)、CRC檢測(cè)等)、啟動(dòng)過程。針對(duì)配置回讀檢測(cè)刷新設(shè)計(jì)的驗(yàn)證流程包括去除同步位、寫回讀指令、讀取配置區(qū)位流和外部存儲(chǔ)區(qū)原始配置位流、數(shù)據(jù)比較[6]。測(cè)試人員應(yīng)關(guān)注回讀配置數(shù)據(jù)與PROM數(shù)據(jù)一致時(shí),DUT是否不會(huì)重載;設(shè)置配置數(shù)據(jù)出現(xiàn)SEU錯(cuò)誤,查看被測(cè)設(shè)計(jì)是否能檢測(cè)到單比特或者多比特翻轉(zhuǎn),并在檢測(cè)失敗后能夠控制接口時(shí)序進(jìn)行PROM原始配置數(shù)據(jù)重載。
NASA專門研發(fā)了面向大容量FPGA系統(tǒng)的測(cè)試驗(yàn)證工具XRTC Fault Injector,這也是當(dāng)前業(yè)界使用的功能最齊全、最具代表性的FPGA故障注入測(cè)試系統(tǒng),每分鐘能自動(dòng)測(cè)試1 000+配置編程點(diǎn)。歐空局支持開發(fā)的FLIPPER工具能評(píng)估基于Xilinx SRAM型FPGA的SEU和MBU(Multi Bits Upset)效應(yīng)。此外,通過FLIPPER工具收集導(dǎo)致功能故障所需的配置存儲(chǔ)器中隨機(jī)注入故障概率分布,有助于定義配置刷新率。文獻(xiàn)[7]中對(duì)FLIPPER與靜態(tài)分析工具STAR進(jìn)行實(shí)驗(yàn)對(duì)比,并提出可通過STAR工具產(chǎn)生用于故障注入的點(diǎn),結(jié)合FLIPPER進(jìn)行故障注入,評(píng)估加載用戶應(yīng)用的SRAM型FPGA設(shè)計(jì)SEU緩解措施是否有效。配置存儲(chǔ)器故障注入已被廣泛用于空間應(yīng)用系統(tǒng)的失效率統(tǒng)計(jì),以及加固設(shè)計(jì)的有效性評(píng)估上[8]。這類故障注入系統(tǒng)通常由三部分組成:用于控制故障注入過程的控制板(基于FPGA)、測(cè)試板(DUT)、用于在線調(diào)試的PC。配置存儲(chǔ)器故障注入流程如圖5所示。
圖5 故障注入流程圖
配置存儲(chǔ)器故障注入系統(tǒng)具有測(cè)試速度快、統(tǒng)計(jì)效率高等特點(diǎn),但由于需要搭建額外電路結(jié)構(gòu),更適合于研制單位測(cè)試產(chǎn)品抗SEU特性。
本文對(duì)針對(duì)易受軟錯(cuò)誤影響的SRAM型FPGA進(jìn)行深入研究分析,闡述了三模冗余、糾錯(cuò)編碼、配置刷新三種主流軟錯(cuò)誤緩解措施的原理和方法,以及基于故障注入的驗(yàn)證手段。隨著FPGA在空間系統(tǒng)的廣泛應(yīng)用,F(xiàn)PGA軟件針對(duì)軟錯(cuò)誤緩解措施的技術(shù)和驗(yàn)證方法亟需加強(qiáng)。參考國(guó)內(nèi)外研究現(xiàn)狀,結(jié)合FPGA軟件研制工作的實(shí)際特點(diǎn),選擇合理的加固或刷新手段,對(duì)于切實(shí)提高空間應(yīng)用FPGA軟件研制質(zhì)量具有重要意義。