典型设计应该不会出现时序违例。多 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_*]
微软推出Outlook桌面崩溃修复程序
有机共晶盐辅助极低健康状态富镍阴极直接锂再生
向智能电视的运营要增量和利润 将是电视行业未来的方向
人工智能如何在尊重隐私的同时打造优质的客户体验
车载系统的GPS接收机射频前端的设计方案
Versal Advanced IO Wizard-部分配置存在时序收敛问题
物联网从愿景走向现实的三大着力点:技术创新、生态合作、模式创新
三星新款智能手表正式发布,简约而不简单
dfrobot橡胶圈URM超声波专用介绍
无人机执法有效的同时还需要如何完善
高世代模组项目投资96亿元,首线投产仅用13个月,年产各尺寸液晶面板6000万片
中国(郑州)智能传感谷启动区终于从纸面规划走到了现实中
英特尔:如何看待游戏领域的女性工作者
基于5G应用的PCB板电镀过孔性能评估
英特尔新处理器曝光,先进技术为Intel 7制程
中国移动通信成立联合会元宇宙产业委员会
揭秘Intel公司历史上第一款产品
多路计量用电压互感器在线监测系统的设计与方法
华为P30官方预热视频正式上线非凡长焦让远方的美好瞬间展示在眼前
如何平衡区块链技术的去中心化程度