在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

如何利用Tcl在Vivado中實現(xiàn)定制化的FPGA設(shè)計流程?

FPGA算法工程師 ? 來源:Ally Zhou ? 作者:Ally Zhou ? 2023-04-23 09:08 ? 次閱讀

基本的 FPGA 設(shè)計實現(xiàn)流程

FPGA 的設(shè)計流程簡單來講,就是從源代碼到比特流文件的實現(xiàn)過程。大體上跟 IC 設(shè)計流程類似,可以分為前端設(shè)計和后端設(shè)計。其中前端設(shè)計是把源代碼綜合為對應的門級網(wǎng)表的過程,而后端設(shè)計則是把門級網(wǎng)表布局布線到芯片上最終實現(xiàn)的過程。

以下兩圖分別表示 ISE 和 Vivado 的基本設(shè)計流程:

4105151e-e05c-11ed-bfe3-dac502259ad0.png

ISE 中設(shè)計實現(xiàn)的每一步都是相對獨立的過程,數(shù)據(jù)模型各不相同, 用戶需要維護不同的輸入文件,例如約束等,輸出文件也不是標準網(wǎng)表格式,并且形式各異,導致整體運行時間過長,冗余文件較多。

Vivado 中則統(tǒng)一了約束格式和數(shù)據(jù)模型,在設(shè)計實現(xiàn)的任何一個階段 都支持 XDC 約束,可以生成時序報告,在每一步都能輸出包含有網(wǎng)表、約束以及布局布線信息(如果有)的設(shè)計檢查點(DCP)文件,大大縮短了運行時間。

從使用方式上來講,Vivado 支持工程模式(Project Based Mode)和非工程模式(None Project Mode) 兩種,且都能通過 Tcl 腳本批處理運行,或是在 Vivado 圖形化界面 IDE 中交互運行和調(diào)試。

工程模式

工程模式的關(guān)鍵優(yōu)勢在于可以通過在 Vivado 中創(chuàng)建工程的方式管理整個設(shè)計流程,包括工程文件的位 置、階段性關(guān)鍵報告的生成、重要數(shù)據(jù)的輸出和存儲等。

如下左圖所示,用戶建立了一個 Vivado 工程后,工具會自動創(chuàng)建相應的.xpr 工程文件,并在工程文件所 在的位置同層創(chuàng)建相應的幾個目錄,包括.cache、.data、.runs 和 .srcs 等等(不同版本可能有稍許差異),分別用于存儲運行工程過程中產(chǎn)生的數(shù)據(jù)、輸出的文件和 報告以及工程的輸入源文件(包含約束文件)等。

如下右圖所示,在 Vivado IDE 中還可以一鍵式運行整個設(shè)計流程。這些預置的命令按鈕就放置在工具最左邊的側(cè)欄:Flow Navigator 。不同按鈕對應不同的實現(xiàn)過程,其中在后端實現(xiàn)階段,還可以用右鍵調(diào)出詳細分步命令,指引工具具體執(zhí)行實現(xiàn)的哪一步。

412bc4a2-e05c-11ed-bfe3-dac502259ad0.png

特別需要指出的是 Flow Navigator 只有在 Vivado IDE 中打開.xpr 工程文件才會顯示,如果打開的是設(shè)計檢查點.dcp 文件(不論是工程模式或是非工程模式產(chǎn)生的 dcp)都不會顯示這個側(cè)欄。

非工程模式

非工程模式下,由于不會創(chuàng)建工程,用戶就需要自己管理設(shè)計源文件和設(shè)計過程。源文件只能從當前位置訪問,在設(shè)計實現(xiàn)過程中的每一步,數(shù)據(jù)和運行結(jié)果都存在于 Vivado 分配到的機器內(nèi)存中,在用戶不主動輸 出的情況下,不會存儲到硬盤中。

簡單來講,非工程模式提供了一種類似 ASIC 設(shè)計的流程,用戶擁有絕對的自由,可以完全掌控設(shè)計實現(xiàn)流程,但也需要用戶對設(shè)計實現(xiàn)的過程和數(shù)據(jù),尤其對文件輸出和管理全權(quán)負責,包括何時、何地、輸出怎樣的文件等等。

