0hmX/am62l-lpddr4-ti-pth-router
This code defines a hardware-oriented React/TypeScript setup for a PCB breakout circuit featuring an AM62L LPDDR4 interface, including detailed PCB component placement, routing algorithms, and validation scripts for DDR connections, via placement, and manufacturing constraints.
- Version
- 1.0.1
- License
- unset
- Stars
- 0
tests/package-land-geometry.test.ts
import { expect, test } from "bun:test"
import {
Children,
isValidElement,
type ReactElement,
type ReactNode,
} from "react"
import { AM62L32_TI_LAND } from "../components/am62l32-ti-land"
import { MT53E1G16D1ZW_NSMD } from "../components/mt53e1g16d1zw-nsmd"
const collectPads = (node: ReactNode): ReactElement<any>[] => {
const pads: ReactElement<any>[] = []
Children.forEach(node, (child) => {
if (!isValidElement<any>(child)) return
if (child.type === "smtpad") pads.push(child)
pads.push(...collectPads(child.props.children))
})
return pads
}
test("uses TI SPRADI2 10 mil AM62L copper lands and 12 mil mask openings", () => {
const chip = AM62L32_TI_LAND({ name: "U1" } as any)
const pads = collectPads(chip.props.footprint)
expect(pads.length).toBeGreaterThanOrEqual(373)
for (const pad of pads) {
expect(pad.props.radius).toBe("0.127mm")
expect(pad.props.solderMaskMargin).toBe("0.0254mm")
}
})
test("uses Micron CSN-33 0.32 mm NSMD RAM copper lands", () => {
const chip = MT53E1G16D1ZW_NSMD({ name: "U2" } as any) as ReactElement<any>
const pads = collectPads(chip.props.footprint)
expect(pads).toHaveLength(200)
for (const pad of pads) {
expect(pad.props.radius).toBe("0.16mm")
expect(pad.props.solderMaskMargin).toBe("0.04mm")
}
})