Quartus® II Tcl 範例:開啟專案

author-image

作者

幾乎每個 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(修訂版)

這個頁面的內容綜合了英文原始內容的人工翻譯譯文與機器翻譯譯文。本內容是基於一般資訊目的,方便您參考而提供,不應視同完整或準確的內容。如果這個頁面的英文版與譯文之間發生任何牴觸,將受英文版規範及管轄。 查看這個頁面的英文版。