吴忠躺衫网络科技有限公司

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

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

3天內不再提示

錯誤時鐘偏移計算導致錯誤時序收斂的解決方案

454398 ? 來源:XILINX技術社區 ? 作者:XILINX技術社區 ? 2020-12-24 11:16 ? 次閱讀

描述
本設計咨詢主要介紹一個錯誤的時鐘偏移計算導致錯誤時序收斂的問題。

出現問題的情況:

這可能會影響使用生成時鐘的設計,其具有以下特征:

  • 使用 Vivado 2018.2.x 及更早版本。
  • 用戶生成的時鐘沒有使用‘-master_clock’定義
  • 在同一時鐘網絡的并行分支上的層級引腳上創建的主時鐘或生成的時鐘連接至上述用戶生成的時鐘源引腳

在上述情況下,時序引擎可能會為生成的時鐘選擇錯誤的主時鐘,這可能會導致在路徑上報告的不正確時鐘偏移。

在 Vivado 2018.3 中,定時器使用正確的主時鐘,這會導致相同路徑上不同的時鐘偏移和不同的簽收時序。

注:如果用戶生成的時鐘用‘-master_clock’創建并指向正確的主時鐘,該問題就不會出現。

該問題的示例:

在本示例中,datapath 通過 LUT 循環回到相同的寄存器。寄存器和 LUT 都放在同一個 SLICE 中。

示例時鐘拓撲:

示例 Datapath 拓撲:

o4YBAF9uGVeAQmkPAADbwhMFxQM968.jpg

使用 Vivado 2018.2.x 及更早版本,在‘route_design’后使用正裕量報告上述路徑:

o4YBAF9uGVyAeJT2AAJVcCSrFZ8047.jpg

請注意,由于缺少源時鐘路徑,2.560nS 的路徑偏移過大。

由于選擇了錯誤的主時鐘進行時序分析,因此在工具選擇的主時鐘和用戶生成的時鐘之間沒有路徑,從而導致較大的時鐘偏移。

這將迫使路由器在路徑上通過一個較長的路由繞道來修復保持違規。

該路徑通過在 Vivado 2018.3 中重新加載路由后檢查點來顯示違規:

pIYBAF9uGWGAKD5-AAJQdLN_uoM605.jpg

在 Vivado 2018.3 中,由于可以計算源時鐘延遲,因此路徑偏移要小得多。

時鐘偏移會導致設置違規,這是由于在該路徑上為了修復 Vivado 2018.2.x 及更早版本中出現的保持違規而繞道了很長的路由路徑。

可能會出現問題的典型情況:

在本實例中,在層級引腳上創建的主時鐘不正確。

pIYBAF9uGWKACaodAACXrN4xRMQ659.jpg

有問題的時鐘約束來自輸入時鐘源選項被設置為“單端時鐘支持引腳(默認)”或“差分時鐘支持引腳”而 IP 時鐘輸入沒有連接至頂層輸入端口的時鐘向導。

####################################################################################

# Constraints from file : 'pfm_top_clkwiz_kernel_0.xdc'

####################################################################################

current_instance -quiet

current_instance pfm_top_i/static_region/slr1/base_clocking/clkwiz_kernel/inst

create_clock -period 10.000 [get_ports -scoped_to_current_instance clk_in1]

set_input_jitter [get_clocks -of_objects [get_ports -scoped_to_current_instance clk_in1]] 0.100

在時鐘向導輸入時鐘源設置為“全緩沖”或“無緩沖”時,層級引腳上沒有創建主時鐘。

確認:

上述問題由‘report_methodology’檢測報告。

建議始終運行“report_methodology”并處理報告的違規:
TIMING-6#1 Warning

No common primary clock between related clocks

The clocks pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/Q and microblaze_0_Clk are related (timed together) but they have no common primary clock. The design could fail in hardware. To find a timing path between these clocks, run the following command: report_timing -from [get_clocks pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/Q] -to [get_clocks microblaze_0_Clk]

Related violations:

TIMING-30#1 Warning

Sub-optimal master source pin selection for generated clock

The generated clock pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/Q has a sub-optimal master source pin selection, timing can be pessimistic

Related violations:

TIMING-36#1 Warning

