欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

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

節(jié)省編譯時(shí)間的解決方法

XILINX開(kāi)發(fā)者社區(qū) ? 來(lái)源:XILINX開(kāi)發(fā)者社區(qū) ? 2023-09-27 09:52 ? 次閱讀

編譯時(shí)間分析:

影響編譯時(shí)間的因素有很多,包括工具流程、工具設(shè)置選項(xiàng)、RTL 設(shè)計(jì)、約束編輯、目標(biāo)器件以及設(shè)計(jì)實(shí)現(xiàn)期間各工具所面臨的任何關(guān)鍵問(wèn)題。除此之外,所使用的機(jī)器及其負(fù)載也是關(guān)鍵因素。在這篇博客中,我們只探討與設(shè)計(jì)和工具流程有關(guān)的因素。另外值得一提的是,所述技巧并不適用于所有用戶。例如,如果某個(gè)設(shè)計(jì)由 50 個(gè) FPGA 鏡像組成,每個(gè)鏡像含 50 個(gè)約束文件,那么在此類設(shè)計(jì)中更改約束可能不切實(shí)際。但對(duì)于單一設(shè)計(jì)運(yùn)行來(lái)說(shuō),約束更改會(huì)更有意義。

此外,個(gè)別建議對(duì)某些設(shè)計(jì)的影響會(huì)比其他設(shè)計(jì)更大。例如,如果對(duì)某個(gè)并行運(yùn)行 50 輪的設(shè)計(jì)應(yīng)用某一項(xiàng)約束更改,此項(xiàng)更改會(huì)影響所有運(yùn)行輪次。但如果在設(shè)計(jì)上只運(yùn)行一輪實(shí)現(xiàn),那么更改約束的影響有限。

本文中將描述每種技巧的優(yōu)勢(shì)和成本,但最終須由您作為用戶來(lái)自行決定是否值得在自己的用例中實(shí)現(xiàn)這些技巧。

測(cè)量編譯時(shí)間:

比較約束更改前后的編譯時(shí)間時(shí),重要的是在相似的機(jī)器上運(yùn)行更改從而得到公平的比較結(jié)果。

如果這不可行,那么您可以通過(guò)比較數(shù)值變化來(lái)大致了解編譯時(shí)間變化,而不必依賴絕對(duì)數(shù)值。有多種方法可用于比較時(shí)間。

對(duì)于完整的 Vivado 運(yùn)行輪次,可以在 vivado.log 文件中搜索編譯時(shí)間信息。例如,您可在其中找到如下行:

place_design: Time (s): cpu = 0334 ; elapsed = 0153 . Memory (MB): peak = 21362.934 ; gain = 3668.312 ; free physical = 12076 ; free virtual = 142273


此行包含在 place_design 階段耗費(fèi)的總時(shí)間以及內(nèi)存使用情況。“cpu”的時(shí)間是在 place_design 中分配有子任務(wù)的多個(gè)線程的累計(jì)時(shí)間。

值得注意的是“elapsed”耗用時(shí)間,即啟動(dòng)和完成該 place_design 階段的時(shí)間差。

另外還有其他多行內(nèi)容包含相同格式的時(shí)間報(bào)告,但這些行首不含命令名稱,如:

Time (s): cpu = 0050 ; elapsed = 0024 . Memory (MB): peak = 21322.859 ; gain = 3612.184 ; free physical = 42807 ; free virtual = 172805


這表示某一具體步驟中每個(gè)單獨(dú)階段耗費(fèi)的時(shí)間。因此,要得到編譯總時(shí)間,只需將工程模式或非工程模式下運(yùn)行的每個(gè)步驟所報(bào)告的編譯時(shí)間相加即可:
T(synth_design)+T(opt_design)+ T(place_design)+ T(phys_opt_design)+T(route_design).

請(qǐng)注意,工程模式需要時(shí)間來(lái)生成多個(gè)報(bào)告文件,這個(gè)時(shí)間也應(yīng)該一并算上。這樣您就能清楚知曉哪個(gè)步驟在編譯總時(shí)間中耗時(shí)最多。

