0hmX/mt53e1g16d1zw-footprint
This code defines the physical pin layout and 200-ball footprint of the Micron MT53E1G16D1ZW DDR4 SDRAM chip, including pad positions, signal assignments, and qualification of pin attributes for PCB integration.
- Version
- 1.0.2
- License
- unset
- Stars
- 0
MT53E1G16D1ZW.test.tsx
import { expect, test } from "bun:test"
import { Circuit } from "@tscircuit/core"
import {
ballMap,
MT53E1G16D1ZW,
MT53E1G16D1ZW_DATASHEET_URL,
pinAttributes,
} from "./lib/MT53E1G16D1ZW"
test("ZW footprint follows the Micron 200-ball package drawing", async () => {
expect(ballMap).toHaveLength(200)
expect(new Set(ballMap.map(({ ball }) => ball)).size).toBe(200)
expect(ballMap.some(({ ball }) => /^[LM]/.test(ball))).toBe(false)
expect(ballMap.some(({ ball }) => /(?:6|7)$/.test(ball))).toBe(false)
const xs = ballMap.map(({ x }) => x)
const ys = ballMap.map(({ y }) => y)
expect(Math.max(...xs) - Math.min(...xs)).toBeCloseTo(8.8)
expect(Math.max(...ys) - Math.min(...ys)).toBeCloseTo(13.65)
expect(MT53E1G16D1ZW_DATASHEET_URL).toStartWith("https://")
expect(pinAttributes.A3).toMatchObject({
requiresGround: true,
})
expect(pinAttributes.A4).toMatchObject({
requiresPower: true,
requiresVoltage: "1.1V",
shouldHaveDecouplingCapacitor: true,
})
expect(pinAttributes.A1).toMatchObject({ doNotConnect: true })
expect(pinAttributes.A8).toEqual({ includeInBoardPinout: false })
expect(ballMap.filter(({ signal }) => signal === "DNU")).toHaveLength(12)
expect(ballMap.filter(({ signal }) => signal === "NC")).toHaveLength(43)
expect(ballMap.filter(({ signal }) => signal === "VSS")).toHaveLength(58)
expect(ballMap.filter(({ signal }) => signal === "VDD1")).toHaveLength(8)
expect(ballMap.filter(({ signal }) => signal === "VDD2")).toHaveLength(24)
expect(ballMap.filter(({ signal }) => signal === "VDDQ")).toHaveLength(20)
const circuit = new Circuit()
circuit.add(
<board width="18mm" height="22mm" routingDisabled>
<MT53E1G16D1ZW name="U1" />
</board>,
)
await circuit.renderUntilSettled()
const json = circuit.getCircuitJson() as any[]
expect(json.filter(({ type }) => type === "pcb_smtpad")).toHaveLength(200)
expect(json.filter(({ type }) => type.endsWith("_error"))).toEqual([])
const ports = json.filter(({ type }) => type === "source_port")
const port = (name: string) => ports.find((item) => item.name === name)
expect(port("A1")?.do_not_connect).toBe(true)
expect(port("A3")?.requires_ground).toBe(true)
expect(port("A4")?.requires_power).toBe(true)
expect(port("B2")?.port_hints).toContain("DQ0")
expect(port("T11")?.port_hints).toContain("RESET_n")
})