祝周榮 姜麗梅 劉國斌 劉芳汝
摘要:SRAM型FPGA在航天領(lǐng)域有著廣泛的應(yīng)用,配置刷新能提高SRAM型FPGA抗單粒子翻轉(zhuǎn)的能力,目前宇航SRAM型FPGA的抗SEU動態(tài)刷新電路設(shè)計技術(shù)已經(jīng)較為成熟,但是如何驗證其功能正確性,沒有給出特殊方法。本文提出四種消除單粒子效應(yīng)造成的軟故障的抗SEU的FPGA設(shè)計方式,并重點針對周期性閉環(huán)配置刷新方式進(jìn)行了仿真驗證技術(shù)研究,找出驗證該模式的關(guān)鍵驗證要點,供驗證人員作為指導(dǎo)。
關(guān)鍵詞:FPGA;SEU;動態(tài)刷新;SRAM
中圖分類號:TN791 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2018)02-0040-03
1 引言
基于SRAM的XilinxFPGA是由配置存儲器和受其控制的可配置邏輯資源這兩層疊加構(gòu)成。配置存儲器存儲著FPGA配置程序,控制著FPGA可配置邏輯資源,包括布線資源、可編程邏輯器件、數(shù)字時鐘管理單元等[1]。一旦配置存儲器被單粒子打翻,就可能造成FPGA功能失效。目前航天設(shè)計師通常使用一次性可編程FPGA(Actel的反熔絲芯片)設(shè)計一種特殊可進(jìn)行監(jiān)控和重配置的抗SEU(單粒子翻轉(zhuǎn))裝置,進(jìn)行定期全局刷新和局部刷新XilinxFPGA的配置存儲器,避免空間的單粒子翻轉(zhuǎn)效應(yīng)。本文對消除單粒子效應(yīng)造成的軟故障的方式進(jìn)行介紹,并針對其中最常用的一種抗單粒子翻轉(zhuǎn)裝置提出仿真驗證方案,驗證其單粒子翻轉(zhuǎn)的有效性,給出此類回讀刷新設(shè)計的驗證要點和驗證技術(shù)方法。
2 消除單粒子效應(yīng)造成的軟故障的方式
基于SRAM的XilinxFPGA中的可重新配置邏輯,雖然給航天系統(tǒng)設(shè)計人員帶來了靈活性和處理能力,但也是該器件的最大弱點,因此必須針對單粒子效應(yīng)(SEE)進(jìn)行妥善加固的話。三模冗余(TMR)的主要作用是存在單位翻轉(zhuǎn)的情況下,確保系統(tǒng)層次的正確操作。正確實現(xiàn)TMR只能保證針對一個或若干配置翻轉(zhuǎn)的設(shè)計層次的正確操作。為了預(yù)防翻轉(zhuǎn)積累,刷新算法是需要的。強(qiáng)烈建議不要單獨使用TMR或刷新。雖然必須考慮設(shè)計取舍,當(dāng)二者同時部署時才能得到最有效的系統(tǒng)級加固。
表1列出了用來消除單粒子效應(yīng)的常用的加固方法的優(yōu)缺點。根據(jù)實際可靠性要求,對于Xilinx的FPGA可以采用下表所列的方式靈活組合來消除單粒子效應(yīng)造成的軟故障的影響,一般方式1和方式2或方式1和方式3應(yīng)同時采用應(yīng)對不同的故障模式,建議至少實現(xiàn)方式4[2]。
3 測試床組成
表1的方式3 由于其設(shè)計方法可行,既不中斷FPGA 正常工作,對系統(tǒng)功能不影響,又可以及時糾正翻轉(zhuǎn)故障,達(dá)到的抗單粒子效應(yīng)最好,因此被最普遍用于航天產(chǎn)品設(shè)計中。該類電路通常是用另一片不易被單粒子翻轉(zhuǎn)的反熔絲FPGA實現(xiàn),設(shè)計的基本思想是對SRAM型FPGA的上電加載過程進(jìn)行控制,然后通過回讀驗證技術(shù)回讀FPGA配置區(qū)比特流,判定和定位配置區(qū)程序的翻轉(zhuǎn)故障,通過內(nèi)部SelectMap接口或者JTAG接口對配置區(qū)重載配置,從而修復(fù)故障[3]。
以一個抗SEU 反熔絲FPGA設(shè)計為實例,構(gòu)建仿真測試床如圖1所示,根據(jù)需求分析和實際應(yīng)用場景構(gòu)建仿真驗證測試床,測試床應(yīng)該與一個真正的PCB電路板一致,保證測試環(huán)境的正確性。
仿時鐘和復(fù)位信號模型設(shè)計很簡單,用于產(chǎn)生系統(tǒng)工作時鐘和上電復(fù)位信號。
仿PROM模塊仿真模型用于模擬FPGA外部放置SRAM型FPGA程序的PROM器件(通常為XQR17V16芯片),該模型不僅模擬和檢測接口時序,內(nèi)部還開辟了只讀空間存放了SRAM型FPGA產(chǎn)品VirtexII系列fpga的配置bit文件。
仿SRAM型FPGA配置區(qū)模擬了配置區(qū)功能,除了完成接口的時序仿真以外,內(nèi)部還開辟一塊存儲空間用于數(shù)據(jù)文件的存放。
4 驗證要點和驗證方法
本文針對目前航天主流SRAM型FPGA產(chǎn)品VirtexII系列fpga進(jìn)行SelectMap接口回讀刷新設(shè)計的ASIC電路或者FPGA設(shè)計,提出仿真驗證要點及其驗證方法。對FPGA設(shè)計先進(jìn)行需求分析,得到設(shè)計的3個功能點:加載控制功能、回讀判定功能、刷新重構(gòu)功能。在該測試床中分別對這3個功能點進(jìn)行驗證,確保設(shè)計有效性。
4.1 加載控制功能
上電后,在SelectMap接口方式下,DUT與待刷新FPGA接口信號由DATA[0:7],CCLK,CS_B,RDWR_B等信號構(gòu)成,接口時序如圖2所示[2]。測試內(nèi)容包括下面3點。
(1)上電復(fù)位后,Xilinx FPGA的讀寫控制信號nwr、片選控制信號ncs為低電平,產(chǎn)生配置時鐘cclk,prog_b信號有低電平脈沖,當(dāng)init_b信號由低電平變?yōu)楦唠娖胶?,?yīng)從PROM中讀出配置數(shù)據(jù),對Xilinx FPGA進(jìn)行加載。
(2)當(dāng)done信號變?yōu)楦唠娖?,Xilinx FPGA加載成功后,如果done信號又變?yōu)榈碗娖剑琾rog_b信號會有低電平脈沖,對Xilinx FPGA進(jìn)行重載。
(3)應(yīng)有超時判定,超時后done信號還沒有變?yōu)楦唠娖剑琾rog_b信號會有低電平脈沖,對Xilinx FPGA進(jìn)行重載。
(4)PROM中存儲的配置文件與Xilinx FPGA配置區(qū)的數(shù)據(jù)文件數(shù)據(jù)應(yīng)一致。
4.2 回讀判定功能
VirtexII系列一個完整的回讀流程,包括三部分回讀時序:第一部分讀取CLB、IOI等,第二部分讀取第一部分最后一幀,第三部分讀取BRAM INT。以FPGA XC2V3000(XQR2V3000)的SelectMAP回讀流程為例,具體回讀流程如圖3所示,簡要的說就是5步:去同步->寫回讀指令->讀Pad Frame->讀FPGA配置數(shù)據(jù)和PROM配置數(shù)據(jù)->比較回讀數(shù)據(jù)。
根據(jù)SelectMap回讀時序在測試激勵中接收輸出的回讀指令,并輸入回讀的FPGA配置數(shù)據(jù)。需要從以下幾個方面進(jìn)行重點測試:
(1)回讀指令正確,針對不同型號的FPGA,使用對應(yīng)的回讀指令;
(2)回讀的配置數(shù)據(jù)大小正確,針對不同型號的FPGA,有對應(yīng)的配置數(shù)據(jù)幀長和幀數(shù);
(3)一次完整的回讀,Virtex、VirtexIV和VirtexV系列FPGA只發(fā)送一次回讀指令來回讀配置數(shù)據(jù),VirtexII系列FPGA要發(fā)送3次回讀指令來回讀3部分不同的配置數(shù)據(jù);
(4)回讀的配置數(shù)據(jù)正常時,不會重載;
(5)將回讀的配置數(shù)據(jù)設(shè)置成翻轉(zhuǎn)錯誤,能檢測到翻轉(zhuǎn),并且能夠重載被回讀的FPGA,需要重點關(guān)注每部分回讀數(shù)據(jù)的第一個字節(jié)和最后一個字節(jié)均應(yīng)正確被回讀;
(6)如果被回讀FPGA設(shè)計中有SRL16或LUTRAM,針對VirtexII系列FPGA,應(yīng)該把SRL16或LUTRAM放在特定區(qū)域;針對VirtexIV和VirtexV系列FPGA,在回讀指令中對控制寄存器中的GLUTMASK_B置為0,避免回讀到該部分內(nèi)容。
4.3 刷新重構(gòu)功能
一個完整的刷新流程,包括兩部分刷新時序:第一部分刷新CLB、IOI等,第二部分刷新BRAM INT,以FPGA XC2V3000(XQR2V3000)的SelectMAP刷新流程為例,流程如圖4所示:
在測試床中以讀PROM時得到的FPGA配置數(shù)據(jù)為準(zhǔn),根據(jù)SelectMap刷新時序在測試床中接收輸出的刷新指令和刷新配置數(shù)據(jù)。需要從以下幾個方面進(jìn)行重點測試:
(1)刷新指令正確,針對不同型號的FPGA,使用對應(yīng)的刷新指令;
(2)刷新的配置數(shù)據(jù)大小正確,針對不同型號的FPGA,有對應(yīng)的配置數(shù)據(jù)幀長和幀數(shù);
(3)一次完整的刷新,Virtex、VirtexIV和VirtexV系列FPGA只發(fā)送一次刷新指令來刷新配置數(shù)據(jù),VirtexII系列FPGA要發(fā)送2次刷新指令來刷新2部分不同的配置數(shù)據(jù);
(4)刷新的配置數(shù)據(jù)與從PROM中讀取的配置數(shù)據(jù)應(yīng)該一致,需要重點關(guān)注每部分配置數(shù)據(jù)的第一個字節(jié)和最后一個字節(jié);
(5)如果被刷新FPGA設(shè)計中有SRL16或LUTRAM,針對VirtexIV和VirtexV系列FPGA,在刷新指令中同回讀一樣應(yīng)對Control register進(jìn)行設(shè)置,避免刷新到該部分內(nèi)容。
5 結(jié)語
驗證最求的是零驗漏[5],除了上述的從功能結(jié)構(gòu)分解的功能測試點外,還應(yīng)該從性能、接口、安全和恢復(fù)性各方面對設(shè)計進(jìn)行高效和全面的驗證,如重載時間、回讀周期和刷新周期等性能測試,所有接口時序測試,復(fù)位后FPGA的狀態(tài)等恢復(fù)性測試等,在驗證之初就應(yīng)該對每個設(shè)計點有細(xì)節(jié)的認(rèn)知,從而提前作出決策,提高驗證的整體質(zhì)量。
參考文獻(xiàn)
[1]趙剛.基于配置比特流的FPGA容錯技術(shù)的研究[D].北京化工大學(xué),2013.
[2]王文炎,羅磊,張瑩,于慶奎.宇航用SRAM型FPGA應(yīng)用指南 中國航天科技集團(tuán)公司標(biāo)準(zhǔn)Q/QJA 20057—2012.
[3]鄭曉云,陶淑蘋,馮汝鵬,王紹舉.SRAM型FPGA抗單粒子翻轉(zhuǎn)技術(shù)研究[J].電子測量技術(shù),2005(01);59-63.
[4]郝亞男,高欣,許仕龍.SRAM型FPGA的SEU容錯技術(shù)[J].中國集成電路2015,(10):31-36.
[5]黃麗.百萬門級專用集成電路的FPGA驗證[D].西安電子科技大學(xué),2009.