很多FPGA工程師都有這種困惑,Vivado每次編譯的結(jié)果都一樣嗎?
在AMD官網(wǎng)上,有這樣一個帖子:
Are Vivado results repeatable for identical tool inputs?
對大多數(shù)情況來說,Vivado編譯的結(jié)果是一樣的,但要保證下面的輸入是一樣的:
Design sources
Constraints
Tcl scripts and command sequences
Tool and command options
Vivado software version
Operating Systems
不同操作系統(tǒng)之間編譯結(jié)果不能保證是相同的,尤其是Linux和Windows。
但下面的這些選項不能保證編譯結(jié)果相同:
route_design -ultrathreads選項
plac_design -ultrathreads選項
使用一個routed design dcp,而且又重新跑了post-route和phys_opt_design
我們經(jīng)常會設(shè)置set_param general.maxThreads,這個也是在使用ultrathreads選項時才會影響編譯的repeatability。
其中place_design的ultrathreads只對UltraScale+ SSI 和vu440 有效:

image-20240610145255204
route_design的ultrathreads解釋如下,沒有規(guī)定器件。

image-20240610145242925
定位repeatablity的問題
最常見的問題就是post-route結(jié)果是不一樣的,我們可以通過下面的方式來確認哪一步出現(xiàn)是不一致。
Vivado在每個實現(xiàn)命令的中間階段都會在日志中報告一個checksum,這是基于設(shè)計網(wǎng)表和物理數(shù)據(jù)的簽名。
可以比較不同runs之間的校驗和,校驗和不匹配有助于確定結(jié)果在何處不一致。

image-20240610145309593
Checkpoints vs in-memory runs
對比下圖中的兩個流程,在place_design后,先存成dcp,另一個flow中是直接打開當前的dcp并進行后續(xù)的編譯流程,這樣的話,在open_checkpoint后,這兩個網(wǎng)表的checksum可能會不同,但經(jīng)過Phys_opt_design后,他們網(wǎng)表的checksum還是會一樣的。

image-20240610145318561
總結(jié)一下,如果想讓vivado的結(jié)果repeatablity,我們就只使用單線程編譯:
set_paramgeneral.maxThreads1
而且保證輸入的源文件、腳本、約束都是相同的。同時硬件環(huán)境也要一樣,這樣才能最大程度的保證結(jié)果的repeatablity。
-
編譯
+關(guān)注
關(guān)注
0文章
693瀏覽量
35094 -
Vivado
+關(guān)注
關(guān)注
19文章
855瀏覽量
71020
原文標題:Vivado每次的編譯結(jié)果是一樣的嗎?
文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
一文詳解SystemC仿真庫的編譯
使用Vivado 2018.2編譯E203的mcs文件,遇到的問題求解
Vivado仿真之后沒有出現(xiàn)仿真結(jié)果的解決方法
不一樣的展會,不一樣的精彩 2025灣芯展圓滿收官
vcs和vivado聯(lián)合仿真
不一樣的展會,不一樣的精彩:2025灣芯展順利收官
現(xiàn)場解決EMC電磁輻射干擾:“望聞問切”,像中醫(yī)一樣
別蒙我,PCB板上這幾對高速走線怎么看我都覺得一樣!
如何使用One Spin檢查AMD Vivado Design Suite Synth的結(jié)果
想通過I2C訪問閃存來測試對cy7c6541的訪問,但是訪問結(jié)果好像與datasheet不一樣,怎么解決這個問題?
適用于Versal的AMD Vivado 加快FPGA開發(fā)完成Versal自適應(yīng)SoC設(shè)計
FPGA Verilog HDL語法之編譯預(yù)處理
每次Vivado編譯的結(jié)果都一樣嗎
評論