Quartus® II Tcl 取得顛覆性修訂編號

author-image

作者

此範例腳本顯示您如何存取專案的版本控制軟體版本編號。您可以在FPGA設計中編譯的設計檔案中寫入版本編號。透過額外的設計邏輯,FPGA可以報告版本編號。此資訊在除錯期間可能非常有用,特別是如果您切換多個程式設計檔案。您可以根據FPGA中的版本編號,輕鬆找出FPGA上執行哪一個版本的設計。

此範例使用您專案的顛覆修訂編號。它使用 svn 資訊 命令來取得特定檔案的相關資訊。 svn 資訊 命令會將有關專案的資訊列印到您的工作複本中,並且其中包含一行附有修訂編號,表單如下:

修訂版:<revision 編號>

此範例使用兩個程式執行 svn 資訊 指令,並解析輸出以取得修訂編號。 get_subversion_revision 程式會啟動 svn 資訊 指令。使用檔案名稱呼叫程式,以使用 svn 資訊 命令。如果無法執行命令,程式會以錯誤退回。否則,程式不會退回任何功能,但會設定特定的全球變數。如果 svn 資訊 指令超時,全球變數 的價值-1。如果找到修訂編號,全球變數 的價值1, 而修訂版本編號為 revision_number 全球變數。您可以在訊息中顯示修訂版編號,例如在此範例中,或將其寫入設計檔案中。

get_version_info程式是一種協助程式,可解析命令一次輸出一行。它包含一個與修訂編號行相符的定期表達,並播取修訂版編號。

proc get_subversion_revision { file_name {

    global 完成 # 等待

    svn 資訊
    # 命令完成設定timeout_seconds 30 #執行的

    svn 資訊命令與檔案名稱的最大秒數
    設定為 cmd「svn 資訊 ${file_name\」#

    嘗試取得版本資訊。
    # 如果無法執行命令,請退回錯誤。
    # 以其他方式設定檔事件以處理命令輸出。
    如果 { [擷取 {開啟「|$cmd」[ 輸入] \
        { 退回代碼錯誤 $input
    \ 否則 {

        fileevent $input可讀 [清單get_revision_info $input]

        # 設定超時,使程式無法在
        # 儲存庫關閉時掛斷。
        設定超時 [在 [expr { $timeout_秒 * 1000 [
            [清單集完成 -1] 之後

        ]# 請勿繼續,直到找到修訂編號
        、# 或操作時間完成。反正取消超時。
        vwait 在
        取消後完成$timeout
®

proc get_revision_info { inp  = { global

    完成revision_number

    如果 { [eof $inp] {
        catch {close $inp®
        設定完成 1
    [ elseif { $done \
        得到$inp行
    [ 其他 {
        得到$inp行
        # 使用一般表達來符合
        修訂編號的行號。
        如果 { [RegExp {^修訂版:\s+(\d+)\s*$® $line比 revision_number] {
            { set done 1
        = \ =

設定完成 0
設定revision_number「」#

檔案名稱通常是您的專案檔案
  
  


。 qpf 設定 file_name
[lindex $quartus (args)

0],如果 { [捕捉 { get_subversion_revision $file_name [ msg] { {
    post_message -類型 critical_warning「無法執行命令以取得\
        修訂編號。
$msg」\ 其他 {

    如果 { -1 =$done = {
        post_message -type critical_warning「超時取得修訂編號
    」。[ elseif { [字串等於」$revision_編號] { {
        post_message $file類型critical_warning \
            「無法找到 svn 資訊輸出$file_name 的修訂編號。」
    { 其他 {
        post_message「$file_name 的修訂版是$revision_編號
」。

您可以在系統命令提示下使用下列命令執行腳本 (假設腳本位於 svn_revision.tcl)的檔案中):

quartus_sh -t svn_revision.tcl myproject.qpf

腳本會產生這樣的訊息,以顯示修訂版:

資訊:myproject.qpf 修訂版為 417

您可以在全球變數 revision_number中顯示具有修訂編號的訊息,例如在此範例中,或將其寫入設計檔案中。

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