Invalid Generated Clock due to missing edge propagation

There is no rising/falling edge propagation between master clock pfm_top_i/static_region/slr1/base_clocking/clkwiz_pcie/inst/clk_in1 to generated clock pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/Q

Related violations:

Vivado 2018.2.x 和 2018.3 中也會報告 TIMING-27 違規。

TIMING-27 檢查指向層級引腳上不正確的主時鐘定義,這可能會導致不安全的時序。
TIMING-27#1 Warning

Invalid primary clock on hierarchical pin

A primary clock pfm_top_i/static_region/slr1/base_clocking/clkwiz_kernel/inst/clk_in1 is created on an inappropriate internal pin pfm_top_i/static_region/slr1/base_clocking/clkwiz_kernel/inst/clk_in1. It is not recommended to create a primary clock on a hierarchical pin when its driver pin has a fanout connected to multiple clock pins

Related violations:

此外,在 Vivado 2018.2 中,‘report_clock_interaction’也會顯示不安全的時鐘對,但在 2018.3 版中不會:

o4YBAF9uGWWAPLoMAAENSe7QOBA796.jpg

‘check_timing’報告了一個在 2018.2.x 中生成的時鐘的問題:

pIYBAF9uGWeALFcSAACjqg4_mnA029.jpg

‘report_clock’報告 Vivado 為用戶生成的時鐘使用的實際主時鐘。

雖然時鐘 microblaze_0_Clk 傳播至所生成時鐘的源引腳,但‘report_clocks’會按照主時鐘報告 pfm_top_i/static_region/slr1/base_clocking/clkwiz_pcie/inst/clk_in1:

o4YBAF9uGWmAAJ-OAADWl0NRdVg523.jpg

Vivado 2018.2.x:
report_clocks pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/Q

Generated Clock : pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/Q

Master Source : pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/C

Master Clock : pfm_top_i/static_region/slr1/base_clocking/clkwiz_pcie/inst/clk_in1

Divide By : 8

Generated Sources : {pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/Q}

Vivado 2018.3:
report_clocks pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/Q

Generated Clock : pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/Q

Master Source : pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/C

Master Clock : microblaze_0_Clk

Divide By : 8

Generated Sources : {pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/Q}

解決方案
該問題將在 Vivado 2018.3 中修復。

出現該問題時,通常的解決方法是在創建用戶生成的時鐘時指定主時鐘名:
create_generated_clock -source [get_pins -filter REF_PIN_NAME=~C -of_objects [get_cells -hierarchical -filter {NAME =~ "*/u_jtag_proc/tck_i_reg*"}]] -divide_by 8 [get_pins -filter REF_PIN_NAME=~Q -of_objects [get_cells -hierarchical -filter {NAME =~ "*/u_jtag_proc/tck_i_reg*"}]] -master_clock microblaze_0_Clk

但在本示例設計中,最初的問題是沒有正確配置時鐘向導。

對于該設計,需要重新運行時鐘向導并糾正配置。

常見問題解答:

1) 該問題會影響 Vivado 的哪些版本?

該問題會影響 Vivado 2018.2 及更早版本。

2) 如果一個設計使用 2018.2 及更早 Vivado 版本符合時序要求,那用戶對時序覆蓋范圍應該有多大的信心?(如果他們不想升級至最新 Vivado 版本,即 2018.3)

該漏洞主要針對錯誤的/部分時鐘定義。因此,如果設計有適當的約束,并且符合時序要求,那就不應該有問題。

要進行完整性檢查,您可以運行以下命令并查找與時序相關的警告/重要警告。

  • 運行‘report_clock’命令并驗證 所有主時鐘(‘create_clock’約束)是否都在 I/O 端口上。
  • 運行‘report_method’命令并驗證在設計中是不是沒有 Timing-6、Timing-27、Timing-30 和 Timing-36 警告。
  • 建議使用‘master_clock’選項編輯‘generated_clock’約束。

注:請參閱 (UG903) 和 (UG835),了解更多詳情。

3) 在 Vivado 2018.3 中,用戶是需要為生成的時鐘約束使用‘master_clock’選項,還是這只是在早期 Vivado 版本中避免該問題的解決方法?

