RM新时代网站-首页

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

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

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

Vivado在FPGA設(shè)計中的優(yōu)勢

lhl545545 ? 來源:ZYNQ ? 作者:ZYNQ ? 2022-09-19 16:20 ? 次閱讀

Xilinx的新一代設(shè)計套件Vivado相比上一代產(chǎn)品ISE,在運行速度、算法優(yōu)化和功能整合等很多方面都有了顯著地改進(jìn)。但是對初學(xué)者來說,新的約束語言XDC以及腳本語言Tcl的引入則成為了快速掌握Vivado使用技巧的最大障礙,以至于兩年多后的今天,仍有很多用戶缺乏升級到Vivado的信心。

本文介紹了Tcl在Vivado中的基礎(chǔ)應(yīng)用,希望起到拋磚引玉的作用,指引使用者在短時間內(nèi)快速掌握相關(guān)技巧,更好地發(fā)揮Vivado在FPGA設(shè)計中的優(yōu)勢。

Tcl的背景介紹和基礎(chǔ)語法

Tcl(讀作tickle)誕生于80年代的加州大學(xué)伯克利分校,作為一種簡單高效可移植性好的腳本語言,目前已經(jīng)廣泛應(yīng)用在幾乎所有的EDA工具中。Tcl 的最大特點就是其語法格式極其簡單甚至可以說僵化,采用純粹的 [命令 選項 參數(shù)] 形式,是名副其實的“工具命令語言”( 即Tcl的全稱Tool Command Language)。

實際上Tcl的功能可以很強大,用其編寫的程序也可以很復(fù)雜,但要在Vivado或大部分其它EDA工具中使用,則只需掌握其中最基本的幾個部分。

注:在以下示例中,% 表示Tcl的命令提示符,執(zhí)行回車后,Tcl會在下一行輸出命令執(zhí)行結(jié)果。// 后是作者所加注釋,并不是例子的一部分。

設(shè)置變量

82c33c36-3730-11ed-ba43-dac502259ad0.png

打印

82dbcbd4-3730-11ed-ba43-dac502259ad0.png

打印主要通過puts語句來執(zhí)行,配合特殊符號,直接決定最終輸出內(nèi)容。

文件I/O

82f16d72-3730-11ed-ba43-dac502259ad0.png

可以看到Tcl對文件的操作也是通過設(shè)置變量,改變屬性以及打印命令來進(jìn)行的。上述寫文件的例子中通過puts命令在my_file.txt文件中寫入兩行文字,分別為“Hello World!” 和myVar變量的值,然后在讀文件操作中逐行讀取同一文件的內(nèi)容。

控制流和循環(huán)命令

Tcl語言中用于控制流程和循環(huán)的命令與C語言及其它高級語言中相似,包括if、while、for和foreach等等。

具體使用可以參考如下示例:

830b6bdc-3730-11ed-ba43-dac502259ad0.png

子程序/過程

Tcl中的子程序也叫做過程(Procedures),Tcl正是通過創(chuàng)建新的過程來增強其內(nèi)建命令的能力,提供更強的擴展性。具體到Vivado的使用中,用戶經(jīng)??梢酝ㄟ^對一個個子程序/過程的創(chuàng)建來擴展或個性化Vivado的使用流程。

83309bc8-3730-11ed-ba43-dac502259ad0.png

一些特殊符號

8349ca3a-3730-11ed-ba43-dac502259ad0.png

835dff96-3730-11ed-ba43-dac502259ad0.png

Tcl語言的基本語法相對簡單,但要熟練掌握仍需日常不斷練習(xí)。Xilinx網(wǎng)站上有很多相關(guān)資料,這里推薦兩個跟Tcl相關(guān)的文檔 UG835 和 UG894 ,希望對大家學(xué)習(xí)Vivado和Tcl有所幫助。

在Vivado中使用Tcl定位目標(biāo)

