0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

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

Xilinx Vivado使用增量實現(xiàn)

Hack電子 ? 來源:Hack電子 ? 2023-09-04 10:07 ? 次閱讀

增量實現(xiàn)自從首次獲得支持以來,不斷升級演變,在此過程中已添加了多項針對性能和編譯時間的增強(qiáng)功能。它解決了實現(xiàn)階段針對快速迭代的需求,顯著節(jié)省了編譯時間,還能確保所得結(jié)果和性能的可預(yù)測性。 以下圖表顯示了在一整套困難的設(shè)計上采用增量實現(xiàn)流程后,所節(jié)省的編譯時間的變化趨勢:

59ccea9c-4ac7-11ee-97a6-92fbcf53809c.png

圖 1:2019.1 內(nèi)部設(shè)計和外部設(shè)計通過增量實現(xiàn)流程節(jié)省的編譯時間

59e0cdaa-4ac7-11ee-97a6-92fbcf53809c.png

圖 2:2019.1 利用增量實現(xiàn)流程保證 QoR 可預(yù)測性

圖 1 顯示,對于運(yùn)行時間超過 2 小時的設(shè)計,使用該流程前的編譯時間平均為使用后編譯時間的 2.12 倍(設(shè)計更改最多為 10%),節(jié)省編譯時間效果顯著。 圖 2 顯示了少量 RTL 更改的 QoR 可預(yù)測性指標(biāo)。ΔWNS 顯示的是相較于參考運(yùn)行輪次的 WNS 降幅。顯而易見,相比于默認(rèn)運(yùn)行輪次,增量編譯所得 QoR 可預(yù)測性更好。例外情況是,設(shè)計越小,初始化步驟在編譯總時間中占用時間越多,所以應(yīng)用增量編譯給設(shè)計編譯時間帶來的助益就越少。

流程

工程模式和非工程模式都支持此流程。如果您使用 read_checkpoint -incremental 命令加載參考設(shè)計檢查點,并且指向參考 DCP 位置和名稱,那么即可對后續(xù)布局布線操作啟用增量編譯設(shè)計流程。 在非工程模式下,read_checkpoint -incremental 應(yīng)晚于 opt_design 而早于 place_design。

5a0077f4-4ac7-11ee-97a6-92fbcf53809c.png

當(dāng)前,自動模式和非自動模式均受支持。要啟用自動模式,您可打開實現(xiàn)設(shè)置,并選中“Automatically use the checkpoint from the previous run”(自動使用上一輪運(yùn)行的檢查點)選項。如不勾選自動模式,也可將用戶所需的 DCP 指定為參考檢查點,以便指引后續(xù)輪次的運(yùn)行。

5a11b186-4ac7-11ee-97a6-92fbcf53809c.png

何時使用此流程:

如果設(shè)計代碼穩(wěn)定并且可以后續(xù)執(zhí)行少量代碼修改,或者如果您當(dāng)前正致力于時序收斂的最后沖刺階段并且已接近完成,那么此流程很有用。在這兩種情況下,您可能希望每個實現(xiàn)版本的生成周期都很短。 增量實現(xiàn)流程從參考檢查點讀取布局布線信息,并與當(dāng)前 opt_design 后網(wǎng)表進(jìn)行匹配比較。匹配的單元將得到復(fù)用,新添加的邏輯經(jīng)最優(yōu)化后,將在默認(rèn)流程中運(yùn)行。匹配的單元與不匹配的單元之間也將進(jìn)行交叉最優(yōu)化。

因此,如果大部分邏輯可復(fù)用,并且設(shè)計接近滿足時序,那么此流程對編譯時間的助益最大。 另一個用例是,如果您的設(shè)計困難,且距離收斂相去甚遠(yuǎn),但您想要在某些級別復(fù)用此設(shè)計(例如,SLR 級別、塊類型級別、模塊級別),那么也可以使用此流程。在此情況下,您可將增量模式更改為部分復(fù)用模式。

例如,以下約束行的效果等同于將所有 RAM 的位置從網(wǎng)表都反標(biāo)注釋到 XDC 內(nèi)并在下一輪運(yùn)行中應(yīng)用約束: read_checkpoint -incremental routed.dcp -reuse_objects [all_rams] -fix_objects [all_rams]

