Vivado 結(jié)果是否可重復(fù)用于相同的工具輸入?
解決方案大多數(shù)情況下是可以的,Vivado 應(yīng)該可在涉及相同應(yīng)用的運(yùn)行之間生成相同的結(jié)果:
-
設(shè)計(jì)源
-
約束
-
Tcl 腳本及命令順序
-
工具與命令選項(xiàng)
-
Vivado 軟件版本
-
多線程設(shè)置
這適用于從 HDL 綜合到比特流生成的設(shè)計(jì)流程的各個(gè)環(huán)節(jié)。例如,構(gòu)建腳本反復(fù)在同一系統(tǒng)或相似配置的機(jī)器上運(yùn)行時(shí),應(yīng)該能生成相同的結(jié)果。
不同操作系統(tǒng)的結(jié)果通常可重復(fù),但也不一定,特別是在使用 Linux 和 Windows 操作系統(tǒng)的情況下。
注意確定性
術(shù)語“可重復(fù)性”和“確定性”通常可交替使用,這種說法是不對(duì)的。Vivado 使用多線程來并行執(zhí)行,因此它在定義上是不確定的。然而,Vivado 中的多線程可通過編程實(shí)現(xiàn)同步,因而多線程執(zhí)行可重復(fù)。注意,除了多線程外,Vivado 也管理 OS 系統(tǒng)調(diào)用及內(nèi)存管理等可導(dǎo)致不確定性的其它因數(shù)。
確定重復(fù)性問題
有分歧的運(yùn)行最常見的癥狀是布線后時(shí)序結(jié)果的不同。如果您懷疑某個(gè)不可重復(fù)性的情況,并驗(yàn)證工具輸入是完全相同,就可使用校驗(yàn)和來進(jìn)一步驗(yàn)證分歧。Vivado 在每個(gè)實(shí)現(xiàn)方案命令的各個(gè)中間階段,都會(huì)在日志中報(bào)告一個(gè)校驗(yàn)和,這是一個(gè)基于設(shè)計(jì)網(wǎng)表及物理數(shù)據(jù)的簽名。校驗(yàn)和可以在不同的運(yùn)行之間比較,校驗(yàn)和不匹配可幫助發(fā)現(xiàn)哪里的結(jié)果有分歧。
實(shí)例:以下校驗(yàn)和開始出現(xiàn)分歧,因此永遠(yuǎn)不會(huì)收斂。如果所有輸入都是完全相同的,那這很可能就是一個(gè)可重復(fù)性問題。
檢查點(diǎn)與內(nèi)存中的運(yùn)行
與同等意義的內(nèi)存內(nèi)設(shè)計(jì)流程相比,檢查點(diǎn)應(yīng)生成可重復(fù)性的結(jié)果。請(qǐng)考慮以下命令順序,一個(gè)運(yùn)行內(nèi)存中的整個(gè)設(shè)計(jì)流程,另一個(gè)則使用放置的檢查點(diǎn)通過 phys_opt_design 命令再次從內(nèi)存中的流程進(jìn)入該流程。
這兩個(gè)運(yùn)行應(yīng)該給出相同的結(jié)果。盡管在執(zhí)行 open_checkpoint 命令后,校驗(yàn)和可能因?yàn)榫W(wǎng)表的排序差異而不同,但在第一次執(zhí)行 phys_opt_design 命令后,校驗(yàn)和應(yīng)該可以收斂:
在運(yùn)行之前,每一個(gè)執(zhí)行命令都會(huì)自動(dòng)排序,以確保網(wǎng)表的一致性,這樣結(jié)果就不會(huì)因網(wǎng)表差異而出現(xiàn)分歧。
最大限度提高可重復(fù)性
如果可重復(fù)性對(duì)于您的設(shè)計(jì)環(huán)境至關(guān)重要,下面的操作可幫助您最大限度地提高可重復(fù)性:
在單線程模式下運(yùn)行。
在不同運(yùn)行之間使用不同數(shù)量的 CPU 時(shí),同步線程可能會(huì)按照不同的順序執(zhí)行運(yùn)算并造成有分歧的結(jié)果,即便運(yùn)行使用相同的機(jī)器或系統(tǒng)也是如此。
要在單線程模式下運(yùn)行,請(qǐng)使用:
set_param general.maxThreads 1
這不僅可禁用多線程,而且還可消除相關(guān)可重復(fù)性問題。
在相同機(jī)器上運(yùn)行或者在使用相同操作系統(tǒng)的機(jī)器上運(yùn)行。
這不僅可降低遇到內(nèi)核運(yùn)行方式所帶來的不可重復(fù)性的概率,而且還可從一個(gè)系統(tǒng)到另一個(gè)系統(tǒng)實(shí)現(xiàn)系統(tǒng)調(diào)用,特別是在使用 Windows 和 Linux 操作系統(tǒng)的情況下。
以下操作可進(jìn)一步降低這一概率
1) 微調(diào)環(huán)境,消除下列情況:
-
同一操作系統(tǒng)的不同版本
-
不同的服務(wù)包級(jí)別 (Windows)
-
不同分銷或不同補(bǔ)丁級(jí)別 (Linux)
2) 消除計(jì)算硬件差異:
-
使用相同的通用物理及虛擬存儲(chǔ)器容量。
-
使用相同的處理器架構(gòu)和相同數(shù)量的內(nèi)核。
-
如果使用的是虛擬機(jī),則要保證配置完全相同。
報(bào)告不可重復(fù)性問題
如果您遇到了輸入完全相同的不可重復(fù)性問題(如解決方案說明中所述),請(qǐng)打開服務(wù)請(qǐng)求并提供一個(gè)可演示該問題的測(cè)試案例。
沒有測(cè)試案例,可能很難確定并修復(fù)任務(wù)問題,但它可幫助提供盡可能多的信息。
Linux 和 Windows 之間偶爾會(huì)出現(xiàn)不可重復(fù)性問題,我們建議限制 Vivado 只在 Linux 上運(yùn)行或只在 Windows 上運(yùn)行。
-
Linux
+關(guān)注
關(guān)注
87文章
11209瀏覽量
208721 -
WINDOWS
+關(guān)注
關(guān)注
3文章
3521瀏覽量
88318 -
Vivado
+關(guān)注
關(guān)注
19文章
804瀏覽量
66224
原文標(biāo)題:【專家坐堂Q&A】Vivado 結(jié)果是否可重復(fù)用于相同的工具輸入?
文章出處:【微信號(hào):FPGA-EETrend,微信公眾號(hào):FPGA開發(fā)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論