在Vivado中使用Tcl最基本的場景就是對網(wǎng)表上的目標(biāo)進(jìn)行遍歷、查找和定位,這也是對網(wǎng)表上的目標(biāo)進(jìn)行約束的基礎(chǔ)。要掌握這些則首先需要理解Vivado對目標(biāo)的分類。

目標(biāo)的定義和定位

8376d9d0-3730-11ed-ba43-dac502259ad0.png

如上圖所示,設(shè)計頂層的I/O稱作ports,其余底層模塊或是門級網(wǎng)表上的元件端口都稱作pins。而包括頂層在內(nèi)的各級模塊,blackbox以及門級元件,都稱作cells。連線稱作nets,加上XDC中定義的clocks,在Vivado中一共將網(wǎng)表文件中的目標(biāo)定義為五類。要選取這五類目標(biāo),則需用相應(yīng)的get_*命令,例如get_pins等等。

get_ports

ports僅指頂層端口,所以get_ports的使用相對簡單,可以配合通配符“* ”以及Tcl語言中處理list的命令一起使用。如下所示,

83888aea-3730-11ed-ba43-dac502259ad0.png

839c9a94-3730-11ed-ba43-dac502259ad0.png

get_cells/get_nets

不同于ports僅指頂層端口,要定位cells和nets則相對復(fù)雜,首先需要面對層次的問題。這里有個大背景需要明確:Vivado中Tcl/XDC對網(wǎng)表中目標(biāo)的搜索是層次化的,也就是一次僅搜索一個指定的層次current_instance,缺省值為頂層。

以下圖所示設(shè)計來舉例,若要搜索A(不含a1,a2)層次內(nèi)的所有cells和名字中含有nt的nets, 有兩種方法:

83b070c8-3730-11ed-ba43-dac502259ad0.png

83bd6a3a-3730-11ed-ba43-dac502259ad0.png

若要將搜索層次改為A+B+b1,則可以寫一個循環(huán),逐一用current_instance將搜索層次指向A,B和b1,再將搜索到的cells或nets合成一個list輸出即可。

若要將搜索層次改為當(dāng)前層次以及其下所有子層次,可以使用 -hierarchical (在Tcl中可以簡寫為-hier )。

83cbdf7a-3730-11ed-ba43-dac502259ad0.png

在使用-hierarchical時有一點需要特別留意,即后面所跟的搜索條件僅指目標(biāo)對象的名字,不能含有代表層次的“/” 。下面列出的寫法便是一種常見的使用誤區(qū),并不能以此搜索到A及其下子層次內(nèi)所有的cells。

83df0442-3730-11ed-ba43-dac502259ad0.png

get_pins

83eb68ea-3730-11ed-ba43-dac502259ad0.png

pins在Vivado數(shù)據(jù)庫中有個獨特的存在形式,即 / 。這里的“/”不表示層次,而是其名字的一部分,表示這個pin所屬的實體。也就是說,在使用get_pins 配合-hier來查找pins時,“/”可以作為名字的一部分,出現(xiàn)在搜索條件內(nèi)(注意與上述get_cells和get_nets的使用區(qū)別)。

83f9e2c6-3730-11ed-ba43-dac502259ad0.png

目標(biāo)之間的關(guān)系

Tcl在搜索網(wǎng)表中的目標(biāo)時,除了上述根據(jù)名字條件直接搜索的方式,還可以利用目標(biāo)間的關(guān)系,使用-of_objects(在Tcl中可以簡寫為-of)來間接搜索特定目標(biāo)。Vivado中定義的五類目標(biāo)間的關(guān)系如下頁左圖所示。

840a912a-3730-11ed-ba43-dac502259ad0.png

以上示右圖的設(shè)計來舉例,

841dfcc4-3730-11ed-ba43-dac502259ad0.png

下圖是一個更復(fù)雜的示例,涉及跨層次搜索。可以看到在get_pins時,要加上-leaf才能準(zhǔn)確定位到門級元件(或blackbox)的端口q。另外,在實際操作中,使用get_nets和get_pins時,需要視情況而加上其它條件(-filter)才能準(zhǔn)確找到下述例子中的cells (i2)。

