精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

三個對分析編譯時間非常有效的Tcl腳本

FPGA技術驛站 ? 來源:FPGA技術驛站 ? 2023-02-10 15:00 ? 次閱讀

針對特定的設計,就編譯時間而言,我們要分析時間都消耗在哪些環節從而有針對性的縮短編譯時間。通常,時間可能花費在加載約束上,也可能花費在某個子步驟如布局。有時面對的情況是同一設計在不同Vivado版本上運行時間出現較大差異。

report_constraints

我們先來介紹第一個命令:report_constraints。運行該命令之前需要先在Vivado Tcl Console中執行如下命令:

source report_constraints.tcl

同時最好將該腳本與待分析的dcp放置在同一目錄下,這樣在讀取dcp時就只用提供當前工作目錄即可。另外,需要注意的是report_constraints只能在Linux系統下運行。report_constraints可報告出設計中所用到的約束的種類(包括時序約束也包括非時序約束)、數量以及有效性。

通常情況下,Xilinx建議采用如下順序描述時序約束。除第10條set_bus_skew之外,約束的優先級也是依此順序的,即1號優先級最低,9號優先級最高。因此,不合理的順序以及不合理的描述方式會導致一些約束被覆蓋,從而造成設計“假收斂”的現象。

poYBAGPl6-KAVvYYAABv_DOGcGU688.jpg

對于一個復雜的設計,除了用戶約束文件外,還可能會有IP的約束文件,這些約束文件可能在用戶約束文件之前被調用(約束文件屬性PROCESSING_ORDER為EARLY),也可能在用戶約束文件之后被調用(約束文件屬性PROCESSING_ORDER為LATE)。report_constraints可報告出所有約束文件所包含的約束。

案例1:只報告上述10種時序約束的個數

如下圖所示(使用report_constraints時需要在添加作用域即tb::)。該報告第1列顯示約束類型,第2列顯示需要在用戶約束之前調用的約束個數,第3列顯示用戶約束的個數,第4列顯示需要在用戶之后調用的約束個數,第5列顯示和開發板相關的約束個數(當Part選擇為開發板時),最后一列顯示OOC綜合時用到的約束個數。

pYYBAGPl7A2AEyXxAACmFGgfqhk078.jpg

案例2
:報告所有約束及約束用到的命令

通過添加-all選項,report_constratins可報告所有約束(時序約束+非時序約束)的數目以及這些約束用到的Tcl命令的個數,如下圖所示。

在Vivado Commands Summary中,可以看到get_cells、get_pins、get_ports以及set_property等命令的使用情況。

pYYBAGPl7CWAMmboAAEzkgq53Es078.jpg

案例3
:報告約束的具體信息

添加選項-details和-verbose,report_constratins可報告約束的詳細信息,如下圖所示。
poYBAGPl7DmAOfAxAAIgD5m09W8916.jpg

案例4:報告時序畫像

選項-timing_graph和-verbose可用于報告時序畫像,如下圖所示。當Status列由Invalidatetiming變為Required valid timing時,Estimatedupdates加1,這個值越小越好,根據此值可判斷約束描述的順序是否是最優的。

poYBAGPl7E-AcXm1AAF5_IVfvYU759.jpg

profiler

對Vivado編譯時間進行調試時,命令profiler可幫助用戶查看特定操作的運行時間,分析指定命令的調用次數,從而確定整體運行時間的瓶頸。profiler命令的具體使用方法如下所示:

profiler add *

profiler start

open_checkpoint top_routed.dcp

profiler stop

profiler summary

profiler summary -log profiler.log

profiler summary -log profiler.csv -csv

生成的csv文件可用excel打開,第一部分內容如下。第一列顯示了所執行的命令,倒數第2列(ncalls)顯示了該命令被調用的次數,最后一列顯示了執行該命令所耗時間占整體運行時間的百分比。

pYYBAGPl7G6AUf6LAAJocEoytlk536.jpg

profiler生成報告還能顯示前50條最耗時的命令,如下圖所示。可用看到除open_checkpoint之外,get_clocks最耗時。

pYYBAGPl7ISATEPFAALexMBl-ck872.jpg

報告的第三部分可以看到設計中Tcl命令的使用情況,如下圖所示。圖中commands列(最后一列)為Tcl命令,size列為該命令返回的對象的個數,count列為返回同樣個數的命令的個數,total列等于size與count的乘積。以第122行get_cells為例,返回120個對象的get_cells有24個,所以總對象個數為120x24即2880。

poYBAGPl7JqAJL7BAAFXC_4eAf0485.jpg

profiler命令還可用于查看指定命令的運行時間,這對于發現約束中哪些命令最為耗時很有幫助,使用方法如下所示。從生成報告中可以看到get_cells命令共耗時32.984ms。

profiler start

set cells [get_cells

-hier -filter"REF_NAME==FDRE"]

profiler stop

profiler summary

pYYBAGPl7NaAD70-AAF0ij7LGXo057.jpg

vivadoRuntime

命令vivadoRuntime可用于查看不同策略下每個階段所消耗的時間,使用方法如下圖所示。每個Elapsed列對應1個策略(也就是1個DesignRun)。

poYBAGPl7PKARcrBAAExMILM4qM505.jpg

