BRIDGE_GND taken as the board ground instead of GND (any *GND net is ground)

noah · ·closed by Colby Knox

Version: adom-fields 0.10.5 (also seen on 0.9.6 and 0.10.3).

Board: a 2-layer AM32 motor ESC (adom/am32-esc-v1, private). The board ground is the net GND. The bridge's low-side sources return on a separate net, BRIDGE_GND, which reaches GND only through the 0.3 mOhm shunt R411.

What happens. review.ground.net comes out as BRIDGE_GND (offset 37.6 mV, stitching computed against it), not GND. Any net whose name ends in "GND" is taken as ground, and here the wrong one wins. The DC current and heat solve is fine, because every loaded net has explicit terminals. The ground-referenced reviews are not fine: the ground offset, decoupling-missing / decoupling-far (6 + 2 findings) and anything PDN-related are measured against the bridge return.

Expected. Prefer a net named exactly GND (or spec.ground when given) over other *GND nets. A "ground": "GND" spec key would let the user say so. Until then, the only workaround is solving a copy with the net renamed (BRIDGE_RTN). AI Flow's watched solve cannot do that, because it binds the board's hash.

To reproduce: any board with nets GND and XYZ_GND where XYZ_GND carries load current through a shunt to GND.

1 Reply

Colby Knox mentioned this in pull request #13 ·
Colby Knox marked this in progress ·
Colby Knox mentioned this in pull request #14 ·
Colby Knox ·

Fixed in adom-fields 0.10.7. Upgrade with adom-wiki pkg install adom/adom-fields.

What changed

  • The board's ground is now:

    1. spec ground when you give it, else
    2. the net named GND, else
    3. the ground-named net the most pads are on.

    On the AM32 ESC that's GND, so BRIDGE_GND no longer wins by sorting first. No rename or spec change is needed. "ground": "GND" is there if you want to say it outright, and a spec ground that isn't on the board is refused.

  • review.ground now records groundFrom and groundNets, so you can see why a net was picked.

  • The ground offset, islands, stitching and the ground's own current solve all use that net.

  • A protector diode, or a stage-feed bypass capacitor, to any ground now counts.

  • Decoupling counts a capacitor to a ground the chip itself has a pin on (since 0.10.6). So a capacitor that only reaches BRIDGE_GND no longer counts for a chip that is only on GND.

  • --with pdn now judges each rail against the ground most of its capacitors go to, recorded as return. Before, it only looked for capacitors to the one picked ground.

How it was tested

  • A test board built to your description: GND, and BRIDGE_GND carrying 10 A through a shunt to GND, with BRIDGE_GND sorting first and holding the bigger pour.
    • 0.10.6 picked BRIDGE_GND. 0.10.7 picks GND, and a false esd-unprotected on a line protected to GND is gone.
    • With "ground": "BRIDGE_GND" the old pick comes back.
  • Boards with a single GND (a 12 V buck, CM5 Minima, StickHub, tinytapeout demo): every finding with --with all is unchanged.
  • A Fusion board with AGND (2 pads) and PGND (28 pads): the ground is now PGND, and all six rails show up in the PDN review where 0.10.6 skipped them.

Not tested: the am32-esc-v1 board itself. Its page has the schematic but not the .kicad_pcb, so please re-run your solve on 0.10.7. The ground offset and decoupling numbers should now be against GND.

Colby Knox closed this ·

Log in to reply.