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

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

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

如何判斷路徑的timing exception約束

吳湛 ? 來源:哎呀2015 ? 作者:哎呀2015 ? 2022-08-02 08:03 ? 次閱讀

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

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

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

首先來看問題。

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

以其中的一個(gè)時(shí)鐘域GTYE4_CHANNEL_RXOUTCLK_7為例:

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

運(yùn)行Tcl命令讓時(shí)序工具不要合并時(shí)序異常約束。

config_timing_analysis -merge_exceptions false

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

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

你可以用report_config_timing來報(bào)告exception merge的情況。

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

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

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

返回會分行顯示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這個(gè)時(shí)鐘域,右鍵菜單選擇Report Timing,

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

對應(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ù)目,以便更完整地包含所有路徑。

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

Step3:查找約束ID

這個(gè)ID反映的是Constraint position,我們可以打開Timing Constraints窗口,非常直觀方便地定位這個(gè)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的約束語句,如圖所示:

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

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

write_xdc -type timing -write_id timing.xdc

不過-write_id選項(xiàng)僅在2020.2及之后版本才支持。

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

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

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

審核編輯:郭婷

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

    關(guān)注

    5

    文章

    1610

    瀏覽量

    149246
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    2966

    瀏覽量

    73812
收藏 人收藏

    評論

    相關(guān)推薦

    常用時(shí)序約束使用說明-v1

    state到cnt的路徑打印10條路徑,以第一條為例report_timing -from key2_detect_inst/state* -file timing_test.txt
    的頭像 發(fā)表于 11-01 11:06 ?108次閱讀

    Xilinx FPGA編程技巧之常用時(shí)序約束詳解

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

    時(shí)序約束實(shí)操

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

    Xilinx FPGA的約束設(shè)置基礎(chǔ)

    LOC約束是FPGA設(shè)計(jì)中最基本的布局約束和綜合約束,能夠定義基本設(shè)計(jì)單元在FPGA芯片中的位置,可實(shí)現(xiàn)絕對定位、范圍定位以及區(qū)域定位。
    發(fā)表于 04-26 17:05 ?1053次閱讀
    Xilinx FPGA的<b class='flag-5'>約束</b>設(shè)置基礎(chǔ)

    Xilinx FPGA編程技巧之常用時(shí)序約束詳解

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

    限流型斷路器與限載型斷路器的區(qū)別

    原理和應(yīng)用方面存在一些重要的區(qū)別。 1. 原理 限流型斷路器(也稱為熔斷器)根據(jù)電流的大小和時(shí)間來判斷斷開電路,以保護(hù)電線和設(shè)備免受過大電流的傷害。熔斷器由熔絲和基座兩部分組成。熔絲是一個(gè)金屬絲,當(dāng)電流超過熔絲的額定值時(shí),熔
    的頭像 發(fā)表于 02-05 15:51 ?642次閱讀

    如何判斷限流斷路器能保護(hù)到微斷?能否從限流曲線判斷

    如何判斷限流斷路器能保護(hù)到微斷?能否從限流曲線判斷? 限流斷路器(也稱為過載保護(hù)器)是一種電氣保護(hù)設(shè)備,用于保護(hù)電氣系統(tǒng)免受過流和過載損害。在電氣系統(tǒng)中,流經(jīng)導(dǎo)線和設(shè)備的電流必須控制在
    的頭像 發(fā)表于 02-05 15:23 ?518次閱讀

    如何判斷電路故障是短路還是斷路

    在日常生活中,我們常常會遇到電路故障的情況,比如電源無法正常工作、電器無法正常運(yùn)行等。了解電路故障的類型,特別是短路和斷路兩種情況的區(qū)別,是解決電路故障的第一步。本文將詳細(xì)介紹如何判斷電路故障是短路
    的頭像 發(fā)表于 01-16 09:28 ?4097次閱讀

    電流為0是短路還是斷路 短路和斷路怎么判斷

    短路情況則與之相反。在短路中,電流會選擇以最低阻抗路徑流動,并繞過原本應(yīng)經(jīng)過的元件。這會導(dǎo)致電流急劇增大,可能造成電路過載、過熱和其他損壞。
    的頭像 發(fā)表于 01-11 14:50 ?7506次閱讀

    什么是短路和斷路 電路短路和斷路的區(qū)別

    短路和斷路是電路中常見的兩種故障模式。短路指兩個(gè)或多個(gè)電路元件之間直接的接觸,使電流繞過原本應(yīng)經(jīng)過的元件而由其他路徑流動。
    的頭像 發(fā)表于 01-11 14:23 ?7452次閱讀

    零線斷路故障的原因/判斷方法及預(yù)防措施

    的相電壓過高,可能燒毀電器設(shè)備,有的相電壓過低,電器設(shè)備無法正常使用。   零線斷路的情況判斷   (1)在單相供電范圍內(nèi)發(fā)生零線斷路,故障范圍內(nèi)的電燈不亮,其他電器不能使用,這時(shí)用氖燈驗(yàn)電筆驗(yàn)
    發(fā)表于 12-21 07:29

    介紹三種芯片timing model

    今天想來聊一聊timing model。Top層在做STA的時(shí)候,為了速度的考量,有的時(shí)候不會把所有block都做flatten(展平化)處理
    的頭像 發(fā)表于 12-06 14:03 ?708次閱讀

    物理約束實(shí)踐:I/O約束

    I/O約束(I/O Constraints)包括I/O標(biāo)準(zhǔn)(I/OStandard)約束和I/O位置(I/O location)約束
    的頭像 發(fā)表于 11-18 16:42 ?1013次閱讀
    物理<b class='flag-5'>約束</b>實(shí)踐:I/O<b class='flag-5'>約束</b>

    CBS多機(jī)器人路徑規(guī)劃實(shí)例講解

    實(shí)例講解 以下將通過一個(gè)簡單的實(shí)例講解CBS的基本過程,實(shí)例如圖2所示。 圖2 初始和目標(biāo)狀態(tài) CBS的搜索過程如圖3所示。 圖3 CBS搜索過程 CBS開始時(shí)沒有沖突約束,每個(gè)機(jī)器人按照各自的路徑
    的頭像 發(fā)表于 11-17 16:44 ?685次閱讀
    CBS多機(jī)器人<b class='flag-5'>路徑</b>規(guī)劃實(shí)例講解

    FPGA時(shí)序約束--基礎(chǔ)理論篇

    和時(shí)鐘偏差組成的。 二、時(shí)序路徑 時(shí)序路徑是指從FPGA輸入到輸出的所有邏輯路徑組成的路徑。當(dāng)存在時(shí)序路徑時(shí),需要考慮時(shí)序
    發(fā)表于 11-15 17:41