0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何追溯同一時鐘域內(nèi)partial false path的來源

算法與數(shù)據(jù)結(jié)構(gòu) ? 來源:XILINX開發(fā)者社區(qū)微信公眾 ? 作者:XILINX開發(fā)者社區(qū)微 ? 2021-08-23 11:31 ? 次閱讀

隨著設(shè)計復(fù)雜度和調(diào)用IP豐富度的增加,在調(diào)試時序約束的過程中,用戶常常會對除了自己設(shè)定的約束外所涉及的繁雜的時序約束感到困惑而無從下手。舉個例子,我的XDC里面并沒有指定set_false_path,為什么有些路徑在分析時忽略了?我怎么去定位這些約束是哪里設(shè)定的?

事實上,Vivado集成設(shè)計環(huán)境提供了很多輔助工具來協(xié)助用戶完成時序約束的分析。

本文結(jié)合一個具體案例,闡述了如何追溯同一時鐘域內(nèi)partial false path的來源,希望為開發(fā)者的設(shè)計調(diào)試提供一些技巧和竅門。

首先來看問題。

在此設(shè)計中,當(dāng)用report clock interaction查看時鐘關(guān)系時,注意到不少單時鐘域被標(biāo)注成了partial false path。對于一個約束文件眾多,約束較為復(fù)雜的設(shè)計,如何進一步推斷partial false path有哪些路徑,是被哪些約束覆蓋了呢?

以其中的一個時鐘域GTYE4_CHANNEL_RXOUTCLK_7為例:

Step1:關(guān)閉merging timing exceptions

運行Tcl命令讓時序工具不要合并時序異常約束。

config_timing_analysis -merge_exceptions false

要注意的是,這種模式會導(dǎo)致更長的運行時間和更大的內(nèi)存占用,因此不推薦默認(rèn)情況下將時序工具保持在此模式下。

調(diào)試完成后,要恢復(fù)到默認(rèn)模式,請將-merge_exceptions 的值設(shè)置為 True。

你可以用report_config_timing來報告exception merge的情況。

f34e4816-0210-11ec-9bcf-12bb97331649.png

Step2:產(chǎn)生詳細(xì)的時序路徑報告

如果你只是要快速瀏覽路徑的起始元件,可運行以下Tcl命令:

join [get_timing_paths -max_paths 100 -user_ignored -from [get_clocks GTYE4_CHANNEL_RXOUTCLK_7] -to [get_clocks GTYE4_CHANNEL_RXOUTCLK_7]]

返回會分行顯示partial false path的startpoint和endpoint。

{gen_die_comm_top[1].leda_die_comm_top_int/gen_cmac[3].u_hard_caui4_top_wrapper_inst/u_cmac_usplus_0/inst/i_cmac_usplus_0_cmac_cdc_sync_gt_txresetdone_int3/s_out_d4_reg/C --》 gen_die_comm_top[1].leda_die_comm_top_int/gen_cmac[3].u_hard_caui4_top_wrapper_inst/u_cmac_usplus_0/inst/i_cmac_usplus_0_top/obsibdaaf4ker2wujpra0sjb/RX_SERDES_RESET[0]}

{gen_die_comm_top[1].leda_die_comm_top_int/gen_cmac[3].u_hard_caui4_top_wrapper_inst/u_cmac_usplus_0/inst/i_cmac_usplus_0_cmac_cdc_sync_gt_txresetdone_int3/s_out_d4_reg/C --》 gen_die_comm_top[1].leda_die_comm_top_int/gen_cmac[3].u_hard_caui4_top_wrapper_inst/u_cmac_usplus_0/inst/i_cmac_usplus_0_top/obsibdaaf4ker2wujpra0sjb/RX_SERDES_RESET[3]}

{gen_die_comm_top[1].leda_die_comm_top_int/gen_cmac[3].u_hard_caui4_top_wrapper_inst/u_cmac_usplus_0/inst/i_cmac_usplus_0_cmac_cdc_sync_gt_txresetdone_int3/s_out_d4_reg/C --》 gen_die_comm_top[1].leda_die_comm_top_int/gen_cmac[3].u_hard_caui4_top_wrapper_inst/u_cmac_usplus_0/inst/i_cmac_usplus_0_top/obsibdaaf4ker2wujpra0sjb/RX_SERDES_RESET[2]}

