0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

每次Vivado編譯的結(jié)果都一樣嗎

OpenFPGA ? 來源:OpenFPGA ? 2024-11-11 11:23 ? 次閱讀

很多FPGA工程師都有這種困惑,Vivado每次編譯的結(jié)果都一樣嗎?

AMD官網(wǎng)上,有這樣一個(gè)帖子:

Are Vivado results repeatable for identical tool inputs?

對(duì)大多數(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。

但下面的這些選項(xiàng)不能保證編譯結(jié)果相同:

route_design -ultrathreads選項(xiàng)

plac_design -ultrathreads選項(xiàng)

使用一個(gè)routed design dcp,而且又重新跑了post-route和phys_opt_design

我們經(jīng)常會(huì)設(shè)置set_param general.maxThreads,這個(gè)也是在使用ultrathreads選項(xiàng)時(shí)才會(huì)影響編譯的repeatability。

其中place_design的ultrathreads只對(duì)UltraScale+ SSI 和vu440 有效:

a3433a42-9052-11ef-a511-92fbcf53809c.png

image-20240610145255204

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

a35b7378-9052-11ef-a511-92fbcf53809c.png

image-20240610145242925

定位repeatablity的問題

最常見的問題就是post-route結(jié)果是不一樣的,我們可以通過下面的方式來確認(rèn)哪一步出現(xiàn)是不一致。

Vivado在每個(gè)實(shí)現(xiàn)命令的中間階段都會(huì)在日志中報(bào)告一個(gè)checksum,這是基于設(shè)計(jì)網(wǎng)表和物理數(shù)據(jù)的簽名。

可以比較不同runs之間的校驗(yàn)和,校驗(yàn)和不匹配有助于確定結(jié)果在何處不一致。

a3673e56-9052-11ef-a511-92fbcf53809c.png

image-20240610145309593

Checkpoints vs in-memory runs

對(duì)比下圖中的兩個(gè)流程,在place_design后,先存成dcp,另一個(gè)flow中是直接打開當(dāng)前的dcp并進(jìn)行后續(xù)的編譯流程,這樣的話,在open_checkpoint后,這兩個(gè)網(wǎng)表的checksum可能會(huì)不同,但經(jīng)過Phys_opt_design后,他們網(wǎng)表的checksum還是會(huì)一樣的。

a3838f8e-9052-11ef-a511-92fbcf53809c.png

image-20240610145318561

總結(jié)一下,如果想讓vivado的結(jié)果repeatablity,我們就只使用單線程編譯:

set_paramgeneral.maxThreads1

而且保證輸入的源文件、腳本、約束都是相同的。同時(shí)硬件環(huán)境也要一樣,這樣才能最大程度的保證結(jié)果的repeatablity。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    676

    瀏覽量

    33759
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    829

    瀏覽量

    68243

原文標(biāo)題:Vivado每次的編譯結(jié)果是一樣的嗎?

文章出處:【微信號(hào):Open_FPGA,微信公眾號(hào):OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 0人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何使用One Spin檢查AMD Vivado Design Suite Synth的結(jié)果

    本文講述了如何使用 One Spin 檢查 AMD Vivado Design Suite Synth 的結(jié)果(以 Vivado 2024.2 為例)。
    的頭像 發(fā)表于 05-19 14:22 ?385次閱讀
    如何使用One Spin檢查AMD <b class='flag-5'>Vivado</b> Design Suite Synth的<b class='flag-5'>結(jié)果</b>

    FPGA Verilog HDL語法之編譯預(yù)處理

    Verilog HDL語言和C語言一樣也提供了編譯預(yù)處理的功能。“編譯預(yù)處理”是Verilog HDL編譯系統(tǒng)的個(gè)組成部分。Verilog
    的頭像 發(fā)表于 03-27 13:30 ?471次閱讀
    FPGA Verilog HDL語法之<b class='flag-5'>編譯</b>預(yù)處理

    STM32CubeIDE編譯設(shè)置是否有像keil一樣編譯后執(zhí)行Bat腳本的功能和設(shè)置?

    STM32CubeIDE編譯設(shè)置問題,是否有像keil一樣編譯后執(zhí)行Bat腳本的功能和設(shè)置?或者有相關(guān)的腳本和插件?
    發(fā)表于 03-14 15:59

    ADS1100每次復(fù)位ADS采集到數(shù)據(jù)都不一樣,是時(shí)序問題嗎?

    為什么我每次復(fù)位ADS采集到數(shù)據(jù)都不一樣啊 是時(shí)序問題嗎?
    發(fā)表于 02-12 07:06

    用單片機(jī)的SPI控制ADS1191,發(fā)送命令寫寄存器后讀取相應(yīng)寄存器的值就不一樣,而且每次讀出來的都不一樣,為什么?

    現(xiàn)用單片機(jī)的SPI控制ADS1191,使用內(nèi)置晶振時(shí)鐘,發(fā)送命令寫寄存器后,再讀取相應(yīng)寄存器的值就不一樣,而且每次讀出來的都不一樣,設(shè)置讓CLK腳在起振后輸出時(shí)鐘信號(hào),示波器也測(cè)不到相應(yīng)的時(shí)鐘信號(hào),請(qǐng)給予提示,已經(jīng)停在這2天了
    發(fā)表于 01-23 08:38

    ldc1000的spi通信,為什么在這種情況下寫不進(jìn)數(shù)據(jù),讀數(shù)據(jù)也每次一樣?

    ldc上電后,即數(shù)字和模擬端供電后,只連接spi的四根線到mcu,而其他腳懸空,這種情況下能否讀寫ldc1000的寄存器。 為什么我在這種情況下寫不進(jìn)數(shù)據(jù),讀數(shù)據(jù)也每次
    發(fā)表于 01-13 08:21

    每次配置DAC5682Z寄存器的參數(shù)一樣,但是頻譜測(cè)得輸出信號(hào)卻不同,為什么?

    現(xiàn)在遇到個(gè)奇怪的現(xiàn)象,每次配置DAC5682Z寄存器的參數(shù)一樣,但是頻譜測(cè)得輸出信號(hào)卻不同。 配置的目標(biāo)是輸出個(gè)56MHz單頻點(diǎn)信號(hào)
    發(fā)表于 12-25 07:30

    AFE4400讀取6個(gè)寄存器值,每次讀取的值都是一樣的怎么解決?

    最近在開發(fā)AFE4400時(shí),讀取6個(gè)寄存器值,LED2VAL和LED1VAL寄存器值一樣,ALED2VAL和ALED1VAL寄存器值一樣,LED2-ALED2VAL和LED1-ALED1VAL寄存器值一樣,且
    發(fā)表于 12-25 07:18

    ads1243每次重新上電ad采集值不一樣是怎么回事?

    本人利用ads1243采集壓力傳感器,發(fā)現(xiàn)每次上電,外界條件一樣的情況下,ad值取16位波動(dòng),上電之后就按照剛上電時(shí)候的值平穩(wěn)下去,求高手解答,是否有例程或是硬件接法,另外,想咨詢pdwn引腳
    發(fā)表于 12-18 06:08

    ADS1247模擬SPI讀取寄存器數(shù)據(jù),讀取的數(shù)據(jù)每次都不一樣,為什么?

    ADS1247模擬SPI 讀取寄存器數(shù)據(jù),讀取的數(shù)據(jù)每次都不一樣。比對(duì)過時(shí)序,程序沒有問題。示波器抓取的波形顯示命令已經(jīng)發(fā)出,試了好幾塊板子都是這樣。 PS:START 引腳已經(jīng)拉高
    發(fā)表于 12-13 08:44

    做個(gè)數(shù)字示波器,結(jié)果自激了,為什么?

    想做個(gè)數(shù)字示波器,帶寬20M的,為了使輸入阻抗>1Mohm 采用最簡(jiǎn)單的電壓跟隨器,結(jié)果自激了。 使用了OPA656,換別低噪聲高速運(yùn)放一樣,頻率40M~120M不等,求解決
    發(fā)表于 09-20 07:49

    淺談Vivado編譯時(shí)間

    隨著FPGA規(guī)模的增大,設(shè)計(jì)復(fù)雜度的增加,Vivado編譯時(shí)間成為個(gè)不可回避的話題。尤其是些基于SSI芯片的設(shè)計(jì),如VU9P/VU13P/VU19P等,布局布線時(shí)間更是顯著增加。當(dāng)
    的頭像 發(fā)表于 09-18 10:43 ?1994次閱讀
    淺談<b class='flag-5'>Vivado</b><b class='flag-5'>編譯</b>時(shí)間

    為什么OPA695仿真軟件的仿真結(jié)果和數(shù)據(jù)手冊(cè)給出的參數(shù)不一樣呢?

    請(qǐng)問為什么OPA695仿真軟件的仿真結(jié)果和數(shù)據(jù)手冊(cè)給出的參數(shù)不一樣呢,請(qǐng)看下圖: 1、仿真軟件結(jié)果:帶寬195MHz 2、數(shù)據(jù)手冊(cè)給出的參數(shù):帶寬350MHz
    發(fā)表于 08-16 07:39

    采用同向輸入使用TPA6120時(shí),為什么插拔耳機(jī)接頭后,左右聲道分離度會(huì)改變,而且每次都不一樣 ?

    客戶在使用TPA6120時(shí),采用同向輸入。在測(cè)試左右聲道分離度時(shí),發(fā)現(xiàn)每次插拔耳機(jī)接頭時(shí),分離度的參數(shù)都不一樣。范圍在-50~-80dB. 而如果不插拔耳機(jī)接頭,追只是反復(fù)斷電,上電,或者反復(fù)加載
    發(fā)表于 08-16 06:07

    Stem32CubeIDE能像Keil一樣指定不同文件下的代碼編譯嗎?

    Stem32CubeIDE能像Keil一樣指定不同文件下的代碼編譯
    發(fā)表于 07-23 06:22

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品