什么是SEU現(xiàn)象
由于高能粒子的撞擊,器件的存儲單元內(nèi)容有可能受到干擾,甚至出現(xiàn)翻轉(zhuǎn)。這種單個(gè)存儲單元的翻轉(zhuǎn)現(xiàn)象(原有內(nèi)容為0的變成1;或者原有為1的變成了0)就稱為SEU (Single Event Upset)。
正常情況下,SEU現(xiàn)象不會導(dǎo)致器件的永久性損壞,并且通過重新配置器件即可糾正。但是如果錯(cuò)誤位置位于設(shè)計(jì)的核心區(qū)域,或者錯(cuò)誤隨邏輯構(gòu)建的功能模塊逐級傳遞出去,均會導(dǎo)致設(shè)計(jì)異常
Xilinx設(shè)計(jì)的SEM Core
幸運(yùn)的是,由于SEU現(xiàn)象發(fā)生的概率極低,絕大多數(shù)普通設(shè)計(jì)應(yīng)用并不需要考慮這一問題。但是在航空、航天等高可靠性需求環(huán)境下,或者在一些高海拔地區(qū),發(fā)生SEU的概率會相應(yīng)增加。為了及時(shí)糾正這種SEU引發(fā)功能異常,進(jìn)一步提高FPGA器件的可靠性,Xilinx開發(fā)了Soft Error MitigationCore,簡稱SEM IP。
FPGA內(nèi)部的存儲單元主要分為4大類:Configuration RAM (CRAM), Block RAM (BRAM), Distributed RAM (DRAM) 以及Flip-Flops(FF)。CRAM用于存儲FPGA的配置數(shù)據(jù),也是占比最大的存儲單元模塊。剩下三種的占比依次減少,均可以被用戶邏輯使用。
SEM IP可以通過不間斷地循環(huán)掃描FPGA的CRAM,快速檢測出其中是否有存儲單元內(nèi)容和初始值不一致,并且可以把已經(jīng)被翻轉(zhuǎn)的存儲單元的值修復(fù)為原來的值。該IP占用資源少,使用方便靈活,可以及時(shí)地糾正大多數(shù)SEU錯(cuò)誤,從而避免了重新配置FPGA的麻煩。
需要注意的是,SEM IP并不會掃描監(jiān)測剩余三種存儲單元。BRAM雖然也是數(shù)量較多的存儲單元模塊,但Xilinx的BRAM可以開啟自帶的ECC校驗(yàn)功能,糾正SEU或者其他問題導(dǎo)致的數(shù)據(jù)錯(cuò)誤。另外,DRAM和FF的數(shù)量相對來說比較少,疊加考慮SEU現(xiàn)象發(fā)生的極低概率,這兩部分的SEU問題一般可以安全忽略。
入門案例簡介
下面我們就基于KCU116開發(fā)板,介紹一下如何在設(shè)計(jì)中加入一個(gè)最基本功能的SEM IP,從而開啟芯片的SEU檢測功能。
1.IP生成
a. 打開Vivado, 基于KCU116建立一個(gè)新的空白RTL工程;


b. 選擇所使用的FPGA的型號,或者選擇所開發(fā)板的型號。這里我們選擇KCU116,Rev 1.0.

c. 確認(rèn)器件信息,生成新的工程。

d. 在PROJECT MANAGER的IP Catalog中,選擇FPGA Features andDesign-> Soft Error Mitigation -> UltraScale Soft Error Mitigation, 雙擊打開。
KCU116開發(fā)板上是一塊XCKU5P-2FFVB676E,對應(yīng)的IP名稱為UltraScale Soft Error Mitigation(3.1)。如果你使用的是其他芯片,那么SEM IP的名稱會有所不同,比如7系列的芯片就是Soft Error Mitigation (4.1). 界面和功能會略有不同:

IP的基本默認(rèn)設(shè)置如下圖所示:

