★北京廣利核系統工程有限公司高玉斌,武方杰
關鍵詞:單粒子翻轉;FPGA;ICAP;故障注入;仿真
1 引言
目前應用于核電廠的FPGA器件日益增多,而隨著FPGA工藝技術的不斷發展,小尺寸、高密度及低電壓的FPGA芯片越來越多地應用于核電廠數字化儀控系統。根據不同工藝,FPGA芯片可分為SRAM型FPGA、Flash型FPGA和反熔絲FPGA。由于具有密度高、可配置性好、成本低等優勢,SRAM型FPGA被廣泛應用到核電廠、航天、通信等領域。
在不同應用場景,尤其是核電廠應用場景下,SRAM型FPGA不可避免地會在高能粒子輻射環境下工作,高能量粒子會滲透到FPGA內部[1]。當高能粒子與存儲器PN節進行碰撞時,其運動路徑上形成瞬態電流,當電流值達到一定程度后會改變PN節的導通和截止狀態,引起邏輯狀態翻轉,產生單粒子翻轉,如圖1所示。
圖1 單粒子翻轉示意圖
SRAM型FPGA內部包含配置存儲區、查找表存儲區、塊存儲區和觸發器,如圖2所示。
(1)配置存儲區(Configuration memory):用于配置FPGA芯片內部電路功能;
(2)塊存儲區(Block memory):FPGA內部自帶的用于存儲數據的RAM塊;
(3)分布式存儲區(Distributed memory):存在于配置邏輯塊(Configuration Logic Blocks,CLB)的LUT中,用于存儲LUT運行時的數據;
(4)觸發器(Flip-Flop):存在于CLB的觸發器中。
圖2 FPGA內部存儲區結構示意圖
在四種存儲區類型中,配置存儲區通常占整個存儲區資源的90%以上,美國LosAlamos試驗室和Xilinx公司對FPGA的SEU事件中所占比重[2]。如表1所示,從比例上看四種存儲區對SEU最敏感的為配置存儲區。因而從SEU敏感性的角度考慮,對SEU的防范主要針對配置存儲區進行防范,SEU的故障注入也主要針對配置存儲區,對其進行SEU測試。
表1 FPGA各個類型存儲器在SEU截面比重

