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

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

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

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

Tcl在Vivado中的基礎(chǔ)應(yīng)用

FPGA之家 ? 來(lái)源:賽靈思中文社區(qū) ? 作者:賽靈思中文社區(qū) ? 2022-09-14 09:09 ? 次閱讀

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

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


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

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

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

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

設(shè)置變量

abd3d41c-33c2-11ed-ba43-dac502259ad0.png

打印

ac0ed3fa-33c2-11ed-ba43-dac502259ad0.png

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


文件I/O

ac41da98-33c2-11ed-ba43-dac502259ad0.png

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


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

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

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

ac620b4c-33c2-11ed-ba43-dac502259ad0.png

子程序/過(guò)程

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

ac9e77b2-33c2-11ed-ba43-dac502259ad0.png

一些特殊符號(hào)

acf1ffc2-33c2-11ed-ba43-dac502259ad0.png

ad7e15b6-33c2-11ed-ba43-dac502259ad0.png

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

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

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

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

adaf17c4-33c2-11ed-ba43-dac502259ad0.png

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

get_ports

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

add0e282-33c2-11ed-ba43-dac502259ad0.png

adedf1a6-33c2-11ed-ba43-dac502259ad0.png

get_cells/get_nets

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

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

ae4876ee-33c2-11ed-ba43-dac502259ad0.png

ae853be2-33c2-11ed-ba43-dac502259ad0.png

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

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

aebd9aaa-33c2-11ed-ba43-dac502259ad0.png

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

aeef7232-33c2-11ed-ba43-dac502259ad0.png

get_pins

af0855e0-33c2-11ed-ba43-dac502259ad0.png

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

af2bde98-33c2-11ed-ba43-dac502259ad0.png

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

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

afd1c8a8-33c2-11ed-ba43-dac502259ad0.png

以上示右圖的設(shè)計(jì)來(lái)舉例,

b00f6c58-33c2-11ed-ba43-dac502259ad0.png

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

b036d1f8-33c2-11ed-ba43-dac502259ad0.png

高級(jí)查找功能

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

b068e3d2-33c2-11ed-ba43-dac502259ad0.png

在創(chuàng)建子程序時(shí)也常常用到-filter,例如下述get_p的子程序/過(guò)程就可以用來(lái)返回指定管腳的方向?qū)傩裕嬖V用戶這是一個(gè)輸入管腳還是一個(gè)輸出管腳。

b098d5e2-33c2-11ed-ba43-dac502259ad0.png

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

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

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

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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)注

    1644

    文章

    21989

    瀏覽量

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

    關(guān)注

    11

    文章

    1775

    瀏覽量

    89692
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    833

    瀏覽量

    68365

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

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

