此腳本會建立一個 SDO 檔案,並結合 Quartus® II 軟體在最大和最小時序分析期間所產生的兩個 SDO 檔案的計時參數。
Quartus II 軟體會產生獨立的 SDO 檔案,使用每個三重裝置中三個延遲值的最小或最大延遲值。SDO 檔案中的三重功能支援這樣的最小、典型和最大延遲值:(最小:typ:max)。Quartus II 軟體為進行最大計時分析而產生的 SDO 檔案,延遲三重組僅包含這樣的最大延遲值:(最大:最大:最大)。在最短時間分析期間產生的 SDO 檔案包含僅包含最小延遲值的延遲三重檔,例如:(最少:分鐘)。
此腳本結合 SDO 檔案與最小和最大值,以建立一個檔案與三個同時具有最小和最大數位的三重檔,例如:(最小:最大:最大)。請注意,對於一般延遲值,也會複製最大延遲值。此腳本所產生的檔不保證由Altera用於混合最小/最大分析。
執行這樣的腳本 :quartus_sh-t combine_sdo.tcl -min_sdo <min sdo 檔案>-max_sdo <max sdo 檔案>-new_sdo <new sdo 檔案>
套件需要 cmdline 變數::argv0 $::quartus (args) 設定選項 { \"min_sdo.arg" "" 「檔案名稱的 SDO 與最小計時」 \ \ \"max_sdo.arg"""檔案名稱與最大計時」 \ \"new_sdo.arg" 「檔案名稱」 SDO 含最小/最大計時」\ \ 陣列設定選擇 [::cmdline::getoptions::argv0 $options「錯誤選項」] 設定分鐘 [開啟 $opts(min_sdo)] 設定上限 [開啟$opts(max_sdo)]] 設定為新 [開啟$opts(new_sdo)w] # 追蹤檔案集line_num 1 中的行號, 而 { 1 { \ # 從最小讀取下一行,並從最少讀取最大 sdo 檔案 集more_min [取得$min min_line] 設定more_max [獲得$max max_line] 如果 { $more_min < 0 || $more_max < 0 { { # 檔案中的資料可能 比其他檔案多,則在檔案中不再有資料完成 。在此處發出警告。 如果 { $more_min >= 0 { { post_message類型警告 \ 「從$opts(min_sdo)行$line_num 開始的中斷線路 」[ 如果 { $more_max > = 0 { { post_message類型警告 \ 「從$opts(max_sdo)中行$line_num 開始的中斷線路 」® # 因為至少有一個檔案沒有更多資料, 因此必須停止迴圈。 如果 \[RegExp {(\d+:\d+:\d+\d+\)] $min_line] \ \ 如果線路有延遲三倍, 則必須將值 # 合併 new_line累積文字以列印出來。 # line_differences設定為 除了延遲三重組以外的 # 行中是否有差異。 設定new_line「」 設定line_differences 0 # 當線上出現三重緩時... 而 { [RegExp {\(\d+:\d+:\d+\)] $min_line] { { # 將一切解壓縮到延遲三重 ,#延遲值本身, 以及 #延遲三重測試 \^(.*?\(\(\d+):\d+:\d+(\d+(\*$)] $min_line \ 比對min_start min_value min_line RegExp {^(.*?\()\d+:\d+:(\d+)(\.*$)[ $max_line \ 比對max_start max_value max_line #如果線路上有差異,請設定旗標 #除了延遲三重 如果 { ![字串等於$min_開始$max_開始]]{ 設定line_differences 1 = # 在新行附錄中將合併的延遲三重組合放在 一起,new_line $min_start \ $min_value:$max_value:$max_value ® # 檢查線路中遺留的任何文字是否存在# 差異。 如果 { ![字串等於 $min_line $max_line]{ 設定為 line_differences 1 \ 如果 { $line_differences { { post_message -type 警告 \ [加入 [list]\「 線上的這些零件$line_num 不同。」\"$opts(min_sdo):$min_line"\"$opts(max_sdo):$max_line"]\"\n"] # 把其餘的行, 上一次延遲三重後 ,#一起出現在新線路 的附錄new_line $min_line { 其他 { # 如果線路中沒有三重延遲, # 檔案最小與最大檔的行號應 為 # 相同 (例如檔案中有日期戳 #)。快速檢查,確定行 號是否相同,並線上路不同時列印警告。 如果 { ![字串等於 $min_line $max_line]{ post_message類型警告 \[加入 [list\"Line $line_num 不同。」 \ 「 新檔案包含下方第一行 。」\"$opts(min_sdo):$min_line"\"$opts max_sdo):$max_line"]\"\n"] [ 設定 new_line $min_line [ # 將行寫到合併檔案中 ,讓 $new $new_line incr line_num = # 完成迴圈通過檔案。關閉所有 內容$min 關閉$max 關閉$new post_message「 將檔案合併成$opts(new_sdo)」