Run Simulation
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 |