收藏 人收藏

    評(píng)論

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

    如何利用TclVivado實(shí)現(xiàn)定制化的FPGA設(shè)計(jì)流程?

    FPGA 的設(shè)計(jì)流程簡(jiǎn)單來(lái)講,就是從源代碼到比特流文件的實(shí)現(xiàn)過(guò)程。大體上跟 IC 設(shè)計(jì)流程類似,可以分為前端設(shè)計(jì)和后端設(shè)計(jì)。
    的頭像 發(fā)表于 04-23 09:08 ?2483次閱讀
    如何利用<b class='flag-5'>Tcl</b><b class='flag-5'>在</b><b class='flag-5'>Vivado</b><b class='flag-5'>中</b>實(shí)現(xiàn)定制化的FPGA設(shè)計(jì)流程?

    VIVADO從此開(kāi)始高亞軍編著

    / 226第7章 TclVivado的應(yīng)用 / 2277.1 Vivado對(duì)Tcl的支持
    發(fā)表于 10-21 18:24

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

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

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

    今天推出Xilinx已發(fā)布的《Vivado使用誤區(qū)與進(jìn)階》系列:用TCL定制Vivado設(shè)計(jì)實(shí)現(xiàn)流程。 上一篇《Tcl
    發(fā)表于 06-28 19:34

    Vivado設(shè)計(jì)之Tcl定制化的實(shí)現(xiàn)流程

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

    Vivado下利用Tcl腳本對(duì)綜合后的網(wǎng)表進(jìn)行編輯過(guò)程

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

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

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

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

    關(guān)于TclVivado的應(yīng)用文章從Tcl的基本語(yǔ)法和在Vivado
    發(fā)表于 11-18 18:26 ?5680次閱讀
    <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>實(shí)現(xiàn)ECO功能

    如何使用Tcl命令語(yǔ)言讓Vivado HLS運(yùn)作

    了解如何使用Tcl命令語(yǔ)言以批處理模式運(yùn)行Vivado HLS并提高工作效率。 該視頻演示了如何從現(xiàn)有的Vivado HLS設(shè)計(jì)輕松創(chuàng)建新的Tcl批處理腳本。
    的頭像 發(fā)表于 11-20 06:06 ?3389次閱讀

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

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

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

    ,還是從對(duì)使用者思路的要求,都是全新的;在運(yùn)行速度、算法優(yōu)化和功能整合等很多方面都有了顯著地改進(jìn)。但是對(duì)初學(xué)者來(lái)說(shuō),新的約束語(yǔ)言XDC以及腳本語(yǔ)言Tcl的引入則成為了快速掌握Vivado使用技巧的最大障礙,以至于兩年多后的今天,仍有很多用戶缺乏升級(jí)到
    的頭像 發(fā)表于 11-17 17:32 ?2884次閱讀

    TclVivado的應(yīng)用

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

    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 ?1450次閱讀
    用<b class='flag-5'>TCL</b>定制<b class='flag-5'>Vivado</b>設(shè)計(jì)實(shí)現(xiàn)流程

    Vivado實(shí)現(xiàn)ECO功能

    關(guān)于 Tcl Vivado的應(yīng)用文章從 Tcl 的基本語(yǔ)法和在 Vivado
    的頭像 發(fā)表于 05-05 15:34 ?3368次閱讀
    <b class='flag-5'>在</b><b class='flag-5'>Vivado</b><b class='flag-5'>中</b>實(shí)現(xiàn)ECO功能

    Vivado設(shè)計(jì)套件Tcl命令參考指南

    電子發(fā)燒友網(wǎng)站提供《Vivado設(shè)計(jì)套件Tcl命令參考指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-14 10:23 ?1次下載
    <b class='flag-5'>Vivado</b>設(shè)計(jì)套件<b class='flag-5'>Tcl</b>命令參考指南
    主站蜘蛛池模板: 国产毛片久久久久久国产毛片 | 午夜黄色福利视频 | 羞羞色男人的天堂伊人久久 | 日本三级成人中文字幕乱码 | 在线观看网站黄 | 免费中国一级啪啪片 | 3344成年在线视频免费播放男男 | 青草久操 | 日本夜夜操 | 欧美激情二区三区 | 欧美日本一区 | 五月婷亚洲 | 免费观看的黄色网址 | 手机在线看片福利盒子 | 成人免费午间影院在线观看 | 五月激情片 | 亚洲欧美高清在线 | 奇米影视一区二区三区 | 五月天激情丁香 | 99色在线观看 | 国外精品视频在线观看免费 | 青青热久免费精品视频在线观看 | 不卡精品国产_亚洲人成在线 | 久久亚洲aⅴ精品网站婷婷 久久亚洲成人 | 在线观看亚洲人成网站 | 久久久亚洲欧美综合 | 色午夜在线 | www爽| 波多野结衣在线网址 | 92香蕉视频 | 99午夜| 日本二区免费一片黄2019 | 手机看片a永久免费看大片 手机毛片 | 美女天天干| 天天噜天天射 | 龙口护士门91午夜国产在线 | 欧美ol丝袜高跟秘书在线播放 | 久久久久久久性潮 | 午夜一级毛片免费视频 | 欧美精品一区二区三区在线播放 | 欧美成人一区二区三区在线视频 |