轉載地址:http://blog.csdn.net/fzxy002763/article/details/7216085
本文的話題:
-其他一些TCL指令
-訪問命令行選項
-在Quartus II中使用TCL腳本
-獲取幫助
PS:里面提到的命令行和可執行命令實際上一部分指在quartus II軟件中,
還有部分在windows cmd命令行中也可以使用,讀起來可能會覺得有點亂。
::quartus::misc -雜項指令
-實用和一些雜項的指令:在每一個可執行程序中默認被打開
-一些通常使用到的指令
escape_brackets
post_message
escape_brackets -字符集合區間通配符
-許多Quartus II的TCL腳本允許在指令行中采用正則表達式
-通常采用匹配區間會存在一些問題
address\[10\]
正則表達式匹配address0或者address1
-相等匹配符必須匹配兩次
address\\\[10\\\]
PS:這段意思是任何一個元字符都可以通過給它加上一個反斜杠字符(\)作為前綴的方法來轉譯,
配對的元字符(如[])不能用作元字符時必須被轉義,否則正則表達式分析會拋出一個錯誤。
也就是上述第一個匹配的結果是匹配address*這種形式,但是第二個為相等匹配,匹配目標就是
address\[10\],多余的不進行匹配
-采用通配符更方便的使用命令行
-示例,獲取所有總線上的賦值信息
例子:
set address_names "address\[*\]"
set address_locations [get_all_instance_assignments \
-to [escape_brackets $address_names] -name LOCATION]
post_message -打印信息的相關指令
-按照Quartus II中的標准格式打印信息
-特殊信息格式和文本
info,extra_info,warning,critical_warning,error
TCL回收機制
-一些TCL指令返回數據的最大設置值
-回收是包含在大數據設置中
特殊Quartus II的TCL API
-通過foreach_in_collection指令訪問回收元素
擁有和foreach類似的功能
-回收指令集返回回收數據,其中包含foreach_in_clooection
不需要獨立的加載包
TCL Collection 例子
-打印所有細節部分的設置
set instance_assignments [get_all_instance_assignments -name *]
foreach_in_collection instance $instance_assignments {
set sect_id[lindex $instance 0]
set src[lindex $instance 1]
set dest[lindex $instance 2]
set name[lindex $instance 3]
set value[lindex $instance 4]
puts "Section ID ($sect_id)"
puts "Source ($src)"
puts "Destination ($dest)"
puts "Assignment Name ($name)"
puts "Assignment value ($value)"
}
訪問指令選項
-Quartus II4.1版本支持argv,argc,argv0
之前的版本通過args傳值
args在4.1版本也支持
4.1版本變量 | 更早的版本 |
argv | quartus(args) |
argc | llength $quartus(args) |
argv0 | info nameofexecutable |
命令行選項的示例
-命令行包提供了靈活訪問命令行選項的方法
在命令行列表中擁有比固化代碼更加穩健
包含於Quartus II中
-示例
quartus_sh -t myscript.tcl -project my_project -revision second
-通過選項名打開工程
quartus_sh -t myscript.tcl -project my_project -revision second
-Open Project with Optional Revision Name
package require cmdline
set options {\
{"project.arg""""Project Name"}\
{"revision.arg""""Revision Name"}\
}
array set optshash [::cmdline::getoptions ::argv $options "Options:"]
if{[string equal "" $optshash(revision)]}{
#No revision is specified
project_open $optshash(project)
}else{
project_open $optshash(project) -revision $optshash(revision)
}
#The rest of your script follows here
在Quartus II中使用TCL腳本
-可執行命令行
批處理
交互式shell
快速執行TCL指令行
-TCL命令行在GUI界面中
交互式Shell
在View->Unity windows->Tcl console下
在命令行中使用TCL腳本
-運行腳本
quartus_sh -t <script file> [<script arguments>]
quartus_sh -t myscript.tcl Stratix
-交互式使用
quartus_sh -s
-直接使用
quartus_sh --tcl_eval <tcl command>
quartus_sh --tcl_eval help -pkg flow
-與其他命令行具有相同的功能
運行TCL腳本
-命令行中支持TCL腳本
指令名 | 一般用途 | |
quartus_sh | Assignments,General Reporting,Compiling,Simple Shell | 賦值,一般報告,編譯,簡單shell |
quartus_tan | Timing Reporting,Advanced Timing Analysis | 時序報告,時序高級分析 |
quartus_cdb | Back Annotation,LogicLock Regions,Chip Editor Functions | 描述,固定模組優化,芯片優化 |
quartus_sim | Simulate with Tcl Testbenches | 仿真驗證 |
為什么會有這些不同?
-不同的命令行支持不同的功能
不同TCL包允許不同的功能
-例子
quartus_cdb Supports LogicLock Functions,
Not Timing Analysis Functions
Basic Project Functions Supported by All
-可以查詢Quartus II中手冊查詢相關資料
也可以在TCL命令行中使用help指令
Quartus II中TCL腳本
-TCL腳本被包含於Quartus II中
Design Space Explorer(DSE)
QHelp Unility
QFlow Script
-在Tool中的TCL Scripts
-為了需要改變版本
小測試
-列出三種在Quartus II軟件中使用TCL腳本的方法
答案
-直接在GUI界面中使用
-交互式TCL命令行中使用
批處理行中使用
直接使用命令行
-TCL工具欄按鈕(未必包含於所有的情況)