842f373c-3730-11ed-ba43-dac502259ad0.png

高級查找功能

在使用get_*命令查找網(wǎng)表中的目標(biāo)時,除了名字這一直接條件,往往還需要輔以其它更復(fù)雜的條件判斷,這就需要用到高級查找功能:-filter 結(jié)合Tcl支持的各種關(guān)系和邏輯運算符(==, !=, =~, !~, <=, >=, >, <, &&, ||)甚至是正則表達(dá)式來操作。

843f63e6-3730-11ed-ba43-dac502259ad0.png

在創(chuàng)建子程序時也常常用到-filter,例如下述get_p的子程序/過程就可以用來返回指定管腳的方向?qū)傩?,告訴用戶這是一個輸入管腳還是一個輸出管腳。

845a1286-3730-11ed-ba43-dac502259ad0.png

Tcl在Vivado中的延伸應(yīng)用

Tcl在Vivado中的應(yīng)用還遠(yuǎn)不止上述所列,其它常用的功能包括使用預(yù)先寫好的Tcl腳本來跑設(shè)計實現(xiàn)流程,創(chuàng)建高級約束(XDC不支持循環(huán)等高級Tcl語法)以及實現(xiàn)復(fù)雜的個性化設(shè)計流程等等。Tcl所帶來的強大的可擴展性決定了其在版本控制、設(shè)計自動化流程等方面具有圖形化界面不能比擬的優(yōu)勢。

Vivado在不斷發(fā)展更新的過程中,還有很多新的功能,包括ECO、PR、HD Flow等等都是從Tcl腳本方式開始支持,然后再逐步放入圖形化界面中實現(xiàn)。這也解釋了為何高端FPGA用戶和熟練的Vivado用戶都更偏愛Tcl腳本。

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

    關(guān)注

    1629

    文章

    21729

    瀏覽量

    602964
  • FPGA設(shè)計
    +關(guān)注

    關(guān)注

    9

    文章

    428

    瀏覽量

    26505
  • EDA工具
    +關(guān)注

    關(guān)注

    4

    文章

    267

    瀏覽量

    31784
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    812

    瀏覽量

    66470

原文標(biāo)題:一文搞懂Tcl在Vivado中的應(yīng)用

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

