典型設計應該不會出現時序違例。多 bank 設計更容易受此問題影響。
對于多 bank 接口配置,如果單個 bank 同時具有 RX 和 TX,并且其中序列化因子不同,或者如果在“Advanced”選項卡上使用了 enable_all_ports,則可能發生此問題。
在 2021.1 版的 Advanced IO Wizard 中為 PLL 提供了經過更新的去歪斜電路,此更新可解決大部分時序違例。
如果仍發生違例,請考慮手動調整時鐘的 PHASE 屬性,直至解決違例為止。
XPLL 的 CLKIN_DESKEW 連接到 XPLL 的 CLKOUT3(XPLL 將設置為使 CLKOUT3 頻率 = CLKIN 頻率)。

在以下示例中,到 PHY_RDEN 的路徑上存在保持時間違例,最差情況下保持時間為 0.076 ns。

您可使用以下 Tcl 命令來計算 CLKOUT3 的相移,以解決此保持時間問題,然后對該路徑進行定時:
set XPLL [get_cells >]
set THSviolation 0.076
set existingPhaseShift [get_property CLKOUT3_PHASE $XPLL]
set clkout3_divide [get_property CLKOUT3_DIVIDE $XPLL]
set c_stepsize [expr 45.0/$clkout3_divide]
set phaseAdjust [expr {$THSviolation / [get_property PERIOD [get_clocks -of [get_pins -of $XPLL -filter REF_PIN_NAME=~CLKOUT3]]] * 360}]
set updatedPhaseShift [expr {$existingPhaseShift + $phaseAdjust}]
set c_phase_rounded [format %.3f [expr $c_stepsize * round($updatedPhaseShift/$c_stepsize)]]
set c_phase_rounded_margin [format %.3f [expr $c_phase_rounded + $c_stepsize]]
set_property CLKOUT3_PHASE $c_phase_rounded_margin $XPLL
report_timing -from [get_pins {design_1_i/advanced_io_wizard_0/inst/design_1_advanced_io_wizard_0_0_phy_i/inst/phy_rden_int_bli_reg[*]/C}] -to [get_pins design_1_i/advanced_io_wizard_0/inst/design_1_advanced_io_wizard_0_0_phy_i/inst/BANK_WRAPPER_INST0/NIBBLE[1].UNISIM.I_XPHY/PHY_RDEN[*]]
同樣,您也可使用以下 Tcl 命令來計算 CLKOUT3 的新相移,以解決此建立時間違例,然后對該路徑進行定時:
set XPLL [get_cells >]
set WNSviolation 0.076
set existingPhaseShift [get_property CLKOUT3_PHASE $XPLL]
set clkout3_divide [get_property CLKOUT3_DIVIDE $XPLL]
set c_stepsize [expr 45.0/$clkout3_divide]
set phaseAdjust [expr {$WNSviolation / [get_property PERIOD [get_clocks -of [get_pins -of $XPLL -filter REF_PIN_NAME=~CLKOUT3]]] * 360}]
set updatedPhaseShift [expr {$existingPhaseShift - $phaseAdjust}]
set c_phase_rounded [format %.3f [expr $c_stepsize * round($updatedPhaseShift/$c_stepsize)]]
set c_phase_rounded_margin [format %.3f [expr $c_phase_rounded - $c_stepsize]]
set_property CLKOUT3_PHASE $c_phase_rounded_margin $XPLL
report_timing -from [get_pins {design_1_i/advanced_io_wizard_0/inst/design_1_advanced_io_wizard_0_0_phy_i/inst/phy_rden_int_bli_reg[*]/C}] -to [get_pins design_1_i/advanced_io_wizard_0/inst/design_1_advanced_io_wizard_0_0_phy_i/inst/BANK_WRAPPER_INST0/NIBBLE[1].UNISIM.I_XPHY/PHY_RDEN[*]]
如果 Advanced IO Wizard 有多個實例(如有其它 IP 使用此 Wizard,例如 SGMII,那也計算在內),那么在某些情況下,此 Tcl 腳本可以解決 PHY_RDEN 上的保持時間問題,但會在 PHY_WREN 路徑上引發建立時間問題。
2022.2 版及更低版本的 Advanced IO Wizard 默認在 PHY_WREN 路徑上不使用 BLI 寄存器。如果使用該腳本解決保持時間問題導致 PHY_WREN 出現建立時間問題,請為 PHY_WREN 設置 BLI = TRUE,這樣即可幫助解決此問題。
在 XDC 文件中應用下列約束,然后重新運行實現。
set_property BLI TRUE [get_cells -hierarchical phy_wren_bli_temp_*]
審核編輯:湯梓紅
-
接口
+關注
關注
33文章
8918瀏覽量
153138 -
pll
+關注
關注
6文章
880瀏覽量
136010 -
時序
+關注
關注
5文章
397瀏覽量
37753 -
Versal
+關注
關注
1文章
166瀏覽量
7986
發布評論請先 登錄
UltraFast設計方法時序收斂快捷參考指南

FPGA時序收斂學習報告
基于MCMM技術IC時序收斂的快速實現

FPGA設計的“三個代表”:Ultrafastdesign methodology

FPGA中IO口的時序分析詳細說明

從已布線設計中提取模塊用于評估時序收斂就緒狀態

AMD Versal自適應SoC器件Advanced Flow概覽(上)

AMD Versal自適應SoC器件Advanced Flow概覽(下)

評論