0hmX/am62l-lpddr4-breakout-repro

This code defines React components that instantiate circuits representing dedicated DDR address control and byte0 data lines.

Version
1.0.11
License
unset
Stars
0

dist/index.cjs

'use strict';

var jsxRuntime = require('react/jsx-runtime');
var _0hmX_mt53e1g16d1zwFootprint = require('@tsci/0hmX.mt53e1g16d1zw-footprint');
var tscircuit_ti = require('@tsci/tscircuit.ti');

const DDR_CONNECTIONS = [
    ...Array.from({ length: 8 }, (_, bit) => ({
        socSignal: `DDR0_DQ${bit}`,
        memorySignal: `DQ${bit}`,
        traceName: `DQ${bit}`,
        busName: "DDR_BYTE0",
    })),
    ...Array.from({ length: 8 }, (_, offset) => {
        const bit = offset + 8;
        return {
            socSignal: `DDR0_DQ${bit}`,
            memorySignal: `DQ${bit}`,
            traceName: `DQ${bit}`,
            busName: "DDR_BYTE1",
        };
    }),
    {
        socSignal: "DDR0_DM0",
        memorySignal: "DMI0",
        traceName: "DM0",
        busName: "DDR_BYTE0",
    },
    {
        socSignal: "DDR0_DM1",
        memorySignal: "DMI1",
        traceName: "DM1",
        busName: "DDR_BYTE1",
    },
    {
        socSignal: "DDR0_DQS0",
        memorySignal: "DQS0_t",
        traceName: "DQS0",
        busName: "DDR_BYTE0",
    },
    {
        socSignal: "DDR0_DQS0_n",
        memorySignal: "DQS0_c",
        traceName: "DQS0_n",
        busName: "DDR_BYTE0",
    },
    {
        socSignal: "DDR0_DQS1",
        memorySignal: "DQS1_t",
        traceName: "DQS1",
        busName: "DDR_BYTE1",
    },
    {
        socSignal: "DDR0_DQS1_n",
        memorySignal: "DQS1_c",
        traceName: "DQS1_n",
        busName: "DDR_BYTE1",
    },
    ...Array.from({ length: 6 }, (_, bit) => ({
        socSignal: `DDR0_A${bit}`,
        memorySignal: `CA${bit}`,
        traceName: `A${bit}`,
        busName: "DDR_ADDR_CTRL",
    })),
    {
        socSignal: "DDR0_CS0_n",
        memorySignal: "CS",
        traceName: "CS0_n",
        busName: "DDR_ADDR_CTRL",
    },
    {
        socSignal: "DDR0_CKE0",
        memorySignal: "CKE",
        traceName: "CKE0",
        busName: "DDR_ADDR_CTRL",
    },
    {
        socSignal: "DDR0_CK0",
        memorySignal: "CK_t",
        traceName: "CK0",
        busName: "DDR_ADDR_CTRL",
    },
    {
        socSignal: "DDR0_CK0_n",
        memorySignal: "CK_c",
        traceName: "CK0_n",
        busName: "DDR_ADDR_CTRL",
    },
    {
        socSignal: "DDR0_RESET0_n",
        memorySignal: "RESET_n",
        traceName: "DDR_LINK_RESET0_n",
        busName: "DDR_ADDR_CTRL",
    },
];
const DDR_SOC_PHYSICAL_PINS = [
    76, 91, 92, 93, 94, 103, 104, 105, 121, 122, 123, 124, 125, 139,
    140, 149, 150, 162, 164, 165, 215, 216, 236, 238, 255, 256, 257,
    272, 273, 275, 276, 284, 285,
];
const DDR_BYTE0_TRACE_NAMES = DDR_CONNECTIONS.filter(({ busName }) => busName === "DDR_BYTE0").map(({ traceName }) => traceName);
const DDR_BYTE1_TRACE_NAMES = DDR_CONNECTIONS.filter(({ busName }) => busName === "DDR_BYTE1").map(({ traceName }) => traceName);
const DDR_ADDR_CTRL_TRACE_NAMES = DDR_CONNECTIONS.filter(({ busName }) => busName === "DDR_ADDR_CTRL").map(({ traceName }) => traceName);

