0hmX/am3352-zcz-footprint

This code defines the physical footprint and pin layout for an 18x18 ball grid array (BGA) package of a Texas Instruments AM3352 microprocessor, including pad positions and outline drawing commands for PCB design.

Version
1.0.2
License
unset
Stars
0

dist/index.js

import { jsxs, jsx } from 'react/jsx-runtime';
import { Fragment } from 'react';

/** TI ZCZ0324A, top view: A1 upper left, numbers right, letters down.
 * Source: https://www.ti.com/lit/ds/symlink/am3352.pdf
 * Package outline / example board layout: PDF pages 260–261.
 * 15 × 15 mm body; 18 × 18 balls; 0.8 mm pitch; Ø0.40 mm NSMD lands.
 */
const rows = ["A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "R", "T", "U", "V"];
// Preserve the import's numeric pin convention: 1=A1, 2=B1, 19=A2.
// Numeric pins are tscircuit identifiers; the package uses ball names.
const am3352Balls = Array.from({ length: 324 }, (_, index) => {
    const row = index % 18;
    const column = Math.floor(index / 18);
    return {
        pin: `pin${index + 1}`,
        ball: `${rows[row]}${column + 1}`,
        x: Number(((column - 8.5) * 0.8).toFixed(3)),
        y: Number(((8.5 - row) * 0.8).toFixed(3)),
    };
});
const am3352BallLabels = Object.fromEntries(am3352Balls.map(({ pin, ball }) => [pin, [ball]]));
function AM3352ZCZFootprint() {
    return (jsxs("footprint", { children: [am3352Balls.map(({ pin, ball, x, y }) => (jsx(Fragment, { children: jsx("smtpad", { portHints: [pin, ball], pcbX: x, pcbY: y, layer: "top", shape: "circle", radius: 0.2, solderMaskMargin: 0.05, solderPasteMargin: 0 }) }, ball))), jsx("fabricationnotepath", { strokeWidth: 0.1, route: [
                    { x: -6.7, y: 7.5 }, { x: 7.5, y: 7.5 },
                    { x: 7.5, y: -7.5 }, { x: -7.5, y: -7.5 },
                    { x: -7.5, y: 6.7 }, { x: -6.7, y: 7.5 },
                ] }), jsx("silkscreenpath", { strokeWidth: 0.15, route: [
                    { x: -6.85, y: 7.65 }, { x: 7.65, y: 7.65 },
                    { x: 7.65, y: -7.65 }, { x: -7.65, y: -7.65 },
                    { x: -7.65, y: 6.85 }, { x: -6.85, y: 7.65 },
                ] }), jsx("courtyardoutline", { outline: [
                    { x: -7.8, y: 7.8 }, { x: 7.8, y: 7.8 },
                    { x: 7.8, y: -7.8 }, { x: -7.8, y: -7.8 },
                    { x: -7.8, y: 7.8 },
                ] })] }));
}

export { AM3352ZCZFootprint, am3352BallLabels, am3352Balls, AM3352ZCZFootprint as default };