《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 解決方案 > 【Vivado使用誤區(qū)與進階】Tcl在Vivado中的應(yīng)用

【Vivado使用誤區(qū)與進階】Tcl在Vivado中的應(yīng)用

2015-03-05
關(guān)鍵詞: Vivado TCL 應(yīng)用


Xilinx的新一代設(shè)計套件Vivado相比上一代產(chǎn)品ISE,在運行速度、算法優(yōu)化和功能整合等很多方面都有了顯著地改進。但是對 初學(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è)置變量

11.png

打印

22.png

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

文件I/O

33.png

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

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

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

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

44.png

子程序/過程

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

55.png

一些特殊符號

tcl_1_1.PNG

tcl_1_2.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)進行遍歷、查找和定位,這也是對網(wǎng)表上的目標(biāo)進行約束的基礎(chǔ)。要掌握這些則首先需要理解Vivado對目標(biāo)的分類。

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

77.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的命令一起使用。如下所示,

88.png99.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, 有兩種方法:

1010.png1111.png

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

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

1212.png

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

1313.png

get_pins

1414.png

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

1515.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)系如下左圖所示。

1616.png

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

1717.png

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

高級查找功能

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

1919.png

在 創(chuàng)建子程序時也常常用到-filter,例如下述get_p的子程序/過程就可以用來返回指定管腳的方向?qū)傩裕嬖V用戶這是一個輸入管腳還是一個輸出管 腳。 需要特別指出的是,通常在-filter后會使用 { } ,但此時需要對 $direction做變量替換,必須如下所示改用 " "

tcl_1_3.PNG

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

