从某 1 个时钟区域中的时钟缓冲器驱动到另一个时钟区域中的 MMCM/XPLL/DPLL 时,通常会使用 CLOCK_DEDICATED_ROUTE 约束。默认情况下,CLOCK_DEDICATED_ROUTE 约束设置为 TRUE,并且缓冲器与 MMCM/XPLL/DPLL 配对必须布局在相同时钟区域内。
下表汇总了不同 CLOCK_DEDICATED_ROUTE 约束值、使用方式和行为。
值 | 用途 | 行为 |
---|---|---|
TRUE | 时钟信号线上的默认值 |
全局时钟缓冲器和 MMCM/XPLL/DPLL 必须布局在相同时钟区域内。 该值用于确保仅使用全局时钟资源对信号线进行布线。 |
SAME_CMT_COLUMN |
由 BUFG_GT 全局时钟缓冲器或 HDIO bank 中的全局时钟缓冲器驱动的信号线 示例:
|
DPLL 必须布局在时钟区域内的同一个垂直列中。 该值用于确保仅使用全局时钟资源对信号线进行布线。 为实现最佳结果,AMD 建议在 DPLL 上使用 LOC 约束来将 DPLL 布局控制在同一垂直列中。 |
SAME_CMT_ROW |
全局时钟缓冲器驱动的信号线
示例:
|
MMCM/XPLL/DPLL 可布局在含可用资源的任一水平时钟区域行内。 该值用于确保仅使用全局时钟资源对信号线进行布线。 为实现最佳结果,AMD 建议在 MMCM/XPLL/DPLL 上使用 LOC 约束来将 MMCM/XPLL/DPLL 布局控制在器件的水平时钟区域行内。 |
ANY_CMT_REGION |
全局时钟缓冲器驱动的信号线
示例:
|
MMCM/XPLL/DPLL 可布局在含可用资源的任一时钟区域内。 该值用于确保仅使用全局时钟资源对信号线进行布线。 为实现最佳结果,AMD 建议在 MMCM/XPLL/DPLL 上使用 LOC 约束来控制器件内的 MMCM/XPLL/DPLL 布局。 |
FALSE |
时钟信号线不受全局时钟缓冲器驱动,但受时钟信号线的一部分驱动(例如,受 IBUF 输出驱动的信号线,或直接连接到 MMCM 的输出时钟管脚的信号线)
示例:
|
信号线是使用互连结构和全局时钟资源完成布线的。 这会对时钟网络的时序特性产生负面影响,例如抖动和偏差。 重要: 对于 Versal 器件,仅当正常情况下使用全局时钟资源布线的时钟因特殊设计原因而需采用互连结构资源进行布线时,才能使用 FALSE。
|
驱动行对齐的 XPIO 时钟区域之间的 MMCM/XPLL/DPLL
从某个 XPIO 时钟区域内的时钟缓冲器驱动到另一个不相邻但行对齐的 XPIO 时钟区域内的 MMCM/XPLL/DPLL 时,必须将 CLOCK_DEDICATED_ROUTE 约束设置为 SAME_CMT_ROW。这样可防止出现实现错误,并确保在整个 XPIO 时钟区域内使用全局时钟资源对时钟进行布线。以下示例和图示显示了驱动非相邻的 XPIO 时钟区域内的 2 个 DPLL 的时钟缓冲器。
set_property CLOCK_DEDICATED_ROUTE SAME_CMT_ROW [get_nets -of [get_pins BUFG_inst/O]]
set_property LOC DPLL_X4Y0 [get_cells DPLL_inst_1]
set_property LOC DPLL_X11Y0 [get_cells DPLL_inst_2]
在未实现行对齐的时钟区域之间驱动 DPLL
如果器件的 HDIO 内有 DPLL 可用,那么在下列情况下您必须将 CLOCK_DEDICATED_ROUTE 约束设置为 ANY_CMT_REGION:
- 从 XPIO 时钟区域内的时钟缓冲器驱动到 HDIO 时钟区域内的 DPLL 时
- 从 HDIO 时钟区域内的时钟缓冲器驱动到 XPIO 时钟区域内的 MMCM/XPLL/DPLL 时
这样可防止出现实现错误,并确保在整个器件中使用全局时钟资源对时钟进行布线。以下示例显示了来自 XPIO 时钟区域的时钟缓冲器,该时钟缓冲区驱动 2 个 DPLL,其中 1 个 DPLL 位于 XPIO 时钟区域内,另 1 个 DPLL 位于 HDIO 时钟区域内。
set_property CLOCK_DEDICATED_ROUTE ANY_CMT_REGION [get_nets -of [get_pins BUFG_inst/O]]
set_property LOC DPLL_X4Y2 [get_cells DPLL_inst_1]
set_property LOC DPLL_X12Y0 [get_cells DPLL_inst_2]