Closed general

Switching net with no load is silently unsolved (SW 62 A/mm² missed); layers list shows inner layers on a 2-layer board

John Lauer · 5d ago ·closed by John Lauer

Found 2026-10-15 reviewing a TPS54202 12 V to 5 V / 1 A buck (two-layer, 36 x 20 mm), adom-fields 0.7.16.

1. A switching net with no loads entry is silently unsolved

The spec had switching: {"/SW": {highV 12, lowV 0, freqHz 5e5, meanV 5, riseNs 5}} but loads only for /VIN, /VOUT, /GND. /SW is a single 0.6 mm x 35 µm track, 11.2 mm long, carrying the whole inductor current. analyze reported "3 nets", peak 18 A/mm², and no issue on /SW. Re-solving the same board with "/SW": {"amps": 1.0} added gives /SW peak 62 A/mm² and a medium current-neck. The human reviewer spotted it by eye; the tool should have.

Ask: when a net appears in switching (or is a converter's switch node from the energy-cycle model) and has no loads entry, either solve it with the inductor's current (the cycle already knows Iout and the ripple) or raise an issue / hint: "/SW switches but carries no load in the spec: its copper is not solved; add loads./SW = A".

2. Layer list shows inner layers on a two-layer board

nets[].layers lists F.Cu, In1.Cu .. In4.Cu, B.Cu for /GND, /VOUT, /VIN on a board whose (layers) has only F.Cu and B.Cu (no inner copper items). An AI read that as "6 layers". If the solver uses a default 4-layer stack for heat (the "How it was solved" text says "four layers coupled through the dielectric"), say so for two-layer boards, and only list layers that have copper.

3 Replies

John Lauer · 5d ago

Fixed in adom-fields 0.7.18:

  1. A switching node with no loads entry is now solved with the current of the net across its inductor (the converter output), else the largest load, and listed in switchingLoads and the hints ("Loads filled in (not in the spec)"). On the TPS54202 buck with the SW load removed, SW now solves at 1 A, 51.9 A/mm².
  2. A two-layer board lists only F.Cu and B.Cu for its nets: the inner copper came from via pads painted onto every layer slot, fixed in 0.7.17, and the method text now names the board's real copper layers instead of "four layers".
John Lauer · 5d ago

3. no-reference fires on a poured switch node with nothing unreferenced (confirmed in the source)

After the SW fix (SW is now a 15.6 mm² pour on F.Cu with a solid 605 mm² GND plane under it on B.Cu), analyze still raises a medium no-reference on /SW reporting 0 mm² at (0, 0). The Grok agent called it a tool bug; checked against src/emc.rs, it is:

// emc.rs ~149
if (imp && (mm > 2.0 || poured)) || (!poured && mm > 15.0) {
    let at = [sx / bad.max(1) as f64, sy / bad.max(1) as f64];

For an important (switching) net, poured alone triggers the issue regardless of mm, and when no cell is unreferenced (bad == 0) the location is (0, 0). Suggest requiring mm > 2.0 (or some minimum unreferenced area) for poured nets too, and never emitting an issue whose at comes from an empty set.

John Lauer · 2d ago
  1. Fixed in 0.7.19: on a poured switch node, no-reference now only fires when the copper with no reference plane under it adds up to more than 2 mm², so a few stray edge cells (and the 0 mm² at (0, 0) report) no longer trigger it. On the TPS54202 buck it no longer fires on SW. Update with adom-wiki pkg install adom/adom-fields.

Log in to reply.