Analog circuit simulation — testbench setup, DC operating point, AC, transient, noise, stability, PVT corners, and Monte-Carlo yield analysis, ending in electrical-spec sign-off. Use when verifying an analog block's specs across corners, debugging convergence, or closing Monte-Carlo yield on a SPICE netlist.
How this skill is triggered — by the user, by Claude, or both
Slash command
/analog-design-simulation:circuit-simulationThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
- **If invoked by a user** presenting a simulation/spec-closure task: immediately spawn the
analog-chip-design-agents:circuit-simulation-orchestrator agent and pass the full user
request and any available context. Do not execute stages directly.circuit-simulation-orchestrator mid-flow: do not spawn a new
agent. Treat this file as read-only — return the requested stage rules, sign-off criteria,
or loop-back guidance.Before executing or advising on any stage, read the following if they exist:
memory/sim/knowledge.md — known convergence fixes, successful solver options, corner
pitfalls, PDK model quirks.memory/sim/run_state.md — current run identity for resume-after-interruption.Verify an analog block's electrical specifications across the full PVT + mismatch space and
close Monte-Carlo yield. Eight stages with explicit QoR gates. On a spec violation that the
testbench cannot resolve, this domain opens a fix_request routed to circuit-design by the
pipeline-orchestrator.
ngspice) — DC/AC/tran/noise; .measure, .dc, .ac, .noise, .tranXyce) — parallel SPICE for large netlists and big Monte-Carlo sweepsgnucap) — general circuit analysisqucs-s) — simulation front-end driving ngspice/Xycepython -m PySpice) — scripted corner/Monte-Carlo orchestration and post-processingspectre) — industry analog simulatorhspice) / PrimeSim (primesim) / FineSim (finesim)afs) / Eldo (eldo).param-driven corner/temperature hooks..lib statements (tt/ss/ff/sf/fs)..measure statements for every spec (gain, GBW, PM, noise, offset, settling, power) — never read specs by eye..measure (no manual reads).measure block covering every spec.nodeset/.ic, raise gmin/gmin steps, enable source stepping before declaring failure.| Issue | Fix |
|---|---|
| DC non-convergence | .nodeset key nodes; gmin stepping; source stepping |
| Device in triode | Feed back to circuit-design (re-bias) |
.ac over a decade range spanning DC to ≥ 10× expected GBW.design_state.constraints.specs.dc_gain_dbdesign_state.constraints.specs.gbw_hzdesign_state.constraints.specs.phase_margin_deg (default: 60)specs.psrr_db / specs.cmrr_db (when specified)reltol/abstol for settling measurements; verify timestep does not alias.design_state.constraints.specs.settling_ns (when specified).noise to get input-referred noise density and integrated noise over the band of interest.design_state.constraints.specs.input_noise_nv_rthz (when specified)design_state.constraints.corners.process × temperature (corners.temp_c) × supply (corners.voltage_pct)..measure at every corner; collect the worst case per spec.spec_violation → open a fix_request.| Issue | Fix |
|---|---|
| PM fails at slow/hot corner | fix_request → circuit-design (re-compensate) |
| Gain low at fast/cold | fix_request → circuit-design (re-bias / cascode) |
design_state.constraints.yield.mc_samples samples.design_state.constraints.yield.target_sigma; report the limiting spec.yield failure → open a fix_request.design_state.constraints.yield.target_sigma (default: 3)specs.offset_mv_max| Check | Criterion |
|---|---|
| All AC specs | pass at all corners |
| All transient specs | pass at all corners |
| Noise | within spec |
| Monte-Carlo yield | ≥ design_state.constraints.yield.target_sigma |
| Convergence | clean across all runs |
fix_request (failure_class: spec_violation) → circuit-designfix_request (failure_class: yield) → circuit-designfailure_class: convergence, retry with clean testbench/options; if still failing, escalatefix_request entries for any unresolved violationsSee plugins/meta/skills/pipeline-orchestration/SKILL.md §Constraints Schema for the authoritative schema and stage-entry validation rule.
Required at entry (testbench_setup) — hard-fail if missing:
constraints.supply.vdd_vconstraints.specs (or constraints.rf_specs)constraints.corners.process (≥ 1 entry)Optional (schema defaults apply when absent):
constraints.specs.phase_margin_deg (default: 60)constraints.corners.temp_c (default: [27]), constraints.corners.voltage_pct (default: [0])constraints.yield.target_sigma (default: 3), constraints.yield.mc_samples (default: 1000)Skip constraint validation entirely when invoked in fix-request-servicing/re-validation mode.
Write memory/sim/run_state.md first:
run_id: sim_<YYYYMMDD>_<HHMMSS>
design_name: <design>
pdk: <pdk or unknown>
tool: <primary tool>
start_time: <ISO-8601>
last_stage: null
Upsert one JSON record in memory/sim/experiences.jsonl keyed by run_id. key_metrics
fields: worst_pm_deg, worst_gain_db, mc_yield_sigma, failing_corners,
convergence_failures. Set signoff_achieved: false until sim_signoff passes. Create the
file and parent directories if they do not exist.
If mcp__plugin_ecc_memory__add_observations is available, emit each convergence/spec fix as
an observation to entity analog-design-sim-fixes. Skip silently if absent.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub chuanseng-ng/analog-chip-design-agents --plugin analog-design-simulation