報告邏輯等級

author-image

作者

當您正在關閉設計的時間時,瞭解故障路徑中有多少等級的邏輯通常很有用。時序分析器會在您報告路徑的時間時顯示邏輯等級,但是沒有預設報告會列出一組路徑的邏輯等級。這個設計範例定義了一個自訂程式,您可以用來建立報告,顯示路徑集的邏輯等級。

自訂程式支援與report_timing指令相同的參數。您應該使用與report_timing指令相同的自訂程式選項。自訂程式還支援另外三種選項:greater_than <value>、-less_than <value>和-file <report 檔案>。您可以使用 -greater_than 和 -less_than 選項來限制回報大於或低於特定邏輯等級的路徑。您可以使用檔案選項將報告寫入檔案。

自訂程式會顯示路徑邏輯等級之數,而時間最差是鬆懈。它未必會以最多等級的邏輯,在設計中顯示路徑。時間最差鬆懈的路徑並非一向是邏輯等級最多的道路,儘管這通常確實如此。

程式運作

自訂程式使用下列步驟。

  1. 取得符合報告條件的路徑清單
  2. 取得每條路徑的邏輯等級
  3. 在圖表中顯示邏輯與路徑資訊的等級

步驟 1:取得路徑清單

自訂程式使用get_timing_paths指令,該命令支援與report_timing命令相同的參數。您可以使用任何report_timing選項來控制時間分析。舉例來說,您可以將邏輯等級的報告限制在特定註冊名的路徑上。下列 Tcl 代碼顯示程式定義,並將所有參數傳遞給get_timing_paths指令。

