Friday, June 1, 2018

set_false_path vs set_disable_timing

What is false path?
A false path is a logic path that exists but should not be analyzed for timing. For example, a path can exist between two multiplexed logic blocks that are never selected at the same time, so that path is not valid for timing analysis.

For example, to declare a false path from pin FFB1/CP to pin FFB2/D:
pt_shell> set_false_path -from [get_pins FFB1/CP]  -to [get_pins FFB2/D]

Declaring a path to be false removes all timing constraints from the path. PrimeTime still
calculates the path delay, but does not report it to be an error, no matter how long or short
the delay.


What is set_disable_timing?
Setting a false path is a point-to-point timing exception. This is different from using the
set_false_path command, which disables timing analysis for a specified pin, cell, or
port. Using the set_disable_timing command removes the affected objects from timing
analysis, rather than removing the timing constraints from the paths.

When set_disable_timing is preferred to set_false_path?
If all paths through a pin are false, using set_disable_timing [get_pins pin_name] is more efficient than
using set_false_path -through [get_pins pin_name]. Because PT calculates path delay in case of set_false_path


Another example of a false path is a path between flip-flops belonging to two clock domains that are asynchronous with respect to each other.
To declare all paths between two clock domains to be false, you can use a set of two
commands such as the following:


pt_shell> set_false_path -from [get_clocks ck1] -to [get_clocks ck2]pt_shell> set_false_path -from [get_clocks ck2] -to [get_clocks ck1]


For efficiency, be sure to specify each clock by its clock name, not by the pin name (useget_clocks, not get_pins).


An alternative is to use the
set_clock_groups command to exclude paths from consideration that are launched by one clock and captured by another. Although this has the same effect as declaring a false path between the two clocks, it is not considered a timing exception and is not reported by the report_exceptions command.  

2 comments:

  1. suppose if we gave as set_disable_timing -from [get_pins FFB1/CP] -to [get_pins FFB2/D] tool will the tool calculate the max tran and max violations for that data path ?

    ReplyDelete