- 
                Notifications
    
You must be signed in to change notification settings  - Fork 47
 
Description
OpenRoad can report multiple identical paths with the same transitions for each pin when reporting multiple paths per endpoint. This is unexpected.
Example:
report_checks -path_delay max -endpoint_path_count 8 ... 
This was seen in arithmetic circuits using full adder cells which utilize Liberty's "when" clause to provide multiple different timing groups between the same set of pins.
Example: for a full adder {CO, S} = A + B + CI
pin(S) {
  timing () {
    related_pin: "B";
    when : "A & !CI" 
    ...
  }
  timing () {
    related_pin: "B";
    when : "!A & CI"
    ...
  }
  ...
}
With these cells the same path can be reported multiple times with different delays
Psuedo-Output:
Startpoint: B[1] (input port)
Endpoint: out1[1] (output port)
Path Group: path delay
Path Type: max
Time   Description
------------------
0.5  v i1.i1/B (FA)
0.51 ^ i1.i1/S (FA)
...
Startpoint: B[1] (input port)
Endpoint: out1[1] (output port)
Path Group: path delay
Path Type: max
Time   Description
------------------
0.5  v i1.i1/B (FA)
0.52 ^ i1.i1/S (FA)
OpenSTA has a unique_paths_to_endpoint option that will remove all paths going through the same pins, but that will also remove paths going through the same pins with different transitions.
What is needed is an option say
report_checks -unique_transitions_to_endpoint
In summary, there should be three modes
- Report paths not removing any duplicate paths (current default)
 - Report paths where paths going through the same pins and having the same transitions are not reported twice (NEW)
 - Report paths where paths going through the same pins are not reported twice (option -unique_paths_to_endpoint)
 
Mode 2 can be considered as the default reporting mode to simplify the UI.