使用非工程模式管理輸入輸出文件、進行設(shè)計實現(xiàn)都需要使用 Tcl 腳本,但這并不代表非工程模式不支持圖形化界面。非工程模式下產(chǎn)生的.dcp 文件一樣可以在 Vivdao IDE 中打開,繼而產(chǎn)生各種報告,進行交互式調(diào)試等各種在圖形化下更便捷直觀的操作。這是一個常見誤區(qū),就像很多人誤 認為工程模式下不支持 Tcl 腳本運行是一個道理。但兩種模式支持的 Tcl 命令確實是完全不同的,使用起來也不能混淆。

415e927e-e05c-11ed-bfe3-dac502259ad0.png

下圖所示是同一個設(shè)計(Vivado 自帶的 Example Design)采用兩種模式實現(xiàn)所需使用的不同腳本,更詳細的內(nèi)容可以在 UG975 和 UG835 中找到。需要注意的是,工程模式下的 Tcl 腳本更簡潔,但并不是最底層的 Tcl 命令,實際執(zhí)行一條相當于執(zhí)行非工程模式下的數(shù)條 Tcl 命令。

4180928e-e05c-11ed-bfe3-dac502259ad0.png

Tcl對圖形化的補充

相信對大部分 FPGA 工程設(shè)計人員來說,圖形化界面仍舊是最熟悉的操作環(huán)境,也是設(shè)計實現(xiàn)的首選。在 Xilinx 推出全面支持 Tcl 的 Vivado 后,這一點依然沒有改變,但我們要指出的是,即使是在圖形化界面上跑設(shè) 計,仍然可以充分利用 Tcl 的優(yōu)勢。在 Vivado IDE 上運行 Tcl 腳本主要有以下幾個渠道。

Tcl Console

41a6951a-e05c-11ed-bfe3-dac502259ad0.png

Vivado IDE 的最下方有一個 TclConsole,在運行過程中允許用戶輸入 Tcl/XDC 命令或是 source 預先寫 好的 Tcl 腳本,返回值會即時顯示在這個對話框。

舉例來說,設(shè)計調(diào)試過程中,需要將一些約束應用在某些網(wǎng)表目標上(具體可參照《Tcl 在 Vivado 中的應 用》所示),推薦的做法就是在 IDE 中打開.dcp 然后在 Tcl Console 中輸入相應的 Tcl/XDC 命令,驗證返回值,碰到問題可以直接修改,直到找到正確合適的命令。然后可以記錄這些命令,并存入 XDC 文件中以備下次實現(xiàn)時使用。

還有一種情況是,預先讀入的 XDC 中有些約束需要修改,或是缺失了某些重要約束。不同于 ISE 中必須修改 UCF 重跑設(shè)計的做法,在 Vivado 中,我們可以充分利用 Tcl/XDC 的優(yōu)勢, 在 Tcl Console 中輸入新的 Tcl/XDC,無需重跑設(shè)計,只要運行時序報告來驗證。當然,如果能重跑設(shè)計,效果會更好,但是這種方法在早期設(shè)計階段提供了一種快速進行交互式驗證的可能,保證了更快地設(shè)計迭代,大大提升了效率。

另外,通過某些 Tcl 命令(例如 show_objects、select_objects 等等)的幫助,我們還可以利用 Tcl Console 與時序報告、RTL 和門級網(wǎng)表以及布局布線后的網(wǎng)表之間進行交互調(diào)試,極大發(fā)揮 Vivado IDE 的優(yōu)勢。

Hook Scripts

Vivado IDE 中內(nèi)置了 tcl.pre 和 tcl.post,用戶可 以在 Synthesis 和 Implementation 的設(shè)置窗 口中找到。設(shè)計實現(xiàn)的每 一步都有這樣兩個位置可供用戶加入自己的 Tcl 腳本。

tcl.pre 表示當前這步 之前 Vivado 會主動 source 的 Tcl 腳本,tcl.post 表示這步之后會 source 的腳本。

41d43ff6-e05c-11ed-bfe3-dac502259ad0.png

Tcl 腳本必須事先寫好,然后在上圖所示的設(shè)置界面由用戶使用彈出窗口指定到腳本所在位置。

這些就是所謂的“鉤子”腳本,正是有了這樣的腳本,我們才得以在圖形化界面上既享有一鍵式執(zhí)行的便利,又充分利用 Tcl 帶來的擴展性。比較常見的使用場景是,在某個步驟后多產(chǎn)生幾個特別的報告,或是在布線前再跑幾次物理優(yōu)化等。

Customer Commands

Vivado IDE 中還有一個擴展功能,允許用戶把事先創(chuàng)建好的 Tcl 腳本以定制化命令的方式加入圖形化界面,成為一個按鈕,方便快速執(zhí)行。這個功能常常用來報告特定的時序信息、修改網(wǎng)表內(nèi)容、實現(xiàn) ECO 等等。