SEM IP有多種工作模式,設(shè)計(jì)里面最常用的就是 ‘Mitigationand Testing’。這個(gè)模式和其他模式包含的功能如頁面中表格所示。Mitigation andTesting 包含了最基本的糾錯(cuò)功能,和驗(yàn)證IP能否正常工作,模擬SEU事件的Error injection功能。此外還支持一些有用的調(diào)試命令,比如說讀取一些寄存器等等。這里我們就選擇這種模式。
Controller Clock Period (ps),是以ps為周期的單位來選擇SEM IP工作的時(shí)鐘。時(shí)鐘頻率越高,糾正錯(cuò)誤的速度越快。UltraScale+系列根據(jù)型號不同,支持的最高頻率可以高達(dá)200MHz。考慮KCU116開發(fā)板有自帶的90MHz的時(shí)鐘,這里我們選擇11111ps。
注意,SEM IP一般要求有獨(dú)立時(shí)鐘,即它的工作時(shí)鐘最好不要同時(shí)用來驅(qū)動其他邏輯。
其他設(shè)置使用默認(rèn)設(shè)置。生成IP。
2. 生成Example Design
SEM IP與其他IP不太一樣的地方,是我們建議你完整地把SEM IP的整個(gè)參考設(shè)計(jì)并入用戶設(shè)計(jì)中,而不是僅僅添加一個(gè)xci核。參考設(shè)計(jì)正確地建立了與底層核心硬核ICAP和FRAME_ECC的連接,并且加入了非常有用的一些調(diào)試手段,比如VIO,可以觀測IP的實(shí)時(shí)工作狀態(tài);比如串口模塊,可以方便地實(shí)現(xiàn)和IP的交互以及調(diào)試。在入門應(yīng)用或者對于資源沒有非常緊張的應(yīng)用中,直接使用參考設(shè)計(jì)是最保險(xiǎn)的做法。當(dāng)然,產(chǎn)品中可以把主要針對調(diào)試的串口模塊去掉。
a.這里選擇右鍵單擊xci文件,選擇‘Open IP Example Design

b. 觀察Example Design,其包含了IP 的頂層wrapper文件,一些輔助模塊(串口,VIO等),以及約束文件以及仿真文件。

c. 為了保證timing的正確,注意保持所有原有的位置以及timing等約束。根據(jù)自己PCB的設(shè)置,分配一下sem_ultra_0_example_design_impl.xdc里面時(shí)鐘和串口的管腳。

d. 編譯工程,生成用于下載的bit文件。
3.下載測試
a. 使用micro-USB下載線連接PC和KCU116的JTAG接口,這是為了通過JTAG接口下載配置bit文件。同時(shí)使用另外一根micro-USB連接PC和KCU116的USB-UART接口,打開PC上的Tera Term軟件,連接Standard COM Port并做如下設(shè)置:


b. 通過HW Manager掃描到VU5P器件,下載bit文件。

c. 下載成功后,首先可以看到Tera Term上出現(xiàn)了SEM正確初始化的信息:

d. Vivado的Dashboard中,共出現(xiàn)了三個(gè)hw_vio_x界面。選中其中的+號,把預(yù)先定義好的信號添加進(jìn)去。

這個(gè)界面顯示的是IP當(dāng)前的狀態(tài)。IP在初始化過程結(jié)束后,其status_initialization信號會從高變低,隨之進(jìn)入工作狀態(tài)status_observation,該信號由低變高。此狀態(tài)正常應(yīng)該情況下會看到status_heartbeat信號是一個(gè)不斷toggle的狀態(tài)。

這個(gè)界面提供了和IP交互的命令行界面。我們這里為了方便,一般把command_strobe,即命令使能信號,做成一個(gè)高有效按鈕。


一般我們用hw_vio1和hw_vio2就足夠了。hw_vio3是用于IP和其他控制邏輯分配資源等的一些控制信號,這里不會用到。
此時(shí)的IP已經(jīng)在正常工作,監(jiān)測設(shè)計(jì)的SEU狀態(tài)了。IP位于哪個(gè)狀態(tài),那么狀態(tài)信號status_*就會相應(yīng)的拉高。
4. 糾錯(cuò)功能驗(yàn)證
如果芯片遭受到了高能粒子轟擊并且存儲單元出現(xiàn)了內(nèi)容反轉(zhuǎn),IP會從observation狀態(tài)退出,表現(xiàn)為status_observation拉低,status_correction被拉高開始糾錯(cuò)工作。如果糾錯(cuò)成功,IP會重新進(jìn)入status_observation狀態(tài)繼續(xù)工作。由于我們并未開啟高級的錯(cuò)誤分類功能,所有位置的錯(cuò)誤都會被IP認(rèn)定為是關(guān)鍵位置。因此status_essential信號會被置高并保持不變。
由于真實(shí)的SEU事件及其稀少,我們?nèi)绾文軘喽↖P是否已經(jīng)正常工作,并且能及時(shí)糾正錯(cuò)誤呢?SEMIP提供了一個(gè)模擬錯(cuò)誤注入功能,即Error Injection。下面我們來進(jìn)行一次單bit注入測試。
a.打開hw_vio2, 由于模擬錯(cuò)誤注入需要先把IP切換到IDLE狀態(tài),我們需要先在command_code輸入E00_0000_0000,然后按一下command_strobe按鈕。

b. 在串口輸出上,可以觀測到這一過程,IP已經(jīng)從觀測狀態(tài)O,進(jìn)入了IDLE狀態(tài)I:

