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

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

3天內不再提示

FPGA設計中Tcl在Vivado中的基礎應用

454398 ? 來源:FPGA技術聯盟 ? 作者:FPGA技術聯盟 ? 2020-11-17 17:32 ? 次閱讀

Tcl介紹

Vivado是Xilinx最新FPGA設計工具,支持7系列以后的FPGA及Zynq 7000的開發。與之前的ISE設計套件相比,Vivado可以說是全新設計的。無論從界面、設置、算法,還是從對使用者思路的要求,都是全新的;在運行速度、算法優化和功能整合等很多方面都有了顯著地改進。但是對初學者來說,新的約束語言XDC以及腳本語言Tcl的引入則成為了快速掌握Vivado使用技巧的最大障礙,以至于兩年多后的今天,仍有很多用戶缺乏升級到Vivado的信心。

本文介紹了Tcl在Vivado中的基礎應用,希望起到拋磚引玉的作用,指引使用者在短時間內快速掌握相關技巧,更好地發揮Vivado在FPGA設計中的優勢。

使用Tcl作為它的命令語言的好處:

1 Tcl提供了標準語法,一旦用戶掌握了Tcl就可以很容易的發布命令給基于Tcl的程序

2 Tcl可作為程序間通信接口

3 通過Tcl, Vivado具備了強大的設計分析能力
? 快速定位設計中的問題
? 減少設計迭代周期

基本語法和基礎命令

在Vivado中的Tcl命令行里,學習這些基本語法

(Windows下 –> 開始 –> 所有程序 –> Xilinx Design Tools –> Vivado xxx –> Vivado xxx Tcl Shell)

01、命令格式

一條Tcl的命令串包含了多條命令時,用換行符或分號來隔開,而每一條命令包含了一個域的集合,域使用空白分開的,第一個域是一個命令的名字,其它的是作為參數來傳給它。

02、數據類型

Tcl只支持一種數據結構:字符串。所有的命令、命令里的所有的參數、命令的結果、變量全部都是都是字符串。

簡單實例:

set i 123 
       將123這個字符串賦值給i變量

unset i 
       清除變量

set i hi 
       將hi這個字符串賦值給i變量

set i "hi hello" 
       hi hello中有空格,所以加引號

set i 123;#開始注釋
       注意: 注釋前,要先用分號,把命令結束掉,或者換行注釋  

03、設置變量

設置一個名為myVar的變量,其值為Hello World!

04、使用$符號引用變量

其中puts是打印命令

05、使用[]將命令返回值,作為新命令的參數

set j 232命令會返回值232
新命令就成了 set i 232

這里稍微復雜一點點的例子:
set i a[set j b][set k c]
最后的結果就是:j=b ; k=c ; i=abc

06、數組

數組不需要聲明,直接賦值即可,也不必按照順序來:
set i(1) 123 ; set i(16) hi

當然也支持任意維數的數組:
set i(1,2,3) hi
引用的時候直接$i(1,2,3)即可

parray命令
可以打印出一個數組的全部信息

array命令
命令格式:array option arrayName

option 是 操作選項,有如下可選:
name : 返回數組的所有元素的名稱
size : 返回數組的長度
startsearch : 初始化一次遍歷,返回一個遍歷標識符(searchId),這個searchId在下面用到,(是可以多個遍歷同時進行的)
下面的命令格式為:array option arrayName searchId
->nextelement : 返回數組中下一個元素,如果沒有返回空
->anymore : 如果接下來還有元素,返回1,否則返回0
->donesearch : 結束遍歷

07、字符串命令

string命令:

命令格式:string option string1 string2

option 是 操作選項,有如下可選:
compare : 按照字母的排序方式比較,string1 <,=,>string2,分別返回-1,0,1
match : 判斷string1和string2是否匹配
first : 檢索string2中第一次出現string1的位置,如果沒有出現string1則返回-1
last : 和first相反
trim : 從string1中刪除開頭和結尾的,string2的字符

命令格式:string option string
tolower : 返回string中的所有字符被轉換為小寫字符后的新字符串
toupper : 返回string中的所有字符串轉換為大寫后的字符串
trimleft : 去除string左空白,類似的還有trimright
length : 返回string1的長度

range :
string range abcdef 1 2,返回輸出結果為bc

append命令:
字符串追加,可以無限拼接

set i a
append i b c d
puts $i123

i變量的值就成了 abcd,注意append i b c d命令,而不是append $i b c d

split命令
命令格式:split 字符串 分割符,將字符串轉換為列表

08、數字操作

tcl中只有string類型的變量,所以當進行數字運算的時候,需要用到incr和expr操作命令

incr命令:
a變量自加-3:incr a -3
a變量自加1 : incr a

expr命令:
類似C語言中的算術操作符有(在Tcl 中的邏輯:真為1,假為0):
!、* 、/、 %、+、-、<<、 >> 、< 、> 、<= 、>= 、== 、!=、& 、^ 、|、&&、 || 、x ? y : z
除此之外,expr還能夠識別一些函數及其返回值: abs(x) 、round(x) 、sin(x)、cos(x) 等
使用方法:expr 表達式

09、proc自定義函數

proc:

proc hello {str} {
puts hello:$str}