該問題已在 Vivado 2018.3 中修復。

根據 Xilinx 方法指南,始終建議為‘generated_clock’約束使用‘master_clock’選項。這個建議不僅僅只針對早期的 Vivado 版本。

4) 將設計從 Vivado 2018.2 及更早版本升級至 Vivado 2018.3 版有多安全?

該問題已在 Vivado 2018.3 中修復。

將設計從舊 Vivado 版本升級至最新的 Vivado 版本(即 2018.3)沒有風險。

5) 在我的設計中有一個上述警告,但是電路板上一切正常,時序得分為 0,忽略該警告安全嗎?

Xilinx 建議搞清楚警告的根本原因并正確修復。

重要通知:

Timing-6:如果該警告發生在介紹部分列出的條件下,就需要應用上述解決方法來解決該問題。

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

    關注

    31

    文章

    5363

    瀏覽量

    121196
  • 路由器
    +關注

    關注

    22

    文章

    3745

    瀏覽量

    114490
  • Slice
    +關注

    關注

    0

    文章

    7

    瀏覽量

    8088
  • Vivado
    +關注

    關注

    19

    文章

    815

    瀏覽量

    66893
  • 時鐘網絡
    +關注

    關注

    0

    文章

    16

    瀏覽量

    6583
收藏 人收藏

    評論

    相關推薦

    常見xgboost錯誤解決方案

    的XGBoost錯誤及其解決方案: 1. 數據預處理錯誤 錯誤 :未對數據進行適當的預處理,如缺失值處理、特征編碼、特征縮放等。 解決方案
    的頭像 發表于 01-19 11:22 ?462次閱讀

    常見電位測量錯誤解決方案

    常見電位測量錯誤解決方案 1. 接觸不良 錯誤描述: 在電位測量中,接觸不良是最常見的問題之一。這可能是由于探針接觸不良、氧化層、污垢或腐蝕造成的。 解決方案: 清潔探針和被測點,確
    的頭像 發表于 12-28 14:08 ?213次閱讀

    EEPROM編程常見錯誤解決方案

    EEPROM(電可擦可編程只讀存儲器)在編程過程中可能會遇到多種錯誤。以下是一些常見的EEPROM編程錯誤及其解決方案: 常見錯誤 數據寫入錯誤
    的頭像 發表于 12-16 17:08 ?1423次閱讀

    dac161p997這幾個寄存器全配置為0,當發生錯誤時,dac161p997會不會依據錯誤的數據進行輸出?

    請問dac161p997這幾個寄存器全配置為0,當發生錯誤時(比如奇偶校驗),dac161p997會不會依據錯誤的數據進行輸出?
    發表于 12-06 08:12

    常見的GND連接錯誤解決方案

    GND(接地)連接在電子設計和硬件開發中至關重要,錯誤的GND連接可能導致電路不穩定、信號干擾甚至設備損壞。以下是一些常見的GND連接錯誤及其解決方案: 一、GND網絡未連接 問題描述
    的頭像 發表于 11-29 16:02 ?2067次閱讀

    SQL錯誤代碼及解決方案

    在SQL數據庫開發和管理中,常見的錯誤代碼及其解決方案可以歸納如下: 一、語法錯誤(Syntax Errors) 錯誤代碼 :無特定代碼,但通常會在
    的頭像 發表于 11-19 10:21 ?2936次閱讀

    aes加密的常見錯誤解決方案

    的歸納以及相應的解決方案: 常見錯誤 編碼問題 : 在將字節數組轉換成字符串時,如果使用了不同的編碼格式,可能會導致解密后的數據出現亂碼。 密鑰長度問題 : AES算法支持128位、192位和256位三種密鑰長度。如果加密和解密
    的頭像 發表于 11-14 15:13 ?2114次閱讀

    socket 常見錯誤解決方案

    在網絡編程中,使用套接字(socket)是進行網絡通信的基礎。然而,在實際應用中,開發者可能會遇到各種錯誤。以下是一些常見的套接字錯誤及其解決方案: 1. 連接超時(ETIMEDOUT) 錯誤
    的頭像 發表于 11-12 14:15 ?3106次閱讀

    CAN總線常見錯誤碼及其解決方法

    錯誤碼,這些錯誤碼可以幫助我們診斷和解決問題。 1. 錯誤幀(Error Frame) 錯誤碼 :當CAN控制器檢測到一個幀的錯誤時,會發送
    的頭像 發表于 11-12 10:05 ?3950次閱讀

    SUMIF函數常見錯誤解決方案

    求和范圍,導致函數無法正確執行。 解決方案: 確保條件范圍和求和范圍正確無誤。SUMIF函數的基本語法是: SUMIF(條件范圍, 條件, [求和范圍]) 條件范圍 :這是包含您要應用條件的單元格區域。 條件 :這是您希望條件范圍中的單元格滿足的條件。 求和范圍
    的頭像 發表于 11-11 09:10 ?2318次閱讀

    網關錯誤是什么意思

    網關錯誤計算機網絡中一個常見且復雜的問題,它通常發生在客戶端和服務器之間的通信過程中,導致客戶端的請求無法被正確處理或響應。為了全面理解網關錯誤,本文將從其定義、原因、類型、影響、診
    的頭像 發表于 09-30 11:40 ?4614次閱讀

    時鐘抖動和時鐘偏移的區別

    時鐘抖動(Jitter)和時鐘偏移(Skew)是數字電路設計中兩個重要的概念,它們對電路的時序性能和穩定性有著顯著的影響。下面將從定義、原因、影響以及應對策略等方面詳細闡述
    的頭像 發表于 08-19 18:11 ?1337次閱讀

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

    、16ns、17ns、18ns,有兩條路徑能夠滿足要求,布局布線就會選擇滿足要求的兩條路徑之一。 圖 1 靜態時序分析模型 因此,有些說法是錯誤的,不分什么情況就說時序收斂
    發表于 06-17 17:07

    一文讀懂CAN通訊錯誤

    CAN總線通信技術廣泛應用于多個行業,是每個總線設計工程師必學的一個通訊網絡。然而,對于CAN通信中的錯誤幀,許多人僅停留在表面了解,缺乏深入理解,這導致許多工程師在面對總線通信故障時感到無從下手
    的頭像 發表于 06-12 08:24 ?2869次閱讀
    一文讀懂CAN通訊<b class='flag-5'>錯誤</b>幀

    介紹一個IC設計錯誤案例:可讀debug寄存器錯誤時鐘

    本文將介紹一個跨時鐘錯誤的案例如圖所示,phy_status作為一個多bit的phy_clk時鐘域的信號,需要輸入csr模塊作為一個可讀狀態寄存器
    的頭像 發表于 03-11 15:56 ?599次閱讀
    介紹一個IC設計<b class='flag-5'>錯誤</b>案例:可讀debug寄存器<b class='flag-5'>錯誤</b>跨<b class='flag-5'>時鐘</b>
    哪里有百家乐游戏下载| 棋牌百家乐有稳赚的方法吗| 大发888玩哪个能赢钱| 七乐娱乐城| 时时博百家乐官网娱乐城| 棋牌百家乐怎么玩| 大发888有银钱的吗| 百家乐官网游戏策略| 摩纳哥百家乐官网的玩法技巧和规则| 百家乐公式论坛| 香港六合彩码报| 网络百家乐官网证据| 名仕百家乐的玩法技巧和规则 | 网络百家乐可靠吗| 大发888娱乐城俄罗斯| A8百家乐官网娱乐城| 太阳城百家乐的分数| 开户娱乐城送20彩金| 百家乐官网玩法教程| 百家乐皇室百家乐的玩法技巧和规则| 延津县| 百家乐官网英皇娱乐网| 连环百家乐的玩法技巧和规则| 绍兴市| 最好的百家乐论坛| 炸金花棋牌游戏| 粤港澳百家乐官网娱乐平台| 百家乐和的打法| 永利高百家乐官网信誉| 百家乐开户最快的平台是哪家| 皇冠网h| 百家乐玩法有技巧| 克拉克娱乐城| 百家乐平台开发| 赌球开户| 百家乐官网一年诈骗多少钱| 大发888娱乐场金沙| 蓝盾百家乐官网平台| 大发888投注鸿博博彩| 百家乐官网真人游戏娱乐平台| 大发888娱乐85战神版|