可能影響增量實現(xiàn)編譯時間的因素:

采用此流程前,請注意以下要點,這些要點有助于您充分發(fā)揮增量流程優(yōu)勢:

選擇正確的檢查點。您需確保參考檢查點與受指引的設(shè)計處于同一器件內(nèi),實現(xiàn)時采用的 Vivado 版本與當(dāng)前運(yùn)行采用的版本相同。如果采用不同版本生成 DCP,可能會導(dǎo)致單元匹配減少,并且節(jié)省的編譯時間不及預(yù)期。

限制時序關(guān)鍵面積內(nèi)的更改量,確保設(shè)計收斂的一致性和時序收斂。設(shè)計邏輯中更改過多可能會導(dǎo)致指引的結(jié)果欠佳或編譯時間延長。如果不能復(fù)用關(guān)鍵路徑的布局和布線,則需要做更多工作來保留時序。另外,如果少量設(shè)計更改引入了參考設(shè)計中不存在的新時序問題,則可能需要增加工作量和運(yùn)行時間,而且設(shè)計可能不滿足時序。請始終確保所用 opt_design 指令匹配,因為更改 opt_design 可能導(dǎo)致更多單元名稱發(fā)生更改。

如果啟用自動模式,那么僅當(dāng)參考運(yùn)行的時序 >-0.250 ns 時,才會更新參考檢查點,換言之,您的參考檢查點的時序必須足夠好。 參考網(wǎng)表欠佳可能導(dǎo)致編譯時間延長。如果不更新參考檢查點,并且存在來自先前運(yùn)行的現(xiàn)有檢查點,那么 Vivado 會嘗試使用該現(xiàn)有檢查點作為參考檢查點。否則,不存在參考檢查點時,它會還原為默認(rèn)實現(xiàn)流程。 遵循默認(rèn)運(yùn)行行為時,Vivado 會遵循用戶所選的運(yùn)行策略,編譯時間與非增量運(yùn)行接近。

如果運(yùn)行開始后存在檢查點(無論是更新還是預(yù)先存在的參考檢查點),就會運(yùn)行與設(shè)計網(wǎng)表更改相關(guān)的第二種檢查算法,僅當(dāng)滿足所要求的標(biāo)準(zhǔn)時才會使用增量流程。如果這些條件都沒有得到滿足,流程會自動回退到默認(rèn)實現(xiàn)流程,在讀取檢查點增量后會發(fā)出以下信息:

WARNING: [Project 1-964] Cell Matching is less than the threshold needed to run Incremental flow. Switching to default Implementation flow

高復(fù)用模式:單元復(fù)用百分比高于 75% 時,就進(jìn)入高復(fù)用模式。在高復(fù)用模式下,會對布局布線算法進(jìn)行最優(yōu)化,以便盡可能提高現(xiàn)有布局布線信息的復(fù)用率。高復(fù)用模式對于參考檢查點已達(dá)成時序收斂并且單元復(fù)用率不低于 95% 的設(shè)計最有效。舉例來說,在參考設(shè)計與當(dāng)前設(shè)計之間存在少量設(shè)計更改,或者向設(shè)計添加調(diào)試核的情況下都是如此。

有 3 條指令可供 place_design 和 route_design 使用:

Default(默認(rèn)):獲取與參考運(yùn)行盡可能接近的結(jié)果。以參考設(shè)計 WNS 為目標(biāo)。此模式能為典型用例達(dá)成最優(yōu)化的編譯時間。

Explore(探索):嘗試盡可能改善時序。以 0.00 ns WNS 為目標(biāo)。這會耗費(fèi)更多編譯時間。

Quick(快速):運(yùn)行布局布線命令,不調(diào)用時序引擎。這可提供最優(yōu)化的編譯時間,在復(fù)用率高達(dá) > 99.5% 的部分設(shè)計中,不影響 QoR。

