本篇博文中的分析是根據(jù)真實客戶問題撰寫的,該客戶發(fā)現(xiàn)不同操作系統(tǒng)間 QoR 性能存在差異。雖然可以理解賽靈思無法保證不同操作系統(tǒng)間的可重復(fù)性,正如"賽靈思答復(fù)記錄 61599"中所述,但此處案例中出現(xiàn)的差異量級值得進(jìn)一步深入調(diào)查。
最初在 Windows 上的結(jié)果更好,但后續(xù)在 Linux 上結(jié)果更好, 最后發(fā)現(xiàn),此問題與設(shè)計中存在的某些極其嚴(yán)重的方法違例有關(guān)。
問題說明:
用戶發(fā)現(xiàn)相同設(shè)計在 Linux 與 Windows 上存在顯著的時序差異。
在每個操作系統(tǒng)上運行完全相同的設(shè)計生成結(jié)果如下:在 Linux 上 WNS = -0.439ns,在 Windows 上 WNS = +26ps。
該用戶在不同機器上多次運行構(gòu)建,但針對各操作系統(tǒng)得到的結(jié)果是相同的。
以下“設(shè)計時序匯總 (Design Timing Summary)”截屏中顯示了來自 Linux 的時序違例。在 Windows 上運行時,時序未出現(xiàn)任何錯誤。
注:您可使用以下選項來檢查自己的設(shè)計的“時序匯總 (Timing Summary)”:
■ 在 Vivado GUI 中,轉(zhuǎn)至“報告 (Reports)”選項卡 ->“時序 (Timing)”->“時序匯總報告 (Report Timing Summary)”
■運行以下 Tcl 命令:
report_timing_summary -file /timingreport.txt
Linux 運行結(jié)果:
Windows 運行結(jié)果:
根本原因分析:
首先要驗證的是,在 2 個平臺上運行時,所有設(shè)計源代碼、約束集、綜合和實現(xiàn)指令以及 Vivado 工具設(shè)置都完全相同。另請確保不同操作系統(tǒng)上應(yīng)用的 Vivado 補丁不存在任何差異,并且在 Vivado_Init.tcl 文件中未設(shè)置任何工具參數(shù)。
進(jìn)一步深挖設(shè)計可以發(fā)現(xiàn),在布局布線后可以從 Tcl 控制臺 (Tcl Console) 執(zhí)行 write_xdc。這樣即可驗證對兩個平臺上的構(gòu)建所應(yīng)用的約束是否相同。
要檢查與時鐘/架構(gòu)/CDC 等相關(guān)的警告/嚴(yán)重警告,請打開方法論報告。
要在 Vivado GUI 中打開方法論報告,請轉(zhuǎn)至“報告 (Report)”選項卡 ->“方法論報告 (Report Methodology)”,或者在 Tcl 控制臺 (Tcl console) 中,使用 report_methodology。
報告打開后,您可能會看到幾條與設(shè)計相關(guān)的警告和嚴(yán)重警告。
瀏覽此報告時,我們發(fā)現(xiàn)了幾項警告,這些警告與設(shè)計中的時鐘關(guān)系相關(guān)的錯誤實踐有關(guān)(這些警告的 ID 為 TIMING-6 和 TIMING-7),如下圖所示。

Timing-6 Critical Warning 顯示 Vivado 找到了 2 個時鐘,這 2 個時鐘一起定時,但并沒有公用的基準(zhǔn)時鐘。
默認(rèn)情況下,這 2 個報告的時鐘被視為相關(guān)聯(lián)時鐘,并以同步方式進(jìn)行定時,即使這 2 個時鐘并非衍生自公共的基準(zhǔn)時鐘,且不含有已知相位關(guān)系,也同樣如此。DRC 警告報告稱時序引擎無法保證這些時鐘處于同步狀態(tài)。
Timing-7 Critical Warning 顯示 Vivado 找到了 2 個時鐘,這 2 個時鐘一起定時,但并沒有公用的節(jié)點。此 DRC 報告稱時序引擎無法保證這些時鐘在硬件中同步,因為它無法確定 2 個時鐘樹之間的公共節(jié)點。
某些方法論嚴(yán)重警告可能暗示設(shè)計上存在 QoR 問題,即存在此類任意嚴(yán)重警告有時可能導(dǎo)致不同運行的結(jié)果出現(xiàn)不一致。下列方法論嚴(yán)重警告應(yīng)作為極其嚴(yán)重 (Super Critical) 警告來處理:
■ TIMING-6
■ TIMING-7
■ TIMING-8
■ TIMING-14
■ TIMING-35
無論任何設(shè)計都不應(yīng)存在上述任一違例,用戶應(yīng)采取行動盡快解決這些違例,以免影響 QoR。
TIMING-6 和 TIMING-7 - 如何解決這些警告/嚴(yán)重警告:
解決辦法取決于 2 個時鐘域處于異步還是同步狀態(tài)。
對于異步時鐘,時序例外(例如,set_max_delay -datapath_only、set_clock_groups 或 set_false_path)應(yīng)覆蓋 2 個域之間的路徑。
分析設(shè)計后,發(fā)現(xiàn) set_false_path 是對應(yīng)此 DRC 的正確約束。
要查找這些時鐘之間的路徑,請運行以下命令:
report_timing -from [get_clocks ] -to [get_clocks ]
請參閱 UG906以獲取有關(guān) TIMING-6、TIMING-7 以及來自 report_methodology 的所有其它嚴(yán)重警告的深層詳細(xì)信息。
解決方案和結(jié)論:
當(dāng)糾正 TIMING-6 和 TIMING-7 違例后,設(shè)計在 Windows 和 Linux 上生成了一致的結(jié)果。
雖然賽靈思不保證不同操作系統(tǒng)間的可重復(fù)性,但設(shè)計中存在上述任何極其嚴(yán)重警告都可能導(dǎo)致 QoR 欠佳。在這個案例中,由于存在這些違例,導(dǎo)致在某一操作系統(tǒng)內(nèi)生成的結(jié)果較另一個操作系統(tǒng)內(nèi)生成的結(jié)果更差。
審核編輯:湯梓紅
-
Linux
+關(guān)注
關(guān)注
88文章
11581瀏覽量
217169 -
WINDOWS
+關(guān)注
關(guān)注
4文章
3623瀏覽量
92891 -
時序
+關(guān)注
關(guān)注
5文章
401瀏覽量
38561 -
Qor
+關(guān)注
關(guān)注
0文章
5瀏覽量
7673
發(fā)布評論請先 登錄
實時操作系統(tǒng)和分時操作系統(tǒng)的區(qū)別
中國電子百億級資金投入,打造桌面與服務(wù)器操作系統(tǒng)、云操作系統(tǒng)、嵌入式操作系統(tǒng)三大產(chǎn)品
操作系統(tǒng)構(gòu)成
操作系統(tǒng) ppt
Linux操作系統(tǒng)原理及應(yīng)用
操作系統(tǒng)講解(操作系統(tǒng)課件)
什么是VxWorks操作系統(tǒng)
移動操作系統(tǒng)帶來差異化設(shè)計
RTOS操作系統(tǒng)
操作系統(tǒng)的結(jié)構(gòu)及原型設(shè)計
實時操作系統(tǒng)和非實時操作系統(tǒng)的區(qū)別
淺談鴻蒙系統(tǒng)與現(xiàn)有移動操作系統(tǒng)的差異?
聊聊操作系統(tǒng)

不同操作系統(tǒng)間QoR性能存在差異
評論