RM新时代网站-首页

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

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

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

錯誤時鐘偏移計算導(dǎo)致錯誤時序收斂的解決方案

454398 ? 來源:XILINX技術(shù)社區(qū) ? 作者:XILINX技術(shù)社區(qū) ? 2020-12-24 11:16 ? 次閱讀

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

出現(xiàn)問題的情況:

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

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

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

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

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

該問題的示例:

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

示例時鐘拓撲:

示例 Datapath 拓撲:

o4YBAF9uGVeAQmkPAADbwhMFxQM968.jpg

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

o4YBAF9uGVyAeJT2AAJVcCSrFZ8047.jpg

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

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

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

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

pIYBAF9uGWGAKD5-AAJQdLN_uoM605.jpg

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

時鐘偏移會導(dǎo)致設(shè)置違規(guī),這是由于在該路徑上為了修復(fù) Vivado 2018.2.x 及更早版本中出現(xiàn)的保持違規(guī)而繞道了很長的路由路徑。

可能會出現(xiàn)問題的典型情況:

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

pIYBAF9uGWKACaodAACXrN4xRMQ659.jpg

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

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

# 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

在時鐘向?qū)л斎霑r鐘源設(shè)置為“全緩沖”或“無緩沖”時,層級引腳上沒有創(chuàng)建主時鐘。

確認:

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

建議始終運行“report_methodology”并處理報告的違規(guī):
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 違規(guī)。

TIMING-27 檢查指向?qū)蛹壱_上不正確的主時鐘定義,這可能會導(dǎo)致不安全的時序。
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 中修復(fù)。

出現(xiàn)該問題時,通常的解決方法是在創(chuàng)建用戶生成的時鐘時指定主時鐘名:
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

但在本示例設(shè)計中,最初的問題是沒有正確配置時鐘向?qū)А?/p>

對于該設(shè)計,需要重新運行時鐘向?qū)Р⒓m正配置。

常見問題解答:

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

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

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

該漏洞主要針對錯誤的/部分時鐘定義。因此,如果設(shè)計有適當?shù)募s束,并且符合時序要求,那就不應(yīng)該有問題。

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

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

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

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

該問題已在 Vivado 2018.3 中修復(fù)。

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

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

該問題已在 Vivado 2018.3 中修復(fù)。

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

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

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

重要通知:

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

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

    關(guān)注

    31

    文章

    5336

    瀏覽量

    120230
  • 路由器
    +關(guān)注

    關(guān)注

    22

    文章

    3728

    瀏覽量

    113701
  • Slice
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    8063
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    812

    瀏覽量

    66470
  • 時鐘網(wǎng)絡(luò)
    +關(guān)注

    關(guān)注

    0

    文章

    16

    瀏覽量

    6568
收藏 人收藏

    評論

    相關(guān)推薦

    EEPROM編程常見錯誤解決方案

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

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

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

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

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

    SQL錯誤代碼及解決方案

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

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

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

    socket 常見錯誤解決方案

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

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

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

    SUMIF函數(shù)常見錯誤解決方案

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

    網(wǎng)關(guān)錯誤是什么意思

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

    時鐘抖動和時鐘偏移的區(qū)別

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

    FPGA 高級設(shè)計:時序分析和收斂

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

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

    本文將介紹一個跨時鐘錯誤的案例如圖所示,phy_status作為一個多bit的phy_clk時鐘域的信號,需要輸入csr模塊作為一個可讀狀態(tài)寄存器
    的頭像 發(fā)表于 03-11 15:56 ?505次閱讀
    介紹一個IC設(shè)計<b class='flag-5'>錯誤</b>案例:可讀debug寄存器<b class='flag-5'>錯誤</b>跨<b class='flag-5'>時鐘</b>

    如何在SPI中設(shè)置SLSI錯誤時進行調(diào)試?

    在調(diào)試 36 服務(wù)時,它通過 SPI 進行通信,等待來自 L2 的響應(yīng)。Lane2 側(cè)中斷會生成帶有 CRC 錯誤的短塊,當我看到 QSPI 狀態(tài)注冊錯誤標志(SLSI 錯誤)時,設(shè)置了 QSPI 狀態(tài)注冊
    發(fā)表于 01-25 06:27

    導(dǎo)致PLC信號干擾的錯誤操作

    以下是一些可能導(dǎo)致PLC(可編程邏輯控制器)信號干擾的錯誤操作。
    的頭像 發(fā)表于 01-22 10:05 ?567次閱讀

    CMOS設(shè)置錯誤的解決方法

    CMOS設(shè)置錯誤的解決方法? CMOS是計算機中的一塊電路,用于存儲電腦的基本配置信息。如果設(shè)置錯誤,可能會導(dǎo)致計算機無法正常啟動或運行,因
    的頭像 發(fā)表于 12-28 15:13 ?8345次閱讀
    RM新时代网站-首页