A false path, as its name denotes is a timing path not required to meet its timing constraints for the design to function properly.
In general all timing paths those are launched by a valid startpoint and captured by a valid endpoint impose setup and hold constraints. If the functionality of the design is such that the timing constraints need not be met on the path, it is a false path.
Every false path needs to be informed to the STA tool. As the STA tool considers every path that originates at a valid startpoint and ends on a valid endpoint as a valid timing path that needs to be met.
A situation where the design results in false paths is:
There are two 2 input muxes in a design. Both of which are selected by a common select line.
If you consider the signal B to be launched by a flop and Y to be captured by another flop, in no situation, there will be valid funtional path between B and Y.
Reason: Assume the muxes select signal at top side when the select line is 0 and the bottom signal when select line is 1. When the select line is 0, B is selected by mux 1, but the mux 1 output (D) will not be selected by mux 2. But the static timing analysis tool will not consider this as an invalid path, it just looks for valid timing arcs, an there is a timing arc from B input to output of the first mux and then to the Y signal through the second mux.
This is just a simple example of a false path. There can be many paths of this type in a large design. But, we cannot find each and every path and declare it as false. If this type of path is found in a clock muxing logic, then declaring a false path (I think set_disable_timing might be required for the paths in clock logic) through B and Y would be useful. If this type of path is found in a critical path of design, then it will be very useful to add a false path.
When functional ports are multiplexed with test logic, the input and output delays added on these ports would also show up many false paths.
If possible (timing is not critical and area is not critical), optimizing a false path is of no harm compared to declaring a functionally necessary path as a false path by mistake.
In general all timing paths those are launched by a valid startpoint and captured by a valid endpoint impose setup and hold constraints. If the functionality of the design is such that the timing constraints need not be met on the path, it is a false path.
Every false path needs to be informed to the STA tool. As the STA tool considers every path that originates at a valid startpoint and ends on a valid endpoint as a valid timing path that needs to be met.
A situation where the design results in false paths is:
There are two 2 input muxes in a design. Both of which are selected by a common select line.
If you consider the signal B to be launched by a flop and Y to be captured by another flop, in no situation, there will be valid funtional path between B and Y.
Reason: Assume the muxes select signal at top side when the select line is 0 and the bottom signal when select line is 1. When the select line is 0, B is selected by mux 1, but the mux 1 output (D) will not be selected by mux 2. But the static timing analysis tool will not consider this as an invalid path, it just looks for valid timing arcs, an there is a timing arc from B input to output of the first mux and then to the Y signal through the second mux.
This is just a simple example of a false path. There can be many paths of this type in a large design. But, we cannot find each and every path and declare it as false. If this type of path is found in a clock muxing logic, then declaring a false path (I think set_disable_timing might be required for the paths in clock logic) through B and Y would be useful. If this type of path is found in a critical path of design, then it will be very useful to add a false path.
When functional ports are multiplexed with test logic, the input and output delays added on these ports would also show up many false paths.
If possible (timing is not critical and area is not critical), optimizing a false path is of no harm compared to declaring a functionally necessary path as a false path by mistake.