當您正在優化設計時,檢視收銀機之間邏輯等級的資訊會很有用。下列腳本會產生逗號分離值 (。csv) 檔案,其中含有設計中具有不同邏輯等級的路徑數量。您可以在 Excel 中繪製這些資料,或在 Excel 中建立長條圖,顯示路徑的邏輯分佈。
如果兩個收銀機之間有多個邏輯路徑,則只有這個腳本會計算具有最多邏輯等級的路徑。舉例來說,兩個具有一個四層和一個二層路徑的收銀機將算作一個四層路徑。
腳本會產生<修訂名稱>.levels_of_logic.csv 命名的 CSV 檔案。
假設您將腳本儲存在 report_levels_of_logic.tcl的檔案中,您可以使用下列命令執行:
quartus_tan -t report_levels_of_logic.tcl -project <project 名稱> [修訂版<revision 名稱>] [-name_pattern <連線>]
您可以使用 -name_pattern選項,將路徑計算限制在設計中的特定階層級。指定符合工具命令語言 (Tcl) 配對的字串。如果您沒有指定 -name_pattern選項的值,它預設為 *。舉例來說,如果您想要在設計中的 mult:inst6|lpm_mult:lpm_mult_component 階層中回報收款器之間的邏輯等級,請針對 -name_pattern選項的價值指定 mult:inst6|lpm_mult:lpm_mult_component* 。
load_package advanced_timing 套件需要 cmdline 設定選項 {\"project.arg""""Project name"\ \"revision.arg"""修訂版名稱" \ \"name_pattern.arg""*" 「限制註冊符合此模式 」] 陣列設定選擇 [:cmdline:getoptions quartus (args) $options] 陣列集 num_levels [清單] # 開啟專案並取得修訂名稱 ,如果 { [字串等於」$opts(修訂版)] { { project_open $opts(project) -current_revision { 其他 { project_open $opts (project) - 修訂版 $opts(修訂版) = 設定修訂版 [get_current_revision] # 如果 { [捕捉 { create_timing_netlist;create_p2p_delays [ res] \ { post_message類型錯誤,$res project_close qexit -error ] # 透過設計foreach_in_collection dest [get_timing_nodes-type reg] 中的每 一個收銀機, 寄送至收銀機節點的針腳,時鐘)# delays_from_keepers [get_delays_from_keepers $dest] # 如果目的地註冊名稱不符合模式 ,#請繼續執行下一個。 設定 dest_name [get_timing_node_info -資訊名稱 $dest] if { ![字串匹配$opts(name_pattern)$dest_name]{ 繼續 。 # 穿過所有餵食暫存器節點的管理員,以 延遲$delays_從_keepers { set src [lindex $delay 0] # 保管者可以包括針腳和時鐘,而我們只想要 收銀機。 如果 { ![字串等於「reg」[get_timing_node_info-資訊類型$src]]{ 繼續 = 如果原始碼註冊名稱不符合模式, 請單純移到下一 組src_name [get_timing_node_info -資訊名稱 $src]如果 { ![字串匹配$opts(name_pattern)$src_name]{ 繼續 = 在這個時候,來源和目的地名稱 # 均符合模式,而且它是一種註冊到註冊的路徑。 # get_delay_path命令會退回路徑上的節點清單 。路徑長度是清單的長度。 # 清單包含來源和目的地收銀機, 因此,收款器之間的邏輯等級為 - 2 設定路徑 [get_delay_path -類型最長 - 從 $src -到 $dest] 設定 levels_of_logic為 [expr { [llength $path] - 2 ] # 將資訊儲存在陣列中 如果 { [資訊存在num_levels($levels_of_logic)]] { incr num_levels ($levels_of_logic) { 其他 { 設定為 num_levels ($levels_of_logic) 1 { { project_close # 如果 \catch {open ${rev\.levels_of_logic.csv w® fh] { { post_message-type error $fh [ 否則 \ # 在檔案中寫入描述性標題,將$fh「專案邏輯等級$opts,請將資訊寫入檔案中 $rev(專案)修訂版$rev」 將$fh「由 Quartus 所產生的檔® II $quartus(版本)開啟 [頻率格式 [頻率秒]]」,$fh$opts(name_pattern)」 將$fh「邏輯等級,數位在設計中」 前言等級 [lsort -integer [陣列名稱稱 num_levels]]\ \ 如果 { [catch { 放$fh「$level,$num_level($level)」[ res] { post_message-類型錯誤$res 中斷 [ 捕捉 { 關閉 $fh [ [