421c00ac-e05c-11ed-bfe3-dac502259ad0.png

用 Tcl定制實現(xiàn)流程

綜上所述,標準的 FPGA 設(shè)計實現(xiàn)流程完全可以通過 Vivado IDE 一鍵式執(zhí)行,如果僅需要少量擴展,通 過前述鉤子腳本等幾種方法也完全可以做到。若是這些方法都不能滿足需求,還可以使用 Tcl 腳本來跑設(shè)計,從而實現(xiàn)設(shè)計流程的全定制。

:以下討論的幾種實現(xiàn)方案中僅包含后端實現(xiàn)具體步驟的區(qū)別,而且只列出非工程模式下對應的Tcl 命令。

右圖所示是 Vivado 中設(shè)計實現(xiàn)的基本流程,藍色部分表示實現(xiàn)的基本 步驟(盡管opt_design 這一步理論上不是必選項,但仍強烈建議用戶執(zhí)行),對應 Implementation 的 Default 策略。黃色部分表示可選擇執(zhí)行的部分,不同的實現(xiàn)策略中配置不同。

這里不會討論那些圖形化界面中可選的策略,不同策略有何側(cè)重,具體如何配置我們將在另外一篇關(guān)于 Vivado 策略選擇的文章中詳細描述。

我們要展示的是如何對設(shè)計流程進行改動來更好的滿足設(shè)計需求,這些動作往往只能通過 Tcl 腳本來實現(xiàn)。

充分利用物理優(yōu)化

物理優(yōu)化即 phys_opt_design 是在后端通過復制、移動寄存器來降扇出和 retiming,從而進行時序優(yōu)化的 重要手段,一般在布局和布線之間運行,從 Vivado 2014.1 開始,還支持布局后的物理優(yōu)化。

很多用戶會在 Vivado 中選中 phys_opt_design,但往往不知道這一步其實可以運行多次,并且可以選擇不同的 directive 來有側(cè)重的優(yōu)化時序。

比如,我們可以寫這樣一個 Tcl 腳本,在布局后,使用不同的 directive 或選項來跑多次物理優(yōu)化,甚至可 以再多運行一次物理優(yōu)化,專門針對那些事先通過 get_nets 命令找到并定義為 highfanout_nets 的高扇出網(wǎng)絡(luò)具體 directive 的含義可以通過 UG835、UG904 或 phys_opt_design -help 命令查詢。

布局布線之間的多次物理優(yōu)化不會惡化時序,但會增加額外的運行時間,也有可能出現(xiàn)時序完全沒有得到優(yōu)化的結(jié)果。布線后的物理優(yōu)化有時候會惡化 THS,所以請一定記得每一步后都運行 report_timing_summary,并且通過 write_checkpoint 寫出一個.dcp 文件來保留階段性結(jié)果。這一步的結(jié)果不理想就可以及時退回到上一步的.dcp 繼續(xù)進行。

423a110a-e05c-11ed-bfe3-dac502259ad0.png

閉環(huán)設(shè)計流程

通常的 FPGA 設(shè)計流程是一個開環(huán)系統(tǒng),從前到后依次執(zhí)行。但 Vivado 中提供了一種可能,用戶可以通 過 place_design-post_place_opt 在已經(jīng)完成布局布線的設(shè)計上再做一次布局布線,從而形成一個有了反饋信息的閉環(huán)系統(tǒng)。這次因為有了前一次布線后的真實連線延遲信息,布局的針對性更好,并且只會基于時序不滿足的路徑進行重布局而不會改變大部分已經(jīng)存在的布局信息,之后的布線過程也是增量流程。

這一過程所需的運行時間較短,是一種很有針對性的時序優(yōu)化方案。可以通過 Tcl 寫一個循環(huán)多次迭代運行,但需留意每次的時序報告,若出現(xiàn)時序惡化就應及時停止。

42625606-e05c-11ed-bfe3-dac502259ad0.png

增量設(shè)計流程

Vivado 中的增量設(shè)計也是一個不得不提的功能。當設(shè)計進行到后期,每次運行改動很小,在開始后端實現(xiàn)前讀入的設(shè)計網(wǎng)表具有較高相似度的情況下,推薦使用 Vivado 的增量布局布線功能。

4284ee3c-e05c-11ed-bfe3-dac502259ad0.png

如上圖所示,運行增量流程的前提是有一個已經(jīng)完成布局布線的.dcp 文件,并以此用來作為新的布局布線的參考。

