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
bga.tsx
import type { ChipProps } from "@tscircuit/props"
import cpuBallMap from "./contracts/cpu-ballmap.json"
import ramBallMap from "./contracts/ram-ballmap.json"
// BGA numeric aliases begin at A1; object insertion order began at A18 and
// otherwise made the assembly pin-one metadata refer to the wrong ball.
const cpuPins = Object.entries(cpuBallMap).sort(([a], [b]) =>
a[0].localeCompare(b[0]) || Number(a.slice(1)) - Number(b.slice(1)),
).map(([ball, signal], i) => ({ pin: `pin${i + 1}`, ball, signal }))
const ramPins = Object.entries(ramBallMap).map(([ball, signal], i) => ({ pin: `pin${i + 1}`, ball, signal }))
export function Cpu(props: ChipProps) {
return <chip {...props} manufacturerPartNumber="AM3352BZCZA100"
supplierPartNumbers={{ jlcpcb: ["C468249"] }}
pinLabels={Object.fromEntries(cpuPins.map(({ pin, ball, signal }) => [pin, [ball, `signal_${signal}_${ball}`]]))}
footprint={<footprint>
{cpuPins.map(({ pin, ball }) => <smtpad portHints={[pin, ball]}
pcbX={("ABCDEFGHJKLMNPRTUV".indexOf(ball[0]) - 8.5) * 0.8}
pcbY={(Number(ball.slice(1)) - 9.5) * 0.8} radius={0.2} shape="circle" />)}
<courtyardrect width={17} height={17} />
<silkscreenrect width={15.4} height={15.4} />
<silkscreencircle pcbX={-7.8} pcbY={-7.8} radius={0.3} />
</footprint>} />
}
export function DdrMemory(props: ChipProps) {
return <chip {...props} manufacturerPartNumber="W631GG6MB-12"
supplierPartNumbers={{ jlcpcb: ["C408825"] }}
pinLabels={Object.fromEntries(ramPins.map(({ pin, ball, signal }) => [pin, [ball, `signal_${signal}`]]))}
footprint={<footprint>
{ramPins.map(({ pin, ball }) => <smtpad portHints={[pin, ball]}
pcbX={(Number(ball.slice(1)) - 5) * 0.8}
pcbY={(7.5 - "ABCDEFGHJKLMNPRT".indexOf(ball[0])) * 0.8} radius={0.175} shape="circle" />)}
<courtyardrect width={9.5} height={15.5} />
<silkscreenrect width={7.5} height={13} />
<silkscreencircle pcbX={-4} pcbY={6} radius={0.25} />
</footprint>} />
}