等待command_busy上面顯示的箭頭消失后,說明該命令已經(jīng)執(zhí)行完畢,可以輸入下一條命令了。
c. command_code輸入 C00_0000_0001,這是IP的插錯(cuò)指令,表示在存儲單元address 0x1上,進(jìn)行內(nèi)容的反轉(zhuǎn)。除了第一個(gè)hex字符表示插錯(cuò)指令,后面10個(gè)hex字符用于填寫插錯(cuò)的地址。按一下command_strobe按鈕;此時(shí)對應(yīng)串口的顯示。

d.由于IP只有在Observation狀態(tài)才能檢測錯(cuò)誤并且糾正錯(cuò)誤,所以我們還需要使用指令A(yù)00_0000_0000,使IP回到正常工作狀態(tài):

e. 觀測IP的狀態(tài)信號,如下:

可以看到status_heartbeat又恢復(fù)了跳動;status_observation再次拉高;status_essential信號由于沒有開啟高級的錯(cuò)誤分類功能,因此被置為高。
相應(yīng)的串口也有詳細(xì)的報(bào)告報(bào)出,包括錯(cuò)誤的具體地址:

至此,基本的SEM IP的功能均以得到驗(yàn)證。
5. 合入原有設(shè)計(jì)
現(xiàn)在只要把這個(gè)SEM IPexample完整合入你原來的工程了。這里提供一個(gè)簡單的demo設(shè)計(jì),本身的功能是按一定次序循環(huán)點(diǎn)亮開發(fā)板上的LED燈。只要給這個(gè)設(shè)計(jì)再添加一個(gè)頂層top文件,把原有LED點(diǎn)亮的設(shè)計(jì)和SEM IP example調(diào)用合入即可。如下圖:


重新編譯,開啟了SEU保護(hù)的整個(gè)設(shè)計(jì)就完成了。
結(jié) 語
本文介紹了如何把一個(gè)具有最基本檢錯(cuò)糾錯(cuò)功能的SEM IP合入到你的設(shè)計(jì)當(dāng)中去。觀測SEMIP的狀態(tài)輸出信號,或者查看串口打印的報(bào)告,你就已經(jīng)可以知道設(shè)計(jì)當(dāng)前是否正常運(yùn)行,還是已經(jīng)出現(xiàn)了SEU錯(cuò)誤,并且相應(yīng)做出正確決策了。
對于絕大多數(shù)設(shè)計(jì)來說,這一基本功能就已經(jīng)完全夠用。你的設(shè)計(jì)已經(jīng)開啟了SEU保護(hù),可以應(yīng)對90%以上的SEU事件了。
-
Xilinx
+關(guān)注
關(guān)注
73文章
2195瀏覽量
130546
原文標(biāo)題:開發(fā)者分享 | 如何開啟FPGA中的最基本的SEU檢錯(cuò)糾錯(cuò)功能
文章出處:【微信號:FPGA-EETrend,微信公眾號:FPGA開發(fā)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
單片機(jī)基本功能
FIB-SEM雙束系統(tǒng)的工作原理與應(yīng)用
SEM IP在MPSoC器件上的使用指南
MHMF012L1U2M-MINAS A6BL (EtherCAT) 系列 技術(shù)資料 -基本功能規(guī)格篇- 松下
MHMF012L1U2M-MINAS A6N系列 (RTEX) 技術(shù)資料 -基本功能規(guī)格篇- 松下
MHMF012L1U2-MINAS A6BL (EtherCAT) 系列 技術(shù)資料 -基本功能規(guī)格篇- 松下
MHMF012L1U2-MINAS A6N系列 (RTEX) 技術(shù)資料 -基本功能規(guī)格篇- 松下
MHMF012L1U1-MINAS A6S 系列 技術(shù)資料 -基本功能規(guī)格篇- 松下
MHMF012L1T2-MINAS A6BU 系列 技術(shù)資料 -基本功能規(guī)格篇- 松下
MHMF012L1T2-MINAS A6NL系列 (RTEX) 技術(shù)資料 -基本功能規(guī)格篇- 松下
MHMF012L1T1-MINAS A6BN 系列 技術(shù)資料 -基本功能規(guī)格篇- 松下
MHMF012L1T1-MINAS A6NL系列 (RTEX) 技術(shù)資料 -基本功能規(guī)格篇- 松下
MHMF012L1S2M-MINAS A6BL (EtherCAT) 系列 技術(shù)資料 -基本功能規(guī)格篇- 松下
MHMF012L1S2M-MINAS A6S 系列 技術(shù)資料 -基本功能規(guī)格篇- 松下
MHMF012L1S2-MINAS A6BU 系列 技術(shù)資料 -基本功能規(guī)格篇- 松下
如何在設(shè)計(jì)中加入一個(gè)最基本功能的SEM IP
評論