使用 CLOCK_LOW_FANOUT 约束 - 2023.2 简体中文

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

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

您可以使用 CLOCK_LOW_FANOUT 约束在单个时钟区域中包含时钟缓冲器负载。您可在全局时钟缓冲器直接驱动的时钟信号线段上或者在一系列触发器上设置 CLOCK_LOW_FANOUT 约束。

注释: 配合其他时钟使用时,CLOCK_LOW_FANOUT 约束优先级较低。如果 CLOCK_LOW_FANOUT 与其他时钟约束(如 USER_CLOCK_ROOT、CLOCK_DELAY_GROUP 或 CLOCK_DEDICATED_ROUTE)存在冲突,那么将不会遵循 CLOCK_LOW_FANOUT。

触发器的约束示例

在全局时钟缓冲器驱动的一系列触发器上设置 CLOCK_LOW_FANOUT 约束将导致 opt_design 创建新的并行全局时钟缓冲器,以隔离这些触发器。在 place_design 期间,由新创建的并行全局时钟缓冲器驱动并已隔离的触发器将包含到单个时钟区域中。

以下示例显示了适用于一系列触发器的 CLOCK_LOW_FANOUT 约束,这些触发器在时钟门控同步电路中用于控制全局时钟缓冲器的时钟使能。
set_property CLOCK_LOW_FANOUT TRUE [get_cells safeClockStartup_reg[*]]

在设计中,不间断的时钟网络最初驱动 2000 余个负载,包括在时钟门控同步电路中用于对其他逻辑进行时钟门控的触发器。以下板级原理图显示了在 opt_design 创建新的并行全局时钟缓冲器用于隔离时钟门控同步电路前后,时钟门控同步电路的不同状态以及连接到不间断时钟网络的其他逻辑。

图 1. 执行 opt_design 变换并对触发器应用 CLOCK_LOW_FANOUT 之前的板级原理图
图 2. 执行 opt_design 变换并对触发器应用 CLOCK_LOW_FANOUT 之后的板级原理图

完全实现的设计的Device(器件)窗口会显示时钟门控同步电路,其中不间断逻辑和时钟门控逻辑带有绿色标记。时钟门控同步电路布局在 CLOCK_REGION 中,导致 XPIO 中的 BUFG 存在最低插入延迟。

图 3. 完全实现的设计(含时钟门控同步电路布局)

由 XPIO 全局时钟缓冲器驱动的时钟信号线的约束示例

如果在由 XPIO CLOCK_REGION 中的全局时钟缓冲器直接驱动的时钟信号线段上设置 CLOCK_LOW_FANOUT 属性,并且全局时钟缓冲器的扇出的负载数不足 2000,那么负载布局将包含在单个时钟区域内。

注释: 由于 XPIO CLOCK_REGION 与互连结构 CLOCK_REGION 对齐错误,因此使用 CLOCK_LOW_FANOUT 约束将导致这些负载被布局到单一时钟区域内,且源于 XPIO 全局时钟缓冲器的插入延迟最小。

以下示例所示的 CLOCK_LOW_FANOUT 应用于时钟信号线段,该时钟信号线段由布局在 XPIO 中的全局时钟缓冲器直接进行驱动。输入时钟端口 clkIn 包含分配到 GCIO(位于 XPIO CLOCK_REGION X2Y0 中)中的 PACKAGE_PIN,并驱动 DPLL。此 DPLL 可驱动全局时钟缓冲器,后者继而驱动含 128 个负载的时钟网络。全局时钟缓冲器的负载均布局在 CLOCK_REGION X1Y1 内。

# PACKAGE_PIN BB44 - High Performance XPIO IOBank 702 - CLOCK_REGION X2Y0
set_property PACKAGE_PIN BB44 [get_ports clkIn]
set_property IOSTANDARD SSTL12 [get_ports clkIn]
set_property CLOCK_LOW_FANOUT TRUE [get_nets -of [get_pins BUFG_clkout1_inst/O]]
图 4. Device窗口与Schematic窗口中的 XPIO CLOCK_LOW_FANOUT 示例

由 HDIO 全局时钟缓冲器驱动的时钟信号线的约束示例

如果在由 HDIO CLOCK_REGION 中的全局时钟缓冲器直接驱动的时钟信号线段上设置 CLOCK_LOW_FANOUT 属性,并且全局时钟缓冲器的扇出的负载数不足 2000,那么负载布局将包含在与全局时钟缓冲器相同的 CLOCK_REGION 内。

以下示例所示的 CLOCK_LOW_FANOUT 应用于时钟信号线段,该时钟信号线段由布局在 HDIO 中的全局时钟缓冲器直接进行驱动。输入时钟端口 clkIn 包含分配到 GCIO(位于 HDIO CLOCK_REGION X0Y4 中)中的 PACKAGE_PIN,并驱动 DPLL。此 DPLL 可驱动全局时钟缓冲器,后者继而驱动含 128 个负载的时钟网络。全局时钟缓冲器的负载均布局在 CLOCK_REGION X0Y4 内。

# PACKAGE_PIN L35 - High Density HDIO IOBank 306 - CLOCK_REGION X0Y4
set_property PACKAGE_PIN L35 [get_ports clkIn]
set_property IOSTANDARD LVCMOS33 [get_ports clkIn]
set_property CLOCK_LOW_FANOUT TRUE [get_nets -of [get_pins BUFG_clkout1_inst/O]]
图 5. Device窗口与Schematic窗口中的 HDIO CLOCK_LOW_FANOUT 示例