Quartus® II Tcl 範例:報告邏輯等級

author-image

作者

當您正在優化設計時,檢視收銀機之間邏輯等級的資訊會很有用。下列腳本會產生逗號分離值 (。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
    [
[

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