Using the CLOCK_DELAY_GROUP Constraint on Several Clock Nets - 2023.2 English

Versal Adaptive SoC Hardware, IP, and Platform Development Methodology Guide (UG1387)

Document ID
UG1387
Release Date
2023-11-15
Version
2023.2 English

You can use the CLOCK_DELAY_GROUP constraint to match the insertion delay of multiple, related clock networks driven by different clock buffers. This constraint is commonly used to minimize skew on synchronous CDC timing paths between clocks originating from the same MMCM, XPLL, DPLL, or GT source. The following example shows the clk1_net and clk2_net clock nets, which are directly driven by the clock buffers:

set_property CLOCK_DELAY_GROUP grp12 [get_nets {clk1_net clk2_net}]
Important: You must set the CLOCK_DELAY_GROUP constraint on the net segment directly connected to the clock buffer.

If possible, use the MBUFG* cells to minimize skew on synchronous CDC timing paths or when matching the insertion delay of multiple related clock networks. When using a single MBUFG* cell, do not use the CLOCK_DELAY_GROUP constraint. When matching the insertion delay of a clock network driven by an MBUFG* cell to a clock network of another global clock buffer, you can use the CLOCK_DELAY_GROUP constraint as shown in the following example:

set_property CLOCK_DELAY_GROUP mbufGrp [get_nets -of [get_pins MBUFGCE_inst/O*]]
set_property CLOCK_DELAY_GROUP mbufGrp [get_nets -of [get_pins BUFGCE_gated_inst/O]]
Figure 1. Insertion Delay Matching on Output of MBUFGCE and a Gated BUFGCE