When writing the CDC constraints, verify that you respect the precedence. You
cannot use the set_clock_groups constraints between two
clocks if you use set_max_delay -datapath_only on at
least one path between them. You can only use set_false_path constraint on the other paths between the two clocks.
In the following figure, the clock clk0 has a
period of 5 ns and is asynchronous to clk1. There are
two paths from the clk0 domain to the clk1 domain. The first path is a 1-bit data
synchronization. The second path is a multi-bit gray-coded bus transfer.
The designer decides that the gray-coded bus transfer requires a Max Delay Datapath Only. This limits the delay variation among the bits. It becomes impossible to use a Clock Groups or False Path constraint between the clocks directly. Define two constraints instead:
set_max_delay -from [get_cells GCB0[*]] -to [get_cells [GCB1a[*]] \
-datapath_only 5
set_false_path -from [get_cells REG0] -to [get_cells REG1a]
There is no need to set a false path from clk1 to clk0 because
there is no path in this example.