Example - 2025.1 English - UG906

Vivado Design Suite User Guide: Design Analysis and Closure Techniques (UG906)

Document ID
UG906
Release Date
2025-05-29
Version
2025.1 English

In the following figure, a synchronous clock domain crossing (CDC) exists between the clk1 and clk2 domains. Both clk1 and clk2 are determined to be synchronous in Vivado by default. However, because clk1 and clk2 are input ports, there is no common node relationship between the two clocks. For this case, Vivado Design Suite cannot guarantee that the two clocks are synchronous.

However, if the module is synthesized Out-Of-Context and clk1 and clk2 have a common node at the top-level, the TIMING-7 violation can be suppressed during the OOC synthesis by defining, for example, the following constraints:

    create_clock -period 3.000 [get_ports clk1]
    set_property HD.CLK_SRC BUFGCTRL_X0Y2 [get_ports clk1]
    create_generated_clock -divide_by 2 -source [get_ports clk1] \
 [get_ports clk2]
    set_property HD.CLK_SRC BUFGCTRL_X0Y4 [get_ports clk2]
Figure 1. No Common Node Between Related Clocks
Page-1 Sheet.1 Sheet.2 Sheet.3 Process.16 Process.8 Clock domain crossing Clock domain crossing Sheet.6 Process.5 Top-level ports clk1 and clk2 do not have a common node betwe... Top-level ports clk1 and clk2 do not have a common node between them Sheet.9 X15526-111715 X15526-111715