Run Simulation
SkillDev toolsRun circuit simulation (DC, tran, AC) on Virtuoso. Use when executing Spectre simulation, running analysis, or checking simulation results.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Run Simulation skill
What this skill tells your AI
The instructions your AI receives, as published by deanyou/virtuoso-cli in .agents/skills/sim-run/SKILL.md and read by ahel’s review.
Execute Spectre simulation via virtuoso sim run.
Prerequisites
Simulation must be set up first (see /sim-setup):
simulator('spectre)configureddesign(lib cell view)setmodelFile(...)configureddesVar(...)set for any parameterized variablesresultsDir(...)set
Run analysis
# DC operating point
virtuoso sim run --analysis dc --param saveOppoint=t --timeout 120 --format json
# Transient
virtuoso sim run --analysis tran --stop 10u --timeout 300 --format json
# AC
virtuoso sim run --analysis ac --start 1 --stop 1e9 --dec 10 --timeout 300 --format json
Important: resultsDir — DO NOT CHANGE
⚠️ The ADE session binds run() to the resultsDir established when the GUI session
was first created. Changing it to any other path silently breaks run() (returns nil).
# ✅ Find the canonical path from the runSimulation script
cat <netlist_dir>/runSimulation | grep "\-raw"
# → -raw ../../../../tmp/opt_5t_ota/psf → canonical = /tmp/opt_5t_ota
# ✅ If resultsDir is nil, restore to canonical path
virtuoso skill exec 'resultsDir("/tmp/opt_5t_ota")'
# ❌ Never do this before a run — it will break run()
virtuoso skill exec 'resultsDir("/tmp/some_new_path")'
sim run now returns a clear error if resultsDir is nil instead of auto-setting it
to a temp path (which would break the ADE session binding).
Also: do not call sim setup again once a working ADE session exists — it resets
the Ocean session state and can cause run() to return nil.
Verify success
After run(), check spectre.out for errors:
# Check the log
virtuoso skill exec 'resultsDir()' --format json
# Then read the spectre.out file at <resultsDir>/psf/spectre.out
# A successful run has PSF data files (dcOp.dc, tran.tran, etc.)
# A failed run only has artistLogFile, simRunData, variables_file
Key indicators
| run() output | Meaning |
|---|---|
| Returns resultsDir path | Simulation completed |
| Returns nil, takes <0.01s | Analysis not configured or session lost |
| Returns nil, takes >0.1s | Netlisting ran but spectre may have failed |
Common errors in spectre.out
| Error | Fix |
|---|---|
| SFE-868: Cannot open input file | Model path wrong — verify file exists |
| SFE-675: no valid section name | Empty section "" in modelFile for .lib — remove it |
| SFE-1997: parameter not assigned | Set desVar() for the missing parameter |
| OSSHNL-116: Cannot descend into views | Subcell missing spectre view — remove instance or add view |
Signals
- GitHub stars
- 32
- Forks
- 10
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
sim-run- Source
- github.com/deanyou/virtuoso-cli