Summary numbers

The cards come in more than one shape: a command to explain, and a description whose command you name. 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 7 cards in this section, with answers
  • report_wns
    Prints the worst negative setup slack, or 0 if every setup check passes.

    Hint: The N in WNS (Worst Negative Slack) is negative. Ask what it can report when nothing is negative.

    WNS (Worst Negative Slack) never reports a positive number; a design that passes shows 0. report_worst_slack shows the actual worst slack, positive or negative. -min switches to hold. OpenSTA reference

  • report_tns
    Prints the negative slacks of the failing endpoints added together.

    Hint: The T is total. Ask what it is totalled over.

    TNS (Total Negative Slack) measures how widespread the failures are, and WNS (Worst Negative Slack) how deep the worst one is. A small WNS (Worst Negative Slack) with a large TNS (Total Negative Slack) means many endpoints fail by a little. OpenSTA reference

  • report_worst_slack -min
    Prints the worst hold slack in the design, even if it is positive.

    Hint: Compare it with `report_wns`: only one of the two can report a positive number. `-min` selects hold.

    report_worst_slack reports the actual value, so a passing design shows its margin. report_wns -min would show 0 for the same design. OpenSTA reference

  • report_check_types
    Reports the worst slack of each kind of timing and design-rule check.

    Hint: Types means kinds of check: setup and hold, but also slew, capacitance, fanout, and pulse width.

    The kinds include setup, hold, recovery, removal, clock-gating, maximum slew, capacitance, fanout, minimum pulse width, and minimum period. Each can be requested alone with its option. OpenSTA reference

  • report_check_types -violators
    Lists every violated check of every kind, from setup to maximum slew.

    Hint: A violator is any check with negative slack, not only a timing path.

    This is the sign-off question in one command: is anything violated, of any kind? Timing and design-rule violations are listed together. OpenSTA reference

  • report_check_types -max_slew -max_capacitance -max_fanout
    Reports only the slew, capacitance, and fanout design-rule checks.

    Hint: All three options name design rules, so the report is narrowed to those.

    These are the electrical design rules, reported separately from timing slack. Reporting changes nothing; repair is a separate step. OpenSTA reference

  • You want one number for the worst slack in the design, tracked run over run, and it must keep reporting the margin once every path passes.
    report_worst_slack

    Hint: One of these reports zero as soon as nothing is failing.

    Worst negative slack is clamped at zero, so a design that closes reports the same number however much margin it has. The worst slack keeps counting upward, which is what makes it the better number to plot across runs. OpenSTA reference