使用上述3個命令我們可用快速偵測出約束中耗時的命令以及implementation階段耗時的子步驟。






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • DCP
    DCP
    +關注

    關注

    0

    文章

    30

    瀏覽量

    17214
  • Vivado
    +關注

    關注

    19

    文章

    808

    瀏覽量

    66331
  • csv
    csv
    +關注

    關注

    0

    文章

    38

    瀏覽量

    5805

原文標題:縮短Vivado編譯時間(4):時間都去哪兒了

文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術驛站】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    tcl命令用于時序分析如何檢查輸入或輸出的時間

    我只有非常有限的知識來使用tcl命令進行時序分析(不用于時序約束,僅用于時序分析)。這些命令如下:check_timingreport_timing_summary我希望知道一些最常見
    發表于 03-11 13:41

    如何將庫添加到設計中并使用Tcl腳本編譯

    你好,我編寫了一Tcl腳本來合成Vivado Design Suite 2014.4中的設計(適用于Zynq ZC 706)。設計中的庫未編譯。彈出錯誤,表示找不到特定的.vhd文件
    發表于 04-16 10:15

    非常高效三個linux shell命令分享

    了開發效率。本文淺析三個非常高效的linux shell命令(awk,grep,sed),在開發工程中的實際應用。1,從系統命令的打印中獲取有用信息。演示:上圖為開發板網絡信息,現在從中獲取...
    發表于 12-23 06:38

    Vivado之TCL腳本語言基本語法介紹

    TCL腳本語言 Tcl(Tool Command Language)是一種很通用的腳本語言,它幾乎在所有的平臺上都可以解釋運行,而且VIVADO也提供了
    發表于 04-11 12:09 ?9848次閱讀

    關于Tcl的介紹和用途

    在處理if命令時,Tcl解釋器只指導這個命令有三個詞,其中第一是命令名if。Tcl解釋器并不知道if的第一輸入參數是表達式,第二
    的頭像 發表于 07-27 09:28 ?4873次閱讀
    關于<b class='flag-5'>Tcl</b>的介紹和用途

    機器學習對分析地理空間圖像非常有幫助

    機器學習對分析地理空間圖像非常有幫助。衛星照片往往會創建大量數據,而AI軟件可以比人類觀察者更快地標記出感興趣的項目。例如,在澳大利亞,消防員定期分析衛星圖像以監測野火的蔓延,并努力保持領先地位。
    的頭像 發表于 03-22 16:23 ?2058次閱讀

    三個方面分析電磁兼容的問題

    分析電磁兼容的問題,從三個方面入手。這三個方面分別是:騷擾源、敏感源、耦合路徑。
    發表于 10-13 14:18 ?1445次閱讀

    有什么方法可以減少Quartus II的編譯時間嗎?

    對于減少Quartus II的編譯時間的方法,可從三個角度進行考慮。
    的頭像 發表于 05-18 10:27 ?4765次閱讀
    有什么方法可以減少Quartus II的<b class='flag-5'>編譯</b><b class='flag-5'>時間</b>嗎?

    三個有效的HMI設計原則

    無論你是為機器制造商、系統集成商工作,還是終端設備用戶,讓我們來探究一下為什么會這樣,以及能做些什么。為了幫助評估任何HMI改進,考慮三個有效的HMI設計原則是非常有幫助的。
    的頭像 發表于 02-10 15:57 ?1622次閱讀

    17非常有用的Python技巧

    Python 是一門非常優美的語言,其簡潔易用令人不得不感概人生苦短。在本文中,作者 Gautham Santhosh 帶我們回顧了 17 非常有用的 Python 技巧,例如查找、分割和合并列表等。這 17
    的頭像 發表于 04-10 14:28 ?523次閱讀

    三個Makefile模板分享

    ????本文分享三個Makefile模板:編譯可執行程序、編譯靜態庫、編譯動態庫。 1 寫在前面 ????對于Windows下開發,很多IDE都集成了
    的頭像 發表于 07-10 09:07 ?937次閱讀
    <b class='flag-5'>三個</b>Makefile模板分享

    FPGA設計之tcl腳本的應用

    目前已經學完了基礎實驗,這里要介紹Quatus自帶的兩非常重要的功能,第一tcl腳本,第二
    的頭像 發表于 09-07 18:30 ?2499次閱讀
    FPGA設計之<b class='flag-5'>tcl</b><b class='flag-5'>腳本</b>的應用

    利用Tcl腳本節省編譯時間

    這篇博文介紹了多種自動生成報告的有效途徑,以便您在嘗試對設計中特定階段所耗用的編譯時間進行調試時使用,例如,自動報告加載設計約束的時間、每條命令的持續
    的頭像 發表于 09-15 10:44 ?764次閱讀
    利用<b class='flag-5'>Tcl</b><b class='flag-5'>腳本</b>節省<b class='flag-5'>編譯</b><b class='flag-5'>時間</b>

    Linux內核編譯腳本

    ,則: make V= 2 內核編譯腳本 最后分享我常用的內核編譯腳本 mk.sh ,給大家參考: #!/bin/sh export ARCH=arm export PATH=~/to
    的頭像 發表于 09-27 11:52 ?612次閱讀

    keil自動化編譯腳本

    這是一 keil 的自動化編譯腳本,可被其他腳本或程序調用,接收參數并按參數編譯 keil 工程,而不必打開 keil 軟件,實現程序上的
    的頭像 發表于 10-16 17:04 ?1770次閱讀
    keil自動化<b class='flag-5'>編譯</b><b class='flag-5'>腳本</b>