使用 CLOCK_LOW_FANOUT 约束 - 2023.2 简体中文

适用于 FPGA 和 SoC 的 UltraFast 设计方法指南 (UG949)

Document ID
UG949
Release Date
2023-11-29
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(器件)窗口会显示时钟门控同步电路,其中不间断逻辑和时钟门控逻辑带有绿色标记。时钟门控同步电路与 MMCM 布局在相同 CLOCK_REGION 内,位于全局时钟缓冲器旁。

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

时钟信号线约束示例

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

以下示例显示了适用于全局时钟缓冲器直接驱动的时钟信号线段的 CLOCK_LOW_FANOUT 约束。该时钟网络驱动的负载数不足 2000,并包含在单个时钟区域内。输入时钟端口 clkIn 不仅针对位于 CLOCK_REGION X2Y0 的 GCIO 提供 PACKAGE_PIN 分配,而且还可驱动 PLLE3_ADV。PLLE3_ADV 可驱动全局时钟缓冲器,后者继而驱动含 1379 个负载的时钟网络。全局时钟缓冲器的负载均布局在 CLOCK_REGION X2Y0 内。

# PACKAGE_PIN AF9 - IOBank 64 - CLOCK_REGION X2Y0
set_property PACKAGE_PIN AF9 [get_ports clkIn]
set_property IOSTANDARD LVCMOS18 [get_ports clkIn]
set_property CLOCK_LOW_FANOUT TRUE [get_nets -of [get_pins clkOut0_bufg_inst/O]]
图 4. Device窗口与Schematic窗口中的 CLOCK_LOW_FANOUT 示例