The typical cases for using the false path constraint are as follows:
- Ignoring timing on a path that is never active. A path crosses two multiplexers.
These multiplexers cannot let the data propagate in the same clock cycle. This is
due to the select pins connectivity.Figure 1. Path Cannot be Sensitized
set_false_path -through [get_pins MUX0/I0] -through [get_pins MUX1/I1] - Ignoring timing on an asynchronous CDC path.
- Ignoring static paths in the design. Some registers take a value one time during
the initialization phase of the application and never toggle again. Ignore them for
timing when they appear to be on the critical path of the design. This action
relaxes the constraints on the implementation tools and help with timing closure. It
is sufficient to define a false path constraint from the static register only,
without explicitly specifying the paths endpoints.
For example, you can ignore the paths from a 32-bit configuration register
config_reg[31..0]to the rest of the design. Add the following false path constraint to achieve this:set_false_path -from [get_cells config_reg[*]]