一键导入
sim-run
Run circuit simulation (DC, tran, AC) on Virtuoso. Use when executing Spectre simulation, running analysis, or checking simulation results.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Run circuit simulation (DC, tran, AC) on Virtuoso. Use when executing Spectre simulation, running analysis, or checking simulation results.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Import P&R (Genus + Innovus) products into Virtuoso: GDS layout, Verilog schematic/symbol, power labels, and label restyling. Four-step pipeline driven entirely from vcli skill exec — no Python bridge or GUI required. Use when: (1) user wants to pull a routed GDS or post-P&R netlist into Virtuoso, (2) layout labels look giant/unreadable after import, (3) user mentions strmin / ihdl / digital import / P&R-to-schematic flow.
Generate Virtuoso schematics from topology descriptions via vcli schematic commands. Use when: (1) user wants to draw/create a schematic in Virtuoso, (2) user says "draw the OTA" or "create the schematic", (3) after sizing is complete and ready to build the circuit, (4) user provides a topology and wants it instantiated.
Read Maestro/ADE simulation output values directly from PSF binary files — no Virtuoso GUI or bridge required. Parses maestro.sdb + active.state XML to extract output expressions, resolves the PSF directory from history.sdb, evaluates Ocean-style expressions (getData, dB20, phaseDeg, bandwidth, ymax, VF, VT…), and returns structured JSON results. Use this skill whenever: - The user asks "what is the gain / phase margin / bandwidth from the simulation?" - `maeGetOutputValue` returned nil (requires GUI results loaded in memory) - The user wants to check simulation results offline or from a script - The user wants to read PSF files / evaluate output expressions from a Maestro session - Any request involving Maestro output expressions, PSF files, or ADE results without GUI
Maestro (ADE Assembler) session management and simulation. Use when: running simulations via Maestro, configuring tests/analyses/outputs, updating design variables, reading results.
Evolve skills from vcli session history. Use when: (1) user says "根據歷史進化技能" / "evolve skills from history" / "覆盤技能", (2) after a debugging session to capture what went wrong, (3) periodic skill maintenance to close knowledge gaps revealed by real usage. Reads cmd.jsonl + per-session SKILL logs, finds failure/correction/gap signals, maps them to skills in .claude/skills/, and writes concrete improvements.
Execute SKILL code on Virtuoso. Use when running SKILL expressions, querying cellview data, listing libraries/cells, or interacting with Virtuoso programmatically.
| name | sim-run |
| description | Run circuit simulation (DC, tran, AC) on Virtuoso. Use when executing Spectre simulation, running analysis, or checking simulation results. |
| argument-hint | ["analysis","e.g. \"tran 10us\" or \"ac 1Hz-1GHz\" or \"dc\""] |
| allowed-tools | Bash(virtuoso *) |
Execute Spectre simulation via virtuoso sim run.
Simulation must be set up first (see /sim-setup):
simulator('spectre) configureddesign(lib cell view) setmodelFile(...) configureddesVar(...) set for any parameterized variablesresultsDir(...) set# 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
⚠️ 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.
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
| run() output | Meaning |
|---|---|
| Returns resultsDir path AND PSF data files exist | Simulation completed ✓ |
| Returns resultsDir path BUT only artistLogFile/simRunData/spectre.out | Spectre failed — run() does NOT check spectre's exit code |
| Returns nil, takes <0.01s | Analysis not configured or session lost |
| Returns nil, takes >0.1s | Netlisting ran but spectre may have failed |
⚠️ run() returning a non-nil path is not sufficient proof of success. Spectre can
terminate with fatal errors (e.g., SFE-868) and run() still returns the resultsDir.
Always verify PSF data files exist:
tail -2 <resultsDir>/psf/spectre.out
# ✓ "spectre completes with 0 errors"
# ✗ "spectre terminated prematurely due to fatal error"
| Error | Fix |
|---|---|
SFE-868: ADE-generated path .../oa/lib/../models/... | Patch input.scs: replace with direct absolute model path + section=tt — see /spectre-netlist-gotchas §8 |
| SFE-868: Cannot open input file (other) | 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 |