如要調(diào)查某一條命令而不是某個(gè)運(yùn)行步驟所耗費(fèi)的時(shí)間量,您可使用 Tcl 命令來(lái)跟蹤這條命令。

例如,使用以下命令即可得到運(yùn)行一條 get_pins 命令的時(shí)間為 44 毫秒:

set start [clock milliseconds]; get_pins -filter {NAME =~ *FPGA*/O}; set stop [clock milliseconds] ; puts "TIME: [expr $stop -$start]"
TCL console output -> TIME: 44

set start [clock milliseconds]; get_pins -filter {NAME =~ *FPGA*/O}; set stop [clock milliseconds] ; puts "TIME: [expr $stop -$start]"TCL console output -> TIME: 44


如果您有一個(gè)含數(shù)千行命令的巨型約束文件,并且想要快速了解每條命令所耗費(fèi)的時(shí)間,那么此技巧會(huì)很有幫助。

對(duì)于增量流程,可以在 log 日志文件中直接生成一個(gè)表格,計(jì)算每個(gè)步驟中默認(rèn)運(yùn)行和增量運(yùn)行的編譯總時(shí)間,因此非常便于閱讀查看。

雖然想必您知道,在綜合或?qū)崿F(xiàn)階段,增量運(yùn)行可以從參考文件中讀取和復(fù)制信息,但僅在某些階段中能節(jié)省時(shí)間,如果網(wǎng)表發(fā)生大量更改,其中引用的內(nèi)容就會(huì)減少,編譯時(shí)間也會(huì)受到相應(yīng)影響。

d195c53e-5c5c-11ee-939d-92fbcf53809c.png

分析編譯時(shí)間:

獲得期望的編譯時(shí)間信息后,下一步是分析時(shí)間數(shù)據(jù),決定哪個(gè)步驟影響最大,這樣即可便于您尋找解決辦法。

示例如下:

示例 1:

假設(shè)我們發(fā)現(xiàn) route_design 步驟耗用的編譯時(shí)間最多。通過(guò)閱讀 log 日志報(bào)告發(fā)現(xiàn),此設(shè)計(jì)的資源使用率很高導(dǎo)致布線擁塞,因此布線器編譯時(shí)間非常長(zhǎng)。

因此,我們可以依靠 report_design_analysis 獲取擁塞報(bào)告,找出哪個(gè)區(qū)域或模塊導(dǎo)致出現(xiàn)此問(wèn)題。我們可以據(jù)此判斷是對(duì)代碼進(jìn)行最優(yōu)化以獲得低擁塞的 RTL 編碼樣式,還是依靠該工具的擁塞策略來(lái)進(jìn)行操作。

示例 2:

如果使用了大量 IP 或模塊,并且無(wú)需每輪都進(jìn)行更新,則可考慮采用流程最優(yōu)化。例如,對(duì)于在設(shè)計(jì)中進(jìn)行例化的部分 IP 核,可以啟用 IP 高速緩存,以免每次都重新生成這些 IP,從而節(jié)省 IP 生成時(shí)間。

我們可以啟用自下而上的開(kāi)發(fā)流程進(jìn)行并行開(kāi)發(fā),這將最終節(jié)省設(shè)計(jì)實(shí)現(xiàn)的集成時(shí)間。也可以在完成一個(gè)流程后啟用增量流程,進(jìn)行快速設(shè)計(jì)迭代,以獲取指導(dǎo)性文件。

根據(jù)可用于解決編譯時(shí)間問(wèn)題的 2 種不同方法,以下內(nèi)容分為 2 部分。

解決設(shè)計(jì)存在的具體編譯時(shí)間問(wèn)題:

下列技巧可用于解決設(shè)計(jì)的具體編譯時(shí)間問(wèn)題,這些技巧根據(jù)常見(jiàn)問(wèn)題根源和解決方案可分為 4 類:

約束

增量實(shí)現(xiàn)

工具驅(qū)動(dòng)的選項(xiàng)