{gen_die_comm_top[1].leda_die_comm_top_int/gen_cmac[3].u_hard_caui4_top_wrapper_inst/u_cmac_usplus_0/inst/i_cmac_usplus_0_cmac_cdc_sync_gt_txresetdone_int3/s_out_d4_reg/C --》 gen_die_comm_top[1].leda_die_comm_top_int/gen_cmac[3].u_hard_caui4_top_wrapper_inst/u_cmac_usplus_0/inst/i_cmac_usplus_0_top/obsibdaaf4ker2wujpra0sjb/RX_SERDES_RESET[1]}

為了得到我們所需的更詳細(xì)信息,可在Clock Interaction Report表格中,選中GTYE4_CHANNEL_RXOUTCLK_7這個時鐘域,右鍵菜單選擇Report Timing,

并且在設(shè)置對話框的Advanced標(biāo)簽卡中勾選Report user ignored paths選項。

對應(yīng)的Tcl命令為:

report_timing -from [get_clocks GTYE4_CHANNEL_RXOUTCLK_7] -to [get_clocks GTYE4_CHANNEL_RXOUTCLK_7] -delay_type min_max -max_paths 10 -sort_by group -input_pins -routable_nets -user_ignored -name timing_3

當(dāng)然,你可以根據(jù)需要增大max_paths的數(shù)目,以便更完整地包含所有路徑。

運行結(jié)果如下圖,可以看到,除了常規(guī)的時序路徑信息,Exception一列還額外羅列了約束ID。

f3ac0384-0210-11ec-9bcf-12bb97331649.png

Step3:查找約束ID

這個ID反映的是Constraint position,我們可以打開Timing Constraints窗口,非常直觀方便地定位這個ID所對應(yīng)的約束語句。

Timing Constraints窗口僅對Synthesized Design或Implemented Design適用。你可以通過以下三種方式之一找到其入口(截圖匹配Vivado 2020.2版本):

Open Synthesized/Implemented Design,選擇菜單Windows 》 Timing Constraints

Open Synthesized Design,選擇Flow Navigator里Synthesized Design部分的Edit Timing Constraints

Open Implemented Design,選擇Flow Navigator里Implemented Design部分的Edit Timing Constraints

打開后,在All Constraints子窗口下拉找到Position一列為643的約束語句,如圖所示:

f46db506-0210-11ec-9bcf-12bb97331649.png

選中此行約束,可以看到右上可視化表格的同條約束也自動被選中,向右拉到Source File一列可以看到約束所在的XDC文件,或者在All Constraints窗口上翻到此約束所在的層次,同樣會列出XDC文件的具體信息。

如果你偏好Tcl模式,也可以用write_xdc導(dǎo)出帶有ID的所有時序約束。

write_xdc -type timing -write_id timing.xdc

不過-write_id選項僅在2020.2及之后版本才支持。

至此,我們已經(jīng)定位了partial false path的路徑細(xì)節(jié)及約束來源。

如前所述,調(diào)試完約束后,請將-merge_exceptions設(shè)回默認(rèn)值true,以免對運行時間及內(nèi)存產(chǎn)生負(fù)面影響。

文中的方式可以應(yīng)用到所有諸如此類“哪些約束覆蓋了此路徑“的疑問解答上,希望對各位開發(fā)者的時序調(diào)試有所幫助。

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • True
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    11984
  • TCL
    TCL
    +關(guān)注

    關(guān)注

    10

    文章

    1735

    瀏覽量

    88742
  • 集成設(shè)計
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    7535
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    815

    瀏覽量

    66722

原文標(biāo)題:開發(fā)者分享 | 約束調(diào)試案例分析-如何判斷路徑的 timing exception 約束來自哪里?

