← Si-Hive

Capability · a third gate beside DRC and LVS

DRC clean. LVS clean. 102× over its electromigration limit.

A brand-new 20 mA switching driver came out of our flow DRC-clean and LVS-matched on its very first build — by every conventional check, done. Then the flow's newest gate measured the metal against the cell's own current and found it 102× over its electromigration limit, with 156.7 mV of IR drop against a 32.4 mV budget. A layout can pass everything and still cook its own metal. Our flow now catches that at generation time — and repairs it.

Read this first — honest by construction sky130 publishes no EM rules and ASAP7 is a predictive academic PDK — on those nodes our EM limits are clearly-labeled estimates, so findings there are structural, not signoff. ihp130 and gf180 use the foundries' real EM limits, parsed from their vendor tech LEFs. Operating currents are labeled measured (ngspice on the extracted netlist) or ASSUMED (screening budgets) — never silently mixed, and a limit a PDK doesn't specify is reported as unscreened, never guessed. None of this replaces foundry signoff. It moves the discovery of the same physics to the cheapest possible moment — the day the cell is generated.

The build that passed everything

SwitchDriver20 is a cell class our flow had never seen: a segmented push-pull power switching driver on sky130 (1.8 V; output stage WP = 400 µm / WN = 128 µm in 10 segments each, tapered break-before-make predriver, core 93.9 × 13.2 µm), designed and laid out from scratch after the new gate was deployed. Its first build came out DRC = 0 and LVS "match uniquely" with zero healing iterations — rail widths and via habits any designer would start with. By every check the industry gates cells on, this layout was finished.

Then the EM/IR tier ran. It didn't ask for a current estimate — it ran the cell's own testbench (10 MHz, ~50 % duty into 12 Ω → 0.9 V + 5 pF) and measured 20.67 mA (VDD) / 22.67 mA (VSS) average per rail, 45/46 mA peaks. Screened against those measured currents at the worst-case corners, the verdict on the "finished" layout:

FAIL: worst EM 102.25× — a single via3 stud carrying the entire 22.67 mA — worst IR-drop 156.7 mV against a 32.4 mV budget, 704 gating violations plus 572 review rows, and 20 machine-readable repair directives. Gate wall time: 14.8 s, including the 12.9 s live current measurement.
Per-rectangle EM/IR heat map of SwitchDriver20 v1 — the habit-sized first build lights up red along both supply rails and the output stage despite passing DRC and LVS.
v1, habit-sized: the per-rectangle heat map of the first-build driver — DRC-clean, LVS-matched, and red end-to-end where 20+ measured milliamps meet habit-sized rails and single-via studs. sky130 EM limits are labeled estimates: structural findings, not signoff.

Where this came from — credit where it's due

The initial inspiration was Kevin Cameron's. We came across his work on electromigration screening — an EM tool that reads a layout's parasitics, tracks each wire's current density through the simulation, and copies the segments that need attention onto their own layers so they are easy to see — and it set us thinking about making EM and IR-drop a first-class, per-cell check inside our own layout flow.

Our engine — emirtool — was then written clean-room, with no code reused, and extended with the parts that had no counterpart in the original: the IR-drop nodal solver, supply-short detection, rectangle-graph extraction with via-landing splitting, the repair-directive schema and the layout-engine closed loop, PVT corner derating, the gf180/asap7 tech packs, and the test infrastructure. Thank you, Kevin.

The proof, on real foundry rules: a dual-control VCO rebuilt in IHP 130 nm

Everything above runs on sky130, which publishes no EM rules — so those findings are structural: they rank and localize risk, they do not sign off. To put that same gate on real foundry rules, we are rebuilding one of our analog cells — a dual-control ring VCO — from scratch in IHP's open 130 nm process, and running it through the EM/IR gate at IHP's real foundry current-density limits: the DCCURRENTDENSITY values shipped in the sg13g2 tech LEF, not estimates. That distinction is the whole point — sky130 has no published EM rules, so those results are structural; ihp130 ships real LEF DCCURRENTDENSITY, so the before/after numbers below are signoff-grade, screening the foundry's own physics.

Cellv1 worst EMv1 worst IRv1 verdictv2 worst EMv2 worst IRv2 verdictIterationsDRC / LVS
DualCtrlVCO3.37×18.6 mVFAIL0.99×9.9 mVPASS10 / match