使用非關(guān)聯(lián)運(yùn)行

約束:
設(shè)計(jì)中包含清晰、合理且精確的約束有助于有效利用系統(tǒng)存儲(chǔ)器,從而減少整體編譯時(shí)間。我們需要分析在約束上耗費(fèi)的編譯時(shí)間,了解這些編譯時(shí)間的具體分配,并改進(jìn)約束語(yǔ)法以提高其效率。欲知詳情,請(qǐng)參閱博文利用高效約束節(jié)省編譯時(shí)間開(kāi)發(fā)者分享|節(jié)省編譯時(shí)間系列-利用 Tcl 腳本對(duì)編譯時(shí)間進(jìn)行剖析及其中隨附的示例。


增量流程
增量綜合流程開(kāi)發(fā)者分享|節(jié)省編譯時(shí)間系列-使用增量綜合與增量實(shí)現(xiàn)流程開(kāi)發(fā)者分享|節(jié)省編譯時(shí)間系列-使用增量實(shí)現(xiàn)都是非常直接且易于管理的方法,能夠達(dá)成最大輸出。當(dāng)設(shè)計(jì)更改率極低時(shí),您可基于成功的運(yùn)行輪次快速迭代,這樣還能生成一致性和可預(yù)測(cè)性更高的結(jié)果,從而幫助節(jié)省編譯時(shí)間。請(qǐng)單擊鏈接查看這兩篇博文,其中提供了采用流程需滿足的一些先決條件,以及有關(guān)如何理解報(bào)告的信息。

工具和報(bào)告選項(xiàng)
工具驅(qū)動(dòng)的選項(xiàng)有助于最大限度減少特定設(shè)計(jì)問(wèn)題,如,設(shè)計(jì) DRC 問(wèn)題、不適當(dāng)?shù)臅r(shí)序約束覆蓋或設(shè)計(jì)擁塞,這類問(wèn)題可能嚴(yán)重影響編譯時(shí)間,應(yīng)先一探究竟,而后再執(zhí)行任何其他工具最優(yōu)化操作。我們可以憑借 Vivado 報(bào)告工具來(lái)生成報(bào)告并執(zhí)行分析。

運(yùn)行 report_methodology 解決設(shè)計(jì)方法論問(wèn)題。報(bào)告中指出的一些不良措施可能會(huì)影響編譯時(shí)間,您可先從報(bào)告中輕松獲取修訂,然后再開(kāi)始下一輪運(yùn)行。

運(yùn)行report_design_anlaysis解決時(shí)序、復(fù)雜性、擁塞等問(wèn)題。通過(guò)讀取頂層關(guān)鍵路徑、設(shè)計(jì)復(fù)雜性 Rent 指數(shù)和設(shè)計(jì)布局熱點(diǎn),可幫助您更好地了解設(shè)計(jì)中的瓶頸。此報(bào)告可以提供一些簡(jiǎn)單的構(gòu)想,幫助您尋找解決方案。

運(yùn)行 report_qor_suggestions 通過(guò)低級(jí)別 Tcl 腳本獲取其他建議,然后可以將這些建議直接應(yīng)用于設(shè)計(jì)。

運(yùn)行 report_exceptions 獲取有關(guān)時(shí)序交互和覆蓋的信息。如果錯(cuò)誤設(shè)置時(shí)序約束導(dǎo)致時(shí)序過(guò)緊,就可能會(huì)導(dǎo)致編譯時(shí)間延長(zhǎng)。


非關(guān)聯(lián)運(yùn)行/塊級(jí)綜合
在非關(guān)聯(lián)模式下運(yùn)行設(shè)計(jì)核會(huì)生成并行子運(yùn)行,這意味著能縮短設(shè)計(jì)集成時(shí)間,塊級(jí)綜合也可以為不同的子模塊定義不同的編譯時(shí)間或性能策略。它也能縮短集成時(shí)間,從而減少編譯總時(shí)間。


