此頁面上的腳本可在其所有支援的操作條件下,對設計中的所有頻率執行設定、固定、復原和移除計時分析。腳本會建立一張表格,列出所有時間失敗分析的相關資訊。腳本將表格寫入一個名為 <revision>.failing_clock_domains的檔案。如果沒有分析失敗,腳本會寫入一條訊息給檔案,沒有分析失敗。
您可以使用腳本快速簡單概覽設計故障的計時分析結果。如果您將腳本儲存在名為 failing_clock_domains.tcl 的檔案中,請使用下列命令來執行。
quartus_sta --report_script=failing_clock_domains.tcl <project name> [-c <revision name>]
以下是腳本在分析失敗時產生的表格範例。表格包括最壞情況的鬆懈、完全負松損 (TNS)、頻率名稱、發生故障的作業狀態,以及失敗分析類型。
頻率域故障計時
+--------+---------------+------------+-----------------------+-----------------+
; Slack ; End Point TNS ; Clock ; Operating conditions ; Timing analysis ;
+--------+---------------+------------+-----------------------+-----------------+
; -0.113 ; -0.321 ; IF_RXCLK ; Slow 1100mV 85C Model ; Setup ;
; -0.098 ; -0.223 ; core_clk ; Fast 1100mV 0C Model ; Hold ;
+--------+---------------+------------+-----------------------+-----------------+
複製並貼上下列 TCL 代碼,並將它儲存在檔案中以使用腳本。
# 報告設計是否具有負鬆懈的頻率網域。 # 如果有負鬆懈的頻率網域,請將這些資訊放進 表格中,然後寫入檔案。 # 如果適當 設定output_file_name [get_current_revision].failing_clock_domains套件需要架構,請在此處變更檔案名稱 ::矩陣 套件需要報告 # 建立對照表,以掌握failing_paths_matrix設定的故障路徑資訊 [::struct::矩陣]; $failing_paths_矩陣新增欄 5 # 必須針對所有操作條件設定執行分析all_operating_conditions_col [get_available_operating_conditions] # 針對每個頻率域集執行這些類型的分析 analysis_list [清單「設定」「按住」「復原」「移除」]# 穿過所有操作條件 foreach_in_collection operating_conditions_obj $all_操作_conditions_col # 設定作業狀態, 更新計時網路清單 set_operating_conditions $operating_conditions_obj update_timing_netlist # 取得操作條件的英文字母名稱 設定operating_conditions_display_name [get_operating_conditions_info -display_name $operating_conditions_obj] # analysis_type $analysis 如果 必須列印分析 類型analysis_display_name [字串$analysis_輸入] # 取得所有頻率域 集的相關資訊,clock_domain_info_list [get_clock_domain_info -${analysis_type[] # 穿過所有的頻率領域,然後拔出任何具有 負鬆懈功能 的domain_info $clock_domain_info_list \ # domain_info有頻率名稱、它的鬆懈,以及 TNS。 # 摽取這些。 foreach { clock_name鬆懈endpoint_tns edge_tns = $domain_info { break ® # 如果鬆懈是負的, 如果 { 0 > $slack \ { $failing_paths_matrix 新增一排 [清單 $slack $endpoint_tns $clock_name \ $operating_conditions_display_name $analysis_display_name] [ _ # 完成 所有頻率網域以進行特定 # 計時分析 (設定, 握住等 ) # 完成針對特定操作 # 狀況的所有分析類型 ─ 完成所有操作條件 # 準備寫出附有結果摘要的檔 #如果對照表中有任何行,則有路徑導致時間失效。 # 我們必須使用這些資訊列印表格。如果 表格中沒有 #行,則沒有路徑故障的時間,因此 ,如果 { 0 == [$failing_paths_矩陣行] \ { # 列印出一條快速訊息 ,post_message「沒有頻率領域故障計時 」##如果檔案開啟時發生錯誤,請列印一則訊息,表示 #否則, 說 如果 { [捕捉 { 開啟 { open $output_file_name w = fh] [ { post_message - 類型錯誤「無法開啟檔案:$fh」,則沒有功能變數名稱故障 的時間 。否則 { 將$fh「沒有頻率網域故障計時」 抓到 { 關閉$fh $failing_ paths_matrix 排序的對照表行 # 排序最差的鬆懈是第 一排 -增加 0 # 放在接頭排 $failing_paths_矩陣插入行 0[清單「Slack」「End Point TNS」「時鐘」 \ 「操作條件」「計時分析 」]#我們需要一個定義的樣式來列印結果表 擷取 {:report:rmstyle basicrpt = ::report::d efstyle basicrpt {cap_rows 1\\ 資料 集 [分割「[字串重複」[列];]] 上一組 [分頭」 [字串重複」+ - " [列]]+」] 下組 [top get]topcapsep set [top get] topdata set [資料取得] 頂端啟 用 topcapsep 啟用 底部啟用 tcaption $cap_rows [ # 建立報告, 設定列有一個填充空間, 並 # 列印出矩陣與指定格式 的捕獲 { r destroy \:report::report::report:report r 5 style 基本 支援{set col 0 \ $col < [r 列]\ \ incr col \ { r pad $col兩個「」 \ post_message「時鐘網域故障計時\n[r printmatrix $failing_paths_matrix]」# 如果 { [捕捉 { 開啟 $output_file_name w [ fh] , 將報告儲存到檔案中 { post_message 類型錯誤「無法開啟檔案:$fh」[ 其他 { 將$fh「頻率域故障計時 」r printmatrix2 通道 $failing_paths_矩陣$fh擷[無法開啟檔案 :$fh $fh」[ 其他 \ 將$fh「頻率領域故障計時」r printmatrix2 通道 $failing_paths_矩陣$fh擷擷