Result — measured, real foundry limits. Both v1 and v2 are DRC-0 and LVS-match in ihp130, screened against IHP's real LEF DCCURRENTDENSITY at a 1.0× signoff gate. A habit-sized first build failed at 3.37× its EM limit on the thin VSS supply straps; one automated repair iteration brought it to a signoff-grade pass. Full before/after reports, heat maps and directives: EMIR-Aware-Layout-Engine repository.

Signoff-grade — and honest about the boundary ihp130 ships real foundry EM limits (LEF DCCURRENTDENSITY, parsed from IHP's sg13g2 tech LEF), so unlike our sky130 findings these before/after numbers are signoff-grade, not structural estimates — the CAL layout engine was extended to ihp130 for this build, DRC/LVS-clean, with sky130 unaffected. Two honest labels: the supply current (≈457 µA VREG) is reused from the identical sky130 sizing — same topology and device sizes — rather than freshly re-measured in sg13g2; and the AC decoupling MIM caps are omitted (they carry no DC current, so the DC EM/IR screen is unaffected, and the ring runs faster → conservative). IR budget = 2 % of VDD; worst case = 125 °C / worst-RCX; v2's 0.99× is a thin-but-real pass on the geometrically-boxed VREG rail.
ihp130 DualCtrlVCO v1 EM/IR heat map — 15 segments over the real foundry EM limit, worst 3.37× on the thin VSS Metal1 supply straps.
v1 — before: DRC-0, LVS-match — yet 15 segments over IHP's real EM limit, worst 3.37× where each ring stage's return current converges on 0.14–0.16 µm VSS Metal1 straps.
ihp130 DualCtrlVCO v2 EM/IR heat map — 0 violations, worst 0.99×, after one automated repair iteration.
v2 — after, one repair iteration: widened supply straps, a VSS Via1 array, and a 2-cut VREG via → 0 violations, worst 0.99×, IR 18.6 → 9.9 mV. DRC-0 / LVS-match throughout.

What we built: a third gate, a repair loop, a learning loop

DRC and LVS qualify a layout as geometrically legal and correctly connected — they say nothing about whether the metal survives the current it will actually carry, so a 0.14 µm strap feeding half a milliamp passes both without comment. EM and IR-drop are conventionally checked at chip-level signoff, days or weeks after the geometry was created — or discovered at silicon. Inside our CAL layout engine, emirtool now runs at three levels:

Tier 1 · every build
0.03–0.27 s

Structural gate

Supply shorts, rail opens, single-cut supply vias — checked beside DRC/LVS on every cell build. A hard FAIL blocks the build verdict exactly like a DRC error.

Tier 2 · signoff corners
0.83 s

Current-aware corner gate

Extraction + nominal + both worst-case corners + directives + heat map, on a ~3000-segment cell — against per-cell measured currents, with the derate factors printed in every report.

Tier 3 · closed loop
L0→L3

Repair loop, honest terminals

Directives drive the engine's power-mesh ladder; DRC + LVS re-run on every rebuilt GDS; every loop ends CLEAN, PLATEAU, UNACTIONABLE (with the reason), or MAX_ITER — never a silent overclaim.

cell builders ──► build GDS → DRC → LVS → EM/IR GATE (0.03–0.27 s)
                  one verdict: clean only if ALL gates pass
                        │ GDS (or any RCX tool's SPEF + geometry sidecar)
                        ▼
                  emirtool: rect-level extraction → IR nodal solve → EM screen
                  at nominal + worst-case corners (derates stamped in the report)
                  out: report {json,md,csv} · per-rect heat map · repair directives
                        ▼
                  repair loop: mesh ladder L0→L3 → rebuild → DRC/LVS → re-analyze
                  auto BEFORE_AFTER · terminal = CLEAN | PLATEAU | UNACTIONABLE | MAX_ITER
                        ▼
                  learning loop: 430 harvested directives → 57 recurring patterns
                  → builder-default proposals + ledger lessons wired into the builders

Every net is decomposed into rectangles split at via landings, so each narrow neck gets its own EM width and the resistor network is actually solvable; the IR solve is validated against ngspice DC to under 1 µV. Above the per-cell fixes sits the learning loop: a curator harvested 430 directive records from 48 artifact files across 18 designs and 4 PDKs and distilled them into 57 recurring patterns, published as builder-default proposals — so the same violation stops being generated at all. Four PDKs are live behind honest provenance: ihp130 and gf180 with real foundry LEF limits; sky130 and asap7 with clearly-labeled estimates.

PDKVehicleOperating currentEM-rules provenance
sky130DualCtrlVCO / VCO_REG / VCO_LS — a real PLL VCO family, DRC 0 + LVS matchmeasured 444 / 841–846 / 153 µAESTIMATE
asap7VCO_REG FinFET port (5.05 GHz) + PLL-top stretch (198 464 segments)measured 12.557 µA; top ASSUMEDPREDICTIVE
ihp130DualCtrlVCO — dual-control ring VCO, rebuilt from scratch, DRC 0 + LVS match (+ IO-pad golden reference)≈457 µA (reused sky130 sizing)real foundry LEF
gf180differential ring VCO core + ring-osc stage proxyASSUMED 1 mA/railreal foundry LEF

Proof on the flow's own cells: the bug LVS couldn't see

Before the forward test, the gate was pointed at cells that already existed. VCO_REG — the sky130 regulator + VCO island from our PLL — was freshly built and verified: DRC = 0, netgen LVS "circuits match uniquely", structural gate PASS. The current-aware analysis at its measured operating point (841/846 µA rails, 444 µA internal VCO supply) then found the regulator island handing the entire 444 µA through a single 0.14 µm met1 column — worst EM ratio 7.07× at the worst-case corner in the solver's loop-boundary model (design arithmetic: 4.40× nominal → 6.95× at the corner), and V_VCO IR-drop of 37.1 mV against a 32.4 mV budget — the only IR violation in the whole VCO family. Connectivity was correct; the strap was merely undersized. No other check in the flow could see it.

The fix went through the cell builders, EM-sized from the tool's own directives — and the flow protected the repair itself. Attempt 2's patch reached 0.21 µm onto an adjacent gate strap, creating a DRC-legal short: DRC passed, and the flow's own LVS gate caught it (21 nets vs 22) in the same run, before any artifact left the working directory. Attempt 3 grew the other way with 0.15 µm clearance:

Metric (identical scenario, fixed seed)BeforeAfter
Hand-off column, worst EM7.07×0.81×
V_VCO IR-drop (budget 32.4 mV)37.1 mV — violation8.8 mV
V_VCO EM violations474
Cell IR violations10
DRC / LVS / gatecleanclean
VCO_REG heat map before the fix — a single red 0.14 µm met1 column beside the hatched MIM decap carries the entire 444 µA VCO supply.
Before: the hot 0.14 µm column (red, x ≈ 132 µm, beside the MIM decap) lights up alone at rectangle granularity.
VCO_REG heat map after the builder fix — the red column has gone cold; only small named residual hot spots remain.
After: same scenario, same scale — the column goes cold. Remaining small spots are named residual classes, listed in the report.

Nominal-clean is not signoff-clean

EM and IR are worst-case checks, so the flow treats the corner pair — 125 °C at VDD +5 % (EM) and VDD −10 % (IR), worst-RCX — as a first-class scenario and prints the derate factors it used: EM limits shrink to ×0.6335 (sky130), ×0.6157 (asap7), ×0.5398 (ihp130), ×0.6707 (gf180) at 125 °C. Our ChargePump, at its real 193 µA operating current, holds a comfortable-looking 1.77× EM margin at nominal — and only 1.12× at the signoff corner; the gap is exactly the sky130 derate. The campaign's genuinely corner-only failures — the kind a typical-corner flow ships — included an IR wall that passes at nominal (21.8 mV vs a 36 mV budget) and violates at the corner (34.3 mV vs 32.4 mV), an asap7 scenario over budget only at the IR corner (13.79 mV vs 12.6 mV), and EM rows legal at nominal (0.85×, 1.29×) that become violations at the corner (1.34×, 2.03×).

The forward test: v1 → v2, seven automated iterations

Back to the driver. The repair used both arms of the flow. The automated mesh loop ran 3 iterations (L0→L3, DRC/LVS re-gated clean at every level, IR 156.7 → 51.1 mV) and then reported its honest terminal — UNACTIONABLE, binding geometry below the mesh plane — matching a lesson the flow had already learned on ChargePump. The remaining directives mapped onto the builder's parametric power geometry: 4 rounds, during which the gate caught its own repair twice — round 1 introduced a 25 nm OUT↔VSS pad-into-rail merge that netgen LVS passed but the structural tier's connectivity check failed, and a stubborn seam class of thin strap-feet kept climbing one metal layer per patch until the geometry was changed architecturally: gapped risers, per-strap via1 descents into wide zone bands, and 16 µm met5 boundary planes answering a PROMOTE_LAYER directive.

SwitchDriver20v1 (habit-sized)v2 (flow-repaired)
Worst EM ratio @ worst case102.25×2.65× (review band)
Worst IR-drop (budget 32.4 mV)156.7 mV8.7 mV
Gating violations7040
DRC / LVS0 / match0 / match — held throughout

Total: 3 loop + 4 builder iterations, minutes of tool time, REGRESSED list empty — for a cell class with no prior art in the flow. The v2 verdict is PASS with the residual 2.65× in the review band under sky130's labeled-estimate rules.

Per-rectangle EM/IR heat map of SwitchDriver20 v2 — after the automated repair the rails and via studs have gone cold, with wide mesh planes added above and below the cell.
v2, flow-repaired: the via3 stud and rail necks gone cold, wide boundary planes in place — worst EM 2.65×, worst IR 8.7 mV, zero gating violations.

The tool polices itself

One more result, and for trust it may be the most important: an earlier analysis reported a "supply short" on DualCtrlVCO, confirmed by two "independent" methods — and same-day forensics overturned it. The rebuild was geometry-identical (layer-by-layer XOR empty), LVS matched 15 nets to 15, and 6534 of the cell's 6540 via3 cuts turned out to lie inside the MIM-capacitor top plate: any connectivity model without the capacitor plate layer turns every MIM cap into a plate-to-plate "short" — and both "independent" checks shared that same blind spot, so their agreement measured shared assumptions, not the layout. The tool was fixed the same day (MIM-aware connectivity), the detector was kept (it behaved correctly given its model), and the full post-mortem was published at the original finding's path — including the transferable lessons. A screening tool that documents its own false positive, with mechanism and fix, is the property that makes its positive findings worth acting on.

What this means for the next design

EM/IR heat map of the ASAP7 PLL top — 198,464 segments across 118 nets, with one block's supply mesh flagged hot.
Scale exhibit: the ASAP7 PLL top — 198 464 segments / 118 nets extracted in 130.5 s, ~2.6 s per scenario, one block's supply mesh flagged hot. A screening run with mock standard cells on a predictive PDK — a throughput exhibit, not a design statement.

The honest ledger

✓ What we claim

  • A per-cell EM/IR gate beside DRC/LVS — 0.03–0.27 s structural, 0.83 s full corner qualification on a ~3000-segment cell.
  • It catches real, LVS-invisible bugs: 444 µA through 0.14 µm of metal; a first-build driver at 102.25× — both in DRC-0, LVS-match layouts.
  • Closed-loop repair with honest terminals — and DRC/LVS re-run on every rebuilt GDS; the LVS gate caught two bad repair attempts.
  • Measured, not assumed, currents where they matter — the gate runs the cell's own testbench.
  • A clean-room build from an open inspiration, extended well beyond it into a full EM+IR repair flow — with credit given.
  • A learning loop: 430 directives → 57 patterns → builder defaults, so fixed violations stop being generated.

△ What we do not claim

  • Not foundry signoff. sky130 EM limits are estimates (SkyWater publishes none) and asap7's are predictive — findings there are structural: they rank and localize risk.
  • ihp130/gf180 conclusions rest on real foundry LEF limits — that distinction is stamped in every report header.
  • ASSUMED-budget runs are screens, to be re-run with measured currents before acting on their directives.
  • Solver model artifacts are named, not hidden — tap-current concentration and sliver-width rows are listed separately from real findings in each report.
  • The 2.65× residual sits in a review band under labeled-estimate rules — reported as such, not rounded down to "clean".

Every number on this page comes from real runs with committed artifacts — reports, consoles, heat maps and before/after sidecars, each figure carrying its artifact path in the project's evidence trail. The ihp130 before/after outputs are open on GitHub: EMIR-Aware-Layout-Engine.


We at Si-Hive are passionate about AI and analog design — 40+ years of analog design experience and 5+ years in AI. We're looking for analog / mixed-signal / chip-design partners and pilots. Our flow runs today on open-source PDKs, and we're keen to bring it to your commercial or foundry PDK as a partner.

Build something with it — or with us

This isn't about reducing engineers — it's about giving today's and tomorrow's engineers better work. Reliability checks that arrive while the layout is still cheap to change mean engineers spend their days inventing, not chasing late-stage EM/IR surprises.

Talk to us Read the 7 nm FinFET story