Fusion silkscreen step re-lays every label and makes values mandatory, so a hand-placed silkscreen is overwritten or can never pass (needs an adopt/audit mode)

Glenn Jones · ·closed by Colby Knox

Versions: AI Flow 0.2.44, Fusion lane, 4-layer board, 49.5 × 39.4 mm (the 772 power module, LM251772).

Problem: the Fusion silkscreen step (fusion silkscreen) can't accept a silkscreen the designer has already laid out by hand. Running it for real would overwrite that work. On a dense board it also can never reach zero unresolved labels, so the step can't pass either way.

What happens:

  • Every reference is re-planned from scratch next to its part body: silkscreen-plan.py plan_labels(). The designer's existing labels are only treated as obstacles. Nothing asks whether a label is already fine where it is.
  • A value label is mandatory for every part (except test points and connectors), and it's placed as real text on tPlace (21), so it would be printed. On this board the values were deliberately kept on documentation layers, which never go to the fab. Boards often leave values off the silkscreen; the BOM carries them, and fabs don't ask for them.
  • The --dry plan on our board: 102 labels moved or added, with 78 left unresolved: 28 values, 25 names, and 25 fallback leaders for those same names. No rerun brings that to zero, and landing it would undo the designer's layout.
  • The only way past the step is a recorded deviation, which is what we did (deviate "step silkscreen"). That works, but it leaves the silkscreen unchecked, which is not the intent of the step.

Why it matters beyond this board: many designers place their silkscreen deliberately: orientation, grouping, labels kept clear of probe points, branding, and the fab's minimum sizes. A flow step that silently re-lays all of it is a hazard, and on dense boards it's a guaranteed dead end.

Requested:

  1. An adopt/audit mode, for example fusion silkscreen --adopt or a spec flag silkscreen.mode: "adopt". It would read the existing silkscreen as placed, move nothing, and pass or fail it on real problems:

    • text on a pad, a mask opening or an exposed via;
    • text outside the board outline or within the edge clearance;
    • text overlapping other text;
    • text below the fab's minimum height or stroke (from the rules profile);
    • a part with no visible reference (unless listed as intentionally unlabelled).

    A pass records the step's proof; a fail lists each problem with its location for the designer to fix.

  2. Make values optional with a spec setting, for example silkscreen.values: "none" | "where-room" | "required". The default could stay as it is for the KiCad lane, but a designer must be able to turn it off.

  3. When re-laying is wanted, start from the existing positions and move only the labels that actually fail a check. Today it re-lays everything.

  4. Measure the glyphs that will actually print. On Fusion, the Gerber export writes proportional-font text as outlined regions exactly as shown on screen (verified by rendering the GTO), so any audit should measure the real text outlines, not estimate boxes from the font size.

No files are attached.

2 Replies

John Lauer ·

Glenn, thanks for the detailed write-up and the dry-run numbers. Two of your four asks are in adom-aiflow 0.2.48, and the release goes further than this step. AI Flow no longer refuses anything. Every check reports what it found with suggestions, and every command completes; finish is now a report card of what passed and what's still open, not a gate.

1. Adopt mode (done). fusion silkscreen now audits a silkscreen the designer placed, where it stands, and moves nothing. It's the default when you've placed most of the top-side names yourself; --adopt forces it, and --relayout asks for the old re-lay instead. It reports, per label:

  • a name over a pad (the fab clips silk there) or over a via;
  • a name off the board or within 0.3 mm of the edge;
  • names overlapping each other;
  • parts with no visible name (listed as fine when intended).

The step is recorded either way, so no deviation is needed. On a 108-part Fusion board here it listed its findings as suggestions and touched nothing.

2. Values are optional (done). --values none | where-room | required, with where-room as the default: a value goes beside its part where it fits, and one that doesn't is skipped and listed, never left "unresolved".

Still open, so I'm keeping this issue open:

  • 3. Re-lay from existing positions: --relayout still plans every label from scratch. Moving only the labels that need it is next.
  • 4. Measure the printed glyphs: the audit estimates each name's box from its size and length, and says so in its output. Your finding that Fusion's GTO Gerber holds the real outlines is the right basis. Since every EDA exports a silkscreen Gerber, I'd like one audit built on it for all lanes.

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

Colby Knox marked this in progress ·
Colby Knox removed the in progress marker ·
Colby Knox marked this in progress ·
Colby Knox linked pull request #88, which closes this when it merges ·
Colby Knox closed this in pull request #88 ·
Colby Knox ·

Glenn, the two parts left from your list are in AI Flow 0.2.69.

3. A re-lay starts from your spots. fusion silkscreen --relayout keeps every name you placed that has no finding: not over a pad or via, not off the board or within the edge clearance, not overlapping another. Only the names with a finding are planned again; of two that overlap, one moves. --relayout --all re-lays everything, as before. The plan and the step's proof list the names kept.

4. Measuring what actually prints, for every lane. adom-aiflow silkscreen gerber-audit --dir <your Gerber folder> --board <the board> reads the fab's own Gerbers (Fusion's GTO/GBO, KiCad's, Altium's, any Legend file), so the glyphs are measured as they print, not estimated from a font size. It reports:

  • silkscreen on exposed copper, inside a solder-mask opening, which the fab clips;
  • silkscreen off the board or within the edge clearance (--edge, default 0.3 mm);
  • printed features narrower than the minimum line (--min-line, default 0.15 mm). This is measured on the printed shape, so text drawn as many hairline strokes counts by its real width.

Each finding has its coordinates and, with --board, the part it's nearest. On the KiCad lane, export runs it on the Gerbers it writes. On a real Altium Gerber set it found 0.086 mm lines at the corner pins and text inside mask openings, with no false alarms from Altium's hatched TrueType text.

I haven't run it on one of your Fusion Gerber sets yet. If it reads one wrongly, send me the folder and I'll fix it.

Upgrade with adom-wiki pkg install adom/adom-aiflow; adom-aiflow --version then shows 0.2.69.

Log in to reply.