文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    FPGA設(shè)計中有多個時鐘時如何處理?

    FPGA設(shè)計中有多個時鐘時如何處理?跨時鐘的基本設(shè)計方法是:(1)對于單個信號,使用雙D觸發(fā)器在不同時鐘
    發(fā)表于 02-24 15:47

    【時序約束】和阿東起學(xué)習(xí)時序約束之異步時鐘約束 set_false_path

    總得來說,FALSE PATH就是我們在進行時序分析時,不希望工具進行分析的那些路徑。般不需要工具時序分析的路徑指的是異步的路徑,異步路徑就是指的不同時鐘
    發(fā)表于 06-26 23:54

    【時序約束】和阿東起學(xué)習(xí)時序約束之異步時鐘約束 set_false_path

    總得來說,FALSE PATH就是我們在進行時序分析時,不希望工具進行分析的那些路徑。般不需要工具時序分析的路徑指的是異步的路徑,異步路徑就是指的不同時鐘
    發(fā)表于 06-27 00:00

    【時序約束】關(guān)于設(shè)置FALSE PATH

    總得來說,FALSE PATH就是我們在進行時序分析時,不希望工具進行分析的那些路徑。般不需要工具時序分析的路徑指的是異步的路徑,異步路徑就是指的不同時鐘
    發(fā)表于 06-27 06:34

    時鐘時鐘約束介紹

    解釋了什么時候要用到FALSE PATH: 1.從邏輯上考慮,與電路正常工作不相關(guān)的那些路徑,比如測試邏輯,靜態(tài)或準(zhǔn)靜態(tài)邏輯。 2. 從時序上考慮,我們在綜合時不需要分析的那些路徑,比如跨越異步時鐘
    發(fā)表于 07-03 11:59

    為什么Vivado沒有在CCIO的同一時鐘區(qū)域選擇MMCM?

    問候!我正在使用Virtex7 / XC7V2000T / ***1925。我有兩個clcoks,pipe3_clk和ulpi_clk,連接到同一時鐘區(qū)域的兩個CCIO,X1Y7。但Vivado在
    發(fā)表于 07-16 14:18

    同步從時鐘到另時鐘的多位信號怎么實現(xiàn)?

    你好,我在Viv 2016.4上使用AC701板。我需要同步從時鐘到另時鐘的多位信號
    發(fā)表于 08-17 07:48

    基于FALSE PATH的設(shè)置

    總得來說,FALSE PATH就是我們在進行時序分析時,不希望工具進行分析的那些路徑。般不需要工具時序分析的路徑指的是異步的路徑,異步路徑就是指的不同時鐘
    發(fā)表于 09-19 10:46 ?0次下載
    基于<b class='flag-5'>FALSE</b> <b class='flag-5'>PATH</b>的設(shè)置

    硬件設(shè)計中教你如何正確的約束時鐘

    的"Partial False Path (unsafe)"方框,那你應(yīng)該是沒有正確地對異步時鐘約束。如果你的設(shè)計中有大量的跨時鐘
    的頭像 發(fā)表于 07-15 15:35 ?6555次閱讀

    如何判斷路徑的timing exception約束

    ,為什么有些路徑在分析時忽略了?我怎么去定位這些約束是哪里設(shè)定的?本文結(jié)合個具體案例,闡述了如何追溯同一時鐘內(nèi)
    的頭像 發(fā)表于 08-02 08:03 ?1477次閱讀
    如何判斷路徑的timing exception約束

    CDC跨時鐘的基礎(chǔ)概念

    時鐘clock domain:以寄存器捕獲的時鐘來劃分時鐘。 單時鐘
    的頭像 發(fā)表于 08-29 15:11 ?2534次閱讀

    CDC跨時鐘的基礎(chǔ)概念介紹

    時鐘clock domain:以寄存器捕獲的時鐘來劃分時鐘。單時鐘
    的頭像 發(fā)表于 12-26 15:21 ?1803次閱讀

    時鐘CDC之全面解析

    些較為簡單的數(shù)字電路中,只有時鐘,即所有的觸發(fā)器都使用同一時鐘,那么我們說這個電路中只有
    的頭像 發(fā)表于 03-15 13:58 ?3882次閱讀

    STA學(xué)習(xí)記錄-時鐘定義

    STA的準(zhǔn)備工作包括:設(shè)定時鐘、指定IO時序特性、指定false path和multicycle path
    的頭像 發(fā)表于 05-26 17:20 ?1072次閱讀
    STA學(xué)習(xí)記錄-<b class='flag-5'>時鐘</b>定義

    如何做條合格的path同一path在物理設(shè)計不同階段的變化

    Delay值是多少才算合格呢?這篇開始講解路徑(Path)的概念,以及衡量Path Delay是否合格的標(biāo)準(zhǔn)----建立時間(setup time)和保持時間(hold time)。
    的頭像 發(fā)表于 06-27 14:12 ?1265次閱讀
    如何做<b class='flag-5'>一</b>條合格的<b class='flag-5'>path</b>?<b class='flag-5'>同一</b>條<b class='flag-5'>path</b>在物理設(shè)計不同階段的變化