0hmX/am3352-ddr-track-a-local-dfm-wip-20261007
Experimental RJ45-corrected board with isolated PG indication. 1005/1005 source joins pass; 15 expanded-guard physical errors, sourcing and qualification gates remain. Not fabrication-ready.
- Version
- 0.0.14
- License
- unset
- Stars
- 0
hdmi/components/Hdmifootprint.tsx
import library from "../data/footprints"
import { enclosureOpeningFor } from "../../models"
/** Literal selected copper lands; coordinates are mm with +Y upward. */
export function Hdmifootprint({ footprintKey }: { footprintKey: keyof typeof library }) {
const footprint: any = library[footprintKey]
if (!footprint) throw new Error(`Unknown verified HDMI footprint: ${footprintKey}`)
const c = footprint.courtyard
const opening = enclosureOpeningFor(footprintKey)
return <footprint insertionDirection={opening.insertionDirection}>
{opening.aperture}
{c && <courtyardrect pcbX={c.centerX ?? 0} pcbY={c.centerY ?? 0} width={c.width} height={c.height} />}
{footprint.pads.map((p: any, i: number) => {
const portHints = [`pin${p.portIndex}`]
if (p.type === "thru_hole") {
if (p.drill?.[0] === "oval") return <platedhole key={i} portHints={portHints}
pcbX={p.x} pcbY={p.y} shape="pill" holeWidth={p.drill[1]} holeHeight={p.drill[2]}
outerWidth={p.width} outerHeight={p.height} />
return <platedhole key={i} portHints={portHints} pcbX={p.x} pcbY={p.y}
shape="circle" holeDiameter={p.drill[0]} outerDiameter={Math.min(p.width, p.height)} />
}
return <smtpad key={i} portHints={portHints} pcbX={p.x} pcbY={p.y} shape="rect"
width={p.width} height={p.height} cornerRadius={p.cornerRadius ?? 0} solderMaskMargin={0.05}
noSolderPaste={footprintKey === "IT66122_REVD" && p.pin === "65"} />
})}
{/* Declared assembly design: nine 1.3mm windows cover 60.8% of the 5mm EP. */}
{footprintKey === "IT66122_REVD" && [-1.6, 0, 1.6].flatMap((x) =>
[-1.6, 0, 1.6].map((y) => <solderpaste key={`${x}:${y}`} shape="rect"
pcbX={x} pcbY={y} width={1.3} height={1.3} />))}
</footprint>
}