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.cjs
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var jsxRuntime = require('react/jsx-runtime');
var react = require('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 (jsxRuntime.jsxs("footprint", { children: [am3352Balls.map(({ pin, ball, x, y }) => (jsxRuntime.jsx(react.Fragment, { children: jsxRuntime.jsx("smtpad", { portHints: [pin, ball], pcbX: x, pcbY: y, layer: "top", shape: "circle", radius: 0.2, solderMaskMargin: 0.05, solderPasteMargin: 0 }) }, ball))), jsxRuntime.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 },
] }), jsxRuntime.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 },
] }), jsxRuntime.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 },
] })] }));
}
exports.AM3352ZCZFootprint = AM3352ZCZFootprint;
exports.am3352BallLabels = am3352BallLabels;
exports.am3352Balls = am3352Balls;
exports.default = AM3352ZCZFootprint;