Quartus® II Tcl 範例:自動執行腳本

author-image

作者

從 Quartus® II 軟體的版本 4.0 開始,您可以在編譯期間,設定腳本在不同點自動執行。您可以使用此功能自動執行執行自訂報告、執行特定任務和執行許多其他工作的腳本。

有三項全球任務可控制腳本的自動執行。它們會列于此處,以及當它們導致執行腳本時。

•	PRE_FLOW_SCRIPT_FILE - before a flow starts
•	POST_MODULE_SCRIPT_FILE - after a module finishes
•	POST_FLOW_SCRIPT_FILE - after a flow finishes

POST_FLOW_SCRIPT_FILE和POST_MODULE_SCRIPT_FILE作業從 4.0 版本開始受支援,並且從版本 4.1 開始支援PRE_FLOW_SCRIPT_FILE作業。

模組是 Quartus® II 可執行,可在流程中執行一個步驟。例如,兩個模組是分析與合成 (quartus_map) 和計時分析 (quartus_tan)。

流程是 Quartus® II 軟體使用預先定義選項執行的一系列模組。舉例來說,編譯設計是通常由下列步驟(由指示模組執行)的流程:

  1. 分析與合成(quartus_map)
  2. 配接器 (quartus_fit)
  3. 組合器(quartus_asm)
  4. 計時分析器 (quartus_tan)

在execute_flow Tcl 指令的說明中,也描述了其他流程。此外,Quartus® II GUI 中開始 (處理功能表) 中的大部分指令對應于流程。

進行作業

若要進行自動執行腳本的任務,請使用下列表單進行作業:

set_global_assignment -name <assignment name> <executable>:<script name>

作業名稱如下:

•	PRE_FLOW_SCRIPT_FILE
•	POST_MODULE_SCRIPT_FILE
•	POST_FLOW_SCRIPT_FILE

可執行檔是 Quartus® II 命令列可執行檔的名稱,其中包括 Tcl 翻譯。

•	quartus_cdb
•	quartus_sh
•	quartus_sim
•	quartus_stp
•	quartus_tan

腳本名稱是您的 Tcl 腳本名稱。

腳本執行

Quartus® II 軟體執行腳本,如下所示:

<executable> -t <script name> <flow or module name> <project name> <revision name>

quartus (args) 變數中通過的第一個參數是正在執行的流程或模組的名稱,視您使用的作業而定。第二個論據是專案的名稱,第三個論據是修訂版的名稱。

當您使用POST_MODULE_SCRIPT_FILE作業時,指定的腳本會在流程中每次可執行後自動執行。您可以使用字串比較模組名稱(第一個參數傳遞至腳本),將腳本處理隔離到特定模組。

執行範例

這個範例說明了自動腳本執行在全流程中如何運作,假設您有一個名為 top 的專案,目前的修訂版名為 rev_1,而您在 Quartus® II 設定檔案 (QSF) 中有下列任務要為您的專案:

set_global_assignment -name PRE_FLOW_SCRIPT_FILE quartus_sh:first.tcl
set_global_assignment -name POST_MODULE_SCRIPT_FILE quartus_sh:next.tcl
set_global_assignment -name POST_FLOW_SCRIPT_FILE quartus_sh:last.tcl

當您編譯專案時,PRE_FLOW_SCRIPT_FILE作業會導致在編譯開始前執行下列命令:

quartus_sh -t first.tcl compile top rev_1

接著,Quartus® II 軟體從分析與合成開始編譯,由quartus_map可執行程式執行。分析與合成完成後,POST_MODULE_SCRIPT_FILE作業會導致執行下列命令:

quartus_sh -t next.tcl quartus_map top rev_1

接著,Quartus® II 軟體會繼續與配接器一起編譯,由可執行quartus_fit執行。配接器完成後,POST_MODULE_SCRIPT_FILE作業會導致執行下列命令:

quartus_sh -t next.tcl quartus_fit top rev_1

在編譯的其他階段之後,會執行對應的命令。最後,編譯結束後,POST_FLOW_SCRIPT_FILE作業會導致執行下列命令:

quartus_sh -t last.tcl compile top rev_1

控制處理

POST_MODULE_SCRIPT_FILE作業會在每個模組之後執行腳本。因為這是每個模組之後所執行的相同腳本,您可能需要包含一些條件性對帳單,將腳本中的處理限制為特定模組。

舉例來說,如果您有要在進行計時分析後才要執行的腳本,則應該在下列範例中包含類似條件測試。它會檢查作為第一個參數傳遞至腳本的流程或模組名稱,並在模組quartus_tan時執行程式碼。

set module [lindex $quartus(args) 0]

if [string match "quartus_tan" $module] {

    # Include commands here that are run
    # after timing analysis
    post_message "Running after timing analysis"
}

顯示訊息

由於 Quartus II 軟體自動執行腳本的方式,您需要使用 post_message 指令來顯示訊息,而不是 放入 命令。此要求僅適用于本頁面頂部列出的三項作業所執行的腳本。

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