Skip to content

Verification scope

RustSTA separates engine tests, independent checking, recomputation consistency and external reference comparisons. Each answers a different question.

Evidence Existing infrastructure Boundary
Analytic timing cases Hand-derived checks for clocks, latches, constants, slews, loads and exceptions Small synthetic inputs; not process sign-off
Independent checker ruststa-check, separate Liberty/netlist/SDC readers and f64 timing implementation Supported cases and explicit work budgets
Full recomputation ruststa check --method full Consistency with the same engine
Incremental consistency TimingSession mutation tests vs full analysis Rust API coverage; CLI update still computes the full result
Dual-PDK coverage Pinned Sky130 HD, GF180 7T and 9T libraries Exact profiles and inputs recorded in the PDK suite
CPU/CUDA consistency Differential propagation tests with explicit f64/f32 contracts CUDA requires an actual device; absent hardware is unverified
OpenSTA comparison Run a pinned external executable on identical standard-format inputs Requires matched scope and tracked outputs; not established by compilation

Run the registered checks

cargo xtask verify sta
cargo xtask pdk fetch
cargo xtask verify pdk --profile pr --require

These commands describe how to collect evidence. Their presence in the docs does not imply that every profile, operating corner, GPU or large design has been verified for the current checkout. Preserve dated results and environment details with each run.

The PDK suite defines pinned inputs, profiles, mutation counts and resource controls. Use --require when missing libraries must fail a gate; an optional skipped run is unverified, never a pass for that library.

Known checker boundaries

The independent checker has bounded path work. On large reconvergent designs with exceptions it can reach its enumeration limit and return undecided. Some large structural-netlist conversions and exception-free timing cases have also shown checker limitations. A mismatch requires investigation; agreement with a full rerun does not erase an independent-check mismatch.

Keep the checker separate from the engine implementation. Correct a disagreement with independent evidence, and keep unverified outcomes visible.

External timing comparisons

Use OpenSTA only as a black-box executable over Verilog, Liberty, SDC and any supported parasitic inputs. Do not inspect, compare or translate its source. Record the executable version/hash, source input hashes, corner, clock/wire models, endpoint coverage, units and tolerance. Compare like-for-like setup/hold checks and rise/fall transitions.

This documentation release does not publish a numerical OpenSTA speedup or a sign-off equivalence claim. A missing reference executable is unverified. For performance comparisons, report complete command wall time and peak RSS beside timing agreement; see measurement guidance.

Specifications and analytic sources