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