收藏 人收藏

    評論

    相關(guān)推薦

    基于FPGA vivado 17.2 的數(shù)字鐘設(shè)計

    基于FPGA vivado 17.2 的數(shù)字鐘設(shè)計
    的頭像 發(fā)表于 06-08 09:41 ?1.1w次閱讀
    基于<b class='flag-5'>FPGA</b> <b class='flag-5'>vivado</b> 17.2 的數(shù)字鐘設(shè)計

    怎么vivado創(chuàng)建一個coe文件?

    讓我知道vivadozed fpga創(chuàng)建coe文件,是否可以project / srcs目錄中找到它
    發(fā)表于 04-15 10:04

    芯片設(shè)計FPGA優(yōu)勢是什么?

    芯片設(shè)計FPGA優(yōu)勢是什么?基于FPGA的芯片設(shè)計方法及流程是怎樣的?
    發(fā)表于 05-10 07:06

    使用Vivado高層次綜合 (HLS)進(jìn)行FPGA設(shè)計的簡介

    Introduction to FPGA Design with Vivado High-Level Synthesis,使用 Vivado 高層次綜合 (HLS) 進(jìn)行 FPGA 設(shè)
    發(fā)表于 01-06 11:32 ?65次下載

    VIVADO——IP封裝技術(shù)封裝一個普通的VGA IP-FPGA

    有關(guān)FPGA——VIVADO15.4開發(fā)IP 的建立
    發(fā)表于 02-28 21:04 ?15次下載

    基于FPGAVivado功耗估計和優(yōu)化

    資源、速度和功耗是FPGA設(shè)計的三大關(guān)鍵因素。隨著工藝水平的發(fā)展和系統(tǒng)性能的提升,低功耗成為一些產(chǎn)品的目標(biāo)之一。功耗也隨之受到越來越多的系統(tǒng)工程師和FPGA工程師的關(guān)注。Xilinx新一代開發(fā)工具
    發(fā)表于 11-18 03:11 ?6154次閱讀

    TclVivado的基礎(chǔ)應(yīng)用

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

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

    關(guān)于TclVivado的應(yīng)用文章從Tcl的基本語法和在Vivado的應(yīng)用展開,介紹了如何擴展甚至是定制
    發(fā)表于 11-18 18:26 ?5395次閱讀
    <b class='flag-5'>Vivado</b>使用誤區(qū)與進(jìn)階——<b class='flag-5'>在</b><b class='flag-5'>Vivado</b><b class='flag-5'>中</b>實現(xiàn)ECO功能

    TclVivado的基礎(chǔ)應(yīng)用及優(yōu)勢

    實際上Tcl的功能可以很強大,用其編寫的程序也可以很復(fù)雜,但要在Vivado或大部分其它EDA工具中使用,則只需掌握其中最基本的幾個部分
    的頭像 發(fā)表于 07-24 16:52 ?3463次閱讀
    Tcl<b class='flag-5'>在</b><b class='flag-5'>Vivado</b><b class='flag-5'>中</b>的基礎(chǔ)應(yīng)用及<b class='flag-5'>優(yōu)勢</b>

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

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

    Vitis把Settings信息傳遞到底層的Vivado

    本篇文章來自賽靈思高級工具產(chǎn)品應(yīng)用工程師 Hong Han. 本篇博文將繼續(xù)介紹Vitis把Settings信息傳遞到底層的Vivado. 對于Vivado實現(xiàn)階段策略的指定
    的頭像 發(fā)表于 08-13 14:35 ?4244次閱讀

    FPGA Vivado】基于 FPGA Vivado 的流水燈樣例設(shè)計

    【流水燈樣例】基于 FPGA Vivado 的數(shù)字鐘設(shè)計前言模擬前言Vivado 設(shè)計流程指導(dǎo)手冊——2013.4密碼:5txi模擬
    發(fā)表于 12-04 13:21 ?26次下載
    【<b class='flag-5'>FPGA</b> <b class='flag-5'>Vivado</b>】基于 <b class='flag-5'>FPGA</b> <b class='flag-5'>Vivado</b> 的流水燈樣例設(shè)計

    Vivado實現(xiàn)ECO功能

    關(guān)于 Tcl Vivado的應(yīng)用文章從 Tcl 的基本語法和在 Vivado 的 應(yīng)用展開,繼上篇《用 Tcl 定制
    的頭像 發(fā)表于 05-05 15:34 ?2670次閱讀
    <b class='flag-5'>在</b><b class='flag-5'>Vivado</b><b class='flag-5'>中</b>實現(xiàn)ECO功能

    Artix 7 FPGA上使用Vivado的組合邏輯與順序邏輯

    電子發(fā)燒友網(wǎng)站提供《Artix 7 FPGA上使用Vivado的組合邏輯與順序邏輯.zip》資料免費下載
    發(fā)表于 06-15 09:14 ?0次下載
    <b class='flag-5'>在</b>Artix 7 <b class='flag-5'>FPGA</b>上使用<b class='flag-5'>Vivado</b>的組合邏輯與順序邏輯

    如何讀懂FPGA開發(fā)過程Vivado時序報告?

    FPGA開發(fā)過程,vivado和quartus等開發(fā)軟件都會提供時序報告,以方便開發(fā)者判斷自己的工程時序是否滿足時序要求。
    發(fā)表于 06-26 15:29 ?1030次閱讀
    如何讀懂<b class='flag-5'>FPGA</b>開發(fā)過程<b class='flag-5'>中</b>的<b class='flag-5'>Vivado</b>時序報告?
    RM新时代网站-首页