運行過程中,Vivado 會重新利用已有的布局布線數(shù)據(jù)來縮短運行 時間,并生成可預測的結(jié)果。當設(shè)計有 95% 以上的相似度時,增量布局布線的運行時間會比一般布局布線平均縮短 2 倍。若相似度低于 80%,則使用增量布局布線只有很小的優(yōu)勢或者基本沒有優(yōu)勢。

42b043f2-e05c-11ed-bfe3-dac502259ad0.png

除了縮短運行時間外,增量布局布線對沒有發(fā)生變化的設(shè)計部分造成的破壞也很小,因此能減少時序變化,最大限度保留時序結(jié)果,所以一般要求用做參考的.dcp 文件必須是一個完全時序收斂的設(shè)計。

參考點.dcp 文件可以在 Vivado IDE 的 Implementation 設(shè)置中指定,也可以在 Tcl 腳本中用 read_checkpoint -incremental 讀入。特別需要指出的是,在工程模式中,如要在不新建一個 impl 實現(xiàn)的情況下使用上一次運行的結(jié)果作為參考點,必須將其另存到這次運行目錄之外的位置,否則會因沖突而報錯。

以上用 Tcl 定制 Vivado 設(shè)計實現(xiàn)流程的討論就到這里,后面我將就 Tcl 使用場景,包括 ECO 流程等的更多細節(jié)進行展開。


審核編輯:劉清

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

    關(guān)注

    9

    文章

    428

    瀏覽量

    27174
  • TCL
    TCL
    +關(guān)注

    關(guān)注

    11

    文章

    1775

    瀏覽量

    89664
  • Cache
    +關(guān)注

    關(guān)注

    0

    文章

    129

    瀏覽量

    28934
  • DCP
    DCP
    +關(guān)注

    關(guān)注

    0

    文章

    30

    瀏覽量

    17516
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    831

    瀏覽量

    68309

原文標題:用TCL定制Vivado設(shè)計實現(xiàn)流程

