精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Vivado時序約束中詳細的Tcl命令

454398 ? 來源:科學計算technomania ? 作者:貓叔 ? 2020-11-16 15:07 ? 次閱讀

Vivado時序約束中Tcl命令的對象及屬性

在前面的章節中,我們用了很多Tcl的指令,但有些指令并沒有把所有的參數多列出來解釋,這一節,我們就把約束中的Tcl指令詳細講一下。

我們前面講到過get_pins和get_ports的區別,而且我們也用過get_cells、get_clocks和get_nets這幾個指令,下面就通過一張圖直觀展現它們的區別。


get_clocks后面的對象是我們之前通過create_clocks或者create_generated_clocks創建的時鐘,不在硬件上直接映射。

我們再來看下各個命令的屬性。

1. port

我們可以通過Tcl腳本查看port的所有屬性,比如上面的wave_gen工程中,有一個port是clk_pin_p,采用如下腳本:

set inst [get_ports clk_pin_p]
report_property $inst

顯示如下:

get_ports的使用方法如下:

# 獲取所有端口
get_ports *

# 獲取名稱中包含data的端口
get_ports *data*

# 獲取所有輸出端口
get_ports -filter {DIRECTION == OUT}

# 獲取所有輸入端口
all_inputs

# 獲取輸入端口中名字包含data的端口
get_ports -filter {DIRECTION == IN} *data*

# 獲取總線端口
get_ports -filter {BUS_NAME != ""}

2. cell

按照上面的同樣的方式,獲取cell的property,如下:

get_cells的使用方法如下:

# 獲取頂層模塊
get_cells *

# 獲取名稱中包含字符gen的模塊
get_cells *gen*

# 獲取clk_gen_i0下的所有模塊
get_cells clk_gen_i0/*

# 獲取觸發器為FDRE類型且名稱中包含字符samp
get_cells -hier filter {REF_NAME == FDRE} *samp*

# 獲取所有的時序單元邏輯
get_cells -hier -filter {IS_SEQUENTIAL == 1}

# 獲取模塊uart_rx_i0下兩層的LUT3
get_cells -filter {REF_NAME == LUT3} *uart_tx_i0/*/*

3. pin

獲取pin的property,如下:

get_pins的使用方法如下:

# 獲取所有pins
get_pins *

# 獲取名稱中包含字符led的引腳
get_pins -hier -filter {NAME =~ *led*}

# 獲取REF_PIN_NAME為led的引腳
get_pins -hier -filter {REF_PIN_NAME == led}

# 獲取時鐘引腳
get_pins -hier -filter {IS_CLOCK == 1}

# 獲取名稱中包含cmd_parse_i0的使能引腳
get_pins -filter {IS_ENABLE == 1} cmd_parse_i0/*/*

# 獲取名稱中包含字符cmd_parse_i0且為輸入的引腳
get_pins -filter {DIRECTION == IN} cmd_parse_i0/*/*

4. net

獲取pin的property,如下:

get_nets的使用方法如下:

# 獲取所有nets
get_nets *

# 獲取名稱中包含字符send_resp_val的網線
get_nets -hier *send_resp_val*
get_nets -filter {NAME =~ *send_resp_val*} -hier

# 獲取穿過邊界的同一網線的所有部分
get_nets {resp_gen_i0/data4[0]} -segments

# 獲取模塊cmd_parse_i0下的所有網線
get_nets -filter {PARENT_CELL == cmd_parse_i0} -hier

# 獲取模塊cmd_parse_i0下的名稱中包含字符arg_cnt[]的網線
get_nets -filter {PARENT_CELL == cmd_parse_i0} -hier *arg_cnt[*]

這5個tcl指令的常用選項如下表:

命令 -hierarchy -filter -of_objects -regexp -nocase
get_cells
get_nets
get_pins
get_ports
get_clocks

這5個Tcl命令對應的5個對象之間也有著密切的關系,下圖所示的箭頭的方向表示已知箭頭末端對象可獲取箭頭指向的對象。


以wave_gen中的clk_gen_i0模塊為例來說明上面的操作:

# 獲取模塊的輸入引腳
get_pins -of [get_cells {clk_gen_i0/clk_core_i0}] -filter {DIRECTION == IN}

# 已知引腳名獲取所在模塊
get_cells -of [get_pins clk_gen_i0/clk_core_i0/clk_in1_n]

# 已知模塊名獲取與該模塊相連的網線
get_nets -of [get_cells {clk_gen_i0/clk_core_i0}]

# 已知引腳名獲取與該引腳相連的網線
get_nets -of [get_pins clk_gen_i0/clk_core_i0/clk_rx]

# 已知時鐘引腳獲取時鐘引腳對應的時鐘
get_clocks -of [get_pins clk_gen_i0/clk_core_i0/clk_rx]

需要注意的是:

① -hier不能和層次分隔符“/”同時使用,但“/”可出現在-filter中

② 可根據屬性過濾查找目標對象

③ -filter中的屬性為:“==”(相等)、“!=”(不相等)、"=~"(匹配)、"!~"(不匹配),若有多個表達式,其返回值為bool類型時,支持邏輯操作(&& ||)

編輯:hfy


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • TCL
    TCL
    +關注

    關注

    10

    文章

    1715

    瀏覽量

    88471
  • 時序約束
    +關注

    關注

    1

    文章

    115

    瀏覽量

    13409
  • Vivado
    +關注

    關注

    19

    文章

    808

    瀏覽量

    66329
