Using the set_false_path Constraint

The set_false_path constraint lets you be more specific when setting clock constraints. This constraint lets you cut the connection between a starting point (from) and an ending point (to). The from and to can be registers, I/O, or clocks.

The following constraint cuts the connection from clk1 to clk2:

set_false_path -from clk1 -to clk2

Remember, though, that this only cuts the connection in one direction. To specify that there is no relationship between clk1 and clk2, you also need to use the following constraint:

set_false_path -from clk2 -to clk1

Using set_false_path Constraints

A complete example of the constraints needed for our hypothetical four-clock design is:
set_false_path -from clk1 -to clk3
set_false_path -from clk1 -to clk4
set_false_path -from clk2 -to clk3
set_false_path -from clk2 -to clk4
set_false_path -from clk3 -to clk1
set_false_path -from clk3 -to clk2
set_false_path -from clk3 -to clk4
set_false_path -from clk4 -to clk1
set_false_path -from clk4 -to clk2
set_false_path -from clk4 -to clk3

When you want to cut paths between clock domains, as in this simple example, Efinix recommends that you use set_clock_groups instead of set_false_path. The set_false_path constraint becomes more useful when you want to specify exceptions for registers or I/O, or if you want to cut only one direction of a clock domain pair.

Cut Path to a Port or Pin

To cut only the path from clk1 to a port named testout:
set_false_path -from clk1 -to [get_ports testout]
To cut only the path from clk1 to a pin named testout:
set_false_path -from clk1 -to [get_pins instance|testout]