Vivado 結(jié)果是否可重復(fù)用于相同的工具輸入?
解決方案大多數(shù)情況下是可以的,Vivado 應(yīng)該可在涉及相同應(yīng)用的運行之間生成相同的結(jié)果:
-
設(shè)計源
-
約束
-
Tcl 腳本及命令順序
-
工具與命令選項
-
Vivado 軟件版本
-
多線程設(shè)置
這適用于從 HDL 綜合到比特流生成的設(shè)計流程的各個環(huán)節(jié)。例如,構(gòu)建腳本反復(fù)在同一系統(tǒng)或相似配置的機器上運行時,應(yīng)該能生成相同的結(jié)果。
不同操作系統(tǒng)的結(jié)果通常可重復(fù),但也不一定,特別是在使用 Linux 和 Windows 操作系統(tǒng)的情況下。
注意確定性
術(shù)語“可重復(fù)性”和“確定性”通常可交替使用,這種說法是不對的。Vivado 使用多線程來并行執(zhí)行,因此它在定義上是不確定的。然而,Vivado 中的多線程可通過編程實現(xiàn)同步,因而多線程執(zhí)行可重復(fù)。注意,除了多線程外,Vivado 也管理 OS 系統(tǒng)調(diào)用及內(nèi)存管理等可導(dǎo)致不確定性的其它因數(shù)。
確定重復(fù)性問題
有分歧的運行最常見的癥狀是布線后時序結(jié)果的不同。如果您懷疑某個不可重復(fù)性的情況,并驗證工具輸入是完全相同,就可使用校驗和來進一步驗證分歧。Vivado 在每個實現(xiàn)方案命令的各個中間階段,都會在日志中報告一個校驗和,這是一個基于設(shè)計網(wǎng)表及物理數(shù)據(jù)的簽名。校驗和可以在不同的運行之間比較,校驗和不匹配可幫助發(fā)現(xiàn)哪里的結(jié)果有分歧。
實例:以下校驗和開始出現(xiàn)分歧,因此永遠不會收斂。如果所有輸入都是完全相同的,那這很可能就是一個可重復(fù)性問題。

檢查點與內(nèi)存中的運行
與同等意義的內(nèi)存內(nèi)設(shè)計流程相比,檢查點應(yīng)生成可重復(fù)性的結(jié)果。請考慮以下命令順序,一個運行內(nèi)存中的整個設(shè)計流程,另一個則使用放置的檢查點通過 phys_opt_design 命令再次從內(nèi)存中的流程進入該流程。
這兩個運行應(yīng)該給出相同的結(jié)果。盡管在執(zhí)行 open_checkpoint 命令后,校驗和可能因為網(wǎng)表的排序差異而不同,但在第一次執(zhí)行 phys_opt_design 命令后,校驗和應(yīng)該可以收斂:

在運行之前,每一個執(zhí)行命令都會自動排序,以確保網(wǎng)表的一致性,這樣結(jié)果就不會因網(wǎng)表差異而出現(xiàn)分歧。
最大限度提高可重復(fù)性
如果可重復(fù)性對于您的設(shè)計環(huán)境至關(guān)重要,下面的操作可幫助您最大限度地提高可重復(fù)性:
在單線程模式下運行。
在不同運行之間使用不同數(shù)量的 CPU 時,同步線程可能會按照不同的順序執(zhí)行運算并造成有分歧的結(jié)果,即便運行使用相同的機器或系統(tǒng)也是如此。
要在單線程模式下運行,請使用:
set_param general.maxThreads 1
這不僅可禁用多線程,而且還可消除相關(guān)可重復(fù)性問題。
在相同機器上運行或者在使用相同操作系統(tǒng)的機器上運行。
這不僅可降低遇到內(nèi)核運行方式所帶來的不可重復(fù)性的概率,而且還可從一個系統(tǒng)到另一個系統(tǒng)實現(xiàn)系統(tǒng)調(diào)用,特別是在使用 Windows 和 Linux 操作系統(tǒng)的情況下。
以下操作可進一步降低這一概率
1) 微調(diào)環(huán)境,消除下列情況:
-
同一操作系統(tǒng)的不同版本
-
不同的服務(wù)包級別 (Windows)
-
不同分銷或不同補丁級別 (Linux)
2) 消除計算硬件差異:
-
使用相同的通用物理及虛擬存儲器容量。
-
使用相同的處理器架構(gòu)和相同數(shù)量的內(nèi)核。
-
如果使用的是虛擬機,則要保證配置完全相同。
報告不可重復(fù)性問題
如果您遇到了輸入完全相同的不可重復(fù)性問題(如解決方案說明中所述),請打開服務(wù)請求并提供一個可演示該問題的測試案例。
沒有測試案例,可能很難確定并修復(fù)任務(wù)問題,但它可幫助提供盡可能多的信息。
Linux 和 Windows 之間偶爾會出現(xiàn)不可重復(fù)性問題,我們建議限制 Vivado 只在 Linux 上運行或只在 Windows 上運行。
-
Linux
+關(guān)注
關(guān)注
87文章
11507瀏覽量
213519 -
WINDOWS
+關(guān)注
關(guān)注
4文章
3611瀏覽量
91304 -
Vivado
+關(guān)注
關(guān)注
19文章
834瀏覽量
68636
原文標題:【專家坐堂Q&A】Vivado 結(jié)果是否可重復(fù)用于相同的工具輸入?
文章出處:【微信號:FPGA-EETrend,微信公眾號:FPGA開發(fā)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
Vivado 2017.4和2018.2不同的Linux和Windows之間的實現(xiàn)結(jié)果
我應(yīng)該使用什么操作系統(tǒng)?
(良哥獨創(chuàng))linux操作系統(tǒng)裝回windows操作系統(tǒng)
Windows XP操作系統(tǒng) ppt課件
Linux與其他操作系統(tǒng)的區(qū)別
Linux是什么?這種操作系統(tǒng)為何如此流行?
Linux和Windows操作系統(tǒng)你更希望用哪個?
Windows 10操作系統(tǒng)會有專門的Linux子系統(tǒng)
怎樣實現(xiàn)在linux系統(tǒng)中對windows系統(tǒng)的遠程操作?
Linux操作系統(tǒng)與Windows操作系統(tǒng)的五大區(qū)別
Windows和Linux操作系統(tǒng)的流式處理API

Windows和Linux操作系統(tǒng)的流式處理API

Linux 是操作系統(tǒng)還是內(nèi)核?
Linux與Windows服務(wù)器操作系統(tǒng)有什么區(qū)別?
每次Vivado編譯的結(jié)果都一樣嗎

評論