本文分析了4種行業內常用的SEU故障注入方法,提出了一種通過XILINX公司提供的SEM核進行SEU故障軟注入的方法。該方法較其他方法具有成本低、可控性強、易觀測的特點,是一種適合核電廠SRAM型FPGA的經濟且有效的SEU故障注入方法。
2 SEU故障注入方法分析
模擬單粒子翻轉的故障,一般采用以下四種方式,如表2所示:
(1)現場運行試驗:將產品放置到現場運行環境,在真實的環境中進行測試。該方法可真實全面體現SEU環境,能夠實現故障注入,覆蓋SEU故障檢測和處理功能。測試方法不會改變設計,對產品和系統功能沒有影響,但需要在現場進行長期的試驗,現場很難提供試驗條件,試驗成本很高,也無法控制一定出現SEU失效,不可執行。
(2)模擬試驗:在專門的試驗室或試驗機構中模擬高能粒子轟擊試驗。該方法能夠覆蓋SEU故障檢測和處理功能,不會改變被測對象的設計,對產品和系統功能沒有影響,但需要獲取現場高能粒子數據,制定試驗指標,并且需要尋找具有資質和能力的試驗室,支付較高的試驗費用。因此,該方案技術指標難度大、成本高。
(3)基于故障注入硬件平臺方法[3]:自開發一個硬件試驗平臺,將集成FPGA芯片放置到硬件平臺上的被測FPGA位置,用于控制整個故障注入過程的FPGA或MCU通過select-MAP接口將有單bit翻轉故障的下裝文件下載到被測FPGA內,模擬SEU故障。該方法能夠覆蓋SEU故障檢測和處理功能,但會改變FPGA芯片周邊的運行電路,需要設計模擬SEU故障的硬件平臺,并且通過select-MAP接口注入單bit翻轉故障的邏輯程序,因此較為復雜,成本高、難度大。故障注入硬件平臺示意圖如圖3所示。
圖3 故障注入硬件平臺示意圖
(4)基于IP核的故障注入仿真法:XILINX公司的SEM(Soft Error Mitigation)IP核,除了提供SEU故障檢測功能外,為便于測試,也提供了SEU故障注入接口,以保證當發生SEU故障時故障檢測和故障處理功能的合理性。該方法能夠實現SEU故障注入,覆蓋SEU故障檢測和處理功能的測試,并且成本低,可操作性強,但需要使能故障注入功能,同時需要增加測試代碼(電路)進行IP核的狀態轉換和故障注入。該方法雖然改變了被測對象的設計,但可以通過將測試電路固化到未使用的空白電路處,實現與被測對象的獨立。同時,測試電路僅增加了對正常運行時IP核不使用的故障注入接口,可保證對正常運行邏輯的功能和時序不產生影響。
表2 SEU故障注入方法比較分析表
通過對四種方法的比較分析可以看出,雖然基于IP核的故障注入仿真法是在仿真環境下進行測試,但由于SEU的失效機理明確,失效表現確定,故仿真環境與實際無差別。同時考慮到該方法易于觀測,可控性強,成本低,難度低,故本研究采用基于XILINX公司提供的SEM核的故障注入仿真法進行SEU的故障注入,執行SEU故障檢測和處理功能的測試。
2 SEU故障注入仿真方法
本文提出的SEU故障注入仿真方法,基于XILINX公司的SEM核實現如圖4所示。SEM核是針對配置存儲區發生SEU故障時進行故障檢測、故障注入、故障糾正和故障分類。四個功能除故障檢測外,其他三個功能均可選。SEM核通過ICAP接口不間斷地周期掃描FPGA的配置存儲區,檢測配置存儲單元內容和初始值是否一致,如果不一致進行SEU故障報警;如果使能故障注入功能,則會提供故障注入接口;如果使能故障糾錯,會針對單個bit的SEU故障進行修正;如果使能分類功能,會將在被用戶使用的電路發生SEU還是未被使用的空白電路發生SEU故障進行分類報警。本方法通過SEM核的故障注入接口,注入SEU故障,并通過故障檢測標志位顯示故障注入成功。
圖4 故障注入仿真示意圖
2.1 SEU故障注入設計架構
基于SEM核的SEU故障注入方法主要包括:SEM控制內核模塊、ICAP配置接口模塊、RS232串口控制模塊、SEU故障注入控制模塊和狀態輸出模塊,如圖5所示。
圖5 故障注入設計架構圖
(1)SEM控制內核模塊:檢測和糾正因電離輻射導致FPGA內部配置存儲區的非預期狀態翻轉,共有六組接口:
·故障注入接口:通過該接口注入要翻轉FPGA內部的配置存儲區的任意配置位的地址信息。
·ICAP接口:通過該接口訪問FPGA內部的配置存儲區,修改配置存儲區相應的配置位,也通過該接口掃描配置存儲區,以使SEM控制內核進行是否翻轉的判定。
·FRAME_ECC接口:當SEM控制內核使能故障糾正功能時,作為接收故障糾正原語模塊FRAME_ECCE2輸出的故障狀態信息,本方法只使能SEM控制內核的SEU故障檢測和故障注入功能,故不使用該接口。
·fetch配置幀接口:主要是為SEM控制內核提供一個外部接口,在故障糾錯或故障分類時獲取外部FLASH或其他設備存儲的配置幀。本方法只使能SEM控制內核的SEU故障檢測和故障注入功能,故不使用該接口。
·監視接口:主要是提供監視和修改SEM控制內核狀態的接口,本方法使用該接口,在SEU故障注入過程中進行內核狀態的轉變。
·狀態顯示接口:主要是將SEM控制內核監測SEU故障的必要狀態信息通過該接口輸出,供用戶使用。
(2)SEU故障注入控制模塊:將需要翻轉的配置存儲區的位置數據轉化為故障注入接口時序,實現SEU故障數據的注入。
(3)ICAP配置接口模塊:讀取FPGA內部配置存儲區的配置數據,并轉化為ICAP接口傳遞給SEM控制內核,實現配置存儲區的掃描。
(4)RS232串口控制模塊:實現RS232接口數據轉化為SEM控制內核的監視接口數據,對SEM控制內核的狀態轉化進行控制和監視。
(5)SEU故障狀態顯示模塊:采集SEM控制內核產生的SEU故障狀態信息。
通過RS232串口控制整個SEU故障注入的命令順序,以及SEU故障注入,實現故障注入和故障檢測的自動測試。
2.2 SEM控制內核模塊設計
SEM控制內核的設計通過調用XILINX提供的IP核實現,在VIVADO工具的PROJECT_MANAGER中的IPCatalog,選擇SoftError Mitigation的IP核進行配置。為了能夠控制注入SEU故障,需使能故障注入功能,這樣生成的SEM控制內核才會提供SEU故障注入接口。該IP核使用的時鐘頻率在8~100MHz之間,頻率越快完成SEU故障檢測的時間越短[4]。SEM控制內核配置示意圖如圖6所示。
圖6 SEM控制內核配置示意圖
2.3 ICAP配置接口模塊設計
SEM控制內核無法直接掃描和監視FPGA內部配置存儲區。為了監視配置存儲區的配置位是否發生跳變,以及將需要注入的SEU故障數據設置到正確的配置位上,通過調用可訪問配置存儲區的ICAPE2原語實現對FPGA內部配置存儲區的訪問。
ICAPE2#(
.DEVICE_ID(32'hFFFFFFFF),
.SIM_CFG_FILE_NAME("NONE"),
.ICAP_WIDTH("X32")
)
example_icap(
.O(icap_o),
.CLK(icap_clk),
.CSIB(icap_csib),
.I(icap_i),
.RDWRB(icap_rdwrb)
);
2.4 SEU故障狀態顯示模塊設計
該模塊采集SEM控制內核監測出的故障信息進行顯示,包括:
(1)心跳信號(status_heartbeat):表明SEM控制內核處在運行中還是停止運行。在SEU故障發生在SEM控制內核或時鐘資源上導致SEM控制內核無法工作的場景下,可通過該信號進行表征。
(2)初始化狀態信號(status_initialization):表征SEM控制內核處在初始化狀態。
(3)觀測狀態信號(status_observation):表征SEM控制內核處在觀察狀態(正常工作狀態)。
(4)糾錯狀態信號(status_correction):表征SEM控制內核在故障糾正狀態。
(5)故障分類信號(status_classification):表征SEM控制內核對識別的故障進行分類。
(6)故障注入信號(status_injection):表征SEM控制內核在故障注入過程中。
(7)基本位標志信號(status_essential):表征翻轉的配置位為基本位。
(8)不可糾錯信號(status_uncorrectable):表征SEM控制內核不能糾錯成功的標志。
2.5 SEU故障注入模塊設計
故障注入接口包括一個選通使能信號inject_strobe和輸入數據總線inject_address[39:0],實現一個簡單的并行接口。該接口接收四種類型的命令:
(1)進入空閑狀態命令;
(2)進入觀察狀態命令;
(3)在物理幀地址注入故障;
(4)在線性地址幀注入故障。SEM核為了獲得所需的命令和故障地址,按圖7所示時序實現故障注入。
圖7 故障注入接口時序圖
SEU故障注入地址分為兩種:一種是物理幀地址,一種是線性地址。通過注入地址可翻轉相應位置的配置存儲區的配置數據,實現模擬SEU故障。兩種地址類型的格式如圖8和圖9所示。
物理地址格式:
圖8 物理地址格式
其中:
SS:FPGA內部的SS碼。
TT:塊類型:00為分布式存儲區、01為塊存儲區、10為配置存儲區。
H:半地址。
RRRRR:行地址。
CCCCCCCCCC:列地址。
MMMMMMM:鏡像地址,列內幀地址。
WWWWWWW:字地址。
BBBBB:bit地址。
線性地址格式如圖9所示。
圖9 線性地址格式
其中:
SS:FPGA內部的SS碼。
LLLLLLLLLLLLLLLLL:線性幀地址。
WWWWWWW:字地址。
BBBBB:bit地址。
2.6 RS232串口控制模塊設計
SEM核可通過監視接口進行內部狀態的轉化。為便于控制,本研究使用簡單的RS232接口實現SEM核內部狀態的跳轉,需要將RS232串行接口時序轉化為SEM核的監視接口時序,如圖10所示。
圖10 RS232串口控制模塊功能模塊框圖
3 SEU故障自動測試實現
本研究通過在FPGA內部增加測試代碼,實現RS232串口控制整個SEU故障注入的命令順序,以及SEU故障注入,完成SEU故障注入和SEM核故障檢測的自動測試。測試代碼流程如圖11所示。
圖11 SEU故障自動注入流程
(1)注入I指令:在進行SEU故障注入前,SEM核需要進入IDLE狀態:通過RS232串口控制模塊,在需要注入SEU故障的時刻,在并行數據命令接口上寫入“I”指令對應的73數據,完成SEM核進入IDLE狀態的操作。
(2)延時:為保證指令注入成功,在寫入指令后適當等待一段時間,比如6000個clk時鐘周期,以保證指令生效,SEM核進入相應狀態。
(3)注入SEU故障:根據圖7時序,通過有效inject_strobe信號,啟動SEU故障注入模塊。inject_strobe模塊建議持續3個clk時鐘,基于物理幀地址格式寫入需翻轉的配置存儲區單個配置bit位,實現模擬單個配置位發生SEU故障;如果需要測試多個配置位翻轉的情況,則判定是否完成所有配置位的翻轉;如果完成,進入下一步流程,如果未完成,則循環執行其他bit的SEU故障注入。
(4)注入O指令:為了驗證在注入SEU故障后,SEM核是否能檢測出該故障,需要在故障注入完成后,讓SEM核進入Observation觀察狀態:通過RS232串口控制模塊,在并行數據命令接口上寫入“O”指令對應的79數據,完成SEM核進入Observation觀察的操作。
(5)狀態采集:SEM核通過ICAP配置接口模塊周期性掃描配置存儲區,一旦SEU故障注入成功,通過狀態顯示接口,將檢測到單粒子翻轉的結果通過有效基本位標志信號(status_essential)表征,并傳遞到SEU故障狀態顯示模塊進行檢測結果的采集;如果有效,表明SEM核檢測出配置存儲區發生了單粒子翻轉,否則該狀態信號無效。
該方法通過上述過程自動實現某核安全級儀控系統FPGA設計的SEU故障注入和SEM核故障檢測功能的測試,識別出產品無法檢測部分功能SEU失效,經過分析發現對配置存儲區掃描的ICAP接口模塊時序錯誤。在正確修改接口時序后,該方法可檢測所有配置存儲區的SEU故障,保證了產品對SEU故障檢測設計的正確性,提升了產品可靠性。
4 結論
本文通過分析FPGA中的SEU失效機理和比較四種SEU故障注入方法,設計了一種基于SEM控制內核的自動注入SEU故障的測試方法,為核電廠SRAM型FPGA防范SEU故障的設計提供了一種簡單且可控性較強的測試方法。該方法可應用于核電廠SRAM型FPGA的SEU測試中,具有較高的參考價值。
作者簡介:
高玉斌(1977-),男,高級工程師,碩士,現就職于北京廣利核系統工程有限公司,主要從事核電廠數字化儀控系統FPGA測試與驗證技術研究工作。
參考文獻:
[1] 邱金娟, 徐宏杰, 潘雄, 等. SRAM型FPGA單粒子翻轉測試及加固技術研究[J]. 電光與控制, 2011, 18 (8) : 84 - 88.
[2] GAFFREY P, CAFFREY M, ZIMMERMAN J. Consequences and Categories of SRAM FPGA Configuration SEUs[C]//Proceedings of Military and Aerospace Programmable Logic Devices International Conference. Washington DC, USA, 2003.
[3] 王月玲, 薛海衛, 郭剛, 等. 一種用于評估抗輻射DSP單粒子翻轉的試驗方法[J]. 微電子學與計算機, 2018, 35 (10) : 53 - 57.
[4] XILINX. Soft Error Mitigation Controller V4.1 logiCORE IP Product Guide[Z]. 2022.
摘自《自動化博覽》2025年12月刊







案例頻道