如需跨多個(gè)設(shè)計(jì)縮短編譯時(shí)間,就要基于設(shè)計(jì)結(jié)果來(lái)應(yīng)用一些更為通用的方法并進(jìn)行迭代。這些技巧分為以下 2 類。

Vivado 自動(dòng)建議的流程和約束:

從 2019.1 版本起,Vivado 啟用了全新的功能特性,能以 Tcl 格式提供多項(xiàng)自動(dòng)生成的策略,后續(xù)可通過(guò) source 命令直接使用。

這有助于縮短清掃策略的周期,并且很容易找到一些編譯時(shí)間/性能平衡的最佳策略,且無(wú)需手動(dòng)執(zhí)行并行清掃所有設(shè)計(jì)的工作。

在 report_qor_suggestion 中啟用該功能特性。

清掃實(shí)現(xiàn)指令

分析了如何從現(xiàn)有策略中選擇以編譯時(shí)間為目標(biāo)的指令,并提供了一些建議,以便于您定義自己的編譯時(shí)間縮短策略。

總結(jié):

利用上述技巧時(shí),我們認(rèn)為應(yīng)分析編譯總時(shí)間,限定范圍以便查找最優(yōu)化方法并最終縮短編譯總時(shí)間。

審核編輯:湯梓紅

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

    關(guān)注

    1630

    文章

    21802

    瀏覽量

    606397
  • RTL
    RTL
    +關(guān)注

    關(guān)注

    1

    文章

    385

    瀏覽量

    59987
  • 編譯時(shí)間
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    5511
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    815

    瀏覽量

    66925

原文標(biāo)題:開(kāi)發(fā)者分享|節(jié)省編譯時(shí)間系列文章