低復(fù)用模式:如果設(shè)計相較參考檢查點存在大量更改,或者如果用戶對 read_checkpoint 命令使用-only_reuse 開關(guān),指定僅復(fù)用參考檢查點中的少量單元,則進(jìn)入低復(fù)用模式。 在低復(fù)用模式下,支持所有 place_design 指令和 route_design 指令,并且該工具將以 0.00 ns 的 WNS 為目標(biāo)。相比于高復(fù)用模式,這樣可能會耗用更多編譯時間。低復(fù)用模式對于在特定面積內(nèi)難以完成布局布線的設(shè)計最有效。例如,復(fù)用正常運(yùn)行的塊存儲器或 DSP 布局,或者復(fù)用間歇性達(dá)成時序收斂設(shè)計的特定層級。

布局布線運(yùn)行時間的初始化部分。 在簡短的布局布線運(yùn)行中,Vivado 布局器和布線器的初始化開銷可能會抵消來自增量布局布線進(jìn)程的任何增益。對于運(yùn)行時間較長的設(shè)計,初始化在運(yùn)行時間中所占的比例較小,因此編譯時間增益明顯。

通過啟用多線程可以進(jìn)一步縮短實現(xiàn)的編譯時間。目前對于 Linux 系統(tǒng),最大上限是 8 個線程。set_param general.maxThreads 8

生成增量編譯時間節(jié)省報告:

運(yùn)行 report_incremental_reuse 命令,生成顯示增量復(fù)用情況的報告。此報告的第 3 部分列出了編譯時間(elapsed 和 cpu),顯示了每一步耗費(fèi)的編譯時間。 由于增量運(yùn)行的指引作用僅從 place_design 階段開始,您需要注意,增量運(yùn)行所涉時間將包含用于讀入?yún)⒖紮z查點的 read_checkpoint 步驟,并且增量編譯時間的比較應(yīng)僅從 place_design 開始。 下表顯示了包含 read_checkpoint 在內(nèi)的每個階段的時間。此外,新網(wǎng)表的更改量對增量運(yùn)行時間的影響可能更大。 請注意,增量運(yùn)行中的 phys_opt_design 步驟是可選步驟,在流程中調(diào)用該步驟時,它將以默認(rèn)模式運(yùn)行,以進(jìn)一步優(yōu)化未受指引的路徑或已更改的路徑,對復(fù)用的路徑?jīng)]有影響。

5a38ef8a-4ac7-11ee-97a6-92fbcf53809c.png

總結(jié):

通過采用增量實現(xiàn)流程,可以實現(xiàn)快速迭代的實現(xiàn)運(yùn)行,但在運(yùn)行此流程時需要考慮編譯時間和 QoR(質(zhì)量結(jié)果)方面的妥協(xié)。

審核編輯:湯梓紅

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

    關(guān)注

    70

    文章

    2136

    瀏覽量

    120384
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    646

    瀏覽量

    32668
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    797

    瀏覽量

    65853

原文標(biāo)題:Xilinx Vivado使用增量實現(xiàn)

