Skip to content

Simplify/improve silkscreen arrow size heuristics

[This is a re-try with a new method entirely for !1030 (closed))

Using the pad size or pitch as a heuristic for silkscreen arrow size has proven to be tricky to get right in many corner (ha!) cases.

Change the strategy from trying to come up with a universally-suitable size based on an couple of numbers to giving the generators themselves more intelligence, as they know exactly what they're up to.

First, provide a set of 4 sizes of arrow (defined by the overall, not node-to-node, width from side-to-side):

  • The smallest is 0.4mm, which is about the limit before the 0.12mm line width rounding starts to make the arrow unclear (and the silk process will only ever make that worse).
  • Medium is 0.6mm
  • Large is 0.8mm.
  • "Huge" is the IPC maximum of 1mm, but doesn't seem to be necessary for any of our IPC Nolead/Gullwing parts - probably more useful for very large parts like modules, transformers, etc

Then, in each generator (of the two so far), use these standard sizes:

  • In NoLead:
    • Pull-back devices like LGAs always use small, as they tend to be physically small and have no corner space at all to fit an arrow
    • DFNs are "small" if the package is under 2mm minor dimension, else "medium"
    • QFNs are always "medium", as the pads on the top side produce a corner to fit this
  • In Gullwing:
    • QFPs are always "large" - they have big corners regions defined by the long pads on the top side
    • Parts under 6mm minor dimension, or finer than 1mm pitch, are "medium"
    • Larger parts are "large"

Regeneration footprint MR: kicad-footprints!3475 (merged)


Examples

Gullwings:

image.png

Notably, SOT_23s can be end-stacked.

LGA/pullbacks:

image.png

D/QFN:

image.png

QFP:

image.png

Transformers:

image.png


Other prelude fixes:

  • VLGA-4 2.5x2mm: fix YAML min/max definitions - minimum was listed twice, maximum omitted. But this doesn't produce a change in the output.
  • Move the test_* YAML files in NoLead's size_definitions to a test subdirectory. This mean you can use *.* in that directory to select all files without generating some junk test files when you don't expect to.
Edited by John Beard

Merge request reports

Loading