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

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

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

錯(cuò)誤時(shí)鐘偏移計(jì)算導(dǎo)致錯(cuò)誤時(shí)序收斂的解決方案

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

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

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

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

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

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

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

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

該問(wèn)題的示例:

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

示例時(shí)鐘拓?fù)洌?/p>

示例 Datapath 拓?fù)洌?/p>

o4YBAF9uGVeAQmkPAADbwhMFxQM968.jpg

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

o4YBAF9uGVyAeJT2AAJVcCSrFZ8047.jpg

請(qǐng)注意,由于缺少源時(shí)鐘路徑,2.560nS 的路徑偏移過(guò)大。

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

這將迫使路由器在路徑上通過(guò)一個(gè)較長(zhǎng)的路由繞道來(lái)修復(fù)保持違規(guī)。

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

pIYBAF9uGWGAKD5-AAJQdLN_uoM605.jpg

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

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

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

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

pIYBAF9uGWKACaodAACXrN4xRMQ659.jpg

有問(wèn)題的時(shí)鐘約束來(lái)自輸入時(shí)鐘源選項(xiàng)被設(shè)置為“單端時(shí)鐘支持引腳(默認(rèn))”或“差分時(shí)鐘支持引腳”而 IP 時(shí)鐘輸入沒(méi)有連接至頂層輸入端口的時(shí)鐘向?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

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

確認(rèn):

上述問(wèn)題由‘report_methodology’檢測(cè)報(bào)告。

建議始終運(yùn)行“report_methodology”并處理報(bào)告的違規(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 中也會(huì)報(bào)告 TIMING-27 違規(guī)。

TIMING-27 檢查指向?qū)蛹?jí)引腳上不正確的主時(shí)鐘定義,這可能會(huì)導(dǎo)致不安全的時(shí)序。
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’也會(huì)顯示不安全的時(shí)鐘對(duì),但在 2018.3 版中不會(huì):

o4YBAF9uGWWAPLoMAAENSe7QOBA796.jpg

‘check_timing’報(bào)告了一個(gè)在 2018.2.x 中生成的時(shí)鐘的問(wèn)題:

pIYBAF9uGWeALFcSAACjqg4_mnA029.jpg

‘report_clock’報(bào)告 Vivado 為用戶生成的時(shí)鐘使用的實(shí)際主時(shí)鐘。

雖然時(shí)鐘 microblaze_0_Clk 傳播至所生成時(shí)鐘的源引腳,但‘report_clocks’會(huì)按照主時(shí)鐘報(bào)告 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}

解決方案
該問(wèn)題將在 Vivado 2018.3 中修復(fù)。

出現(xiàn)該問(wèn)題時(shí),通常的解決方法是在創(chuàng)建用戶生成的時(shí)鐘時(shí)指定主時(shí)鐘名:
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è)計(jì)中,最初的問(wèn)題是沒(méi)有正確配置時(shí)鐘向?qū)А?/p>

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

常見(jiàn)問(wèn)題解答:

1) 該問(wèn)題會(huì)影響 Vivado 的哪些版本?

該問(wèn)題會(huì)影響 Vivado 2018.2 及更早版本。

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

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

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

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

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

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

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

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

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

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

將設(shè)計(jì)從舊 Vivado 版本升級(jí)至最新的 Vivado 版本(即 2018.3)沒(méi)有風(fēng)險(xiǎn)。

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

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

