Skip to content

OpenSTA can report the same path (with the same transitions) with different delays/slacks #322

@hongted

Description

@hongted

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

  1. Report paths not removing any duplicate paths (current default)
  2. Report paths where paths going through the same pins and having the same transitions are not reported twice (NEW)
  3. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions