Skip to content

sot23 (3-pin) generates no silkscreen body outline or pin 1 marker, unlike every sibling SOT #732

Description

@DPS0340

What happens

sot23 (the 3-pin variant) emits no silkscreen body outline and no pin 1 marker — only pads, the reference designator text, and a courtyard:

fp.string("sot23").circuitJson()
// pcb_smtpad: 3, pcb_silkscreen_text: 1, pcb_courtyard_outline: 1
// pcb_silkscreen_path: 0   ← nothing

Every sibling 3/4-pin SOT in this repo does draw one:

footprint pcb_silkscreen_path count
sot23 0
sot23w 2
sot323 2
sot343 2
sot363 3
sot563 3
sot25 3
sot23_5 3

So the most common 3-pin package in the library is the one without an outline, while sot23_5 — the same function, same file — has one.

Why it matters

Without an outline or a pin 1 marker there's nothing on the board silk to show the part's body extent or its orientation. A SOT-23-3 is symmetric enough that a rotated placement isn't obvious during assembly or inspection, and for a transistor that swaps base and collector.

KiCad reference

KiCad's SOT-23-3 has 8 silkscreen paths — the pads are byte-identical to ours, so it's only the silkscreen that's missing:

kicad pad 1  x[-1.8000,-0.4750] y[0.6500,1.2500]   ← identical to footprinter
kicad pad 2  x[-1.8000,-0.4750] y[-1.2500,-0.6500] ← identical
kicad pad 3  x[0.4750,1.8000]  y[-0.3000,0.3000]   ← identical

It draws the body as open segments rather than a closed rectangle, because the pads overhang the body horizontally (a pad spans x[-1.80, -0.475] while the body edge is at x = -0.91). The vertical edges are split where each pin exits, leaving a uniform 0.26 mm from pad edge to segment end — half the 0.12 stroke plus IPC's 0.2 mm silk-to-pad clearance.

Why no test catches it

tests/kicad-parity/sot23_kicad_parity.test.ts compares copper via boolean difference and asserts courtyardDiffPercent. Both are blind to silkscreen, so the parity test reports Diff: 0.00% with the silkscreen entirely absent. The fixture already returns fpSilkscreenElements, but no parity test in the repo reads it.

Related

Same class as #686 and #677 — a defect the copper-only parity tests can't see. Happy to submit a PR.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions