本篇博文中的分析是根據(jù)真實(shí)客戶問題撰寫的,該客戶發(fā)現(xiàn)不同操作系統(tǒng)間 QoR 性能存在差異。雖然可以理解賽靈思無(wú)法保證不同操作系統(tǒng)間的可重復(fù)性,正如"賽靈思答復(fù)記錄 61599"中所述,但此處案例中出現(xiàn)的差異量級(jí)值得進(jìn)一步深入調(diào)查。
最初在 Windows 上的結(jié)果更好,但后續(xù)在 Linux 上結(jié)果更好, 最后發(fā)現(xiàn),此問題與設(shè)計(jì)中存在的某些極其嚴(yán)重的方法違例有關(guān)。
問題說(shuō)明:
用戶發(fā)現(xiàn)相同設(shè)計(jì)在 Linux 與 Windows 上存在顯著的時(shí)序差異。
在每個(gè)操作系統(tǒng)上運(yùn)行完全相同的設(shè)計(jì)生成結(jié)果如下:在 Linux 上 WNS = -0.439ns,在 Windows 上 WNS = +26ps。
該用戶在不同機(jī)器上多次運(yùn)行構(gòu)建,但針對(duì)各操作系統(tǒng)得到的結(jié)果是相同的。
以下“設(shè)計(jì)時(shí)序匯總 (Design Timing Summary)”截屏中顯示了來(lái)自 Linux 的時(shí)序違例。在 Windows 上運(yùn)行時(shí),時(shí)序未出現(xiàn)任何錯(cuò)誤。
注:您可使用以下選項(xiàng)來(lái)檢查自己的設(shè)計(jì)的“時(shí)序匯總 (Timing Summary)”:
■ 在 Vivado GUI 中,轉(zhuǎn)至“報(bào)告 (Reports)”選項(xiàng)卡 ->“時(shí)序 (Timing)”->“時(shí)序匯總報(bào)告 (Report Timing Summary)”
■運(yùn)行以下 Tcl 命令:
report_timing_summary -file /timingreport.txt
Linux 運(yùn)行結(jié)果:
Windows 運(yùn)行結(jié)果:
根本原因分析:
首先要驗(yàn)證的是,在 2 個(gè)平臺(tái)上運(yùn)行時(shí),所有設(shè)計(jì)源代碼、約束集、綜合和實(shí)現(xiàn)指令以及 Vivado 工具設(shè)置都完全相同。另請(qǐng)確保不同操作系統(tǒng)上應(yīng)用的 Vivado 補(bǔ)丁不存在任何差異,并且在 Vivado_Init.tcl 文件中未設(shè)置任何工具參數(shù)。
進(jìn)一步深挖設(shè)計(jì)可以發(fā)現(xiàn),在布局布線后可以從 Tcl 控制臺(tái) (Tcl Console) 執(zhí)行 write_xdc。這樣即可驗(yàn)證對(duì)兩個(gè)平臺(tái)上的構(gòu)建所應(yīng)用的約束是否相同。
要檢查與時(shí)鐘/架構(gòu)/CDC 等相關(guān)的警告/嚴(yán)重警告,請(qǐng)打開方法論報(bào)告。
要在 Vivado GUI 中打開方法論報(bào)告,請(qǐng)轉(zhuǎn)至“報(bào)告 (Report)”選項(xiàng)卡 ->“方法論報(bào)告 (Report Methodology)”,或者在 Tcl 控制臺(tái) (Tcl console) 中,使用 report_methodology。
報(bào)告打開后,您可能會(huì)看到幾條與設(shè)計(jì)相關(guān)的警告和嚴(yán)重警告。
瀏覽此報(bào)告時(shí),我們發(fā)現(xiàn)了幾項(xiàng)警告,這些警告與設(shè)計(jì)中的時(shí)鐘關(guān)系相關(guān)的錯(cuò)誤實(shí)踐有關(guān)(這些警告的 ID 為 TIMING-6 和 TIMING-7),如下圖所示。
![pYYBAGGYHZaAXgU3AACkQp3fpPk949.png](https://file.elecfans.com/web2/M00/1F/68/pYYBAGGYHZaAXgU3AACkQp3fpPk949.png)
Timing-6 Critical Warning 顯示 Vivado 找到了 2 個(gè)時(shí)鐘,這 2 個(gè)時(shí)鐘一起定時(shí),但并沒有公用的基準(zhǔn)時(shí)鐘。
默認(rèn)情況下,這 2 個(gè)報(bào)告的時(shí)鐘被視為相關(guān)聯(lián)時(shí)鐘,并以同步方式進(jìn)行定時(shí),即使這 2 個(gè)時(shí)鐘并非衍生自公共的基準(zhǔn)時(shí)鐘,且不含有已知相位關(guān)系,也同樣如此。DRC 警告報(bào)告稱時(shí)序引擎無(wú)法保證這些時(shí)鐘處于同步狀態(tài)。
Timing-7 Critical Warning 顯示 Vivado 找到了 2 個(gè)時(shí)鐘,這 2 個(gè)時(shí)鐘一起定時(shí),但并沒有公用的節(jié)點(diǎn)。此 DRC 報(bào)告稱時(shí)序引擎無(wú)法保證這些時(shí)鐘在硬件中同步,因?yàn)樗鼰o(wú)法確定 2 個(gè)時(shí)鐘樹之間的公共節(jié)點(diǎn)。
某些方法論嚴(yán)重警告可能暗示設(shè)計(jì)上存在 QoR 問題,即存在此類任意嚴(yán)重警告有時(shí)可能導(dǎo)致不同運(yùn)行的結(jié)果出現(xiàn)不一致。下列方法論嚴(yán)重警告應(yīng)作為極其嚴(yán)重 (Super Critical) 警告來(lái)處理:
■ TIMING-6
■ TIMING-7
■ TIMING-8
■ TIMING-14
■ TIMING-35
無(wú)論任何設(shè)計(jì)都不應(yīng)存在上述任一違例,用戶應(yīng)采取行動(dòng)盡快解決這些違例,以免影響 QoR。
TIMING-6 和 TIMING-7 - 如何解決這些警告/嚴(yán)重警告:
解決辦法取決于 2 個(gè)時(shí)鐘域處于異步還是同步狀態(tài)。
對(duì)于異步時(shí)鐘,時(shí)序例外(例如,set_max_delay -datapath_only、set_clock_groups 或 set_false_path)應(yīng)覆蓋 2 個(gè)域之間的路徑。
分析設(shè)計(jì)后,發(fā)現(xiàn) set_false_path 是對(duì)應(yīng)此 DRC 的正確約束。
要查找這些時(shí)鐘之間的路徑,請(qǐng)運(yùn)行以下命令:
report_timing -from [get_clocks ] -to [get_clocks ]
請(qǐng)參閱 UG906以獲取有關(guān) TIMING-6、TIMING-7 以及來(lái)自 report_methodology 的所有其它嚴(yán)重警告的深層詳細(xì)信息。
解決方案和結(jié)論:
當(dāng)糾正 TIMING-6 和 TIMING-7 違例后,設(shè)計(jì)在 Windows 和 Linux 上生成了一致的結(jié)果。
雖然賽靈思不保證不同操作系統(tǒng)間的可重復(fù)性,但設(shè)計(jì)中存在上述任何極其嚴(yán)重警告都可能導(dǎo)致 QoR 欠佳。在這個(gè)案例中,由于存在這些違例,導(dǎo)致在某一操作系統(tǒng)內(nèi)生成的結(jié)果較另一個(gè)操作系統(tǒng)內(nèi)生成的結(jié)果更差。
審核編輯:湯梓紅
-
Linux
+關(guān)注
關(guān)注
87文章
11350瀏覽量
210476 -
WINDOWS
+關(guān)注
關(guān)注
4文章
3573瀏覽量
89367 -
時(shí)序
+關(guān)注
關(guān)注
5文章
392瀏覽量
37443 -
Qor
+關(guān)注
關(guān)注
0文章
5瀏覽量
7547
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
實(shí)時(shí)操作系統(tǒng)和分時(shí)操作系統(tǒng)的區(qū)別
中國(guó)電子百億級(jí)資金投入,打造桌面與服務(wù)器操作系統(tǒng)、云操作系統(tǒng)、嵌入式操作系統(tǒng)三大產(chǎn)品
操作系統(tǒng)構(gòu)成
操作系統(tǒng) ppt
![<b class='flag-5'>操作系統(tǒng)</b> ppt](https://file.elecfans.com/web2/M00/48/87/pYYBAGKhtAuAcPsZAAB5ZiW7un0100.jpg)
Linux操作系統(tǒng)原理及應(yīng)用
操作系統(tǒng)講解(操作系統(tǒng)課件)
什么是VxWorks操作系統(tǒng)
移動(dòng)操作系統(tǒng)帶來(lái)差異化設(shè)計(jì)
RTOS操作系統(tǒng)
關(guān)于實(shí)時(shí)操作系統(tǒng)中任務(wù)間通信的一種方法
![關(guān)于實(shí)時(shí)<b class='flag-5'>操作系統(tǒng)</b>中任務(wù)<b class='flag-5'>間</b>通信的一種方法](https://file.elecfans.com/web2/M00/49/A9/pYYBAGKhvEqACDyoAAAPlYw8zJk651.png)
操作系統(tǒng)的結(jié)構(gòu)及原型設(shè)計(jì)
![<b class='flag-5'>操作系統(tǒng)</b>的結(jié)構(gòu)及原型設(shè)計(jì)](https://file.elecfans.com/web2/M00/49/CF/pYYBAGKhvGOAckVrAAAVqoJlZB8930.jpg)
實(shí)時(shí)操作系統(tǒng)和非實(shí)時(shí)操作系統(tǒng)的區(qū)別
淺談鴻蒙系統(tǒng)與現(xiàn)有移動(dòng)操作系統(tǒng)的差異?
聊聊操作系統(tǒng)
![聊聊<b class='flag-5'>操作系統(tǒng)</b>](https://file1.elecfans.com//web2/M00/82/B3/wKgZomRdruaATenqAAJAE9zly9Q926.jpg)
評(píng)論