RTL Bench PRO

Static timing analysis in your browser

Static timing analysis answers one question: will your design meet its clock constraint? RTL Bench synthesises the design, maps it to standard cells from a real PDK, walks the longest path, and reports the number — without installing OpenSTA or a Liberty file.

Running STA

Open the workbench, paste a design, and click ⏱ Calculate STA in the bottom status bar. The button pulses while the analysis runs — usually one to three seconds for a small design.

studio — status bar (STA cycle)
⏱ Calculate STA
Critical: 3.42 ns  ·  Slack: +6.58 ns  ·  100 MHz
Idle → calculating → done. Green means positive slack; yellow is marginal; red is a violation.

What the numbers mean

Critical path delay

The time it takes for a signal to propagate from the start of the longest combinational path to its end. Usually measured between two flip-flops on a reg2reg path, but can also involve primary inputs and outputs.

Slack

The margin between your clock period and the critical path:

slack = clock_period − critical_path_delay

RTL Bench assumes a 10 ns clock period (100 MHz) by default. So a 3.42 ns critical path gives +6.58 ns slack — the design closes timing with room to spare.

SlackColourWhat it means
Positive (≥ 0) Green Timing closes. Design meets the clock.
Close to 0 Yellow Marginal. Any added logic will break it.
Negative (< 0) Red Violation. Design will not run at 100 MHz.

Which PDK

RTL Bench maps your design to standard cells from one of three open-source process design kits. Every corner is TT at 25 °C; only the supply voltage and node change.

studio — STA target selection
sky130 · SkyWater 130 nm TT · 1.8 V · 25 °C
gf180 · GlobalFoundries 180 nm MCU TT · 3.3 V · 25 °C
ihp · IHP SG13G2 130 nm BiCMOS TT · 1.2 V · 25 °C
Pick a target node before running STA — corners are fixed, only Vdd and process change.
PDK Node Vdd Notes
sky130 SkyWater 130 nm 1.8 V Default. Best-characterised; widest cell library.
gf180 GlobalFoundries 180 nm MCU 3.3 V Higher voltage; good for mixed-signal and IO-heavy designs.
ihp IHP SG13G2 130 nm BiCMOS 1.2 V Low-voltage, low-power; RF-friendly.
💡 Running the same design against all three nodes is the fastest way to see how much a different process affects your timing. Expect sky130 and ihp to be closer to each other than either is to gf180 — the node sizes and supply voltages differ.

Timing path classification

Every path reported falls into one of four standard categories, based on where it starts and ends. See STA path types for the full breakdown.

Class Start End What it tells you
in2reg Input port Flip-flop D Setup path from an external driver. Depends on the board.
reg2reg Flip-flop Q Flip-flop D Internal logic. Usually the critical path.
reg2out Flip-flop Q Output port Output propagation delay.
in2out Input port Output port Pure combinational — no clock involved.

When you open the STA results page, each path is labelled with its class. That tells you at a glance whether the timing bottleneck is inside your design or at its boundary.

💡 If the worst path is in2out, there are no registers on it — the reported number is a combinational delay, not a clock constraint. Register the output to convert it into a reg2out path and get a meaningful slack number.

What you don't get

Honest limitations so you know when to use something else:

  • Fixed corner. Only TT / 25 °C. Real signoff needs SS (slow-slow) and FF (fast-fast) corners, plus temperature and voltage variation. RTL Bench reports a typical-case estimate, not signoff.
  • No setup/hold pair. Only setup analysis. Hold violations come from physical effects RTL Bench does not model.
  • No clock uncertainty. Jitter, skew, and clock-tree delay are assumed to be zero. Real designs budget for them.
  • Flattened netlist. STA flattens the design first. If it has many multipliers or over 50k gates after flattening, the backend times out — analyse one submodule at a time using the Top-module dropdown.
⚠️ For signoff, run OpenSTA or PrimeTime with the full Liberty library and a real SDC. RTL Bench is for exploration — it tells you whether your logic is roughly the right depth, not whether the chip will tape out.

Using STA as a feedback loop

The most useful way to use STA in RTL Bench is before you commit to a design structure. Try this workflow:

  1. Write the simplest version of the module.
  2. Run STA. Note the critical path and slack.
  3. Pipeline the module — add a register in the middle of the critical path.
  4. Run STA again. The critical path should roughly halve.
  5. Repeat until slack is comfortably positive with margin for the tools.

This is a much faster loop than running synthesis locally. You get the number you care about — the critical path delay — in a second or two, and you can iterate on structure before writing any testbenches.

Frequently asked questions

What is the difference between Setup Time and Hold Time?

Setup time is the minimum duration the data input must remain stable before the active clock edge. A setup violation causes the flip-flop to sample stale or invalid data, and can be resolved by slowing down the clock. Hold time is the minimum duration data must remain stable after the clock edge; hold violations cannot be fixed by changing the clock frequency and require adding delay buffers.

How is worst negative slack (WNS) calculated?

Slack is defined as Data Required Time minus Data Arrival Time. If arrival time exceeds required time, slack is negative. Worst Negative Slack (WNS) represents the worst timing violation across the entire netlist. A design meets timing only if WNS ≥ 0 ns.

Can I export SDC timing constraints from RTL Bench?

Yes. RTL Bench allows you to view, edit, and export Synopsys Design Constraints (SDC) including create_clock, set_input_delay, set_output_delay, and set_false_path rules.

Next

  • STA path types Learn the difference between reg2reg, in2reg, reg2out, and in2out paths.
  • sky130 vs gf180 vs ihp Compare cell propagation delays and drive strengths across open foundry PDKs.
  • Simulation & waveforms Verify functional correctness with waveform traces before optimizing timing.
Try it in the workbench →