CLOCK_LOW_FANOUT is a boolean property that can be assigned to clocks that have a small number of loads and that should be contained in a single clock region. The property is assigned to clock nets driven by a global clock buffer or a set of flip flops driven by a global clock buffer.
When CLOCK_LOW_FANOUT is TRUE on a clock net driven by a global clock buffer, the loads should be contained within a single clock region and be driven by global clock resources. A load is defined as any leaf input pin on the clock network, not just sequential clock pins. For example, LUT pins are counted as loads. If there are too many loads on the net, the Vivado tool will return a warning and ignore the CLOCK_LOW_FANOUT property.
When CLOCK_LOW_FANOUT is TRUE on a set of flip flops driven by a BUFGCE global clock buffer, the BUFGCE global clock buffer will be replicated and drives only the flip flops with the setting. The flip flops are placed in a single clock region and driven by global clock resources.
The CLOCK_LOW_FANOUT property can conflict with other clock or placement properties. For instance, if CLOCK_DEDICATED_ROUTE is specified on the same net with any value other than TRUE, the CLOCK_DEDICATED_ROUTE property takes precedence and CLOCK_LOW_FANOUT is ignored with a warning, CLOCK_DELAY_GROUP will take precedence over CLOCK_LOW_FANOUT if all of the members of the CLOCK_DELAY_GROUP cannot be placed in a single clock region. USER_CLOCK_ROOT, LOC, and PBLOCK properties can also create conflicts with the CLOCK_LOW_FANOUT property. In each of these cases CLOCK_LOW_FANOUT is ignored and a warning is returned.
- Architecture Support
- UltraScale and UltraScale+ architectures.
- Applicable Objects
- Clock nets (
get_nets) connected to the output of global clock buffers that should be constrained to a single clock region.
- Flip flop cells (
get_cells) connected to the output of a BUFGCE global clock buffer. A new BUFGCE global clock buffer is replicated in parallel with the existing BUFGCE global clock buffer and the loads of the new BUFGCE global clock buffer are constrained to a single clock region.
- Clock nets (
TRUE: The clock is a low fanout net and should be constrained into a single clock region.
FALSE: The clock is not a low fanout signal, or should not be constrained to a single clock region (default).
- Verilog Syntax
- VHDL Syntax
- XDC Syntax
set_property CLOCK_LOW_FANOUT TRUE [get_nets <clk_nets>] set_property CLOCK_LOW_FANOUT TRUE [get_cells <ff_cells>]
<clk_nets>is a list of clock nets directly connected to the output of global clock buffers, that are driven by a common cell, such as an MMCM for example.
<ff_cells>is a list of flip flop cells directly connect to the output of a BUFGCE global clock buffer.
XDC Syntax Example:
# Define a clock group to reduce skew between the nets. set_property CLOCK_LOW_FANOUT TRUE [get_nets -of [get_pins block/myBufg/O]] # Define a list of Flip Flops to be driven by a separate BUFGCE and placed in a single clock region set_property CLOCK_LOW_FANOUT TRUE [get_cells block/myStartupCircuit/startup_reg[*]]
- Opt Design
- Place Design