文章出處:【微信號:Hack電子,微信公眾號:Hack電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    xilinx vivado 2013.4 教程

    哪位大神能夠分享一下關(guān)于xilinx vivado 2013.4 的教程啊,小弟感激不敬?。?!
    發(fā)表于 03-26 21:38

    關(guān)于Xilinxvivado

    請問一下Xilinx公司發(fā)布的vivado具體的作用是什么,剛剛接觸到,以前一直用quartus ii,沒有使用過ise,后來今天聽說了vivado,不知道是做什么用的,希望大家都能參與討論中,謝謝。
    發(fā)表于 04-15 16:51

    下載Xilinx Vivado 2017.1時出錯

    您好,我想下載Xilinx Vivado 2017.1但是,每次我收到以下錯誤:“由于您的帳戶導(dǎo)出合規(guī)性驗證失敗,我們無法滿足您的要求?!闭l能幫我?提前致謝以上來自于谷歌翻譯以下為原文Hello
    發(fā)表于 12-27 10:41

    Vivado中的Incremental Compile增量編譯技術(shù)詳解

    Incremental Compile增量編譯是Vivado提供的一項高階功能。目的旨在當(dāng)設(shè)計微小的改變時,重用綜合和布局布線的結(jié)果,縮短編譯時間。
    的頭像 發(fā)表于 07-05 06:06 ?1.1w次閱讀

    Xilinx Vivado HLS可以快速、高效地實現(xiàn)QRD矩陣分解

    使用Xilinx Vivado HLS(Vivado 高層次綜合)工具實現(xiàn)浮點復(fù)數(shù)QRD矩陣分解并提升開發(fā)效率。使用VivadoHLS可以快速、高效地基于FPGA
    發(fā)表于 11-17 17:47 ?3616次閱讀
    用<b class='flag-5'>Xilinx</b> <b class='flag-5'>Vivado</b> HLS可以快速、高效地<b class='flag-5'>實現(xiàn)</b>QRD矩陣分解

    Vivado Design Suite 2015.3的新功能介紹

    了解Vivado實現(xiàn)中2015.3中的新增量編譯功能,包括更好地處理物理優(yōu)化和自動增量編譯流程。
    的頭像 發(fā)表于 11-20 06:55 ?2510次閱讀

    Vivado Design Suite 2015.3新增量編譯功能介紹

    了解Vivado實現(xiàn)中2015.3中的新增量編譯功能,包括更好地處理物理優(yōu)化和自動增量編譯流程。
    的頭像 發(fā)表于 11-20 06:56 ?2730次閱讀

    Vivado 2015.3中的新增量編譯功能介紹

    了解Vivado實現(xiàn)中2015.3中的新增量編譯功能,包括更好地處理物理優(yōu)化和自動增量編譯流程。
    的頭像 發(fā)表于 11-29 06:32 ?3537次閱讀

    如何使用Vivado設(shè)計套件配合Xilinx評估板的設(shè)計

    了解如何使用Vivado設(shè)計套件的電路板感知功能快速配置和實施針對Xilinx評估板的設(shè)計。
    的頭像 發(fā)表于 11-26 06:03 ?3241次閱讀

    Vivado 2015.3的新增量編譯功能

    了解Vivado實現(xiàn)中2015.3中的新增量編譯功能,包括更好地處理物理優(yōu)化和自動增量編譯流程。
    的頭像 發(fā)表于 11-30 19:24 ?4415次閱讀

    講述增量編譯方法,提高Vivado編譯效率

    當(dāng)RTL代碼修改較少時,使用增量編譯功能可以提高工程的編譯速度,Incremental Compile增量編譯是Vivado提供的一項高階功能。目的旨在當(dāng)設(shè)計微小的改變時,重用綜合和布局布線的結(jié)果,縮短編譯時間。
    的頭像 發(fā)表于 01-22 17:27 ?9830次閱讀
    講述<b class='flag-5'>增量</b>編譯方法,提高<b class='flag-5'>Vivado</b>編譯效率

    Vivado綜合引擎的增量綜合流程

    Vivado 2019.1 版本開始,Vivado 綜合引擎就已經(jīng)可以支持增量流程了。這使用戶能夠在設(shè)計變化較小時減少總的綜合運(yùn)行時間。
    發(fā)表于 07-21 11:02 ?1560次閱讀

    Xilinx_Vivado_zynq7000入門筆記

    Xilinx_Vivado_zynq7000入門筆記說明。
    發(fā)表于 04-08 11:48 ?71次下載

    用TCL定制Vivado設(shè)計實現(xiàn)流程

    今天推出Xilinx已發(fā)布的《Vivado使用誤區(qū)與進(jìn)階》系列:用TCL定制Vivado設(shè)計實現(xiàn)流程。
    的頭像 發(fā)表于 05-05 09:44 ?952次閱讀
    用TCL定制<b class='flag-5'>Vivado</b>設(shè)計<b class='flag-5'>實現(xiàn)</b>流程

    為EBAZ4205創(chuàng)建Xilinx Vivado板文件

    電子發(fā)燒友網(wǎng)站提供《為EBAZ4205創(chuàng)建Xilinx Vivado板文件.zip》資料免費(fèi)下載
    發(fā)表于 06-16 11:41 ?1次下載
    為EBAZ4205創(chuàng)建<b class='flag-5'>Xilinx</b> <b class='flag-5'>Vivado</b>板文件