典型設(shè)計(jì)應(yīng)該不會(huì)出現(xiàn)時(shí)序違例。多 bank 設(shè)計(jì)更容易受此問(wèn)題影響。
對(duì)于多 bank 接口配置,如果單個(gè) bank 同時(shí)具有 RX 和 TX,并且其中序列化因子不同,或者如果在“Advanced”選項(xiàng)卡上使用了 enable_all_ports,則可能發(fā)生此問(wèn)題。
在 2021.1 版的 Advanced IO Wizard 中為 PLL 提供了經(jīng)過(guò)更新的去歪斜電路,此更新可解決大部分時(shí)序違例。
如果仍發(fā)生違例,請(qǐng)考慮手動(dòng)調(diào)整時(shí)鐘的 PHASE 屬性,直至解決違例為止。
XPLL 的 CLKIN_DESKEW 連接到 XPLL 的 CLKOUT3(XPLL 將設(shè)置為使 CLKOUT3 頻率 = CLKIN 頻率)。
在以下示例中,到 PHY_RDEN 的路徑上存在保持時(shí)間違例,最差情況下保持時(shí)間為 0.076 ns。
您可使用以下 Tcl 命令來(lái)計(jì)算 CLKOUT3 的相移,以解決此保持時(shí)間問(wèn)題,然后對(duì)該路徑進(jìn)行定時(shí):
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 命令來(lái)計(jì)算 CLKOUT3 的新相移,以解決此建立時(shí)間違例,然后對(duì)該路徑進(jìn)行定時(shí):
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 有多個(gè)實(shí)例(如有其它 IP 使用此 Wizard,例如 SGMII,那也計(jì)算在內(nèi)),那么在某些情況下,此 Tcl 腳本可以解決 PHY_RDEN 上的保持時(shí)間問(wèn)題,但會(huì)在 PHY_WREN 路徑上引發(fā)建立時(shí)間問(wèn)題。
2022.2 版及更低版本的 Advanced IO Wizard 默認(rèn)在 PHY_WREN 路徑上不使用 BLI 寄存器。如果使用該腳本解決保持時(shí)間問(wèn)題導(dǎo)致 PHY_WREN 出現(xiàn)建立時(shí)間問(wèn)題,請(qǐng)為 PHY_WREN 設(shè)置 BLI = TRUE,這樣即可幫助解決此問(wèn)題。
在 XDC 文件中應(yīng)用下列約束,然后重新運(yùn)行實(shí)現(xiàn)。
set_property BLI TRUE [get_cells -hierarchical phy_wren_bli_temp_*]
審核編輯:湯梓紅
-
接口
+關(guān)注
關(guān)注
33文章
8575瀏覽量
151023 -
pll
+關(guān)注
關(guān)注
6文章
776瀏覽量
135131 -
時(shí)序
+關(guān)注
關(guān)注
5文章
387瀏覽量
37318 -
Versal
+關(guān)注
關(guān)注
1文章
158瀏覽量
7658
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論