收藏 人收藏

    評論

    相關推薦

    每次Vivado編譯的結果都一樣嗎

    tool inputs? 對大多數情況來說,Vivado編譯的結果是一樣的,但要保證下面的輸入是一樣的: Design sources Constraints Tcl scripts and command
    的頭像 發表于 11-11 11:23 ?191次閱讀
    每次<b class='flag-5'>Vivado</b>編譯的結果都一樣嗎

    常用時序約束使用說明-v1

    為了防止約束失敗,我們在Tcl輸入框驗證,沒有告警或者錯誤說明約束的寫法是正確的set_max_delay 5.00 -from [get_cells key2_detect_ins
    的頭像 發表于 11-01 11:06 ?138次閱讀

    Vivado使用小技巧

    有時我們對時序約束進行了一些調整,希望能夠快速看到對應的時序報告,而又不希望重新布局布線。這時,我們可以打開布線后的dcp,直接在Vivado Tc
    的頭像 發表于 10-24 15:08 ?213次閱讀
    <b class='flag-5'>Vivado</b>使用小技巧

    華為設備的OSPF命令詳解

    OSPF網絡。這篇文章將詳細介紹華為設備的OSPF命令,包括基本配置、路由策略、鄰居關系和故障排除等方面,幫助讀者全面了解和掌握這些命令
    的頭像 發表于 08-12 18:13 ?1439次閱讀

    深度解析FPGA時序約束

    建立時間和保持時間是FPGA時序約束兩個最基本的概念,同樣在芯片電路時序分析也存在。
    的頭像 發表于 08-06 11:40 ?561次閱讀
    深度解析FPGA<b class='flag-5'>中</b>的<b class='flag-5'>時序</b><b class='flag-5'>約束</b>

    SDRAM的active命令介紹

    在向SDRAM 的任何行發出 READ或 WRITE 命令之前,必須先打開該行。這是通過 ACTIVE 命令完成的。ACTIVE 命令的目的是打開或者說激活(active)bank
    的頭像 發表于 07-29 09:53 ?400次閱讀
    SDRAM<b class='flag-5'>中</b>的active<b class='flag-5'>命令</b>介紹

    FPGA 高級設計:時序分析和收斂

    Static Timing Analysis,簡稱 STA。它可以簡單的定義為:設計者提出一些特定的時序要求(或者說是添加特定的時序約束),套用特定的時序模型,針對特定的電路進行分析。
    發表于 06-17 17:07

    Xilinx FPGA編程技巧之常用時序約束詳解

    今天給大俠帶來Xilinx FPGA編程技巧之常用時序約束詳解,話不多說,上貨。 基本的約束方法 為了保證成功的設計,所有路徑的時序要求必須能夠讓執行工具獲取。最普遍的三種路徑以及
    發表于 05-06 15:51

    FPGA工程的時序約束實踐案例

    詳細的原時鐘時序、數據路徑時序、目標時鐘時序的各延遲數據如下圖所示。值得注意的是數據路徑信息,其中包括Tco延遲和布線延遲,各級累加之后得到總的延遲時間。
    發表于 04-29 10:39 ?679次閱讀
    FPGA工程的<b class='flag-5'>時序</b><b class='flag-5'>約束</b>實踐案例

    時序約束實操

    添加約束的目的是為了告訴FPGA你的設計指標及運行情況。在上面的生成約束之后,在Result àxx.sdc中提供約束參考(請注意該文件不能直接添加到工程,需要熱復制到別的指定目錄或
    的頭像 發表于 04-28 18:36 ?2195次閱讀
    <b class='flag-5'>時序</b><b class='flag-5'>約束</b>實操

    Xilinx FPGA編程技巧之常用時序約束詳解

    ,這一約束降低工具的布線難度而又不會影響時序性能。這種約束通常用在有時鐘使能控制的同步元件路徑。 必須說明的是上圖Enable信號的產生周期必須大于等于n*PERIOD,且每
    發表于 04-12 17:39

    時序電路的分類 時序電路的基本單元電路有哪些

    時序電路可以分為同步時序電路和異步時序電路。接下來,我們將詳細討論時序電路的分類以及其基本單元電路。 一、同步
    的頭像 發表于 02-06 11:25 ?2343次閱讀

    Vivado時序問題分析

    有些時候在寫完代碼之后呢,Vivado時序報紅,Timing一欄有很多時序問題。
    的頭像 發表于 01-05 10:18 ?1927次閱讀

    FPGA物理約束之布線約束

    IS_ROUTE_FIXED命令用于指定網絡的所有布線進行固定約束。進入Implemented頁面后,Netlist窗口如圖1所示,其中Nets文件展開后可以看到工程中所有的布線網絡。
    的頭像 發表于 12-16 14:04 ?1147次閱讀
    FPGA物理<b class='flag-5'>約束</b>之布線<b class='flag-5'>約束</b>

    SDC約束文件中常見的基礎命令總結

    設計內部包含多個時鐘,但是所有時鐘都通過一個時鐘源分頻得到,這種是同步時鐘,相位都是固定的。工具在分析時序時,會自動計算兩時鐘信號相鄰最近的相位的時間差,作為STA檢查的Require Time。
    的頭像 發表于 12-04 12:21 ?1761次閱讀
    SDC<b class='flag-5'>約束</b>文件中常見的基礎<b class='flag-5'>命令</b>總結