注意:本博文介紹了利用POST_CRC試錯的方法,但總體而言,賽靈思推薦在所有架構上使用Soft Error Mitigation (SEM)IP。
SEM IP 提供了一種可用于測試 SEU 檢測與糾正能力的機制并提供了更強大的調試能力。
本博文中討論的功能僅受 7 系列器件的支持。
功能 |
7系列 |
Kintex? UltraScale? 和 Virtex? UltraScale? |
Kintex UltraScale+? 和 Virtex UltraScale+? |
是 |
否,使用 SEM IP 替代 |
否,使用 SEM IP 替代 |
賽靈思 FPGA 中循環冗余校驗 (CRC) 的不同類型:
1) 一般 CRC 校驗在一般比特流加載過程中,CRC 校驗利用 CRC 寄存器進行。該“CRC 寄存器”的描述詳見《7 系列 FPGA 配置用戶指南》(UG470)。
FPGA 在比特流被加載時計算 CRC 值,然后該值與在比特流加載結束時預期的 CRC 值進行比較。如果兩個值匹配,則 FPGA 成功加載。
一般情況下默認啟用 CRC 校驗。比特流屬性為 BITSTREAM.GENERAL.CRC,其中有效選項包括“ENABLE”(啟用)或“DISABLE”(禁用)。
2) 回讀 CRC/POST CRC 校驗
POST_CRC 校驗在配置 FPGA 之后,設計運行過程進行。
一般情況下,比特流 CRC 校驗是一種獨立功能,具有其自己的 CRC 校驗寄存器。
POST_ CRC 校驗具有用于存儲校驗值的不同以上比特流 CRC 的寄存器。
啟用 POST_CRC 校驗的目的是什么?
啟用 POST_CRC 校驗的目的是檢測單粒子翻轉(SEU)。SEU 導致配置存儲器中的數位翻轉。
POST_CRC 可與 FRAME_ECCE2 原語配合使用,以便提供針對此等錯誤的額外功能和更好的可見性。
可利用 FRAME_ECCE2 的輸出監控錯誤檢查和糾正(ECC)和回讀 CRC 電路的狀態。
如需了解更多有關 FRAME_ECCE2 原語的詳細信息,請參閱《Vivado Design Suite 7 系列 FPGA 和 Zynq-7000 SoC 庫指南》(UG953)。
用戶通常想要測試這種崩潰發生時的實例,以便確保此等錯誤被成功檢測到。
測試插入錯誤的一種方法是編輯 PRE_COMPUTED CRC 值。
測試插入錯誤的步驟:
將以下設置放置在設計 XDC 中:
set_property POST_CRC ENABLE [current_design]#Enables the Post CRC checkingset_property POST_CRC_SOURCE PRE_COMPUTED [current_design]#Determines an expected CRC value from the bitstreamset_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_HALTset_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
如需了解更多有關這些設置的詳細信息,請參閱《Vivado Design Suite 屬性參考指南》(UG912)。
運行設計流程并生成比特流。
在生成了比特流之后,PRE_COMPUTED CRC 的值可在 .bit 文件中校驗。
該值會是非零值。
若要確定 PRE_COMPUTED CRC 值在比特流中的哪個位置,可查閱《7 系列 FPGA 配置用戶指南》(UG470)中的示例 7 系列比特流。
若要測試插入錯誤,您就要禁用一般 CRC 校驗,以便讓比特流成功載入。
切記,如果對位于正常 CRC 覆蓋范圍內的比特流進行了任何編輯,即會標注 CRC 錯誤并阻止比特流加載。
若要禁用一般 CRC 校驗,您應使用以下設置:
set_property BITSTREAM.GENERAL.CRC DISABLE [current_design]#Disables the general CRC checkingset_property POST_CRC ENABLE [current_design]#Enables the Post CRC checkingset_property POST_CRC_SOURCE PRE_COMPUTED [current_design]#Determines an expected CRC value from the bitstreamset_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_HALTset_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
再次運行設計流程并生成比特流。
在生成比特流之后,您應觀察 PRE_COMPUTED CRC 的值是否為零。這是禁用 GENERAL.CRC 的結果,以便進行錯誤測試。
由于預計有前面的非零值,要配置器件并觀察其行為。
INIT_B 引腳的監控應顯示 CRC 錯誤。
FRAME_ECCE2 也可被用于接收連接到 ILA 上的 FRAME_ECCE2 發出的輸出信號。然后它將有可能觀察到 CRCERROR。
下文的例化可被用于 FRAME_ECCE2 原語的連接:
然后輸出可被傳輸給 ILA。
當器件被編程后,通過校驗 ILA 上的信號,它應有可能查看類似于以下示例的輸出。
例如,由于未找到預期的非零 PRE_COMPUTED 值,標注了 CRCERROR 錯誤。
可以理解的是,大部分用戶都想要測試錯誤檢測,以確定在此等錯誤被檢測到時,將會以某種形式予以報告。該測試可讓用戶堅信,在真實的情景中,錯誤會被正確檢測并報告。
如上文所述,由于 SEM IP 所提供的能力,賽靈思推薦使用 SEM IP,而不是 POST_CRC。POST_CRC 的功能在較新的架構中不受支持。
-
FPGA
+關注
關注
1630文章
21759瀏覽量
604326 -
crc
+關注
關注
0文章
199瀏覽量
29491
原文標題:如何利用 7 系列 FPGA 中的 POST_CRC 試錯
文章出處:【微信號:FPGA-EETrend,微信公眾號:FPGA開發圈】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論