文章出處:【微信號:FPGA算法工程師,微信公眾號:FPGA算法工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

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

    TclVivado的基礎(chǔ)應用

    Xilinx的新一代設(shè)計套件Vivado相比上一代產(chǎn)品ISE,在運行速度、算法優(yōu)化和功能整合等很多方面都有了顯著地改進。但是對初學者來說,新的約束語言XDC以及腳本語言Tcl的引入則成為了快速掌握Vivado使用技巧的最大障礙,
    的頭像 發(fā)表于 09-14 09:09 ?2146次閱讀

    VIVADO從此開始高亞軍編著

    / 134第5章 IP的管理 / 1355.1 定制IP / 1355.1.1 Vivado工程定制IP / 1355.1.2
    發(fā)表于 10-21 18:24

    Vivado圖形界面IDE運行和調(diào)試Tcl命令

    。Xilinx公司從ISE工具的后期開始,工具引入了對tcl語言的支持。目前廣泛使用的設(shè)計工具Vivado
    發(fā)表于 06-17 14:52

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

    Vivado 定位目標。其實 Tcl Vivado
    發(fā)表于 06-28 19:34

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

    其實TclVivado還有很多延展應用,接下來我們就來討論如何利用Tcl語言的靈活性和可擴展
    發(fā)表于 11-18 01:48 ?3809次閱讀
    <b class='flag-5'>Vivado</b>設(shè)計之<b class='flag-5'>Tcl</b><b class='flag-5'>定制</b><b class='flag-5'>化</b>的<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>流程</b>

    Vivado利用Tcl腳本對綜合后的網(wǎng)表進行編輯過程

    ISE下,對綜合后的網(wǎng)表進行編輯幾乎是不可能的事情,但在Vivado下成為可能。VivadoTcl的支持,使得Tcl腳本
    發(fā)表于 11-18 03:16 ?7859次閱讀
    <b class='flag-5'>在</b><b class='flag-5'>Vivado</b>下<b class='flag-5'>利用</b><b class='flag-5'>Tcl</b>腳本對綜合后的網(wǎng)表進行編輯過程

    TclVivado的基礎(chǔ)應用

    Vivado使用技巧的最大障礙,以至于兩年多后的今天,仍有很多用戶缺乏升級到Vivado的信心。本文介紹了TclVivado
    發(fā)表于 11-18 03:52 ?5136次閱讀
    <b class='flag-5'>Tcl</b><b class='flag-5'>在</b><b class='flag-5'>Vivado</b><b class='flag-5'>中</b>的基礎(chǔ)應用

    Vivado利用Tcl實現(xiàn)IP的高效管理

    Vivado下,有兩種方式管理IP。一種是創(chuàng)建FPGA工程之后,在當前工程中選中IP Catalog,生成所需IP,這時相應的IP會被自動添加到當前工程;另一種是
    發(fā)表于 11-18 04:22 ?5964次閱讀

    Vivado使用誤區(qū)與進階——Vivado實現(xiàn)ECO功能

    關(guān)于TclVivado的應用文章從Tcl的基本語法和在Vivado
    發(fā)表于 11-18 18:26 ?5664次閱讀
    <b class='flag-5'>Vivado</b>使用誤區(qū)與進階——<b class='flag-5'>在</b><b class='flag-5'>Vivado</b><b class='flag-5'>中</b><b class='flag-5'>實現(xiàn)</b>ECO功能

    Tcl定制Vivado設(shè)計流程詳解

    工程模式的關(guān)鍵優(yōu)勢在于可以通過Vivado 創(chuàng)建工程的方式管理整個設(shè)計流程,包括工程文件的位置、階段性關(guān)鍵報告的生成、重要數(shù)據(jù)的輸出和存儲等。
    的頭像 發(fā)表于 07-24 17:30 ?4935次閱讀
    用<b class='flag-5'>Tcl</b><b class='flag-5'>定制</b><b class='flag-5'>Vivado</b>設(shè)計<b class='flag-5'>流程</b>詳解

    FPGA設(shè)計TclVivado的基礎(chǔ)應用

    Tcl介紹 Vivado是Xilinx最新的FPGA設(shè)計工具,支持7系列以后的FPGA及Zynq 7000的開發(fā)。與之前的ISE設(shè)計套件相比,Viv
    的頭像 發(fā)表于 11-17 17:32 ?2877次閱讀

    Vivado中常用TCL命令匯總

    Vivado是Xilinx推出的可編程邏輯設(shè)備(FPGA)軟件開發(fā)工具套件,提供了許多TCL命令來簡化流程和自動化開發(fā)。本文將介紹
    的頭像 發(fā)表于 04-13 10:20 ?4567次閱讀

    TclVivado的應用

    Xilinx的新一代設(shè)計套件Vivado相比上一代產(chǎn)品 ISE,在運行速度、算法優(yōu)化和功能整合等很多方面都有了顯著地改進。但是對初學者來說,新的約束語言 XDC 以及腳本語言 Tcl 的引入則成為
    的頭像 發(fā)表于 04-15 09:43 ?1790次閱讀

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

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

    Vivado實現(xiàn)ECO功能

    關(guān)于 Tcl Vivado的應用文章從 Tcl 的基本語法和在 Vivado
    的頭像 發(fā)表于 05-05 15:34 ?3346次閱讀
    <b class='flag-5'>在</b><b class='flag-5'>Vivado</b><b class='flag-5'>中</b><b class='flag-5'>實現(xiàn)</b>ECO功能
    主站蜘蛛池模板: 日本在线网址 | 人人插人人草 | 国产精品露脸脏话对白 | 成人久久久精品乱码一区二区三区 | 色综合色综合 | 在线一级毛片 | 美女视频黄a视频美女大全 美女视频一区二区 | 国产卡一卡2卡三卡免费视频 | 天天干影视| 99 久久99久久精品免观看 | 国产产一区二区三区久久毛片国语 | 中国人69xxx大全 | 国产欧美亚洲精品 | 欧美18xxoovideos | 男啪女色黄无遮挡免费视频 | 韩国三级理论在线看中文字幕 | 高清激情小视频在线观看 | 天天摸日日 | 992tv国产精品福利在线 | 黄色在线播放网址 | 欧美成人免费午夜全 | 四虎成人免费网站在线 | 综合六月 | 精品亚洲欧美无人区乱码 | 色天使色护士 | 手机在线观看免费视频 | 亚洲天堂第一页 | 91成人午夜性a一级毛片 | 国产69精品久久久久9999 | 色多多www视频在线观看免费 | 久久久久88色偷偷免费 | 二级片在线 | 亚洲国产精品热久久2022 | 超大乳抖乳露双乳视频 | 黄色一区二区三区 | 天天操天天操天天干 | 68日本xxxxxxx18| 青草悠悠视频在线观看 | 日韩美女三级 | 男男np主受高h啪啪肉 | 亚洲成在人天堂一区二区 |