本篇博文中的分析是根據真實客戶問題撰寫的,該客戶發現不同操作系統間 QoR 性能存在差異。雖然可以理解賽靈思無法保證不同操作系統間的可重復性,正如"賽靈思答復記錄 61599"中所述,但此處案例中出現的差異量級值得進一步深入調查。
最初在 Windows 上的結果更好,但后續在 Linux 上結果更好, 最后發現,此問題與設計中存在的某些極其嚴重的方法違例有關。
問題說明:
用戶發現相同設計在 Linux 與 Windows 上存在顯著的時序差異。
在每個操作系統上運行完全相同的設計生成結果如下:在 Linux 上 WNS = -0.439ns,在 Windows 上 WNS = +26ps。
該用戶在不同機器上多次運行構建,但針對各操作系統得到的結果是相同的。
以下“設計時序匯總 (Design Timing Summary)”截屏中顯示了來自 Linux 的時序違例。在 Windows 上運行時,時序未出現任何錯誤。
注:您可使用以下選項來檢查自己的設計的“時序匯總 (Timing Summary)”:
■ 在 Vivado GUI 中,轉至“報告 (Reports)”選項卡 ->“時序 (Timing)”->“時序匯總報告 (Report Timing Summary)”
■運行以下 Tcl 命令:
report_timing_summary -file /timingreport.txt
Linux 運行結果:
Windows 運行結果:
根本原因分析:
首先要驗證的是,在 2 個平臺上運行時,所有設計源代碼、約束集、綜合和實現指令以及 Vivado 工具設置都完全相同。另請確保不同操作系統上應用的 Vivado 補丁不存在任何差異,并且在 Vivado_Init.tcl 文件中未設置任何工具參數。
進一步深挖設計可以發現,在布局布線后可以從 Tcl 控制臺 (Tcl Console) 執行 write_xdc。這樣即可驗證對兩個平臺上的構建所應用的約束是否相同。
要檢查與時鐘/架構/CDC 等相關的警告/嚴重警告,請打開方法論報告。
要在 Vivado GUI 中打開方法論報告,請轉至“報告 (Report)”選項卡 ->“方法論報告 (Report Methodology)”,或者在 Tcl 控制臺 (Tcl console) 中,使用 report_methodology。
報告打開后,您可能會看到幾條與設計相關的警告和嚴重警告。
瀏覽此報告時,我們發現了幾項警告,這些警告與設計中的時鐘關系相關的錯誤實踐有關(這些警告的 ID 為 TIMING-6 和 TIMING-7),如下圖所示。
Timing-6 Critical Warning 顯示 Vivado 找到了 2 個時鐘,這 2 個時鐘一起定時,但并沒有公用的基準時鐘。
默認情況下,這 2 個報告的時鐘被視為相關聯時鐘,并以同步方式進行定時,即使這 2 個時鐘并非衍生自公共的基準時鐘,且不含有已知相位關系,也同樣如此。DRC 警告報告稱時序引擎無法保證這些時鐘處于同步狀態。
Timing-7 Critical Warning 顯示 Vivado 找到了 2 個時鐘,這 2 個時鐘一起定時,但并沒有公用的節點。此 DRC 報告稱時序引擎無法保證這些時鐘在硬件中同步,因為它無法確定 2 個時鐘樹之間的公共節點。
某些方法論嚴重警告可能暗示設計上存在 QoR 問題,即存在此類任意嚴重警告有時可能導致不同運行的結果出現不一致。下列方法論嚴重警告應作為極其嚴重 (Super Critical) 警告來處理:
■ TIMING-6
■ TIMING-7
■ TIMING-8
■ TIMING-14
■ TIMING-35
無論任何設計都不應存在上述任一違例,用戶應采取行動盡快解決這些違例,以免影響 QoR。
TIMING-6 和 TIMING-7 - 如何解決這些警告/嚴重警告:
解決辦法取決于 2 個時鐘域處于異步還是同步狀態。
對于異步時鐘,時序例外(例如,set_max_delay -datapath_only、set_clock_groups 或 set_false_path)應覆蓋 2 個域之間的路徑。
分析設計后,發現 set_false_path 是對應此 DRC 的正確約束。
要查找這些時鐘之間的路徑,請運行以下命令:
report_timing -from [get_clocks ] -to [get_clocks ]
請參閱 UG906以獲取有關 TIMING-6、TIMING-7 以及來自 report_methodology 的所有其它嚴重警告的深層詳細信息。
解決方案和結論:
當糾正 TIMING-6 和 TIMING-7 違例后,設計在 Windows 和 Linux 上生成了一致的結果。
雖然賽靈思不保證不同操作系統間的可重復性,但設計中存在上述任何極其嚴重警告都可能導致 QoR 欠佳。在這個案例中,由于存在這些違例,導致在某一操作系統內生成的結果較另一個操作系統內生成的結果更差。
審核編輯:湯梓紅
-
Linux
+關注
關注
87文章
11230瀏覽量
208933 -
WINDOWS
+關注
關注
3文章
3524瀏覽量
88437 -
時序
+關注
關注
5文章
386瀏覽量
37281 -
Qor
+關注
關注
0文章
5瀏覽量
7529
發布評論請先 登錄
相關推薦
評論