需要注意的是,如果不能一行寫完,那建議按照如下格式來定義(主要是要將“{”放到第一行的末尾):
第一行: proc+(空格)+函數名+(空格)+{參數}+(空格)+{
中間行: 邏輯運算
最后行: }

全局變量global:
用于將過程中的局部變量變成外界可操作的全局變量

proc hello {} { global x set x hi set i hello}1234

上述代碼,執行結果:

return命令:

proc hello {} {return world}
set i [hello]12

return命令沒啥好說的,上述代碼的結果是,將i變量賦值為world字符串

10、控制流和循環命令

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

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

if 流控制:
這個同樣建議按照格式來:
第一行: if+(空格)+{表達式}+(空格)+{
中間行: 邏輯運算
第N行: }+(空格)+else+(空格)+{
中間行: 邏輯運算
最后行: }

switch流控制 :
例子如下,一目了然:

switch 2 {
1 {puts 111}
2 {puts 222}
3 {puts 333}
default {puts xxx}
}

case流控制:

case abcd in a {puts 111} *bc* {puts 333} default {puts xxx} 1

上述程序對字符串abcd進行判斷:
條件一 : 字符串為a
條件二 : 不管字符串的前后字符是啥,只要中間有bc子字符串即可
條件三 : default

foreach循環:

循環讀取myVar變量的值并打印,那就需要這個foreach了

for循環:
TCL的for循環也是很類似C語言的:

for {set i 0} {$i < 10} {incr i} {
puts $i
}123

初始化i=0,范圍 i<10 ,循環i=i+1

while循環:

判斷變量的值,打印,變量再賦值就OK了

11、字符串轉為命令

eval命令:
set a set ; set b i ; set c hello ; eval $a $b $c
上述代碼就等效于:set i hello
eval將字符串的內容,作為命令,執行

12、打印輸出

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

編輯:hfy

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

    關注

    1608

    文章

    21367

    瀏覽量

    594671
  • TCL
    TCL
    +關注

    關注

    10

    文章

    1670

    瀏覽量

    88040
  • Vivado
    +關注

    關注

    18

    文章

    791

    瀏覽量

    65388
收藏 人收藏

    評論

    相關推薦

    #硬聲創作季 #FPGA Xilinx開發-08 Vivado里最常用的5個Tcl命令-3

    fpga芯片XilinxTCLTCL王牌Vivado
    水管工
    發布于 :2022年10月08日 22:45:16

    怎么Vivado 2016.1關閉特定的DRC違規或警告?

    你好,有沒有辦法Vivado 2016.1關閉特定的DRC違規或警告?其次是AR#63997的方向,我試過:set_property嚴重性警告[get_drc_checks RTSTAT-2
    發表于 10-26 15:03

    Vivado缺少Zcu102板但它在HLS存在

    set_param board.repoPaths行,或者在打開Vivado時從tcl控制臺添加)。 -board_files文件夾旁邊還有一個board_parts文件夾(同一個board文件夾
    發表于 12-28 10:52

    怎么vivado HLS創建一個IP

    你好我正在嘗試vivado HLS創建一個IP,然后vivado中使用它每次我運行Export RTL我收到了這個警告警告:[Comm
    發表于 04-03 08:48

    怎么vivado創建一個coe文件?

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

    VIVADO從此開始高亞軍編著

    / 226第7章 TclVivado的應用 / 2277.1 VivadoTcl的支持
    發表于 10-21 18:24

    Xilinx的加密 源碼和tcl腳本

    工程項目中常常使用xilinx的IP時常會遇到一些加密的verilog和vhdl,打開后是以Xlx開始的十六進制文件,某些IPtcl和ttcl也是用這種方式保存的十六進制文件。vivad
    發表于 06-20 17:50

    Vivado圖形化界面IDE運行和調試Tcl命令

    管腳到內部的線長也需要考慮。fpga工程師可以vivadoTcl Console執行tcl
    發表于 06-17 14:52

    TCL 定制 Vivado 設計實現流程

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

    基于 FPGA Vivado 示波器設計(附源工程)

    Vivado使用‘/’); 3) Tcl命令框,輸入命令:source ./ Oscilloscope.tcl。輸入完畢按回車,運行
    發表于 08-17 19:31

    Vivado設計之Tcl定制化的實現流程

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

    Vivado下利用Tcl腳本對綜合后的網表進行編輯過程

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

    TclVivado中的基礎應用

    Vivado使用技巧的最大障礙,以至于兩年多后的今天,仍有很多用戶缺乏升級到Vivado的信心。本文介紹了TclVivado中的基礎應用,希望起到拋磚引玉的作用,指引使用者在短時間內
    發表于 11-18 03:52 ?4743次閱讀
    <b class='flag-5'>Tcl</b>在<b class='flag-5'>Vivado</b>中的基礎應用

    Vivado中常用TCL命令匯總

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

    TCL定制Vivado設計實現流程

    今天推出Xilinx已發布的《Vivado使用誤區與進階》系列:用TCL定制Vivado設計實現流程。
    的頭像 發表于 05-05 09:44 ?798次閱讀
    用<b class='flag-5'>TCL</b>定制<b class='flag-5'>Vivado</b>設計實現流程
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>