注意:本博文介紹了利用 POST_CRC 試錯(cuò)的方法,但總體而言,賽靈思推薦在所有架構(gòu)上使用 Soft Error Mitigation (SEM) IP。SEM IP 提供了一種可用于測(cè)試 SEU 檢測(cè)與糾正能力的機(jī)制并提供了更強(qiáng)大的調(diào)試能力。
本博文中討論的功能僅支持 7?系列器件。
功能 | 7系列FPGA | Kintex UltraScale 和 Virtex UltraScale | Kintex UltraScale+ 和 Virtex UltraScale+ |
Readback CRC/POST_CRC | 是 | 否,使用 SEM IP 替代 | 否,使用 SEM IP 替代 |
?
賽靈思 FPGA 中循環(huán)冗余校驗(yàn)?(CRC)?的不同類型:
1)?一般?CRC?校驗(yàn)
在一般比特流加載過程中,CRC 校驗(yàn)利用 CRC 寄存器進(jìn)行。該“CRC 寄存器”的描述詳見《7 系列 FPGA 配置用戶指南》(官網(wǎng)搜索?UG470)。
FPGA 在比特流被加載時(shí)計(jì)算 CRC 值,然后該值與在比特流加載結(jié)束時(shí)預(yù)期的 CRC 值進(jìn)行比較。如果兩個(gè)值匹配,則FPGA 成功加載。
一般情況下默認(rèn)啟用 CRC 校驗(yàn)。比特流屬性為 BITSTREAM.GENERAL.CRC,其中有效選項(xiàng)包括“ENABLE”(啟用)或“DISABLE”(禁用)。
2)?回讀?CRC/POST CRC?校驗(yàn)
POST_CRC 校驗(yàn)在配置 FPGA 之后,設(shè)計(jì)運(yùn)行過程進(jìn)行。
一般情況下,比特流 CRC 校驗(yàn)是一種獨(dú)立功能,具有其自己的 CRC 校驗(yàn)寄存器。POST_ CRC 校驗(yàn)具有用于存儲(chǔ)校驗(yàn)值的不同以上比特流 CRC 的寄存器。
啟用?POST_CRC?校驗(yàn)的目的
啟用 POST_CRC 校驗(yàn)的目的是檢測(cè)單粒子翻轉(zhuǎn)?(SEU)。SEU 導(dǎo)致配置存儲(chǔ)器中的數(shù)位翻轉(zhuǎn)。POST_CRC 可與 FRAME_ECCE2 原語配合使用,以便提供針對(duì)此等錯(cuò)誤的額外功能和更好的可見性。我們可利用 FRAME_ECCE2 的輸出監(jiān)控錯(cuò)誤檢查和糾正?(ECC)?和回讀 CRC 電路的狀態(tài)。
如需了解更多有關(guān)?FRAME_ECCE2?原語的詳細(xì)信息,請(qǐng)參閱《Vivado Design Suite 7?系列 FPGA?和 Zynq-7000 SoC?庫指南》(官網(wǎng)搜索?UG953)。
用戶通常想要測(cè)試這種崩潰發(fā)生時(shí)的實(shí)例,以便確保此等錯(cuò)誤被成功檢測(cè)到。測(cè)試插入錯(cuò)誤的一種方法是編輯 PRE_COMPUTED CRC 值。
測(cè)試插入錯(cuò)誤的步驟
將以下設(shè)置放置在設(shè)計(jì) XDC 中:
set_property POST_CRC ENABLE [current_design]
#Enables the Post CRC checking
set_property POST_CRC_SOURCE PRE_COMPUTED [current_design]
#Determines an expected CRC value from the bitstream
?
set_property POST_CRC_ACTION CONTINUE [current_design]
#Even if a CRC error is detected, continue CRC checking.
#Other options include HALT, CORRECT_AND_CONTINUE and CORRECT_AND_HALT
set_property POST_CRC_INIT_FLAG ENABLE [current_design]
#Leaves the INIT_B pin enabled as a source of the CRC error signal. Useful especially if FRAME_ECC is not used
如需了解更多有關(guān)這些設(shè)置的詳細(xì)信息,請(qǐng)參閱《Vivado Design Suite?屬性參考指南》(官網(wǎng)搜索?UG912)。
運(yùn)行設(shè)計(jì)流程并生成比特流。在生成了比特流之后,PRE_COMPUTED CRC 的值可在 .bit 文件中校驗(yàn)。該值會(huì)是非零值。
若要確定?PRE_COMPUTED CRC?值在比特流中的哪個(gè)位置,可查閱《7?系列 FPGA?配置用戶指南》(UG470)?中的示例 7 系列比特流。
若要測(cè)試插入錯(cuò)誤,您就要禁用一般 CRC 校驗(yàn),以便讓比特流成功載入。切記,如果對(duì)位于正常 CRC 覆蓋范圍內(nèi)的比特流進(jìn)行了任何編輯,即會(huì)標(biāo)注 CRC 錯(cuò)誤并阻止比特流加載。
若要禁用一般 CRC 校驗(yàn),您應(yīng)使用以下設(shè)置:
set_property BITSTREAM.GENERAL.CRC DISABLE [current_design]
#Disables the general CRC checking
set_property POST_CRC ENABLE [current_design]
#Enables the Post CRC checking
set_property POST_CRC_SOURCE PRE_COMPUTED [current_design]
#Determines an expected CRC value from the bitstream
set_property POST_CRC_ACTION CONTINUE [current_design]
#Even if a CRC error is detected, continue CRC checking.
#Other options include HALT, CORRECT_AND_CONTINUE and CORRECT_AND_HALT
set_property POST_CRC_INIT_FLAG ENABLE [current_design]
#Leaves the INIT_B pin enabled as a source of the CRC error signal.Useful especially if FRAME_ECC is not used
再次運(yùn)行設(shè)計(jì)流程并生成比特流。
在生成比特流之后,您應(yīng)觀察 PRE_COMPUTED CRC 的值是否為零。這是禁用 GENERAL.CRC 的結(jié)果,以便進(jìn)行錯(cuò)誤測(cè)試。
由于預(yù)計(jì)有前面的非零值,要配置器件并觀察其行為。
INIT_B 引腳的監(jiān)控應(yīng)顯示 CRC 錯(cuò)誤。
FRAME_ECCE2 也可被用于接收連接到 ILA 上的 FRAME_ECCE2 發(fā)出的輸出信號(hào)。然后它將有可能觀察到 CRCERROR。
下文的例化可被用于 FRAME_ECCE2 原語的連接:
然后輸出可被傳輸給 ILA。
當(dāng)器件被編程后,通過校驗(yàn) ILA 上的信號(hào),它應(yīng)有可能查看類似于以下示例的輸出。例如,由于未找到預(yù)期的非零 PRE_COMPUTED 值,標(biāo)注了 CRCERROR 錯(cuò)誤。
可以理解的是,大部分用戶都想要測(cè)試錯(cuò)誤檢測(cè),以確定在此等錯(cuò)誤被檢測(cè)到時(shí),將會(huì)以某種形式予以報(bào)告。該測(cè)試可讓用戶堅(jiān)信,在真實(shí)的情景中,錯(cuò)誤會(huì)被正確檢測(cè)并報(bào)告。
如上文所述,由于 SEM IP 所提供的能力,賽靈思推薦使用 SEM IP,而不是 POST_CRC。POST_CRC 的功能在較新的架構(gòu)中不受支持。
審核編輯:黃飛
?
評(píng)論
查看更多