const usedSocPins = new Set(DDR_SOC_PHYSICAL_PINS);
const socNoConnect = Array.from({ length: 373 }, (_, index) => index + 1)
    .filter((pin) => !usedSocPins.has(pin))
    .map((pin) => `pin${pin}`);
const usedMemorySignals = new Set(DDR_CONNECTIONS.map(({ memorySignal }) => memorySignal));
const memoryNoConnect = _0hmX_mt53e1g16d1zwFootprint.ballMap
    .map(({ signal }, index) => ({ signal, selector: `pin${index + 1}` }))
    .filter(({ signal }) => !usedMemorySignals.has(signal))
    .map(({ selector }) => selector);
const SIGNAL_LAYERS = [
    "top",
    "inner1",
    "inner2",
    "inner3",
    "inner4",
    "inner5",
    "inner6",
    "bottom",
];
var index_circuit = () => (jsxRuntime.jsxs("board", { name: "AM62L_LPDDR4_BREAKOUT_REPRO", width: "45mm", height: "25mm", layers: 8, defaultTraceWidth: "0.08128mm", minTraceWidth: "0.08128mm", minTraceToPadEdgeClearance: "0.05mm", minViaEdgeToPadEdgeClearance: "0.08128mm", minViaHoleEdgeToViaHoleEdgeClearance: "0.1016mm", minViaHoleDiameter: "0.2032mm", minViaPadDiameter: "0.4572mm", pcbStyle: { viaHoleDiameter: "0.2032mm", viaPadDiameter: "0.4572mm" }, autorouterEffortLevel: "10x", children: [jsxRuntime.jsx("breakout", { name: "SOC_BREAKOUT", pcbX: -10, pcbY: 0, fanoutBoundaryPadding: {
                top: "5mm",
                right: "2mm",
                bottom: "5mm",
                left: "1mm",
            }, fanoutRoutingLayers: [...SIGNAL_LAYERS], busFanoutDirections: {
                DDR_BYTE1: "top_right",
                DDR_ADDR_CTRL: "center_right",
                DDR_BYTE0: "bottom_right",
            }, children: jsxRuntime.jsx(tscircuit_ti.AM62L32, { name: "U1", footprintVariant: "fccsp_373_anb", pcbX: 0, pcbY: 0, pcbRotation: 180, noSchematicRepresentation: true, noConnect: socNoConnect }) }), jsxRuntime.jsx("breakout", { name: "RAM_BREAKOUT", pcbX: 10.116917, pcbY: -0.050917, fanoutBoundaryPadding: {
                top: "5mm",
                right: "1mm",
                bottom: "5mm",
                left: "2mm",
            }, fanoutRoutingLayers: [...SIGNAL_LAYERS], busFanoutDirections: {
                DDR_BYTE1: "top_left",
                DDR_ADDR_CTRL: "center_left",
                DDR_BYTE0: "bottom_left",
            }, children: jsxRuntime.jsx(_0hmX_mt53e1g16d1zwFootprint.MT53E1G16D1ZW, { name: "U2", pcbX: 0, pcbY: 0, pcbRotation: 90, noSchematicRepresentation: true, noConnect: memoryNoConnect }) }), jsxRuntime.jsx("bus", { name: "DDR_BYTE0", connections: DDR_BYTE0_TRACE_NAMES }), jsxRuntime.jsx("bus", { name: "DDR_BYTE1", connections: DDR_BYTE1_TRACE_NAMES }), jsxRuntime.jsx("bus", { name: "DDR_ADDR_CTRL", connections: DDR_ADDR_CTRL_TRACE_NAMES }), jsxRuntime.jsx("differentialpair", { name: "DQS0_PAIR", positiveConnection: "DQS0", negativeConnection: "DQS0_n" }), jsxRuntime.jsx("differentialpair", { name: "DQS1_PAIR", positiveConnection: "DQS1", negativeConnection: "DQS1_n" }), jsxRuntime.jsx("differentialpair", { name: "CK0_PAIR", positiveConnection: "CK0", negativeConnection: "CK0_n" }), DDR_CONNECTIONS.map(({ socSignal, memorySignal, traceName }) => (jsxRuntime.jsx("trace", { name: traceName, from: `U1.${socSignal}`, to: `U2.${memorySignal}` }, traceName)))] }));

module.exports = index_circuit;