0hmX/am3352-ddr-track-b-byte0-wip-20261007

Partial full-board preview: 11 of 47 DDR signal nets routed; power and interfaces incomplete. Fabrication and electrical release blocked.

Version
0.0.1
License
unset
Stars
0

pmic-footprint.tsx

import { Fragment } from "react"

// TI RSL0048G, 4231403/A (12/2024), TPS65216 p89 / TPS65218D0 p108.
export function PmicFootprint() {
  return <footprint>
    {Array.from({ length: 48 }, (_, index) => {
      const side = Math.floor(index / 12)
      const position = Math.round((2.2 - (index % 12) * 0.4) * 1000) / 1000
      const x = side === 0 ? -2.875 : side === 1 ? -position : side === 2 ? 2.875 : position
      const y = side === 0 ? position : side === 1 ? -2.875 : side === 2 ? -position : 2.875
      return <Fragment key={index}><smtpad portHints={[`pin${index + 1}`]} pcbX={x} pcbY={y}
        shape="rect" width={side % 2 === 0 ? 0.55 : 0.2} height={side % 2 === 0 ? 0.2 : 0.55}
        cornerRadius={0.05} solderMaskMargin={0.05} solderPasteMargin={0} /></Fragment>
    })}
    <smtpad portHints={["pin49"]} shape="rect" width={4.2} height={4.2}
      solderMaskMargin={0.05} solderPasteMargin={-2.1} />
    <courtyardrect width={6.6} height={6.6} />
    <silkscreencircle pcbX={-3.3} pcbY={2.6} radius={0.15} />
  </footprint>
}

// TI requires at least 25 GND thermal vias. Ordinary through vias, bottom tented.
// Assembly stencil/paste is explicit in applyPmicStencil; factory DFM remains open.
export function PmicThermalVias({ x, y }: { x: number; y: number }) {
  return <>{Array.from({ length: 25 }, (_, index) => <Fragment key={index}><via
    pcbX={x + (index % 5 - 2) * 0.8} pcbY={y + (Math.floor(index / 5) - 2) * 0.8}
    fromLayer="top" toLayer="bottom" holeDiameter={0.2} outerDiameter={0.4}
    connectsTo="net.GND" tented="bottom_tented" /></Fragment>)}</>
}