幾乎每個 Quartus II Tcl 腳本都會開啟專案。開放專案的方法有很多,而且這個頁面包含開放專案的程式碼範例。
編寫腳本是十分有用的,因此專案和修訂版名稱會在執行時間傳遞至腳本,作為命令列的論據。如此一來,您便能輕鬆地使用不同專案的腳本。Quartus II 軟體隨附 的 cmdline Tcl 套件,可讓您輕鬆將命令列的論據傳遞給腳本。
以下是開啟專案程式的程式碼範例,以及您指定為命令列參數的修訂名稱。
套件需要 cmdline 設定選項 {\"project.arg""""專案名稱" \ \ \"revision.arg""修訂版名稱" \ 陣列設定 opts [::cmdline:getoptions quartus (args) $options] project_open $opts(project) -修訂版$opts(修訂版)
在 DOS 或 Shell 提示下,您可以執行包含此代碼的腳本,如下所示:
quartus_sh -t script.tcl -project top-修訂版第一
改善範例代碼
有許多方法可以修改範例代碼,以增加檢查和改進。
簡單的錯誤檢查
如果不存在指定專案 ,project_open 命令會產生錯誤。使用 project_exists 指令在開啟之前檢查是否存在,如此範例所示:
套件需要 cmdline 設定選項 {\"project.arg""""專案名稱" \ \ \"revision.arg""修訂版名稱" \ 陣列設定 opts [::cmdline::getoptions quartus (args) $options] 如果 { !project_exists $opts(專案)] \ { post_message類型錯誤「專案$opts(專案)不存在」 退出 [ project_open $opts(專案) -修訂版$opts(修訂版)
處理未指明的修訂版名稱
當修訂名稱未指定為命令列參數時,您也可以修改範例代碼以處理案例。在下方部分代碼範例中,您需要指定修訂版名稱,前提是您的專案有多個修訂版。與其他程式一起,即使專案中有多個修訂版,程式碼也能自動開啟特定的預設修訂版。
Quartus II Tcl 命令 project_open 預設開啟與指定專案相同名稱的修訂版,如果 修訂 版選項沒有指定修訂名稱。這個範例說明了 project_open 指令的預設功能。
套件需要 cmdline 設定選項 {\ "project.arg" "" "專案名稱" \ "修訂版.arg" "" "修訂版名稱" \ 陣列設定 opts [:cmdline::getoptions quartus(a)rgs) $options] 如果 { [字串等於」$opts(修訂版)] { { project_open $opts(專案)-修訂版 $opts(專案 )\ 其他 { project_open $opts(專案)-修訂版$opts(修訂版)
您可以使用下列代碼範例,以各種方式修改該行為,以節省執行腳本的時間。這些範例會判斷何時沒有將修訂名稱指定為命令列的參數,並使用其他方式來判斷修訂名稱,並使用修訂版名稱來使用project_open指令的修訂版選項。
修訂版名稱預設
當修訂版名稱未指定為命令列參數時,您可以使用下列代碼開啟只有一個修訂版的專案。單一修訂版的專案通常具有相同的修訂版和專案名稱,但不需要這樣做。若專案修訂名稱與專案名稱不符,使用 project_open命令而 不提供 修訂版 選項會產生錯誤。
此範例使用 get_project_revisions 指令來擷取特定專案中所有修訂版的清單。如果只有一個修訂版(清單長度是 1),腳本會使用該修訂版名稱開啟專案。使用修訂版名稱清單保證專案將正確開啟,即使修訂名稱與專案名稱不同。
套件需要 cmdline 設定選項 {\"project.arg""""專案名稱" \ \ \"revision.arg""修訂版名稱" \ 陣列設定 opts [::cmdline:getoptions quartus (args) $options] 如果 { [字串等於」$opts() 修訂版)] { { 設定修訂版 [get_project_revisions $opts(專案 )],如果 { 1 == [llength $revisions] [ { set opts(修訂版) [lindex $revisions 0] = 其他 { post_message-類型錯誤 \ 「專案中大於一個修訂版 \ $opts(專案)。」 退出 = project_open $opts(專案)──修訂版$opts(修訂版)
目前修訂版預設
如果您沒有指定修訂版名稱為命令列的參數,則可以使用下列代碼開啟專案並預設到目前的修訂版。目前的修訂版是您在結束專案前最後處理過的修訂版。在一個修訂版的專案中,該修訂版永遠是目前的修訂版。此範例使用 get_current_revision 指令來油取特定專案的目前修訂名稱。
套件需要 cmdline 設定選項 {\ "project.arg" "" "專案名稱" \ \ \"revision.arg" "" "修訂版名稱" \ 陣列設定 opts [::cmdline::getoptions quartus (args) $options] 如果 { [字串等於」$opts(修訂版)] { { set opts(修訂版)[get_current_revision $opts(專案 )][ project_open $opts(專案)-修訂版$opts(修訂版)
列印修訂版名稱
在某些情況下,如果專案中有超過一個修訂版,您可能需要修訂名稱,如果沒有提供,請參閱修訂名稱清單。當修訂版名稱未指定為命令列參數,且專案中有超過一個修訂版時,您可以使用下列代碼列印所有修訂版。此範例使用 get_project_revisions 指令來擷取專案中所有修訂版的清單。
套件需要 cmdline 設定選項 {\"project.arg""""專案名稱" \ \ \"revision.arg""修訂版名稱" \ 陣列設定 opts [::cmdline:getoptions quartus (args) $options] 如果 { [字串等於」$opts(修訂版)]\ { post_message「您未指定修訂名稱。」 設定修訂版 [get_project_revisions $opts(專案 )],如果 { 1 == [llength $revisions] { { set opts (修訂版) [lindex $revisions 0] post_message「有一個修訂版$opts () 修訂版 )」[ 其他 { post_message「這些修訂版本存在於專案中:「 前言修訂版$revisions { post_message「$revision」\ exit ® project_open $opts(專案)-修訂版$opts(修訂版)
合併的範例
這些範例說明如何結合上述的一些改進。
範例 1
以下簡單範例可驗證特定專案是否存在。如果沒有指定為命令列參數的修訂名稱,它將開啟目前的修訂版。否則,它將以指定為命令列參數的修訂名稱開啟專案。
套件需要 cmdline 設定選項 {\"project.arg""""專案名稱" \ \ \"修訂版.arg""修訂版名稱" \ 陣列設定 opts [::cmdline:getoptions quartus (args) $options] 如果 {[] project_exists $opts(專案)]\ {如果 {[字串等於」,$opts(修訂版)]] { project_open $opts(專案)-修訂版 \ [get_current_revision $opts(專案)] \ 其他 { project_open $opts(專案)-修訂版 $opts(修訂版) { 其他 { post_message -類型錯誤「專案$opts(專案)不存在」 退出 。
從 Quartus II 軟體的版本 4.1 開始(版本 3.0:quartus::p roject 套件),project_open指令支援 -current_revision選項。 如果您使用 Quartus II 軟體版本 4.1 或更新版本,您可以在上述腳本中替換下列命令
project_open $opts(專案)──修訂版 \ [get_current_revision $opts(專案)]
使用此命令
project_open $opts(專案)-current_revision
範例 2
以下範例結合了以上所示的一些改進。它會驗證特定專案是否存在,如果只有一個修訂版,請開啟。如果有超過一個修訂版,它會列印修訂版和結束的清單。
套件需要 cmdline 設定選項 {\"project.arg""""專案名稱" \ \ \"revision.arg""修訂版名稱" \ 陣列設定 opts [::cmdline::getoptions quartus (args) $options] 如果 { !project_exists $opts(project)] { { post_message類型錯誤「專案$opts(專案)不存在」 退出 [如果 {[字串等於」$opts(修訂版)]{ { post_message「您沒有指定修訂名稱。」 設定修訂版 [get_project_revisions $opts(專案 )],如果 { 1 == [llength $revisions] { { set opts (修訂版) [lindex $revisions 0] post_message「有一個修訂版$opts (修訂版 )」\ 其他 { post_message「這些修訂版本存在於專案中:「 前言修訂版$revisions { post_message「$revision」。 exit = project_open $opts(專案)-修訂版$opts(修訂版)