您可以使用 CLOCK_LOW_FANOUT 约束在单个时钟区域中包含时钟缓冲器负载。您可在全局时钟缓冲器直接驱动的时钟信号线段上或者在一系列触发器上设置 CLOCK_LOW_FANOUT 约束。
触发器的约束示例
在全局时钟缓冲器驱动的一系列触发器上设置 CLOCK_LOW_FANOUT 约束将导致 opt_design
创建新的并行全局时钟缓冲器,以隔离这些触发器。在 place_design
期间,由新创建的并行全局时钟缓冲器驱动并已隔离的触发器将包含到单个时钟区域中。
set_property CLOCK_LOW_FANOUT TRUE [get_cells safeClockStartup_reg[*]]
在设计中,不间断的时钟网络最初驱动 2000 余个负载,包括在时钟门控同步电路中用于对其他逻辑进行时钟门控的触发器。以下板级原理图显示了在 opt_design
创建新的并行全局时钟缓冲器用于隔离时钟门控同步电路前后,时钟门控同步电路的不同状态以及连接到不间断时钟网络的其他逻辑。
完全实现的设计的Device(器件)窗口会显示时钟门控同步电路,其中不间断逻辑和时钟门控逻辑带有绿色标记。时钟门控同步电路布局在 CLOCK_REGION 中,导致 XPIO 中的 BUFG 存在最低插入延迟。
由 XPIO 全局时钟缓冲器驱动的时钟信号线的约束示例
如果在由 XPIO CLOCK_REGION 中的全局时钟缓冲器直接驱动的时钟信号线段上设置 CLOCK_LOW_FANOUT 属性,并且全局时钟缓冲器的扇出的负载数不足 2000,那么负载布局将包含在单个时钟区域内。
以下示例所示的 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]]
由 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]]