Ams Sim
Plan and run analog / mixed-signal simulations — DC op, AC, transient, Monte Carlo, corner sweeps, PSRR/CMRR, noise — using ngspice, Xyce, Spectre, or HSPICE, and triage the results. Use when the user says "SPICE", "ngspice", "Monte Carlo", "corner simulation", "analog sim", "AC analysis", "transient", "PSRR", "CMRR", "noise analysis".
Score breakdown
Estimated from the available content and source signals.
Model compatibility
Inferred fit is not the same as a recorded hands-on test.
Overview
AMS Sim
Analog blocks must be verified across process corners, temperature, voltage, and mismatch. This skill plans the testbench matrix, generates the simulator decks, and triages results.
When to use
- After
/analog-sizingproduces a schematic - After
/analog-layout+ extraction (post-layout) - When mismatching is the suspected failure mode (Monte Carlo)
- Mixed-signal co-simulation with a digital controller (ngspice + Verilog-A, or Spectre APS)
Inputs
- Schematic / netlist (
.sp,.cir,.scs) - Device models from PDK (
.lib/.scs) - Specs to verify (gain, BW, PSRR, CMRR, noise, slew, settling, offset)
- Corner definition (FF/SS/TT/FS/SF × temp × supply)
- Monte Carlo N (typical 500–5000 runs)
Analysis matrix
| Analysis | Purpose |
|---|---|
.op | DC operating point, bias validation |
.dc | Sweeps (supply, input, parameter) |
.ac | Gain, bandwidth, phase margin |
.tran | Settling, slew, large-signal |
.noise | Input-referred noise, SNR |
.pss / .pac / .pnoise | Periodic steady-state (for RF / SC circuits) |
.mc | Monte Carlo mismatch + process |
The spec → required-analysis-subset mapping in this table is a frozen
lookup, enforced by programs/ams_analysis_select.py — do NOT pick
the analysis set by hand (two agents would otherwise pick different /
incomplete subsets for the same spec list). Run it on the block's
spec.json (or the project dir to scan analog/*/spec.json) and use
the emitted analyses set:
python3 programs/ams_analysis_select.py <block>/spec.json
# -> {"analyses": [".op", ".ac", ".tran", ".noise"], "mapping": [...]}
It always selects .op (bias validation) when ≥1 measurable spec is
present, adds .mc whenever any spec declares a mismatch / σ / yield
concern, and FAILs honestly (exit 1) when a spec carries no recognizable
measurable metric. Agent judgment is only needed to override an
ambiguous / custom spec key the table does not recognize.
Workflow
- Pick the analysis subset — enforced by
programs/ams_analysis_select.py(see Analysis matrix) - Build deck with corner + MC sweeps
- Run (ngspice / Xyce / Spectre / HSPICE)
- Extract measurements via
.measstatements — generated byprograms/analog_meas_from_spec_gen.py - Tabulate corners × MC yield vs spec — enforced by
programs/corner_yield_vs_spec_check.py(re-derives per-corner / per-spec PASS/FAIL fromspec.jsonmin/max limits + reports the worst, smallest-margin corner) andprograms/analog_corner_sweep_check.py(gates ≥9-corner PVT count + all-spec-pass). Do NOT hand-tabulate the yield table — quote these programs' verdicts. - Flag failing corners — the worst corner is the
worst_cornerfield fromcorner_yield_vs_spec_check.py; PVT-coverage gaps are classified byprograms/corner_coverage_audit.py. Propose sizing or layout changes (agent judgment). - Hand off to re-sizing loop
Output format
sim/<block>.sp(or equivalent) — simulator decksim/<block>_results.md:- Spec table with pass/fail per corner — populated from
corner_yield_vs_spec_check.py(per-corner / per-spec PASS/FAIL re-derived fromspec.jsonlimits), not graded by eye - MC yield percentage per spec — gated by
analog_corner_sweep_check.py - Sensitivity list (which device / parameter dominates) — agent judgment
- Suggested fixes — agent judgment
- Spec table with pass/fail per corner — populated from
Tool prerequisites
Open source: ngspice (https://ngspice.sourceforge.io/), Xyce. Commercial: Cadence Spectre, Synopsys HSPICE, Silvaco SmartSpice.
Technical basis
Pelgrom mismatch model, corner methodology from PDK, Monte Carlo with correlated process parameters. Mixed-signal co-sim per Verilog-AMS / Verilog-A standards.
Handoff
- Failing corners →
/analog-sizing(re-size) - Layout-driven failures →
/analog-layout - Model issues → escalate to PDK team
Compliance gate (mandatory)
After producing your output, save it to a file and run:
python3 plugins/vibe-ic/_shared/skill_compliance_check.py \
--requirements plugins/vibe-ic/skills/ams-sim/compliance.yaml \
<your_output_file>
Exit 0 = PASS, exit 1 = FAIL with specific missing elements listed.
compliance.yaml in the corresponding skill directory enumerates
every required element of your output: section headers, metadata fields,
handoff lines, tool invocations.
Your task is not complete until the audit returns PASS. Missing elements are the single largest source of skill-execution non-determinism across different agents.
Best for
- After /analog-sizing produces a schematic
- After /analog-layout + extraction (post-layout)
- When mismatching is the suspected failure mode (Monte Carlo)
- Mixed-signal co-simulation with a digital controller (ngspice + Verilog-A, or Spectre APS)
- Pick the analysis subset — enforced by programs/amsanalysisselect.py (see Analysis matrix)
- Build deck with corner + MC sweeps
- Run (ngspice / Xyce / Spectre / HSPICE)
- Extract measurements via .meas statements — generated by programs/analogmeasfromspecgen.py
- Tabulate corners × MC yield vs spec — enforced by programs/corneryieldvsspeccheck.py (re-derives per-corner / per-spec PASS/FAIL from spec.json min/max limits + reports the worst, smallest-margin corner) and programs/analogcornersweepcheck.py (gates ≥9-corner PVT count + all-spec-pass). Do NOT hand-tabulate the yield table — quote these programs' verdicts.
- Flag failing corners — the worst corner is the worstcorner field from corneryieldvsspeccheck.py; PVT-coverage gaps are classified by programs/cornercoverageaudit.py. Propose sizing or layout changes (agent judgment).
- Hand off to re-sizing loop
Tips and best practices
- Review the source instructions and adapt inputs before running the workflow.
What This Skill Can Do
AI-generated examples showing real capabilities
Was this skill useful?
Be the first to share a result.