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

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

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

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

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

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

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

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

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

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

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

流程

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

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

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

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

何時(shí)使用此流程:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

生成增量編譯時(shí)間節(jié)省報(bào)告:

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

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

總結(jié):

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

審核編輯:湯梓紅

聲明:本文內(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)投訴
  • Xilinx
    +關(guān)注

    關(guān)注

    71

    文章

    2169

    瀏覽量

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

    關(guān)注

    0

    文章

    660

    瀏覽量

    32931
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    815

    瀏覽量

    66710

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    xilinx vivado 2013.4 教程

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

    關(guān)于Xilinxvivado

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

    下載Xilinx Vivado 2017.1時(shí)出錯(cuò)

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

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

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

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

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

    Vivado Design Suite 2015.3的新功能介紹

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

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

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

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

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

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

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

    Vivado 2015.3的新增量編譯功能

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

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

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

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

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

    Xilinx_Vivado_zynq7000入門筆記

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

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

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