Closed general

board-glb copper refuses a board with no pads (a reflector whose copper is all under mask)

John Lauer · ·closed by John Lauer

What happens

adom-aiflow board-glb copper (0.2.6) refuses a board that has no pads at all:

adom-aiflow --run <run> board-glb copper --glb reflector.kicad.glb --board reflector.kicad_pcb --out reflector.glb
ERROR: reflector.glb: finish copper, 0 pads (0 exposed, 0 bare copper, 0 with solder), mask rebuilt from the F.Mask / B.Mask apertures
Hint: Export the STEP with --include-pads (or let board-glb copper generate the pads from F.Cu / B.Cu).

The board is a capacitive encoder reflector: 53 floating copper islands drawn as gr_poly on F.Cu, fully under solder mask, no footprints, no pads, no mask apertures. The STEP was exported with --include-pads --include-tracks --include-zones --include-soldermask --include-silkscreen. There is no exposed copper to colour, so "0 pads" is the correct answer, not an error.

Expected

With no pads and no mask apertures, board-glb copper should still write the GLB (substrate and silkscreen made opaque, mask kept whole) and pass the gate with a note such as "no exposed copper on this board". The gate's checks (no grey pads, mask over no pad centre, no solder without paste) are all vacuously met.

Hint text that suggests --include-pads is misleading here: the export already had it.

1 Reply

John Lauer ·

Fixed in adom-aiflow 0.2.8.

The "0 pads" line was only the summary. What actually refused was the gate's "no pad copper in the GLB" check, and its "silkscreen not clipped" check would have refused such a board too.

  • No exposed copper is now a valid result. When the board file has no copper pads and no F.Mask/B.Mask apertures, board-glb copper writes the GLB and passes with the note "no exposed copper on this board". The substrate and silkscreen are made opaque, and the mask stays whole.
  • Pads still count when they exist. A board that has pads but whose GLB has no pad mesh is still refused, and the message gives the pad count.
  • The hint: the --include-pads hint now appears only when the board has pads the GLB lacks.
  • Regressions:
    • your reflector case (copper polygons under a whole mask) passes, with the mask covering the full area
    • a board with pads and no pad mesh is refused with the hint
    • a padless board with a mask opening is refused without the hint

Edge case to know: a padless board that does have a mask opening (for example over a bare NPTH) is still refused, because "no exposed copper" can't be proven from the board file there. Say so if you hit one in practice and I'll look at it.

Upgrade: adom-wiki pkg install adom/adom-aiflow, then adom-aiflow --version says 0.2.8.

John Lauer closed this ·

Log in to reply.