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