From vibe-ic
Packages a verified analog block into a hardmacro (LEF, Liberty, GDS, behavioral Verilog) for digital PnR integration with OpenROAD.
How this skill is triggered — by the user, by Claude, or both
Slash command
/vibe-ic:analog-hardmacro-genThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Takes a verified analog block (SPICE corner sweep passed, optionally hardware-verified) and produces the four deliverables that digital PnR (OpenROAD) needs to integrate it alongside standard cells.
Takes a verified analog block (SPICE corner sweep passed, optionally hardware-verified) and produces the four deliverables that digital PnR (OpenROAD) needs to integrate it alongside standard cells.
analog-extraction-resim confirms post-layout specs are acceptableanalog/<block>/corner_results.json — worst-case timing from SPICEanalog/<block>/layout.mag — Magic layout (or generate via eda_analog_layout)analog/<block>/spec.json — port definitionsDeliverable PRESENCE + non-degeneracy is enforced deterministically:
programs/analog_hardmacro_check.py(all 4 files exist; LEF has MACRO/PIN, LIB has cell, V has module) andprograms/analog_liberty_nonzero_delay_check.py(the "no zero-delay Liberty" rule — area-only / all-zero.lib=> FAIL). Cross-file pin-name equality is enforced byprograms/analog_hardmacro_pinname_consistency_check.py.
hardmacro/<block>/<block>.gds)eda_gds or eda_run_tcl with Magic gds writegds write / lef write Magic TCL is a fixed command template —
emitted deterministically alongside the port-extraction TCL in
programs/magic_port_extract_emit.py.hardmacro/<block>/<block>.lef)lef write (see magic_port_extract_emit.py)programs/analog_hardmacro_pinname_consistency_check.py (3-way
set-equality: spec.json interface.pins ↔ LEF PINs ↔ Verilog ports;
portless LEF + ported Verilog => FAIL).hardmacro/<block>/<block>.lib)programs/analog_liberty_nonzero_delay_check.py: the .lib must carry
at least one timing/leakage attribute and every timing value must be
non-zero (an area-only or all-zero .lib is the documented vacuous-STA
defect and FAILs). The check also reports the corner-sweep provenance
(real_ngspice vs stub) read from corner_results.json.corner_results.json carries the analog spec
value (e.g. vout_v, ota_ugbw_hz) per PVT corner, NOT pre-computed
cell_rise/cell_fall/setup/hold/leakage timing arcs. Mapping
a measured analog metric onto Liberty timing arcs for a given control
interface is an analog-modeling decision; only the SS-worst-corner
selection and the non-zero formatting are deterministic.hardmacro/<block>/<block>.v)programs/analog_hardmacro_pinname_consistency_check.py.module ldo_1v8 (input vin, input en, input [2:0] trim, output vout);
assign vout = en ? 1'b1 : 1'bz; // simplified: high when enabled
endmodule
layout.mag exists, run Magic gds write (template via
magic_port_extract_emit.py); else run eda_analog_layout firstlef write with correct pin definitionscorner_results.json and
author the .lib with non-zero arcs (modeling judgment per § 3 above);
non-degeneracy gate = analog_liberty_nonzero_delay_check.pyspec.json interface.pins; behavior-modeling is judgment (§ 4 above)analog_hardmacro_check.py + analog_hardmacro_pinname_consistency_check.py
analog_liberty_nonzero_delay_check.py on the project dirhardmacro/<block>/
├── <block>.gds — physical layout
├── <block>.lef — abstract for PnR placement
├── <block>.lib — timing model for STA
└── <block>.v — behavioral model for simulation
programs/analog_liberty_nonzero_delay_check.py)programs/analog_hardmacro_pinname_consistency_check.py)hardmacro/<block>/ → Digital Step 15 (Floorplan; was Step 14 pre-Wave-91) via OpenROAD macro placementeda_pnr additional_lefs parametereda_sta additional liberty patheda_simulate for mixed-signal gate-level simAfter producing your output, save it to a file and run:
python3 plugins/vibe-ic/_shared/skill_compliance_check.py \
--requirements plugins/vibe-ic/skills/analog-hardmacro-gen/compliance.yaml \
<your_output_file>
Exit 0 = PASS, exit 1 = FAIL with specific missing elements listed.
Your task is not complete until the audit returns PASS.
npx claudepluginhub vibeic/vibe-ic --plugin vibe-icGuides completion of development work by verifying tests, detecting environment, and presenting structured options for merge, PR, or cleanup.
Enforces test-driven development: write failing test first, then minimal code to pass. Use when implementing features or bugfixes.
Guides creation and editing of skills using test-driven development with pressure scenarios and subagents to verify agent compliance.