ZHOLD 补偿表示 MMCM 配置为针对整个 I/O 列中的所有 I/O 寄存器提供负保持时间。当支持时钟功能的 I/O (CCIO) 驱动 ZHOLD 补偿模式中配置的单个 MMCM 时,布局器将尝试把 MMCM 与 CCIO 一起布局在相同时钟区域内。在此情况下,CCIO 可直接驱动 MMCM,无需通过 BUFG。这样即可支持 MMCM 的 ZHOLD 补偿保持有效。
但如果 CCIO 同时驱动 ZHOLD 模式下配置的 MMCM 以及另一个 MMCM,那么逻辑最优化将尝试通过在 CCIO 之后插入 BUFG 来使进入 MMCM 的时钟布线合规。由于具有 ZHOLD 补偿的 MMCM 不再由 CCIO 直接驱动,补偿将更改为 BUF_IN。为避免出现此情况,请确保 CCIO 直接驱动 ZHOLD 模式下配置的 MMCM,并通过 BUFG 驱动另一个 MMCM。此外,请将 BUFG 驱动的信号线的 CLOCK_DEDICATED_ROUTE 属性设置为 ANY_CMT_COLUMN。
由于时钟插入延迟因时钟根位置而异,而时钟根布局取决于负载的布局,因此不同运行轮次之间可能存在变化。这种变化会影响器件中的时序以及 I/O 时序。
处理高频率 I/O 时,可能需要细化对 I/O 时序的控制并减少不同运行轮次之间的变化。实现此目标的方法之一是强制执行时钟根布局。您可以自动模式运行工具并观察时钟根区域。如果 I/O 时序得到满足,您可在与 I/O 时序关联的缓冲器信号线上强制时钟根布局。要确定时钟根的布局,请使用 report_clock_utilization [-clock_roots_only]
Tcl 命令。
在以下示例中,I/O 端口位于 X0Y0 区域中。Vivado 布局器根据 I/O 布局以及其他负载的布局来判定 X1Y2 中时钟根的布局。
以下汇总显示了当时钟根不受约束时的 I/O 约束。
在以下示例中,时钟根移至 X0Y0 中的 I/O 寄存器旁,导致降低时钟插入延迟并减少时序消极因素,从而改进 I/O 时序。
以下汇总显示了迁移时钟根时的 I/O 时序。