重要通知:

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

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

    關(guān)注

    31

    文章

    5253

    瀏覽量

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

    關(guān)注

    22

    文章

    3641

    瀏覽量

    112819
  • Slice
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    8041
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    797

    瀏覽量

    65856
  • 時(shí)鐘網(wǎng)絡(luò)

    關(guān)注

    0

    文章

    16

    瀏覽量

    6558
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    時(shí)鐘抖動(dòng)和時(shí)鐘偏移的區(qū)別

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

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

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

    一文讀懂CAN通訊錯(cuò)誤

    CAN總線通信技術(shù)廣泛應(yīng)用于多個(gè)行業(yè),是每個(gè)總線設(shè)計(jì)工程師必學(xué)的一個(gè)通訊網(wǎng)絡(luò)。然而,對(duì)于CAN通信中的錯(cuò)誤幀,許多人僅停留在表面了解,缺乏深入理解,這導(dǎo)致許多工程師在面對(duì)總線通信故障時(shí)感到無(wú)從下手
    的頭像 發(fā)表于 06-12 08:24 ?2103次閱讀
    一文讀懂CAN通訊<b class='flag-5'>錯(cuò)誤</b>幀

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

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

    如何在SPI中設(shè)置SLSI錯(cuò)誤時(shí)進(jìn)行調(diào)試?

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

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

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

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

    CMOS設(shè)置錯(cuò)誤的解決方法? CMOS是計(jì)算機(jī)中的一塊電路,用于存儲(chǔ)電腦的基本配置信息。如果設(shè)置錯(cuò)誤,可能會(huì)導(dǎo)致計(jì)算機(jī)無(wú)法正常啟動(dòng)或運(yùn)行,因
    的頭像 發(fā)表于 12-28 15:13 ?7098次閱讀

    ug內(nèi)部錯(cuò)誤,內(nèi)存訪問(wèn)違例怎么解決

    ug內(nèi)部錯(cuò)誤,內(nèi)存訪問(wèn)違例怎么解決 內(nèi)部錯(cuò)誤和內(nèi)存訪問(wèn)違例是編程中常見(jiàn)的問(wèn)題,它們可能會(huì)導(dǎo)致應(yīng)用程序崩潰、數(shù)據(jù)丟失或系統(tǒng)不穩(wěn)定。在本文中,我將詳細(xì)解釋內(nèi)部錯(cuò)誤和內(nèi)存訪問(wèn)違例的原因,如何
    的頭像 發(fā)表于 12-27 16:27 ?5272次閱讀

    AD2S1210錯(cuò)誤檢測(cè)中有一種叫失配錯(cuò)誤,這種錯(cuò)誤存在于電機(jī)的哪種狀態(tài)?是否獨(dú)立存在?

    錯(cuò)誤檢測(cè)中有一種叫失配錯(cuò)誤,這種錯(cuò)誤存在于電機(jī)的哪種狀態(tài)?是否獨(dú)立存在? 以我的理解是進(jìn)入電機(jī)的兩路正余弦信號(hào)相差過(guò)大,然而這并不是失配錯(cuò)誤!所以請(qǐng)問(wèn)失配
    發(fā)表于 12-12 07:36

    invalid synrax是什么錯(cuò)誤

    “invalid synrax” 是英語(yǔ)中的拼寫錯(cuò)誤,正確的拼法是 “invalid syntax”。語(yǔ)法錯(cuò)誤是指程序代碼中出現(xiàn)了不符合編程語(yǔ)言規(guī)則的語(yǔ)法結(jié)構(gòu),導(dǎo)致編譯器無(wú)法理解和編譯代碼。 語(yǔ)法
    的頭像 發(fā)表于 11-28 15:59 ?7511次閱讀

    c語(yǔ)言代碼錯(cuò)誤怎么找

    ,它們通常是由于C語(yǔ)言編寫規(guī)則被打破所引起的。實(shí)際上,C編譯器會(huì)提供非常詳細(xì)的錯(cuò)誤消息,告訴我們?cè)谀膫€(gè)地方發(fā)生了錯(cuò)誤。 當(dāng)我們?cè)诰幾g過(guò)程中遇到語(yǔ)法錯(cuò)誤時(shí),我們需要仔細(xì)閱讀編譯器提供的錯(cuò)誤
    的頭像 發(fā)表于 11-24 10:05 ?2475次閱讀

    當(dāng)串口通信接收的數(shù)據(jù)錯(cuò)誤時(shí)如何重發(fā)?

    當(dāng)串口通信接收的數(shù)據(jù)錯(cuò)誤時(shí)如何重發(fā)
    發(fā)表于 10-28 06:54

    ORE上溢錯(cuò)誤是什么意思呢?

    了它們所能容納的范圍,通常情況下,計(jì)算機(jī)會(huì)自動(dòng)處理掉溢出的數(shù)據(jù),但在某些情況下,程序員必須對(duì)此進(jìn)行處理,否則會(huì)導(dǎo)致程序運(yùn)行失敗或計(jì)算結(jié)果不正確的情況發(fā)生。 ORE上溢錯(cuò)誤通常發(fā)生在進(jìn)行
    的頭像 發(fā)表于 10-25 11:07 ?621次閱讀

    FAQ0135 AT32MCU時(shí)鐘配置錯(cuò)誤或晶振大小選擇錯(cuò)誤導(dǎo)致異常

    AT32MCU時(shí)鐘配置錯(cuò)誤或晶振大小選擇錯(cuò)誤導(dǎo)致異常在時(shí)鐘配置錯(cuò)誤或晶振大小選擇錯(cuò)誤的情況下,下
    發(fā)表于 10-23 07:12

    哪些錯(cuò)誤PLC新手容易犯?

    PLC新手在使用和編程PLC時(shí)容易犯以下一些常見(jiàn)錯(cuò)誤: (1)電氣接線錯(cuò)誤:PLC的輸入和輸出需要正確地與外部設(shè)備進(jìn)行連接。新手可能會(huì)犯接線錯(cuò)誤,例如接錯(cuò)線圈端子、斷開(kāi)或短路電線等。這可能導(dǎo)致
    的頭像 發(fā)表于 10-11 17:10 ?713次閱讀