本篇博文中的分析是根據客戶真實問題撰寫的,該客戶發現即使時序已得到滿足的情況下,硬件功能仍出現錯誤。最后發現,問題與時鐘域交匯 (Clock Domain Crossing) 有關,因此,本篇博文介紹了如何調試設計中的時鐘域交匯問題。
問題說明:
在此設計中,用戶生成了比特流并將其用于器件編程,在硬件上進行測試時,用戶發現少量時鐘域上無法獲得期望的功能。
用戶對行為仿真和實現后仿真進行了測試,發現信號上可得到正確的結果。
同時,這些用戶未發現任何種類的時序違例,所有值均為正值,如“設計時序匯總 (Design Timing Summary)” 中所示。
注:您可使用以下選項自行檢查設計的時序匯總信息:
■ 在 Vivado GUI 中,轉至“報告 (Reports)”選項卡 -》“時序 (Timing)”-》“時序匯總報告 (Report Timing Summary)”
■運行以下 Tcl 命令:
report_timing_summary -file 《filepath》/timingreport.txt
根本原因:
硬件功能問題背后可能存在多種原因。
包括缺少時鐘域交匯 (CDC) 同步器、時鐘拓撲欠優化、時鐘結構中使用了組合邏輯、亞穩態以及經典的未約束路徑問題。
要檢查與時鐘/架構/CDC 等相關的警告/嚴重警告,可使用方法論報告。
要在 Vivado GUI 中打開方法論報告,請轉至“報告 (Report)”選項卡 -》“方法論報告 (Report Methodology)”,或者在 Tcl 控制臺 (Tcl console) 中,使用 report_methodology。
報告打開后,您可能會看到幾條與設計相關的警告和嚴重警告,需您進行檢查。
在此示例中,報告中顯示了幾條警告,這些警告與 CDC 相關的錯誤實踐有關(這些警告的 ID 為 Timing-9 和 Timing-10),如下所示。
這些警告聲稱工具經由約束語句(例如,set_false_path 或 set_clock_groups)的使用,在 2 個時鐘域之間檢測到一個或多個異步時鐘域交匯。
但它在捕獲時鐘端未找到任何雙寄存器邏輯同步器。因此,它建議用戶運行 report_CDC 并對這些 CDC 路徑執行進一步分析。
要在 Vivado GUI 中打開 CDC 報告,請轉至“報告 (Report)”選項卡 -》 “時序 (Timing)”-》“CDC 報告 (Report CDC)”?;蛘?,您可在 Tcl 控制臺中運行 report_cdc 命令。
請參閱 (UG906) 以獲取有關閱讀此 CDC 報告的詳細指南。
CDC 報告顯示在發生硬件功能錯誤的時鐘域內存在不安全的未知 CDC 端點(如下所示)。請參閱 (UG906) 以了解此報告命名法。
如何解決這些警告/嚴重警告?
1) (UG906)包含有關這些警告以及其它時序方法論檢查的詳細說明。請詳查其中提供的示例,以理解每一項警告及其根本原因。您可通過添加適當的同步電路(通過修改 RTL 或者使用賽靈思可參數化宏 (XPM))來相應改善設計。
2) 您可能還需要相應添加或修改約束,或者在 RTL 源代碼中為 CDC 端點添加 ASYNC_REG 屬性。(您還可參閱(UG906)以便詳細了解 CDC 拓撲結構。)
3) 對于偽靜態寄存器接口,最好將 CDC 接口豁免,而不是對其進行過度設計。
如需獲取有關豁免以及如何創建豁免的更多信息,請參閱 (UG906)。
注:偽靜態 CDC 寄存器接口為包含近似靜態的配置寄存器的 CDC 路徑。這些路徑初始化后可能不再改變,或者可能僅改變 1 次,因此用戶幾乎可以將其看作是靜態的。
結論
對 CDC 路徑完成必要修改后,客戶得以成功通過硬件的功能測試。
編輯:jq
-
寄存器
+關注
關注
31文章
5357瀏覽量
120691 -
RTL
+關注
關注
1文章
385瀏覽量
59855 -
CDC
+關注
關注
0文章
57瀏覽量
17824
原文標題:開發者分享 | 使用方法論報告 1:時序已滿足,但硬件功能出現錯誤
文章出處:【微信號:gh_2d0d1910c28b,微信公眾號:思佳訊SkyworksSolutions】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論