Path reports

The cards come in more than one shape: a command to explain, and a command with a gap to fill. A missed card returns later in the round and starts the schedule over. A card answered correctly moves up the schedule and next appears after 1, 3, 7, then 21 days. Keys 1 to 4 choose an option, h shows a hint, and Enter moves on. A hint keeps the card where it is on the schedule. An ordering card is answered by clicking its items in order, and one wrong click ends it. Time values are in nanoseconds. Progress is stored in this browser.

SourceThese cards follow the reporting commands of OpenSTA, the open-source static timing analyzer used by OpenROAD, and each answer links to that command in the OpenSTA command reference. Report commands are not a standard: other timers name and format their reports differently. The report excerpts are real OpenSTA output from the gcd example design. Reference: OpenSTA command reference (OpenSTA on GitHub).
All 20 cards in this section, with answers
  • report_checks
    Reports the worst setup path in each path group, in full detail.

    Hint: Three defaults decide what you get: which analysis, how much detail per path, and how many paths per group.

    With no options, -path_delay is max (setup), -format is full, and one path is reported per path group. Paths are grouped by the clock that captures them, with separate groups for unclocked and unconstrained paths. OpenSTA reference

  • report_checks -path_delay min
    Reports the worst hold path in each path group.

    Hint: In a timing tool, min and max name the two analyses, not the size of anything.

    min uses the earliest arrivals, which are checked against hold requirements; max uses the latest arrivals, checked against setup. OpenSTA reference

  • report_checks -path_delay min_max
    Reports both the worst setup path and the worst hold path in each group.

    Hint: Read it as min plus max: the two analyses in one report.

    min_max runs both analyses in one report: the setup (max) paths and the hold (min) paths. OpenSTA reference

  • report_checks -group_path_count 10
    Reports up to 10 of the worst paths in each path group.

    Hint: There are two counts in this command: one per path group, one per endpoint. This is the first.

    The default is 1 per group. Because -endpoint_path_count defaults to 1, each endpoint contributes at most one path, so these are the 10 worst endpoints of each group. OpenSTA reference

  • report_checks -group_path_count 5 -endpoint_path_count 3
    Reports 5 paths per group, allowing up to 3 different paths into one endpoint.

    Hint: The group count caps the whole group; the endpoint count only decides how those paths may be shared out.

    -group_path_count caps the paths per group; -endpoint_path_count caps how many of them may end at the same endpoint. Many of those paths can differ only in rise and fall edges; -unique_paths_to_endpoint keeps one path per set of pins. OpenSTA reference

  • report_checks -format end -group_path_count 20
    Lists the 20 worst endpoints per group, one line per endpoint.

    Hint: The end of a path is its endpoint, and the format keeps only that.

    The end format drops the stage-by-stage detail and keeps one line per path end: required time, arrival, and slack. It is the usual way to see how many endpoints fail and by how much. OpenSTA reference

  • report_checks -format full_clock
    Reports the data path plus the launch and capture clock paths, stage by stage.

    Hint: The default report compresses each clock into a single `clock network delay` line. Ask what expanding it shows.

    The default full format shows the clock network delay as a single line. full_clock expands it into the clock buffers on both sides, which shows where skew comes from. full_clock_expanded also shows the path from a generated clock's source. OpenSTA reference

  • report_checks -fields {slew cap fanout}
    Adds slew, capacitance, and fanout columns to every stage of the path.

    Hint: Fields add columns to each stage; they do not filter which paths are reported.

    The extra columns explain a slow stage: a large load, a high fanout, or a slow input slew. input_pin and net add the input pins and the nets as rows. OpenSTA reference

  • report_checks -slack_max 0 -group_path_count 100
    Reports up to 100 paths per group with slack below 0, the failing ones.

    Hint: Read `-slack_max` as an upper bound on the slack of the paths you want listed.

    -slack_max keeps paths with less slack than the value, and -slack_min keeps paths with more. Together with a large path count, -slack_max 0 lists the failing paths. OpenSTA reference

  • report_checks -through [get_pins u_alu/sum*]
    Reports the worst path that passes through one of the pins u_alu/sum*.

    Hint: `-from`, `-through`, and `-to` mean here what they mean in a timing exception.

    -from, -through, and -to narrow the report the same way they narrow a timing exception: from start points, through intermediate pins, to endpoints. OpenSTA reference

  • report_checks -unconstrained
    Also reports paths that have no timing requirement at all.

    Hint: A path with no requirement has no slack, so ask where such paths are normally put.

    They are reported in their own group. Without this option the unconstrained group is not reported at all. An unconstrained path usually means a constraint is missing, for example an output port with no output delay. OpenSTA reference

  • report_checks -group_path_count 5 -sort_by_slack
    Reports the paths in slack order across all groups, not group by group.

    Hint: By default paths are listed group by group, sorted inside each group.

    By default paths are listed group by group, worst first within each group. -sort_by_slack merges the groups into one list ordered by slack. OpenSTA reference

  • report_checks -path_group core_clock
    Reports only the paths in the path group named core_clock.

    Hint: A path's group is the clock that captures it, unless `group_path` moved it.

    A path's default group is the clock that captures it, so this reports paths captured by core_clock. Groups made with group_path are selected the same way. OpenSTA reference

  • set paths [find_timing_paths -path_delay max -group_path_count 10]
    Stores the 10 worst setup paths as path objects in a variable, printing nothing.

    Hint: The name says find, not report. Ask what a script would want back.

    find_timing_paths takes the same selection options as report_checks but returns objects for a script. get_property reads their fields, such as slack, startpoint, and endpoint. OpenSTA reference

  • report_checks -format summary -group_path_count 10
    Prints one line per path with its start point, end point, and slack.

    Hint: Between the full path and one line per end, there is a middle.

    summary keeps the start point, which end drops, and omits the required and arrival columns that end shows. It is the quickest way to see which registers the failing paths run between. OpenSTA reference

  • report_checks -path_delay min_max -format short
    Prints only each path's header, with no stages and no numbers.

    Hint: Ask what remains when the stages and the numbers are both dropped.

    What is left is the start point, end point, path group, and path type. That alone answers which paths would be reported, which is how a selection is checked before a long report is run. Confirm it by reading the header lines: the path type says whether it is a setup or a hold path. OpenSTA reference

  • report_checks -format json > paths.json
    Writes the paths in a machine-readable form, ignoring the field options.

    Hint: Ask who reads this one.

    A script that post-processes timing should not parse the human report, whose layout changes between versions. The JSON (JavaScript Object Notation) form is stable, and -fields is ignored because every field is present. OpenSTA reference

  • report_checks ____ min -digits 3
    -path_delay

    Hint: The report wanted here is the hold report.

    Minimum delay paths are the hold checks and maximum delay paths the setup checks, and min_max asks for both. Other timers spell the same option -delay_type, which is why a script moved between tools trips here rather than anywhere more interesting. OpenSTA reference

  • report_checks -format ____
    full_clock_expanded

    Hint: Two of these show the clock. Only one expands it cell by cell.

    The plain full format shows the data path with the clock arrival as a single number. Adding the clock shows the clock edges, and expanding it shows every buffer in the tree, which is what you need when the skew itself is the suspect. OpenSTA reference

  • report_checks ____ 10 -path_group reg2reg
    -group_path_count

    Hint: The other counting option limits how many paths may share one endpoint.

    By default one path is reported per endpoint and a handful per group. Raising the group count gives a longer list of the worst paths; raising the endpoint count gives several paths through the same endpoint, which is what you want when one register is failing for more than one reason. OpenSTA reference