讓一顆SRAM型FPGA在太空長期穩(wěn)定運(yùn)行的難度,就類似練成獨(dú)孤九劍的難度。
SRAM型FPGA的抗輻照加固設(shè)計(jì)包括芯片工藝、Die加固和芯片應(yīng)用層面加固。本文主要討論芯片應(yīng)用層面的加固方法,包括外置刷新和FPGA內(nèi)部軟件抗輻加固。
今日登壇做法,貧道首先從FPGA資源角度來介紹不同資源對應(yīng)的解決辦法,更清楚的表明外置刷新和三模冗余是解決SEE的有效辦法。然后從解決辦法到解決措施,講具體是如何去實(shí)現(xiàn)刷新和三模冗余。最后是介紹如何驗(yàn)證刷新是否有效,如何驗(yàn)證三模冗余是否有效。
圖1 SRAM型FPGA的抗輻照加固設(shè)計(jì)
01
SRAM型FPGA的資源及其發(fā)生SEU故障分類
如表1所示,SRAM型FPGA資源包括配置SRAM,內(nèi)部的塊RAM(BRAM),觸發(fā)器CLB DFF,全局時鐘網(wǎng)絡(luò),DSP和高速串行接口GT。每種資源都有其特點(diǎn)和對應(yīng)SEU解決辦法。
表1 SRAM型FPGA的資源及其發(fā)生SEU概率說明
1.1?配置SRAM(CRAM)
CRAM的特點(diǎn)占芯片面積達(dá)到30%,發(fā)生SEU的概率很大。由于CRAM里面含有很多無效位,因此CRAM發(fā)生SEU可能不會導(dǎo)致FPGA功能異常。但是隨著時間的累積,越來越多的CRAM發(fā)生SEU,那么FPGA功能一定會錯。這種累積錯誤可以通過刷新Scrub來解決。
有兩點(diǎn)值得注意,第一個是累積錯誤是在刷新周期的下一個周期解決,在用戶時鐘周期內(nèi)該累積錯誤可能被時序電路捕獲,提升刷新頻率有助于緩解該問題。第二個是即使累積錯誤是在刷新周期的下一個周期解決,累積錯誤帶來的時序邏輯錯誤也可能沒有辦法恢復(fù)。
因此僅僅使用刷新的方法是不能解決CRAM的SEU所帶來的功能異常問題,推薦刷新+三模冗余的方法來提升FPGA可靠性。
圖2 CRAM SEU帶來的時序邏輯錯誤
DRP CRAM指的是用戶可以使用的CRAM資源,包括分布式RAM、移位寄存器SRL、MMCM/DCM/PLL DRP參數(shù)、高速串行接口Serdes DRP 參數(shù)等。DRP CRAM一般不能被刷新,因?yàn)橐坏┧⑿戮蜁謴?fù)成初始值,影響用戶功能。但是如果DRP CRAM的值是固定不變的,那么則可以通過刷新來進(jìn)行加固。
1.2?BlockRAM
FPGA內(nèi)部含有大量的BlockRAM資源,占芯片面積也比較大,而且無法刷新。如果BRAM發(fā)生了SEU那該怎么辦呢?
如果BRAM用作SRAM緩存或者FIFO緩存且允許出錯的情況下,那么BRAM可以不做加固,不允許出錯或者可靠性有要求的情況下,BRAM也可以進(jìn)行加固。如果BRAM用作儲存ROM程序,那么BRAM就必須進(jìn)行加固。
BRAM錯誤屏蔽加固的方法包括ECC和TMR,這兩種方法無法修復(fù)錯誤本身。ECC基于SECEDC糾一檢二碼只能糾正SBU錯誤,無法糾正錯誤累積導(dǎo)致的MBU。TMR無法解決錯誤累積導(dǎo)致的TMR兩份以上同一地址同一位同時失效的問題。
BRAM錯誤修復(fù)加固的方法包括ECC回寫和TMR回寫,可以部分或者完全糾正錯誤數(shù)據(jù)并回寫正確數(shù)據(jù)。ECC回寫基于Read-Modify-Write機(jī)制可糾正SBU數(shù)據(jù)并回寫正確數(shù)據(jù)。TMR回寫基于確定性方式掃描RAM存儲空間,可糾正并修復(fù)SBU/MBU數(shù)據(jù)錯誤,避免數(shù)據(jù)錯誤累積,可靠性最高。
圖3 系列FPGA BRAM不同加固方案翻轉(zhuǎn)數(shù)據(jù)比較
1.3?CLB DFF
觸發(fā)器的有效加固方法是三模冗余,根據(jù)可靠性高低,細(xì)分為“3Reg+3Voter”,“3Reg+1Voter”和“3Reg”三種。
流水寄出器如果允許短暫出錯,那么可以不做加固,需要增強(qiáng)可靠性可以選擇“3Reg+1Voter”或“3Reg”。
圖4 TMR-“3Reg”
圖5 TMR“3Reg+1Voter”
Feedback Loop Register特別是狀態(tài)機(jī),可靠性要求很高,推薦采用“3Reg+3Voter”。
圖6 “3Reg+3Voter”
防止TMR中兩路Reg同時翻轉(zhuǎn),還可以采用物理隔離的方法,簡單有效的方法一是時鐘網(wǎng)絡(luò)做三模,那么兩路Reg由于時鐘網(wǎng)絡(luò)不一樣,會被放在不同的Slice中去。方法二是使用Area Group約束,UCF中的寫法如下:
圖7 Area Group約束解決MBU問題
1.4?高速串行接口SerDes
Serdes的加固方案比較復(fù)雜,篇幅有限,主要說明一下Serdes里面的參數(shù)該如何加固。Serdes里面的參數(shù)特別多,而且很多都是可動態(tài)配置的,屬于DRP CRAM。
當(dāng)發(fā)現(xiàn)Serdes功能異常的時候,設(shè)計(jì)師可以通過用戶邏輯對DRP CRAM進(jìn)行重配置,然后對Serdes進(jìn)行復(fù)位操作來恢復(fù)功能。
02
SRAM型FPGA SEU解決措施
2.1?外置刷新芯片方案
圖8 外置刷新方案
刷新分為外部刷新和內(nèi)部刷新,關(guān)于兩者比較細(xì)節(jié),將在后續(xù)的文章中進(jìn)行描述。今天主要介紹外部刷新方案,通常用外置專用刷新芯片或者反熔絲FPGA來實(shí)現(xiàn)外部刷新。
專用刷新芯片必須是抗輻照的,優(yōu)點(diǎn)是刷新和重構(gòu)功能已實(shí)現(xiàn)、設(shè)計(jì)簡單。反熔絲FPGA的優(yōu)點(diǎn)是可以實(shí)現(xiàn)用戶自定義的功能。反熔絲FPGA的缺點(diǎn)設(shè)計(jì)復(fù)雜度高,PCB面積大,而且一次燒寫增加了設(shè)計(jì)風(fēng)險。
值得一提的是聽說最近國內(nèi)出了一款專用刷新芯片,功能比較強(qiáng)大,支持各種系列的FPGA,支持大容量存儲器,支持1553B、CAN等多種重構(gòu)接口,而且還能實(shí)現(xiàn)用戶自定義的功能,可以說是業(yè)界佼佼者。
2.2?FPGA軟件抗輻照加固設(shè)計(jì)方案
抗輻照加固軟件設(shè)計(jì)的主要功能是實(shí)現(xiàn)三模冗余,實(shí)現(xiàn)過程可分為代碼層面和網(wǎng)表層面。下面就兩個不同的層面進(jìn)行設(shè)計(jì)的優(yōu)缺點(diǎn)進(jìn)行說明。
代碼層面大體有兩種具體的做法:
第一種是設(shè)計(jì)師把關(guān)鍵的模塊代碼復(fù)制三份+表決器,這種方法的優(yōu)點(diǎn)就是簡單和靈活。缺點(diǎn)是模塊越多設(shè)計(jì)效率越低,模塊越大可靠性越低以及TMR代碼存在被工具優(yōu)化的可能。
第二種做法是借助第三方的EDA工具,可以解決可靠性低和代碼被優(yōu)化的問題,能提高設(shè)計(jì)效率,但是由于面向的是代碼層面,對IP的加固沒有辦法實(shí)現(xiàn),支持的應(yīng)用場景受限。第三方的EDA工具更合適的定位應(yīng)該是一種輔助,幫助設(shè)計(jì)師完成最終的設(shè)計(jì),不能完全交給其來實(shí)現(xiàn)。
網(wǎng)表層面加固借助專用的高可靠設(shè)計(jì)軟件,這種方法的優(yōu)點(diǎn)是能夠面向所有的應(yīng)用場景。由于網(wǎng)表層面能夠進(jìn)行細(xì)粒度的三模冗余,而且加固后不會被優(yōu)化掉,因此可靠性最高。高可靠設(shè)計(jì)軟件的EDA效率、部分三模冗余的支持能力與主流的FPGA EDA軟件的兼容程度,大體這三個方面會決定整個設(shè)計(jì)流程可實(shí)現(xiàn)性、效率和用戶體驗(yàn)度。高可靠設(shè)計(jì)軟件做的好的話,那整個加固設(shè)計(jì)可以完全交由其來實(shí)現(xiàn),工程師會覺得福利滿滿。
圖9 網(wǎng)表層面實(shí)現(xiàn)加固設(shè)計(jì)
03
SRAM型FPGA SEU解決措施效果驗(yàn)證
3.1?刷新有效性驗(yàn)證
3.1.1)Verify操作:
通過JTAG執(zhí)行Verify操作可以知道FPGA里面的位流和Golden位流是否一樣,是很常見的驗(yàn)證手段。要執(zhí)行Verify操作,首先在生成位流的時候,得在settings里面勾選-mask_file。
圖10 mask文件生成方法
選中device右鍵verify_device,執(zhí)行完在Tcl_console看日志。
圖11 執(zhí)行verify device操作
圖12 verify驗(yàn)證位流正常
圖13 verify驗(yàn)證位流錯誤
完整的驗(yàn)證刷新有效的過程,首先執(zhí)行一次verify操作確認(rèn)加載是成功的。然后通過故障注入工具注入錯誤,執(zhí)行第二次verify操作可以看到verify結(jié)果報錯。接著執(zhí)行完刷新操作,第三次執(zhí)行verify操作可以看到verify結(jié)果正確。
3.2?三模有效性驗(yàn)證
3.2.1)網(wǎng)表級功能仿真
三模后的網(wǎng)表功能仿真結(jié)果應(yīng)該和三模前的網(wǎng)表仿真結(jié)果一樣。如果結(jié)果不一樣,結(jié)合仿真也可以找到出問題的地方,迭代三模設(shè)計(jì)。
高可靠設(shè)計(jì)軟件會在軟件層面做大量的案例測試,保證形式驗(yàn)證結(jié)果一樣,功能仿真結(jié)果肯定也一樣。
在Vivado中執(zhí)行仿真的方法如下:
首先open the synthesized design,然后再tcl console中輸入:
3.2.2)網(wǎng)表ECO功能驗(yàn)證
Vivado IDE ECO:
圖14 Vivado ECO流程
Vivado軟件的ECO功能很強(qiáng)大,不再一一描述了。驗(yàn)證三模功能是否有效,可以簡單修改TR0電路里面LUT里面的值,這樣行為和TR1/TR2不一樣,但是通過多數(shù)表決器Voter,輸出結(jié)果還是正確的。
ISE: FPGA_EDITOR
修改網(wǎng)表編輯模式為Read Write;
通過IO觀測內(nèi)部信號;
通過ncd2xdl和xdl2ncd命令修改ILA觀測內(nèi)部信號;
快速生成bit文件,驗(yàn)證功能。
圖12 FPGA editor的使用
戰(zhàn)術(shù)總結(jié)
抬眼望去,對面零星的幾盞燭火也熄滅了,又是連肝幾個晚上,給各位兄弟姐妹分享了SRAM型FPGA加固的措施,目前從實(shí)際效果上來看,外置刷新和三模冗余仍是目前解決SRAM型FPGA SEU的有效辦法。
審核編輯:劉清
評論
查看更多