文章出處:【微信號(hào):gh_2d1c7e2d540e,微信公眾號(hào):XILINX開(kāi)發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    淺析可提升Vivado編譯效率的增量編譯方法

    增量編譯:使用增量編譯滿足最后時(shí)刻 HDL 變動(dòng)需求,僅針對(duì)已變動(dòng)邏輯進(jìn)行布局布線,從而可節(jié)省時(shí)間
    的頭像 發(fā)表于 12-13 10:14 ?5580次閱讀

    鴻蒙OpenHarmony:【常見(jiàn)編譯問(wèn)題和解決方法

    常見(jiàn)編譯問(wèn)題和解決方法
    的頭像 發(fā)表于 05-11 16:09 ?2520次閱讀

    Keil C編譯器常見(jiàn)警告與錯(cuò)誤信息的解決方法

    Keil C編譯器常見(jiàn)警告與錯(cuò)誤信息的解決方法
    發(fā)表于 08-20 14:12

    Keil uVision4 編譯時(shí)提示 "SystemFrequency" is undefined,求解決方法

    Keil uVision4 編譯時(shí)提示 "SystemFrequency" is undefined,求解決方法
    發(fā)表于 03-30 14:46

    編譯協(xié)議棧-Stack工程出現(xiàn)錯(cuò)誤的解決方法

    編譯協(xié)議棧-Stack工程出現(xiàn)錯(cuò)誤的解決方法很多工程是反映了使用最新版本IAR for 8051 8.30以上版本,編譯協(xié)議棧-Stack工程時(shí)會(huì)出現(xiàn)以下錯(cuò)誤,Error[e46
    發(fā)表于 03-11 16:21

    KEIL4編譯時(shí)出現(xiàn)的錯(cuò)誤的解決方法

    KEIL4編譯時(shí)出現(xiàn)的錯(cuò)誤的解決方法
    發(fā)表于 08-14 16:40

    頭文件找不到的解決方法

    一個(gè)完整的工程結(jié)構(gòu)這是一個(gè)完整的工程目錄,當(dāng)然需要注意的幾點(diǎn)1.頭文件找不到:解決方法-------------在編譯設(shè)置------c/c++----includepath里面加入你的頭文件的路徑
    發(fā)表于 08-23 06:08

    一些RT-Studio的BSP編譯不過(guò)的問(wèn)題與解決方法

    問(wèn)題:工程在scons下可以編過(guò),studio編譯不過(guò)分析:看編譯輸出可能是缺某些宏,導(dǎo)致某部分程序未被包含原因:rtconfig_preinc.h文件 缺失部分宏解決方法:見(jiàn)下文示例;BSP
    發(fā)表于 03-15 15:29

    短波通信盲區(qū)現(xiàn)象解決方法介紹

    短波通信盲區(qū)現(xiàn)象解決方法介紹短波通信盲區(qū)現(xiàn)象解決方法介紹短波通信盲區(qū)現(xiàn)象解決方法介紹
    發(fā)表于 11-10 17:13 ?5次下載

    常見(jiàn)gcc編譯警告整理以及解決方法

     GCC有很多的編譯選項(xiàng),警告選項(xiàng);指定頭文件、庫(kù)路徑;優(yōu)化選項(xiàng)。本文針整理一下GCC的警告選項(xiàng)以及gcc編譯警告整理和解決方法為中心而展開(kāi)的討論。
    發(fā)表于 11-14 11:19 ?2.1w次閱讀

    如何節(jié)省FPGA編譯時(shí)間?

    FPGA到最后自然是規(guī)模越來(lái)越大,編譯時(shí)間越來(lái)越長(zhǎng)。解決問(wèn)題的方法通常來(lái)說(shuō)應(yīng)該從工具和設(shè)計(jì)入手。
    的頭像 發(fā)表于 08-04 09:16 ?6766次閱讀

    有什么方法可以減少Q(mào)uartus II的編譯時(shí)間嗎?

    對(duì)于減少Q(mào)uartus II的編譯時(shí)間方法,可從三個(gè)角度進(jìn)行考慮。
    的頭像 發(fā)表于 05-18 10:27 ?4938次閱讀
    有什么<b class='flag-5'>方法</b>可以減少Q(mào)uartus II的<b class='flag-5'>編譯</b><b class='flag-5'>時(shí)間</b>嗎?

    節(jié)省編譯時(shí)間系列-使用增量實(shí)現(xiàn)

    增量實(shí)現(xiàn)自從首次獲得支持以來(lái),不斷升級(jí)演變,在此過(guò)程中已添加了多項(xiàng)針對(duì)性能和編譯時(shí)間的增強(qiáng)功能。
    的頭像 發(fā)表于 09-01 09:36 ?651次閱讀
    <b class='flag-5'>節(jié)省</b><b class='flag-5'>編譯</b><b class='flag-5'>時(shí)間</b>系列-使用增量實(shí)現(xiàn)

    利用Tcl腳本節(jié)省編譯時(shí)間

    這篇博文介紹了多種自動(dòng)生成報(bào)告的有效途徑,以便您在嘗試對(duì)設(shè)計(jì)中特定階段所耗用的編譯時(shí)間進(jìn)行調(diào)試時(shí)使用,例如,自動(dòng)報(bào)告加載設(shè)計(jì)約束的時(shí)間、每條命令的持續(xù)時(shí)間,甚至是跨多個(gè)設(shè)計(jì)的運(yùn)行
    的頭像 發(fā)表于 09-15 10:44 ?907次閱讀
    利用Tcl腳本<b class='flag-5'>節(jié)省</b><b class='flag-5'>編譯</b><b class='flag-5'>時(shí)間</b>

    Vivado那些事兒:節(jié)省編譯時(shí)間系列文章

    雖然想必您知道,在綜合或?qū)崿F(xiàn)階段,增量運(yùn)行可以從參考文件中讀取和復(fù)制信息,但僅在某些階段中能節(jié)省時(shí)間,如果網(wǎng)表發(fā)生大量更改,其中引用的內(nèi)容就會(huì)減少,編譯時(shí)間也會(huì)受到相應(yīng)影響。
    的頭像 發(fā)表于 10-09 16:48 ?2994次閱讀
    Vivado那些事兒:<b class='flag-5'>節(jié)省</b><b class='flag-5'>編譯</b><b class='flag-5'>時(shí)間</b>系列文章