使用 MMCM 的 I/O 时序 ZHOLD/BUF_IN 补偿
使用
MMCM
的
I/O
时序
ZHOLD/BUF_IN
补偿
ZHOLD
补偿表示
MMCM
设置,为整个
I/O
列的所有
I/O
寄存器提供负保持。当具有时钟功能的
I/O (CCIO)
驱动设置
为
ZHOLD
补偿模式的单个
MMCM
时,布局器尝试将具有
CCIO
的
MMCM
布局在同一时钟区域中。在这种情况下,
CCIO
可以直接驱动
MMCM
,而无需通过
BUFG
。这能够使
MMCM
的
ZHOLD
补偿保持有效。
然而,如果
CCIO
驱动在
ZOLD
模式下设置的
MMCM
以及另一个
MMCM
,则逻辑优化将尝试通过在
CCIO
之后插入
BUFG
将
MMCM
时钟布线合法化。由于具有
ZHOLD
补偿的
MMCM
不再由
CCIO
直接驱动,因此补偿更改为
BUF_IN
。
为了避免这种情况,请确保
CCIO
直接驱动在
ZHOLD
模式下设置的
MMCM
,并通过
BUFG
驱动附加
MMCM
。此外,
将由
BUFG
驱动的网络的
CLOCK_DEDICATED_ROUTE
属性设置为
ANY_CMT_COLUMN
。
因为时钟插入延迟随时钟根位置而变化,并且时钟根位置取决于负载的位置,所以在运行之间可能存在变化。这种可
变性影响
FPGA
内部的时序以及
I/O
时序。
在处理高频
I/O
时,您可能需要更妥善地控制
I/O
时序和运行之间的可变性。实现这一目标的一种方法是强制时钟根位
置。您可以在自动模式下运行该工具,并查看时钟根区域。如果
I/O
时序合适,您可以强制在与
I/O
时序相关的缓存网
络上设置时钟根。要确定时序钟根的位置,请使用
Tcl
命令
report_clock_utilization
[-clock_roots_only]
。
在以下示例中,
I/O
端口位于
X0Y0
区域中。
Vivado
布局器基于
I/O
布局以及其他负载的布局,确定了
X1Y2
中时钟根
的布局。
![](https://i-blog.csdnimg.cn/direct/66292ada3ed7426d911553a475388796.png)
以下摘要显示了当时钟根不受约束时的
I/O
时序。
![](https://i-blog.csdnimg.cn/direct/6610938772cb45bb8fe415f8a638eaaa.png)
以下摘要显示移动时钟根时的
I/O
时序。
![](https://i-blog.csdnimg.cn/direct/88f29c3c817b430b8d23b25d93b3a1b2.png)