Closed bug report

Gate/DRC rejects routes when a part is placed on the bottom side ("pad <REF>.1 has no copper on F.Cu")

Andy Engevold · ·closed by John Lauer

Target wiki: adom/adom-aiflow

Versions

  • AI Flow 0.2.47
  • Fusion Bridge 1.13.67
  • Hydrogen on a Windows laptop, WSL Adom-Workspace

What happened

First, thanks for AI Flow. It has been great to work with. I hit something I couldn't figure out and wanted to ask how you'd handle it.

The board is a small 4-layer design with parts placed on both the top and bottom sides. The gate/DRC step refuses the route because of pads on parts that sit on the bottom side (B.Cu). Every route variant's gate shows the same message, but the variant chooser still picks one of them. So even a 100% route can't get past DRC.

Exact error text

plan does not apply to the board: pad <REF>.1 has no copper on F.Cu

(Every variant's gate output shows the same pad ... has no copper on F.Cu message.)

Steps to reproduce (generic)

  1. Use a multi-layer board with mixed top/bottom placement. At least one SMD part needs to be flipped to B.Cu.
  2. Run placement and the route variants as usual.
  3. Look at each variant's gate result, then run DRC on the chosen variant.

Expected vs actual

  • Expected: The gate treats bottom-side pads as B.Cu copper, so a fully routed board passes the gate and DRC. If a plan really can't apply, the chooser doesn't pick that variant.
  • Actual: Every variant fails the gate with has no copper on F.Cu for bottom-side pads. A variant gets chosen anyway, and DRC stays blocked even at 100% routed.

Workaround

We haven't found one yet, so DRC is blocked on this board for now. What would you recommend for gating boards with bottom-side parts? Is there a setting or flag we've missed?

Thanks again!

— Andy Engevold

1 Reply

John Lauer ·

Andy, thanks for the clear report. This was a real bug in the router, and it's fixed in adom-aiflow 0.2.50. There was nothing you'd missed.

The cause. Your Fusion board was read correctly: bottom-side SMD pads were already known to be B.Cu only. The problem was in the router.

  • When a route arrived at an SMD pad on B.Cu, the router always added a via up to F.Cu, so the plan ended "on F.Cu" at a bottom pad.
  • Escape stubs from bottom pads were written with no layer, and a path without one defaults to F.Cu.
  • Ground vias for a bottom part were searched for only on F.Cu. That hits every ground pad of a bottom part when GND is an inner plane, as on your 4-layer board.

The fix.

  • The router adds a via only when the pad has no copper on the layer the route arrives on.
  • Bottom-pad stubs and plane vias use the pad's own layer.
  • A plan path that names no layer now takes it from its first one-sided pad, and the gate and land route both see that layer.

The variant chooser. A variant whose plan can't be applied now ranks after every variant that can, shows as no-apply in the table, and comes with a note.

Tests. A new end-to-end suite runs a board with B.Cu footprints through route, gate, route --variants and land route. On 0.2.49 it fails exactly the way you saw. I also ran real KiCad DRC on three boards with 0.2.49 and 0.2.50: a buck board, the same board with three parts flipped to the bottom, and a large two-sided LED grid. 0.2.50 adds no DRC errors on any of them.

I tested on KiCad boards, not on a live Fusion board. If yours still shows the message on 0.2.50, please reopen with the run folder's plan-route.json and the gate output.

Upgrade: tell your AI "give me the latest adom-aiflow" (or adom-wiki pkg install adom/adom-aiflow); adom-aiflow --version says 0.2.50.

John Lauer closed this ·

Log in to reply.