現在在教學的時候看到的一般都是UI進行FPGA的項目建立,但是使用Tcl指令的腳本檔案實作FPGA的項目建立。
一、啥是Tcl,做什麼的?
Tcl是工具指令語言(tool command language),一條指令就是完成某項工作,比如綜合,仿真之類的。不用再用滑鼠點來點去,好像有點裝逼。确實是有點。
Tcl的格式一般是:command arg1 arg2 。。。。。。
二、Tcl的機制是怎麼樣的呢?怎麼工作呢?
(1)變元數組;
(2)對嵌套指令,變量和反斜杠進行數值替換;
(3)調用指令,用最終指令對變元進行解釋。
三、一些常用的Tcl指令:
(1)變量指派。set指令是将值賦給變量,它接受兩個變元,第一個是變量名,第二個是值。第一次對變量指派時解釋器自動建立變量後,可以通過$擷取該變量的值。
set var 5 //var = 5;
set b $var // b = var = 5;
(2)指令替換:在方括号裡嵌套指令,先執行方括号裡面的嵌套指令,得出結果後再替換之前的嵌套指令。
比如:set len [string length ChinaFootball] //方括号裡面的string length是求後面字元串的長度。那麼先執行括号裡面的内容,string length ChinaFootball
得到 的是13,那麼最後指令就是執行set len 13
(3)數學表達式:Tcl本身隻完成分組,替換和指令的調用工作,用expr指令對數學表達式進行分析和計算。expr的計算和c還是一樣的,可以處理整數,浮點數和布爾
值。
邏輯傳回true或者false。
數學表達式可以嵌套指令和變量應用。
set x 7
set len [expr [string length foobar] + $x]
表達式支援許多内建的函數:
set pi [expr 2*asin(1.0)] 得到3.141592653589793
使用大括号:
expr { 7.2 / 4}
set len [expr {[string length footbar]} + $x ]
14
set pi {expr {2 * asin(1.0)}]
(4)反斜杠替換:引用特殊意義的字元,比如通過它的引用形式指定一個純粹的美元符号,大括号或者方括号。反斜杠還經常用于在多行續寫一條很長的指令。
比如:
set len [expr {[string length \
footbar]} + $x ]
14