proc report_levels_of_logic { args {
    
    # 如果 {
    [捕捉 { eval get_timing_paths $args [ paths_col] { {
        post_message類型錯誤 $paths_col 退貨 [ , 將所有參數直接傳遞至
get_timing_paths。

步驟 2:取得每條路徑的邏輯等級

使用迴圈在paths_col變數中的路徑集合上反復進行,並播取每個路徑的邏輯等級。將用於列印結果的 Tcl 矩陣資料結構中儲存路徑相關資訊。節省的資訊包括邏輯等級、路徑鬆懈,以及來源和目的地節點名稱。

foreach_in_collection path_obj $paths_col {

        # 路徑中有多少等級的邏輯?
        設定levels_of_logic [get_path_info -num_logic_levels $path_obj]
        
        # 將路徑資訊加入對照表中。
        $logic_level_matrix 新增行 [list\
            $levels_of_logic \
            [get_path_info -slack $path_obj] \
            [get_node_info -name [get_path_info -從 $path_obj]] \
            [get_node_info-name [get_path_info-到 $path_obj]]]
    

步驟 3:顯示圖表中的顯示路徑資訊

最後,顯示儲存在矩陣變數中的所有路徑資訊。此範例使用 Tcl 報告套件格式化對照表以列印出來。下列代碼在矩陣中新增標題列、定義報告的視覺風格、設定單元鋪墊並顯示報告。

# 放入接頭行
        $logic_level_矩陣插入行 0 \
            [列出「邏輯層級」「Slack」「從」「到
    
        」]#我們需要一種定義樣式來列印出結果
        表的擷取 {: 報告:rmstyle basicrpt =
        ::report::d efstyle basicrpt {{cap_rows 1\\ \
            資料集        [分割」[字串重複」[   列];"]
            上         一組 [分頭」 [字串重複 」+ - " [列]]+」]
            下      一組 [top get get]
            topcapsep   set [top get]
            topdata     set [資料取得]
            頂端         啟用
            topcapsep   啟用
            底部      啟用
            tcaption    $cap_rows
        [ #
        
        建立報告, 設定列有一個填充空間,
        並且 # 列印出矩陣與指定格式
        的摽取 { r destroy \
        ::report::report:report r 4 風格基本
        對於 { set col 0 { $col < [r 列]] { incr col ® {
            r pad $col 兩者「」
        \
        post_message「邏輯等級\n[r printmatrix $logic_level_矩陣]」

自訂程式

下列自訂程式的程式碼包含將報告寫入檔案的選項,並限制回報的路徑,除非邏輯等級大於或低於使用者指定值。

這些是您如何使用自訂程式的一些範例。

  • report_levels_of_logic -setup -greater_than 10-to [get_registers資料*] -npaths 1000
  • report_levels_of_logic -hold -from_clock core_50 -npaths 50 -file level.txt

若要使用自訂程式,請將以下 Tcl 代碼儲存在 report_levels_of_logic.tcl 的檔案中。然後在計時分析器 Tcl 提示 report_levels_of_logic.tcl 使用命令來源。從檔案採購定義自訂程式。然後,您可以使用新定義的命令report_levels_of_logic,直到您結束計時分析器。

套件需要 cmdline
套件需要結構::矩陣
式套件需要報告

proc report_levels_of_logic { args {

    設定選項
        { "less_than.arg" 「限制到低於此數位的路徑」\
        "greater_than.arg" "" 「限制在路徑上大於這個數位」\
        "file.arg""""輸出檔案名稱
        
    "[ array set
    opts [:cmdline::getKnoptions args $options]]

    # 確保用一些參數
    來呼叫程式如果 { [字串等於」$opts(less_than)]&&[字串等於""$opts(greater_than)]{ {
        post_message-類型警告「您必須指定一個數位值\
            代表-less_than或-greater_than」
        退貨
    。
    字串為雙$opts(less_than)] {
        post_message-類型警告「您必須指定一個數位值
            \for-less_than」
        退貨
    [ 如果 {
    !字串為雙$opts (greater_than)] {
        post_message類型警告「您必須指定一個數位值
            \for-greater_than」
        退貨
    ] #
    
    建立對照表,以掌握logic_levels_matrix所設定的故障路徑的相關資訊
    [::struct」:矩陣]
    $logic_level_matrix 新增列 4

    # 將所有未知的參數直接傳遞至get_timing_paths
    如果 { [捕捉 { eval get_timing_paths $args [ paths_col] \ { {
        post_message -輸入錯誤 $paths_col
        退貨
    ]
    
    # 請流覽計時路徑清單,取得
    有關
    邏輯等級foreach_in_collection path_obj $paths_col {
    
        # 假設將報告該路徑的資訊,除非
        #邏輯的等級超出指定範圍。
        設定include_path 1
        
        # 路徑中有多少等級的邏輯?
        設定levels_of_logic [get_path_info-num_logic_levels $path_obj]
        
        # 如果我們指定下界值,如果
        # 邏輯等級大於或等於如果 { 則不回報路徑
        ![字串等於「」$opts(less_than))]{
            如果 { $levels_of_logic >= $opts (less_than) { 設定 include_path
                0 = =
            #
        
        如果我們指定了上界線,如果
        # 邏輯層級低於或等於上界
        ,如果 {![字串等於「」$opts(greater_than))]{
            如果 { $levels_of_logic <= $opts(greater_than) \
                { 設定為 include_path 0
            = =
        #
        
        如果路徑的邏輯等級屬於我們的界線, 如果 {
        $include_path [ {
        
            $logic_level_matrix 新增行 [list \
                $levels_of_logic \
                [get_path_info -slack $path_obj] \
                [get_node_info-name [get_path_info─$path[get_node_info-name
                [get_path_info-to $path_obj]]
    # 完成從get_timing_paths的所有路徑
    
    #如果對照表中有任何行,路徑符合標準。
    # 我們必須使用這些資訊列印表格。
    如果 { 0 == [$logic_level_矩陣行] \
    
        # 沒有路徑符合條件
        # 列印出一條快速訊息
        ,post_message「沒有路徑符合報告邏輯等級的標準
        
        」#如果檔案開啟時出現錯誤,請列印一則訊息,表示
        #否則,請說沒有符合條件的途徑,
        如果 { ![字串等於「」$opts(檔案))]{
            如果 { [捕捉 { 開啟 $opts (檔案) w { fh] {
                { post_message類型錯誤「無法開啟檔案:$fh」[
            其他 \ 則 {
                將$fh「沒有路徑符合報告邏輯等級的標準」的摽摴摴撫播(無法開啟檔案:$fh $fh」){則以「沒有路徑符合報告邏輯等級的標準」
                來摧摴───$logic_
        level_矩陣插入行 0 \
            [列出「邏輯等級」「Slack」「從」「到
    
        」]#我們需要一種定義樣式來列印結果
        表的摽取 \:報告:rmstyle basicrpt =
        ::report::d efstyle basicrpt {{cap_rows 1\® {
            資料        集 [分割」[字串重複」[   列];"]
            上         一組 [分頭」 [字串重複 」+ - " [列]]+」]
            下      一組 [top get get]
            topcapsep   set [top get]
            topdata     set [資料取得]
            頂端         啟用
            topcapsep   啟用
            底部      啟用
            tcaption    $cap_rows
        [ #
        
        建立報告, 設定列有一個填充空間,
        並且 # 列印出矩陣與指定格式
        的摽取 { r destroy \
        ::report::report:report r 4 風格基本
        對於 { set col 0 \ { $col < [r columns]] { incr col ® {
            r pad $col 兩者「」 [ [ post_message
        「邏輯層級\n[r printmatrix $logic_level_矩陣
        
        ]」# 如果在 { 指定檔案名稱時,將報告儲存到檔案中
        ![字串等於「」$opts(檔案))]{
            如果 { [捕捉 { 開啟 $opts (檔案) w [ fh] [ {
                post_message類型錯誤 「無法開啟檔案:$fh」[
            其他 {
                將$fh「邏輯等級
                」r printmatrix2 頻道 $logic_level_matrix $fh擷 [開啟邏輯等級」r printmatrix2 頻道 $logic_level_矩陣$fh擷開檔
                :$fh $fh」。

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