使用 CLOCK_DEDICATED_ROUTE 约束 - 2023.2 简体中文

Versal 自适应 SoC 硬件、IP 和平台开发方法指南 (UG1387)

Document ID
UG1387
Release Date
2023-11-15
Version
2023.2 简体中文

从某 1 个时钟区域中的时钟缓冲器驱动到另一个时钟区域中的 MMCM/XPLL/DPLL 时,通常会使用 CLOCK_DEDICATED_ROUTE 约束。默认情况下,CLOCK_DEDICATED_ROUTE 约束设置为 TRUE,并且缓冲器与 MMCM/XPLL/DPLL 配对必须布局在相同时钟区域内。

重要: 不同于其他架构,在 Versal 器件中不支持 CLOCK_DEDICATED_ROUTE 的值为 BACKBONE 和 ANY_CMT_COLUMN。在 Versal 器件中,您可改用以下 CLOCK_DEDICATED_ROUTE 值:SAME_CMT_ROW 和 ANY_CMT_REGION。更新约束前,AMD 建议查看时钟拓扑布局,因为先前架构中的时钟设置采用的是严格的列式时钟设置。

下表汇总了不同 CLOCK_DEDICATED_ROUTE 约束值、使用方式和行为。

注释: 仅在全局时钟缓冲器的信号线上应用 ANY_CMT_COLUMN 约束和 SAME_CMT_COLUMN 约束。
表 1. Versal 器件 CLOCK_DEDICATED_ROUTE 约束汇总
用途 行为
TRUE 时钟信号线上的默认值

全局时钟缓冲器和 MMCM/XPLL/DPLL 必须布局在相同时钟区域内。

该值用于确保仅使用全局时钟资源对信号线进行布线。

SAME_CMT_COLUMN

由 BUFG_GT 全局时钟缓冲器或 HDIO bank 中的全局时钟缓冲器驱动的信号线

示例:

set_property CLOCK_DEDICATED_ROUTE SAME_CMT_COLUMN \
[get_nets -of [get_pins BUFG_GT_inst/O]]

DPLL 必须布局在时钟区域内的同一个垂直列中。

该值用于确保仅使用全局时钟资源对信号线进行布线。

为实现最佳结果,AMD 建议在 DPLL 上使用 LOC 约束来将 DPLL 布局控制在同一垂直列中。

SAME_CMT_ROW

全局时钟缓冲器驱动的信号线

 

示例:

set_property CLOCK_DEDICATED_ROUTE SAME_CMT_ROW \
[get_nets -of [get_pins BUFGCE_inst/O]]
set_property CLOCK_DEDICATED_ROUTE SAME_CMT_ROW \
[get_nets -of [get_pins BUFGCE_DIV_inst/O]]
set_property CLOCK_DEDICATED_ROUTE SAME_CMT_ROW \
[get_nets -of [get_pins BUFGCTRL_inst/O]]

MMCM/XPLL/DPLL 可布局在含可用资源的任一水平时钟区域行内。

该值用于确保仅使用全局时钟资源对信号线进行布线。

为实现最佳结果,AMD 建议在 MMCM/XPLL/DPLL 上使用 LOC 约束来将 MMCM/XPLL/DPLL 布局控制在器件的水平时钟区域行内。

ANY_CMT_REGION

全局时钟缓冲器驱动的信号线

 

示例:

set_property CLOCK_DEDICATED_ROUTE ANY_CMT_REGION \
[get_nets -of [get_pins BUFGCE_inst/O]]
set_property CLOCK_DEDICATED_ROUTE ANY_CMT_REGION \
[get_nets -of [get_pins BUFGCE_DIV_inst/O]]
set_property CLOCK_DEDICATED_ROUTE ANY_CMT_REGION \
[get_nets -of [get_pins BUFGCTRL_inst/O]]

MMCM/XPLL/DPLL 可布局在含可用资源的任一时钟区域内。

该值用于确保仅使用全局时钟资源对信号线进行布线。

为实现最佳结果,AMD 建议在 MMCM/XPLL/DPLL 上使用 LOC 约束来控制器件内的 MMCM/XPLL/DPLL 布局。

FALSE

时钟信号线不受全局时钟缓冲器驱动,但受时钟信号线的一部分驱动(例如,受 IBUF 输出驱动的信号线,或直接连接到 MMCM 的输出时钟管脚的信号线)

 

示例:

set_property CLOCK_DEDICATED_ROUTE FALSE \
[get_nets -of [get_pins MMCME5_inst/CLKOUT0]]
set_property CLOCK_DEDICATED_ROUTE FALSE \
[get_nets -of [get_pins IBUF_inst/O]]

信号线是使用互连结构和全局时钟资源完成布线的。

这会对时钟网络的时序特性产生负面影响,例如抖动和偏差。

重要: 对于 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]
图 1. CLOCK_DEDICATED_ROUTE 约束设置为 SAME_CMT_ROW

在未实现行对齐的时钟区域之间驱动 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]
图 2. CLOCK_DEDICATED_ROUTE 约束设置为 ANY_CMT_REGION