Tcl 在Vivado中的應(yīng)用還遠不止上述所列,其它常用的功能包括使用預(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腳本。

篇幅所限,不能一一展開。關(guān)于以上Tcl在Vivado中的延伸應(yīng)用,敬請關(guān)注Xilinx官方網(wǎng)站和中文論壇上的更多技術(shù)文章。

allyzhou.jpg
Ally Zhou 2014-9-12 于Xilinx上海Office



本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲欧洲综合另类| 亚洲在线日韩| 亚洲一区二区伦理| 一区二区三区 在线观看视| 亚洲日本成人在线观看| 在线精品亚洲| 亚洲高清视频在线观看| 影音欧美亚洲| 在线观看日韩| 亚洲激情啪啪| 亚洲欧洲在线播放| 亚洲国产一区二区a毛片| 亚洲第一区色| 亚洲国语精品自产拍在线观看| 一色屋精品视频在线看| 雨宫琴音一区二区在线| 极品少妇一区二区三区| 在线观看日韩一区| 亚洲黑丝在线| 99精品免费| 一区二区三区国产精品| 亚洲视频大全| 亚洲自拍偷拍网址| 欧美一区二区免费视频| 久久激情综合| 亚洲国产一区二区三区高清| 亚洲国产综合91精品麻豆| 亚洲国产高清aⅴ视频| 亚洲国产精品小视频| 亚洲精品欧美在线| 一区二区成人精品| 午夜精品久久久久久久| 欧美中文字幕在线观看| 久久中文字幕导航| 欧美久久影院| 国产精品久久久一区麻豆最新章节| 国产精品久久久久一区二区三区| 国产欧美日韩精品在线| 韩国精品主播一区二区在线观看| 亚洲第一色中文字幕| 日韩亚洲精品视频| 亚洲在线观看视频网站| 亚洲电影欧美电影有声小说| 亚洲免费观看高清完整版在线观看| 亚洲视频欧洲视频| 欧美中文字幕| 欧美成人伊人久久综合网| 欧美日韩1区| 国产精品欧美在线| 伊人久久综合| 一区二区三区色| 欧美在线免费看| 亚洲伦伦在线| 午夜久久一区| 欧美aⅴ99久久黑人专区| 欧美日韩久久久久久| 国产伦精品一区二区三区| 尤物九九久久国产精品的分类| 日韩系列欧美系列| 久久成人人人人精品欧| 日韩视频―中文字幕| 欧美一区二区啪啪| 欧美激情视频给我| 国产精品视频免费| 91久久久亚洲精品| 午夜久久久久久| 一区二区三区四区五区精品| 久久成人免费| 欧美日韩视频第一区| 韩国av一区二区三区四区| 一区二区三区 在线观看视| 久久精品三级| 午夜精品剧场| 欧美另类在线观看| 好吊一区二区三区| 一区二区三区日韩精品| 亚洲国产色一区| 欧美一区二区在线免费播放| 欧美精品成人| 国内精品美女av在线播放| 一区二区三区精品视频| 亚洲国产老妈| 亚洲欧美中文字幕| 欧美美女操人视频| 狠狠久久亚洲欧美专区| 亚洲图片在线观看| 日韩一级黄色大片| 蜜臀av在线播放一区二区三区 | 久久综合网hezyo| 国产精品区一区二区三| 最新日韩在线视频| 亚洲激情成人| 久久国内精品自在自线400部| 欧美日韩免费观看一区三区| 一区免费观看视频| 欧美影院成人| 欧美一区二区高清在线观看| 欧美日韩一区二区三区在线观看免| 1769国内精品视频在线播放| 久久国产88| 久久精品99国产精品| 国产精品福利网站| 日韩一二在线观看| 亚洲精品在线观看免费| 老司机一区二区三区| 国产视频丨精品|在线观看| 这里是久久伊人| 在线亚洲免费| 欧美日韩国产欧| 亚洲乱码国产乱码精品精| 亚洲人成在线观看一区二区| 久久久夜精品| 狠狠色2019综合网| 久久精品99国产精品酒店日本| 欧美一区中文字幕| 国产欧美日韩精品a在线观看| 亚洲一区二区三区在线观看视频| 这里只有精品视频在线| 欧美人与性动交a欧美精品| 亚洲国产影院| 一二三区精品| 欧美日韩天堂| 一区二区三区精品视频在线观看| 亚洲婷婷综合久久一本伊一区| 欧美精品一区二区三区蜜臀| 亚洲大黄网站| 亚洲精品一区二区在线| 欧美肥婆bbw| 亚洲日本理论电影| 一本久久综合亚洲鲁鲁五月天| 欧美女同视频| 一本色道久久88亚洲综合88| 亚洲午夜av| 国产精品色在线| 香蕉免费一区二区三区在线观看 | 日韩视频国产视频| 欧美日韩a区| 99re视频这里只有精品| 中日韩视频在线观看| 国产精品福利在线观看| 亚洲一区二区三区免费视频| 午夜视频在线观看一区| 国产欧美日韩一区二区三区在线| 西西人体一区二区| 久久亚洲私人国产精品va媚药| …久久精品99久久香蕉国产| 亚洲美女在线看| 欧美日韩在线观看视频| 亚洲女性喷水在线观看一区| 久久精品成人一区二区三区蜜臀| 国产专区一区| 亚洲免费av电影| 欧美午夜在线观看| 性色av一区二区三区| 免费不卡在线观看av| 亚洲另类一区二区| 欧美一区二区三区免费在线看| 韩日视频一区| 中国日韩欧美久久久久久久久| 国产精品久久久久久久久免费桃花 | 亚洲免费成人av| 99这里只有精品| 国产精品国产三级国产a| 亚洲欧美在线高清| 久久综合精品国产一区二区三区| 狠狠综合久久| av成人激情| 国产日韩精品一区二区三区在线| 亚洲国产99精品国自产| 欧美日韩免费观看一区| 午夜视频一区在线观看| 蘑菇福利视频一区播放| 亚洲无吗在线| 美脚丝袜一区二区三区在线观看 | 久久久五月天| 日韩系列在线| 久久全国免费视频| 999亚洲国产精| 久久久久.com| 夜夜嗨av色一区二区不卡| 久久精品女人的天堂av| 亚洲免费av片| 久久综合五月| 亚洲一区二区动漫| 欧美国产日韩xxxxx| 午夜精品视频在线观看| 欧美精选午夜久久久乱码6080| 午夜精品区一区二区三| 欧美日韩国产页| 久久福利毛片| 国产精品久久久久久久久借妻| 亚洲人午夜精品| 国产一区999| 亚洲一区高清| 亚洲国产天堂久久综合| 久久精品人人| 亚洲一区二区视频在线| 欧美精品一区二区三区蜜桃| 久久精品九九| 国产精品羞羞答答|