Static timing analysis — multi-corner constraint validation, setup and hold analysis, timing exception review, and ECO guidance for closure. Use when running timing analysis on a design, reviewing timing violations, guiding ECO fixes, or performing timing sign-off for tape-out.
When this skill is loaded and a user presents a timing analysis task, do not
execute stages directly. Immediately spawn the
digital-chip-design-agents:sta-orchestrator agent and pass the full user
request and any available context to it. The orchestrator enforces the stage
sequence, loop-back rules, and sign-off criteria defined below.
Use the domain rules in this file only when the orchestrator reads this skill mid-flow for stage-specific guidance, or when the user asks a targeted reference question rather than requesting a full flow execution.
Multi-corner, multi-mode timing analysis, exception review, ECO-guided closure, and timing sign-off. WNS ≥ 0 and TNS = 0 at all corners required for tape-out.
staopenroad -no_init) — STA within the OpenROAD PD flow; runs sequentially via tcl scriptpt_shell) — gold-standard multi-corner STA and power analysistempus) — concurrent multi-mode multi-corner STA with ECO guidanceOpenSTA (sta) and the OpenROAD STA subsystem (openroad -no_init) execute tcl script
commands sequentially. When run in batch mode the agent must parse the output log to
extract timing results — there is no interactive prompt to query mid-run.
Key log patterns to parse after run completion:
report_timing output → extract WNS (worst negative slack) and critical pathreport_tns output → extract TNS (total negative slack) per cornerreport_clock_skew output → global skew and insertion delay per clock groupcheck_timing → missing constraints, unconstrained endpoints, loopsBatch invocation:
opensta -no_splash -exit timing_check.tcl > sta.log 2>&1
# or via OpenROAD:
openroad -no_init -exit sta.tcl > sta.log 2>&1
Parse sta.log after completion. Apply loop-back rules (ECO guidance stage) if
setup/hold violations are found.
report_timing -unconstrained–setup N and –hold 1 specified| Error | Consequence |
|---|---|
| MCP without hold correction | Hold violations introduced |
| False path too broad | Real timing issues masked |
| Generated clock missing | Path unconstrained |
| Wrong clock period | Over/under-constraining |
| Mode | Setup Corner | Hold Corner |
|---|---|---|
| Functional | SS/0.9V/125°C | FF/1.1V/−40°C |
| Test (at-speed) | SS/0.9V/125°C | FF/1.1V/25°C |
| Low Power | SS/0.9V/125°C | FF/1.1V/25°C |
| Metric | Target |
|---|---|
| Setup WNS | ≥ 0 all corners |
| Setup TNS | = 0 all corners |
| Hold WNS | ≥ 0 all corners |
| Hold TNS | = 0 all corners |
set_false_path: verify the path is truly non-functional (not just inconvenient)set_multicycle_path: verify both -setup N and -hold 1 are set correctlyset_max_delay: verify value matches system-level timing budget| Error | Consequence |
|---|---|
set_false_path on functional CDC | Real metastability risk hidden |
| MCP without hold correction | Hold violations introduced silently |
| Exception too broad (glob match) | Unintended paths unconstrained |
| Expired exception (removed logic) | Stale SDC — may mask other issues |
Setup violation:
Logic depth > target? → Retime / add pipeline stage
Long wire (> 500μm)? → Buffer insertion / reroute on upper metal
Weak driver? → Upsize driver cell
High-Vt on critical path? → Swap to SVT or LVT
Reconvergent fanout? → Clone cell / split net
Hold violation:
Skew-induced (post-CTS)? → Useful skew / targeted delay buffer
Short path (< 1 cycle)? → Insert HVT delay buffer
New path from ECO? → Targeted hold buffer at sink register
After each stage completes (regardless of whether an orchestrator session is active),
write or overwrite one JSON record in memory/sta/experiences.jsonl keyed by
run_id. This ensures data is persisted even if the flow is interrupted or called
without full orchestrator context.
Use run_id = sta_<YYYYMMDD>_<HHMMSS> (set once at flow start; reuse on each
stage update). Set signoff_achieved: false until the final sign-off stage completes.