ShiboSoftwareDev/am625sip-linux-board
This code defines the physical footprint and pin layout for an AM625 System-in-Package (SIP) component, detailing pad positions, pin labels, and package outline for hardware integration.
- Version
- 1.0.24
- License
- unset
- Stars
- 0
index.circuit.tsx
PCB
Schematic
import { AM625SIP_BALLS, Am625Sip } from "./components/am625sip"
import { X322525MOB4SI } from "./imports/X322525MOB4SI"
import { Fragment } from "react"
import hdmiCircuitJson from "./subcircuits/cache/hdmi.circuit.json"
import microSdCircuitJson from "./subcircuits/cache/microsd.circuit.json"
import capVddsCircuitJson from "./subcircuits/cache/cap-vdds.circuit.json"
import pmicVsysCircuitJson from "./subcircuits/cache/pmic-vsys.circuit.json"
import usbCDeviceCircuitJson from "./subcircuits/cache/usb-c-device.circuit.json"
import usb0AnalogSupportCircuitJson from "./subcircuits/cache/usb0-analog-support.circuit.json"
import usb0DataEsdCircuitJson from "./subcircuits/cache/usb0-data-esd.circuit.json"
import { CAP_VDDS_LINKS } from "./subcircuits/cap-vdds"
import { PowerInputSubcircuit } from "./subcircuits/power-input"
import { MICROSD_SOC_BOUNDARY_Y } from "./subcircuits/microsd"
import { createCachedSocFanoutAutorouter } from "./subcircuits/cached-soc-fanout-autorouter"
const SIGNAL_LAYERS = ["top", "inner1", "inner2", "bottom"] as const
const ANALOG_ROUTE_PHASE_COUNT = 24
const PMIC_INPUT_ROUTE_PHASE_COUNT = 10
const PMIC_LDO2_ROUTE_PHASES = {
LOCAL: 22.1,
ISOLATION: 22.11,
FEED: 22.12,
} as const
const VOUT_ROUTE_PHASE_BASE = 22.7
const VOUT_ROUTE_PHASE = {
PCLK: VOUT_ROUTE_PHASE_BASE,
DE: VOUT_ROUTE_PHASE_BASE + 0.1,
HSYNC: VOUT_ROUTE_PHASE_BASE + 0.2,
VSYNC_LOCAL: VOUT_ROUTE_PHASE_BASE + 0.24,
VSYNC: VOUT_ROUTE_PHASE_BASE + 0.25,
} as const
const POWER_INPUT_VSYS_ROUTE_PHASE = 22.6
const UART0_ESCAPE_PHASE = {
RX: 22.48,
TX: 22.49,
} as const
const UART0_HEADER_GROUND_PHASE = 22.5
const UART0_ROUTE_PHASE = {
RX: 22.51,
TX: 22.52,
} as const
const PMIC_RESET_ROUTE_PHASE = {
SIGNAL: 29.1,
PULLUP_SIGNAL: 29.11,
PULLUP_SUPPLY: 29.12,
} as const
const PMIC_LPM_ROUTE_PHASE = {
SIGNAL: 29.2,
PMIC_LINK: 29.21,
PULLUP_SUPPLY: 29.22,
} as const
const PMIC_INTERRUPT_ROUTE_PHASE = {
SIGNAL: 29.3,
PMIC_LINK: 29.31,
PULLUP_SUPPLY: 29.32,
} as const
const USB0_ESCAPE_PHASE = 22.53
const USB0_ANALOG_PHASE = {
SOC_LINKS: 22.54,
CONNECTOR_VBUS: 22.56,
GROUND: 22.58,
} as const
const USB0_CONNECTOR_PHASE = {
DATA_TO_ESD: 22.55,
DATA_TO_CONNECTOR: 22.551,
ESD_GROUND: 22.552,
GND: 22.57,
} as const
const ANALOG_ROUTE_REGION = {
shape: "rect" as const,
minX: -14,
maxX: 14.5,
minY: -19,
maxY: 22.5,
}
const getAnalogRoutePhase = (index: number) =>
Number((17 + index / 100).toFixed(2))
const getPmicInputRoutePhase = (index: number) =>
Number((21.2 + index / 100).toFixed(2))
interface SocBreakoutBus {
name: string
preferredLayers: (typeof SIGNAL_LAYERS)[number][]
points: Array<{
ball: string
pcbX: number
pcbY: number
}>
}
const SOC_BREAKOUT_BUSES: SocBreakoutBus[] = [
{
name: "MCU_OSC0",
preferredLayers: ["inner2"],
points: [
{ ball: "B2", pcbX: -9.5, pcbY: 9.9999 },
{ ball: "A3", pcbX: -8.5, pcbY: 9.9999 },
],
},
{
name: "WKUP_LFOSC0",
preferredLayers: ["top"],
points: [
{ ball: "C1", pcbX: -9, pcbY: 11.9999 },
{ ball: "C2", pcbX: -8, pcbY: 11.9999 },
],
},
{
name: "PMIC_CONTROL",
preferredLayers: ["bottom"],
points: [
{ ball: "D2", pcbX: 6.25, pcbY: 9.9999 },
{ ball: "B7", pcbX: 7.25, pcbY: 9.9999 },
{ ball: "A16", pcbX: 8.25, pcbY: 9.9999 },
{ ball: "B16", pcbX: 9.25, pcbY: 9.9999 },
{ ball: "D16", pcbX: 9.9999, pcbY: 8.5 },
],
},
{
name: "JTAG_DEBUG",
preferredLayers: ["top", "inner1"],
points: [
{ ball: "A10", pcbX: -2, pcbY: 11.9999 },
{ ball: "B10", pcbX: -1.5, pcbY: 11.9999 },
{ ball: "A11", pcbX: -1, pcbY: 11.9999 },
{ ball: "B11", pcbX: -0.5, pcbY: 11.9999 },
{ ball: "C11", pcbX: 0, pcbY: 11.9999 },
{ ball: "D12", pcbX: 0.5, pcbY: 11.9999 },
{ ball: "E12", pcbX: 1, pcbY: 11.9999 },
],
},
{
name: "UART0_CONSOLE",
preferredLayers: ["inner1"],
points: [
{ ball: "D14", pcbX: 13, pcbY: 11 },
{ ball: "E14", pcbX: 13, pcbY: 12 },
],
},
{
name: "MMC1_MICROSD",
preferredLayers: ["inner1"],
points: [
{ ball: "A21", pcbX: 9.9999, pcbY: 9 },
{ ball: "A22", pcbX: 9.9999, pcbY: 8 },
{ ball: "B21", pcbX: 9.9999, pcbY: 7 },
{ ball: "B22", pcbX: 9.9999, pcbY: 6 },
{ ball: "C21", pcbX: 9.9999, pcbY: 5 },
{ ball: "D22", pcbX: 9.9999, pcbY: 4 },
{ ball: "C17", pcbX: 9.9999, pcbY: 3 },
{ ball: "D17", pcbX: 9.9999, pcbY: 2 },
],
},
{
name: "USB0_DATA",
preferredLayers: ["inner2"],
points: [
{ ball: "AD11", pcbX: 2.75, pcbY: -9.9999 },
{ ball: "AE11", pcbX: 3.25, pcbY: -9.9999 },
],
},
{
name: "USB0_ANALOG",
preferredLayers: ["bottom"],
points: [
{ ball: "AE10", pcbX: 1.25, pcbY: -9.9999 },
{ ball: "AC11", pcbX: 1.75, pcbY: -9.9999 },
],
},
]
const getSocBus = (name: string) =>
SOC_BREAKOUT_BUSES.find((bus) => bus.name === name)!
const MCU_OSC0_BUS = getSocBus("MCU_OSC0")
const UART0_CONSOLE_BUS = getSocBus("UART0_CONSOLE")
const USB0_DATA_BUS = getSocBus("USB0_DATA")
const USB0_ANALOG_BUS = getSocBus("USB0_ANALOG")
const PMIC_CONTROL_BUS = getSocBus("PMIC_CONTROL")
const PMIC_RUNTIME_BUS: SocBreakoutBus = {
...PMIC_CONTROL_BUS,
points: [
PMIC_CONTROL_BUS.points[2]!,
PMIC_CONTROL_BUS.points[3]!,
PMIC_CONTROL_BUS.points[0]!,
PMIC_CONTROL_BUS.points[1]!,
],
}
const MMC1_MICROSD_BUS = getSocBus("MMC1_MICROSD")
const MMC1_BOOT_BUS: SocBreakoutBus = {
...MMC1_MICROSD_BUS,
points: [
{
...MMC1_MICROSD_BUS.points[0]!,
pcbX: 20,
pcbY: MICROSD_SOC_BOUNDARY_Y.CMD,
},
{
...MMC1_MICROSD_BUS.points[1]!,
pcbX: 20,
pcbY: MICROSD_SOC_BOUNDARY_Y.DAT0,
},
{
...MMC1_MICROSD_BUS.points[3]!,
pcbX: 20,
pcbY: MICROSD_SOC_BOUNDARY_Y.CLK,
},
],
}
const MMC1_BOOT_CONNECTIONS = [
{ ball: "A21", pin: "CMD" },
{ ball: "A22", pin: "DAT0" },
{ ball: "B22", pin: "CLK" },
] as const
const SOC_IO_1P8_BUSES: SocBreakoutBus[] = [
{
name: "SOC_IO_1P8_TOP",
preferredLayers: [...SIGNAL_LAYERS],
points: [
{ ball: "G7", pcbX: -7.5, pcbY: 9.9999 },
{ ball: "H9", pcbX: -6.5, pcbY: 9.9999 },
{ ball: "F11", pcbX: -5.5, pcbY: 9.9999 },
{ ball: "G12", pcbX: -4.5, pcbY: 9.9999 },
{ ball: "G14", pcbX: -3.5, pcbY: 9.9999 },
{ ball: "F15", pcbX: -2.5, pcbY: 9.9999 },
{ ball: "G17", pcbX: -1.5, pcbY: 9.9999 },
],
},
{
name: "SOC_IO_1P8_RIGHT",
preferredLayers: [...SIGNAL_LAYERS],
points: [
{ ball: "J18", pcbX: 9.9999, pcbY: 5 },
{ ball: "L18", pcbX: 9.9999, pcbY: 1.5 },
{ ball: "M19", pcbX: 9.9999, pcbY: 3 },
{ ball: "N18", pcbX: 4, pcbY: -9.9999 },
{ ball: "P18", pcbX: 7, pcbY: -9.9999 },
{ ball: "T19", pcbX: 8.5, pcbY: -9.9999 },
],
},
{
name: "SOC_IO_1P8_LEFT",
preferredLayers: [...SIGNAL_LAYERS],
points: [
{ ball: "M4", pcbX: -9.9999, pcbY: 1 },
{ ball: "N3", pcbX: -9.9999, pcbY: 0 },
],
},
{
name: "SOC_IO_1P8_BOTTOM",
preferredLayers: [...SIGNAL_LAYERS],
points: [
{ ball: "T7", pcbX: -1, pcbY: -9.9999 },
{ ball: "U18", pcbX: 9, pcbY: -9.9999 },
{ ball: "W16", pcbX: 6.5, pcbY: -9.9999 },
{ ball: "W19", pcbX: 8, pcbY: -9.9999 },
],
},
]
const SOC_IO_1P8_FANOUT_PAIR_BUSES = [
{
name: "SOC_IO_1P8_RIGHT_LOWER_PAIR",
balls: ["N18", "T19"],
preferredLayers: ["inner1"],
},
{
name: "SOC_IO_1P8_BOTTOM_RIGHT_PAIR",
balls: ["U18", "W19"],
preferredLayers: ["bottom"],
},
] as const
/**
* Preserve the layer assignment from the proven 205-connection SoC fanout.
* Without these explicit buses, adding one unrelated escape can rebalance
* single-ball supply routes and invalidate already-routed parent phases.
*/
const SOC_IO_1P8_PINNED_FANOUT_BUSES = [
{ name: "SOC_IO_1P8_G7_PINNED", balls: ["G7"], preferredLayers: ["bottom"] },
{ name: "SOC_IO_1P8_H9_PINNED", balls: ["H9"], preferredLayers: ["inner1"] },
{ name: "SOC_IO_1P8_F11_PINNED", balls: ["F11"], preferredLayers: ["inner2"] },
{ name: "SOC_IO_1P8_G12_PINNED", balls: ["G12"], preferredLayers: ["bottom"] },
{ name: "SOC_IO_1P8_G14_PINNED", balls: ["G14"], preferredLayers: ["inner1"] },
{ name: "SOC_IO_1P8_F15_PINNED", balls: ["F15"], preferredLayers: ["inner2"] },
{ name: "SOC_IO_1P8_G17_PINNED", balls: ["G17"], preferredLayers: ["bottom"] },
{ name: "SOC_IO_1P8_J18_PINNED", balls: ["J18"], preferredLayers: ["bottom"] },
{ name: "SOC_IO_1P8_L18_PINNED", balls: ["L18"], preferredLayers: ["inner2"] },
{ name: "SOC_IO_1P8_M19_PINNED", balls: ["M19"], preferredLayers: ["bottom"] },
{ name: "SOC_IO_1P8_P18_PINNED", balls: ["P18"], preferredLayers: ["inner1"] },
{ name: "SOC_IO_1P8_M4_PINNED", balls: ["M4"], preferredLayers: ["inner2"] },
{ name: "SOC_IO_1P8_N3_PINNED", balls: ["N3"], preferredLayers: ["bottom"] },
{ name: "SOC_IO_1P8_T7_PINNED", balls: ["T7"], preferredLayers: ["inner1"] },
{ name: "SOC_IO_1P8_W16_PINNED", balls: ["W16"], preferredLayers: ["inner2"] },
] as const
const SOC_IO_1P8_FANOUT_BUSES = [
...SOC_IO_1P8_FANOUT_PAIR_BUSES,
...SOC_IO_1P8_PINNED_FANOUT_BUSES,
] as const
const DDR_STRAPS_BUS: SocBreakoutBus = {
name: "DDR_STRAPS",
preferredLayers: ["inner1"],
points: [
{ ball: "G1", pcbX: -9.9999, pcbY: 6 },
{ ball: "M2", pcbX: -9.9999, pcbY: -3 },
{ ball: "R3", pcbX: -9.9999, pcbY: -6 },
],
}
const CAP_VDDS_BREAKOUT_BUSES: SocBreakoutBus[] = [
{
name: "CAP_VDDS_TOP",
preferredLayers: ["inner2"],
points: CAP_VDDS_LINKS.slice(0, 4).map(
({ ball, exitX, exitY }) => ({
ball,
pcbX: exitX,
pcbY: exitY,
}),
),
},
{
name: "CAP_VDDS_RIGHT",
preferredLayers: ["inner1"],
points: CAP_VDDS_LINKS.slice(4, 7).map(
({ ball, exitX, exitY }) => ({
ball,
pcbX: exitX,
pcbY: exitY,
}),
),
},
{
name: "CAP_VDDS_BOTTOM",
preferredLayers: ["bottom"],
points: CAP_VDDS_LINKS.slice(7, 9).map(
({ ball, exitX, exitY }) => ({
ball,
pcbX: exitX,
pcbY: exitY,
}),
),
},
]
const VOUT_CONTROL_CONNECTIONS = [
{ name: "VOUT0_PCLK", ball: "AC24", pin: "IDCK_P", pcbX: 8, pcbY: -12.9999, routingPhase: VOUT_ROUTE_PHASE.PCLK },
{ name: "VOUT0_DE", ball: "Y20", pin: "DE", pcbX: 6, pcbY: -12.9999, routingPhase: VOUT_ROUTE_PHASE.DE },
{ name: "VOUT0_HSYNC", ball: "AB24", pin: "HSYNC", pcbX: 7, pcbY: -12.9999, routingPhase: VOUT_ROUTE_PHASE.HSYNC },
{ name: "VOUT0_VSYNC", ball: "AC25", pin: "VSYNC", pcbX: 9, pcbY: -12.9999, routingPhase: VOUT_ROUTE_PHASE.VSYNC },
] as const
// Add the control bus incrementally so each new BGA escape is validated.
const ACTIVE_VOUT_CONTROL_CONNECTIONS = VOUT_CONTROL_CONNECTIONS.slice(0, 4)
const VOUT_CONTROL_FAST_BUS: SocBreakoutBus = {
name: "VOUT_CONTROL_FAST",
preferredLayers: ["inner2"],
points: ACTIVE_VOUT_CONTROL_CONNECTIONS.slice(0, 2).map(
({ ball, pcbX, pcbY }) => ({ ball, pcbX, pcbY }),
),
}
const VOUT_HSYNC_ESCAPE_BUS: SocBreakoutBus = {
name: "VOUT_HSYNC_ESCAPE",
preferredLayers: ["inner1"],
points: ACTIVE_VOUT_CONTROL_CONNECTIONS.slice(2).map(
({ ball, pcbX, pcbY }) => ({ ball, pcbX, pcbY }),
),
}
const SOC_ANALOG_1P8_BUSES: SocBreakoutBus[] = [
{
name: "SOC_ANALOG_1P8_TOP",
preferredLayers: [...SIGNAL_LAYERS],
points: [
{ ball: "G16", pcbX: 13, pcbY: 7.5 },
{ ball: "L11", pcbX: 5.25, pcbY: 9.9999 },
],
},
{
name: "SOC_ANALOG_1P8_RIGHT",
preferredLayers: [...SIGNAL_LAYERS],
points: [{ ball: "L14", pcbX: 9.9999, pcbY: -5 }],
},
{
name: "SOC_ANALOG_1P8_BOTTOM",
preferredLayers: [...SIGNAL_LAYERS],
points: [
{ ball: "T9", pcbX: -9, pcbY: -9.9999 },
{ ball: "U11", pcbX: -8, pcbY: -9.9999 },
{ ball: "U15", pcbX: -7, pcbY: -9.9999 },
{ ball: "W9", pcbX: -6, pcbY: -9.9999 },
{ ball: "W10", pcbX: -5, pcbY: -9.9999 },
{ ball: "W14", pcbX: -4, pcbY: -9.9999 },
{ ball: "Y11", pcbX: -1, pcbY: -9.9999 },
],
},
]
const SOC_ANALOG_1P8_PINNED_FANOUT_BUSES = [
{ name: "SOC_ANALOG_1P8_G16_PINNED", balls: ["G16"], preferredLayers: ["bottom"] },
{ name: "SOC_ANALOG_1P8_L11_PINNED", balls: ["L11"], preferredLayers: ["bottom"] },
{ name: "SOC_ANALOG_1P8_L14_PINNED", balls: ["L14"], preferredLayers: ["inner1"] },
{ name: "SOC_ANALOG_1P8_T9_PINNED", balls: ["T9"], preferredLayers: ["inner2"] },
{ name: "SOC_ANALOG_1P8_U11_PINNED", balls: ["U11"], preferredLayers: ["bottom"] },
{ name: "SOC_ANALOG_1P8_U15_PINNED", balls: ["U15"], preferredLayers: ["inner1"] },
{ name: "SOC_ANALOG_1P8_W9_PINNED", balls: ["W9"], preferredLayers: ["inner2"] },
{ name: "SOC_ANALOG_1P8_W10_PINNED", balls: ["W10"], preferredLayers: ["bottom"] },
{ name: "SOC_ANALOG_1P8_W14_PINNED", balls: ["W14"], preferredLayers: ["inner1"] },
{ name: "SOC_ANALOG_1P8_Y11_PINNED", balls: ["Y11"], preferredLayers: ["inner2"] },
] as const
const ACTIVE_BREAKOUT_BUSES = [
MCU_OSC0_BUS,
PMIC_RUNTIME_BUS,
MMC1_BOOT_BUS,
...SOC_IO_1P8_BUSES,
DDR_STRAPS_BUS,
...SOC_ANALOG_1P8_BUSES,
...CAP_VDDS_BREAKOUT_BUSES,
VOUT_CONTROL_FAST_BUS,
VOUT_HSYNC_ESCAPE_BUS,
UART0_CONSOLE_BUS,
USB0_DATA_BUS,
USB0_ANALOG_BUS,
]
const SOC_GROUND_BALLS = [
...AM625SIP_BALLS.filter(([, signalName]) => signalName === "VSS").map(
([ballName]) => ballName,
),
"C2", // Ground WKUP_LFOSC0_XI when the optional 32.768 kHz crystal is omitted.
]
const SOC_CORE_BALLS = AM625SIP_BALLS.filter(([, signalName]) =>
[
"VDD_CORE",
"VDDR_CORE",
"VDD_CANUART",
"VDDA_CORE_USB",
"VDDA_CORE_CSIRX0",
].includes(signalName),
).map(([ballName]) => ballName)
const SOC_DDR_1P1_BALLS = AM625SIP_BALLS.filter(([, signalName]) =>
["VDDS_MEM_1P1", "VDDS_DDR"].includes(signalName),
).map(([ballName]) => ballName)
const SOC_BUS_DIRECTIONS = {
MCU_OSC0: "topside_left",
WKUP_LFOSC0: "topside_left",
PMIC_CONTROL: "topside_right",
JTAG_DEBUG: "topside_center",
UART0_CONSOLE: "rightside_top",
MMC1_MICROSD: "rightside_top",
USB0_DATA: "bottomside_center",
USB0_ANALOG: "bottomside_center",
SOC_IO_1P8_TOP: "topside_center",
SOC_IO_1P8_RIGHT: "rightside_center",
SOC_IO_1P8_LEFT: "leftside_center",
SOC_IO_1P8_BOTTOM: "bottomside_center",
DDR_STRAPS: "leftside_center",
VOUT_CONTROL_FAST: "bottomside_right",
VOUT_HSYNC_ESCAPE: "bottomside_right",
SOC_IO_1P8_RIGHT_LOWER_PAIR: "bottomside_center",
SOC_IO_1P8_BOTTOM_RIGHT_PAIR: "bottomside_right",
} as const
const ACTIVE_BUS_DIRECTIONS = {
MCU_OSC0: SOC_BUS_DIRECTIONS.MCU_OSC0,
PMIC_CONTROL: SOC_BUS_DIRECTIONS.PMIC_CONTROL,
MMC1_MICROSD: SOC_BUS_DIRECTIONS.MMC1_MICROSD,
DDR_STRAPS: SOC_BUS_DIRECTIONS.DDR_STRAPS,
VOUT_CONTROL_FAST: SOC_BUS_DIRECTIONS.VOUT_CONTROL_FAST,
VOUT_HSYNC_ESCAPE: SOC_BUS_DIRECTIONS.VOUT_HSYNC_ESCAPE,
SOC_IO_1P8_RIGHT_LOWER_PAIR:
SOC_BUS_DIRECTIONS.SOC_IO_1P8_RIGHT_LOWER_PAIR,
SOC_IO_1P8_BOTTOM_RIGHT_PAIR:
SOC_BUS_DIRECTIONS.SOC_IO_1P8_BOTTOM_RIGHT_PAIR,
UART0_ESCAPE: SOC_BUS_DIRECTIONS.UART0_CONSOLE,
USB0_DATA: SOC_BUS_DIRECTIONS.USB0_DATA,
USB0_ANALOG: SOC_BUS_DIRECTIONS.USB0_ANALOG,
PMIC_RESET_SOC_BUS: "topside_center",
PMIC_LPM_SOC_BUS: "topside_center",
PMIC_INTERRUPT_SOC_BUS: "topside_center",
} as const
export default () => (
<board
name="POCKET_SITARA_REV_A"
width="140mm"
height="70mm"
layers={4}
defaultTraceWidth="0.08128mm"
minTraceWidth="0.08128mm"
minTraceToPadEdgeClearance="0.05mm"
minPadEdgeToPadEdgeClearance="0.08128mm"
minViaEdgeToPadEdgeClearance="0.08128mm"
minViaHoleEdgeToViaHoleEdgeClearance="0.1016mm"
minViaHoleDiameter="0.1mm"
minViaPadDiameter="0.24mm"
pcbStyle={{
viaHoleDiameter: "0.1mm",
viaPadDiameter: "0.24mm",
}}
autorouter="default"
schematicDisabled
>
<autoroutingphase
name="OSC_GROUND_PLANE_DROPS"
phaseIndex={0}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ inner1: ["GND"] }}
/>
<autoroutingphase
name="PMIC_GROUND_PLANE_DROPS"
phaseIndex={1}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ inner1: ["GND"] }}
busFanoutDirections={{ PMIC_AGND_DROP: "center_left" }}
region={{ shape: "rect", minX: 7, maxX: 12, minY: 17, maxY: 23 }}
/>
<autoroutingphase
name="PMIC_GROUND_TIE"
phaseIndex={1.005}
autorouter="default"
region={{ shape: "rect", minX: 6.5, maxX: 10, minY: 19, maxY: 23 }}
/>
<autoroutingphase
name="PMIC_C3_GROUND_DROP"
phaseIndex={1.01}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ inner1: ["GND"] }}
region={{ shape: "rect", minX: 18, maxX: 19, minY: 26.5, maxY: 27.5 }}
/>
<autoroutingphase
name="PMIC_C4_GROUND_DROP"
phaseIndex={1.011}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ inner1: ["GND"] }}
region={{ shape: "rect", minX: 12, maxX: 13, minY: 15.5, maxY: 16.5 }}
/>
<autoroutingphase
name="PMIC_C5_GROUND_DROP"
phaseIndex={1.012}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ inner1: ["GND"] }}
region={{ shape: "rect", minX: 6.5, maxX: 7.5, minY: 14.8, maxY: 15.8 }}
/>
<autoroutingphase
name="PMIC_ANALOG_CAP_GROUND_DROPS"
phaseIndex={1.02}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ inner1: ["GND"] }}
region={{ shape: "rect", minX: 7, maxX: 9, minY: 22.5, maxY: 25.5 }}
/>
<autoroutingphase
name="PMIC_LDO_GROUND_DROPS"
phaseIndex={1.1}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ inner1: ["GND"] }}
region={{ shape: "rect", minX: 3.5, maxX: 25, minY: 17, maxY: 24 }}
/>
<autoroutingphase
name="PMIC_BUCK1_GROUND_DROPS"
phaseIndex={1.2}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ inner1: ["GND"] }}
region={{ shape: "rect", minX: 20.5, maxX: 22.5, minY: 16, maxY: 21 }}
/>
<autoroutingphase
name="PMIC_BUCK2_GROUND_DROPS"
phaseIndex={1.3}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ inner1: ["GND"] }}
region={{ shape: "rect", minX: 17, maxX: 19, minY: 15, maxY: 20 }}
/>
<autoroutingphase
name="PMIC_BUCK3_GROUND_DROPS"
phaseIndex={1.4}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ inner1: ["GND"] }}
region={{ shape: "rect", minX: -1, maxX: 1, minY: 15, maxY: 20 }}
/>
<autoroutingphase
name="MICROSD_GROUND_PLANE_DROPS"
phaseIndex={2}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ inner1: ["GND"] }}
/>
<autoroutingphase
name="CORE_POWER_PLANE_DROPS"
phaseIndex={3}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{
inner1: ["GND"],
inner2: ["VDD_CORE_0V85"],
}}
/>
<autoroutingphase
name="DDR_POWER_PLANE_DROPS"
phaseIndex={4}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{
inner1: ["GND"],
bottom: ["VDD_DDR_1V1"],
}}
/>
<autoroutingphase
name="DDR_HF_POWER_PLANE_DROPS"
phaseIndex={5}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{
inner1: ["GND"],
bottom: ["VDD_DDR_1V1"],
}}
/>
<autoroutingphase
name="DDR_BULK_C33_PLANE_DROPS"
phaseIndex={6}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ inner1: ["GND"], bottom: ["VDD_DDR_1V1"] }}
/>
<autoroutingphase
name="DDR_BULK_C34_PLANE_DROPS"
phaseIndex={7}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ inner1: ["GND"], bottom: ["VDD_DDR_1V1"] }}
/>
<autoroutingphase
name="DDR_BULK_C35_PLANE_DROPS"
phaseIndex={8}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ inner1: ["GND"], bottom: ["VDD_DDR_1V1"] }}
/>
<autoroutingphase
name="DDR_HF_RIGHT_PLANE_DROPS"
phaseIndex={9}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ inner1: ["GND"], bottom: ["VDD_DDR_1V1"] }}
/>
<autoroutingphase
name="DDR_STRAP_GROUND_DROPS"
phaseIndex={10}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ inner1: ["GND"] }}
/>
<autoroutingphase
name="DDR_ZQ_POWER_DROP"
phaseIndex={11}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ bottom: ["VDD_DDR_1V1"] }}
/>
<autoroutingphase
name="ANALOG_C42_GROUND_DROP"
phaseIndex={12}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ inner1: ["GND"] }}
/>
<autoroutingphase
name="ANALOG_C43_GROUND_DROP"
phaseIndex={12.1}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ inner1: ["GND"] }}
/>
<autoroutingphase
name="CAP_VDDS_TOP_LEFT_GROUND_DROPS"
phaseIndex={13}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ inner1: ["GND"] }}
/>
<autoroutingphase
name="CAP_VDDS_TOP_RIGHT_GROUND_DROPS"
phaseIndex={14}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ inner1: ["GND"] }}
/>
<autoroutingphase
name="CAP_VDDS_REMAINING_GROUND_DROPS"
phaseIndex={15}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ inner1: ["GND"] }}
/>
<autoroutingphase
name="HDMI_LOCAL_GROUND_DROPS"
phaseIndex={16}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ inner1: ["GND"] }}
/>
<autoroutingphase
name="HDMI_LOCAL_SIGNAL_ROUTES"
phaseIndex={18}
autorouter="default"
/>
{Array.from({ length: ANALOG_ROUTE_PHASE_COUNT }, (_, index) => (
<Fragment key={`ANALOG_1V8_LINK_${index + 1}`}>
<autoroutingphase
name={`ANALOG_1V8_LINK_${index + 1}`}
phaseIndex={getAnalogRoutePhase(index)}
autorouter="default"
region={ANALOG_ROUTE_REGION}
/>
</Fragment>
))}
<autoroutingphase
name="ANALOG_1V8_LOCAL_NET"
phaseIndex={17.3}
autorouter="default"
region={ANALOG_ROUTE_REGION}
/>
<autoroutingphase
name="HDMI_LOCAL_POWER_ROUTES"
phaseIndex={20}
autorouter="default"
/>
<autoroutingphase
name="MICROSD_SIGNAL_ROUTES"
phaseIndex={21}
autorouter="default"
region={{
shape: "rect",
minX: 18.5,
maxX: 21.2,
minY: 2.7,
maxY: 10.2,
}}
/>
<autoroutingphase
name="PMIC_BUCK1_POWER_ROUTES"
phaseIndex={22}
autorouter="default"
region={{ shape: "rect", minX: 8, maxX: 22.5, minY: 16.9, maxY: 21.5 }}
/>
<autoroutingphase
name="PMIC_BUCK2_BUCK3_POWER_ROUTES"
phaseIndex={22.05}
autorouter="default"
region={{ shape: "rect", minX: -1, maxX: 21, minY: 13, maxY: 21 }}
/>
<autoroutingphase
name="VDD_IO_1V8_ROUTES"
phaseIndex={23}
autorouter="default"
region={{ shape: "rect", minX: -13, maxX: 22, minY: -14, maxY: 22 }}
/>
{Array.from({ length: PMIC_INPUT_ROUTE_PHASE_COUNT }, (_, index) => (
<Fragment key={`PMIC_INPUT_ROUTE_${index + 1}`}>
<autoroutingphase
name={`PMIC_INPUT_ROUTE_${index + 1}`}
phaseIndex={getPmicInputRoutePhase(index)}
autorouter="default"
region={{
shape: "rect",
minX: 6,
maxX: 13.5,
minY: 12.5,
maxY: 26,
}}
/>
</Fragment>
))}
<autoroutingphase
name="PMIC_VDD_SD_LOCAL_ROUTE"
phaseIndex={21.4}
autorouter="default"
region={{ shape: "rect", minX: 10.5, maxX: 15, minY: 20, maxY: 23.5 }}
/>
<autoroutingphase
name="PMIC_LDO2_LOCAL_ROUTE"
phaseIndex={PMIC_LDO2_ROUTE_PHASES.LOCAL}
autorouter="default"
region={{ shape: "rect", minX: 4.5, maxX: 7.5, minY: 19.5, maxY: 24.5 }}
/>
<autoroutingphase
name="PMIC_LDO2_ISOLATION_ROUTE"
phaseIndex={PMIC_LDO2_ROUTE_PHASES.ISOLATION}
autorouter="default"
region={{ shape: "rect", minX: 4.5, maxX: 6.5, minY: 16.3, maxY: 24.5 }}
/>
<autoroutingphase
name="PMIC_LDO2_FEED_ROUTE"
phaseIndex={PMIC_LDO2_ROUTE_PHASES.FEED}
autorouter="default"
region={{ shape: "rect", minX: 4.5, maxX: 18.5, minY: 14.5, maxY: 17.5 }}
/>
<autoroutingphase
name="PMIC_LDO34_LOCAL_ROUTE"
phaseIndex={24.03}
autorouter="default"
region={{ shape: "rect", minX: 4, maxX: 7.5, minY: 18.5, maxY: 23 }}
/>
<autoroutingphase
name="PMIC_LDO34_FEED_ROUTE"
phaseIndex={24.04}
autorouter="default"
region={{ shape: "rect", minX: 1.5, maxX: 6.5, minY: 20.5, maxY: 24.5 }}
/>
<autoroutingphase
name="PMIC_VLDO4_LOCAL_ROUTE"
phaseIndex={24.05}
autorouter="default"
region={{ shape: "rect", minX: 3.5, maxX: 7.5, minY: 17.5, maxY: 19.5 }}
/>
<autoroutingphase
name="PMIC_ENABLE_ROUTE"
phaseIndex={24.1}
autorouter="default"
region={{ shape: "rect", minX: 5, maxX: 12, minY: 13.5, maxY: 20 }}
/>
<autoroutingphase
name="PMIC_VSEL_ROUTE"
phaseIndex={24.11}
autorouter="default"
region={{ shape: "rect", minX: 4.5, maxX: 12, minY: 17, maxY: 27.5 }}
/>
<autoroutingphase
name="PMIC_SDA_LOCAL_ROUTE"
phaseIndex={22.2}
autorouter="default"
region={{ shape: "rect", minX: 6.5, maxX: 14, minY: 11.5, maxY: 25.5 }}
/>
<autoroutingphase
name="PMIC_SCL_LOCAL_ROUTE"
phaseIndex={22.3}
autorouter="default"
region={{ shape: "rect", minX: 8, maxX: 18.5, minY: 11.5, maxY: 26 }}
/>
<autoroutingphase
name="PMIC_PULLUP_SUPPLY_ROUTES"
phaseIndex={24.4}
autorouter="default"
region={{ shape: "rect", minX: 12.5, maxX: 18.5, minY: 15, maxY: 26 }}
/>
<autoroutingphase
name="HDMI_POWER_FEEDS"
phaseIndex={24.5}
autorouter="default"
region={{
shape: "rect",
minX: -18,
maxX: 20,
minY: 12,
maxY: 29,
}}
/>
<autoroutingphase
name="MICROSD_CMD_ROUTES"
phaseIndex={25}
autorouter="default"
region={{
shape: "rect",
minX: 10.8,
maxX: 24.1,
minY: 10.9,
maxY: 23.1,
}}
/>
<autoroutingphase
name="MICROSD_GROUND_LINK"
phaseIndex={25.1}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ inner1: ["GND"] }}
region={{
shape: "rect",
minX: 15.5,
maxX: 16.9,
minY: -14.7,
maxY: -13.3,
}}
/>
<autoroutingphase
name="POWER_INPUT_GROUND_LINK"
phaseIndex={26.1}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ inner1: ["GND"] }}
/>
<autoroutingphase
name="UART0_RX_ESCAPE"
phaseIndex={UART0_ESCAPE_PHASE.RX}
autorouter="default"
region={{ shape: "rect", minX: 18.5, maxX: 23, minY: 4.5, maxY: 7.5 }}
/>
<autoroutingphase
name="UART0_TX_ESCAPE"
phaseIndex={UART0_ESCAPE_PHASE.TX}
autorouter="default"
region={{ shape: "rect", minX: 18.5, maxX: 23.5, minY: 4.5, maxY: 7.5 }}
/>
<autoroutingphase
name="UART0_HEADER_GROUND_DROP"
phaseIndex={UART0_HEADER_GROUND_PHASE}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ inner1: ["GND"] }}
region={{ shape: "rect", minX: 46, maxX: 54, minY: 27.5, maxY: 30.5 }}
/>
<autoroutingphase
name="UART0_RX_ROUTE"
phaseIndex={UART0_ROUTE_PHASE.RX}
autorouter="default"
region={{ shape: "rect", minX: 20.5, maxX: 54, minY: 5, maxY: 31 }}
/>
<autoroutingphase
name="UART0_TX_ROUTE"
phaseIndex={UART0_ROUTE_PHASE.TX}
autorouter="default"
region={{ shape: "rect", minX: 20.5, maxX: 54, minY: 5, maxY: 31 }}
/>
<autoroutingphase
name="USB0_DATA_ESCAPE"
phaseIndex={USB0_ESCAPE_PHASE}
autorouter="default"
region={{ shape: "rect", minX: -3, maxX: 8, minY: -16, maxY: -9 }}
/>
<autoroutingphase
name="USB0_ANALOG_SOC_LINKS"
phaseIndex={USB0_ANALOG_PHASE.SOC_LINKS}
autorouter="default"
region={{ shape: "rect", minX: 0, maxX: 15.5, minY: -21, maxY: -9 }}
/>
<autoroutingphase
name="USB0_ESD_SOC_DATA_PHASE"
phaseIndex={USB0_CONNECTOR_PHASE.DATA_TO_ESD}
autorouter="default"
region={{ shape: "rect", minX: 2.5, maxX: 4.5, minY: -18, maxY: -14 }}
/>
<autoroutingphase
name="USB0_ESD_CONNECTOR_DATA_PHASE"
phaseIndex={USB0_CONNECTOR_PHASE.DATA_TO_CONNECTOR}
autorouter="default"
region={{ shape: "rect", minX: 7, maxX: 10, minY: -19, maxY: -15.5 }}
/>
<autoroutingphase
name="USB0_ESD_GROUND_DROP"
phaseIndex={USB0_CONNECTOR_PHASE.ESD_GROUND}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ inner1: ["GND"] }}
region={{ shape: "rect", minX: 5.5, maxX: 6.5, minY: -18.6, maxY: -17.6 }}
/>
<autoroutingphase
name="USB0_CONNECTOR_GROUND_DROP"
phaseIndex={USB0_CONNECTOR_PHASE.GND}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ inner1: ["GND"] }}
region={{ shape: "rect", minX: 2.5, maxX: 4.5, minY: -19, maxY: -17 }}
/>
<autoroutingphase
name="USB0_ANALOG_CONNECTOR_VBUS"
phaseIndex={USB0_ANALOG_PHASE.CONNECTOR_VBUS}
autorouter="default"
region={{ shape: "rect", minX: 10.5, maxX: 15, minY: -19, maxY: -17 }}
/>
<autoroutingphase
name="USB0_ANALOG_GROUND_DROP"
phaseIndex={USB0_ANALOG_PHASE.GROUND}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ inner1: ["GND"] }}
region={{ shape: "rect", minX: 27.5, maxX: 29, minY: -21, maxY: -19 }}
/>
<autoroutingphase
name="POWER_INPUT_VSYS_FEED"
phaseIndex={POWER_INPUT_VSYS_ROUTE_PHASE}
autorouter="default"
region={{
shape: "rect",
minX: 14.99,
maxX: 23,
minY: -34.7,
maxY: 30,
}}
/>
<autoroutingphase
name="HDMI_CONNECTOR_GROUND_ROUTES_A"
phaseIndex={20.1}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ inner1: ["GND"] }}
/>
<autoroutingphase
name="HDMI_CONNECTOR_GROUND_ROUTES_B"
phaseIndex={20.2}
autorouter="fanout"
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{ inner1: ["GND"] }}
/>
<autoroutingphase
name="HDMI_TMDS_SOURCE_CLOCK_PAIR"
phaseIndex={20.32}
autorouter="default"
/>
<autoroutingphase
name="HDMI_TMDS_SOURCE_DATA2_PAIR"
phaseIndex={20.33}
autorouter="default"
/>
<autoroutingphase
name="HDMI_TMDS_SOURCE_DATA1_PAIR"
phaseIndex={20.3}
autorouter="default"
/>
<autoroutingphase
name="HDMI_TMDS_SOURCE_DATA0_PAIR"
phaseIndex={20.31}
autorouter="default"
/>
<autoroutingphase
name="HDMI_TMDS_CONNECTOR_ROUTES"
phaseIndex={20.4}
autorouter="default"
/>
<autoroutingphase
name="HDMI_DVDD_SUPPLY_NET"
phaseIndex={20.5}
autorouter="default"
/>
<autoroutingphase
name="DDR_STRAP_ROUTES"
phaseIndex={27}
autorouter="default"
region={{ shape: "rect", minX: -21, maxX: -10, minY: -8, maxY: 8 }}
/>
<autoroutingphase
name="MCU_OSC0_ROUTES"
phaseIndex={16.9}
autorouter="default"
region={{ shape: "rect", minX: -12, maxX: -3.3, minY: 9, maxY: 22 }}
/>
<autoroutingphase
name="PMIC_CONTROL_ROUTES"
phaseIndex={29}
autorouter="default"
region={{ shape: "rect", minX: 4.5, maxX: 13, minY: 9, maxY: 13.5 }}
/>
<autoroutingphase
name="PMIC_RESET_SIGNAL_ROUTE"
phaseIndex={PMIC_RESET_ROUTE_PHASE.SIGNAL}
autorouter="default"
region={{ shape: "rect", minX: -4.5, maxX: 8, minY: 9, maxY: 14.5 }}
/>
<autoroutingphase
name="PMIC_RESET_PULLUP_SIGNAL_ROUTE"
phaseIndex={PMIC_RESET_ROUTE_PHASE.PULLUP_SIGNAL}
autorouter="default"
region={{ shape: "rect", minX: 4, maxX: 8, minY: 12, maxY: 22.5 }}
/>
<autoroutingphase
name="PMIC_RESET_PULLUP_SUPPLY_ROUTE"
phaseIndex={PMIC_RESET_ROUTE_PHASE.PULLUP_SUPPLY}
autorouter="default"
region={{ shape: "rect", minX: 4, maxX: 19, minY: 11, maxY: 17 }}
/>
<autoroutingphase
name="PMIC_LPM_SIGNAL_ROUTE"
phaseIndex={PMIC_LPM_ROUTE_PHASE.SIGNAL}
autorouter="default"
region={{ shape: "rect", minX: -2, maxX: 14.5, minY: 9.7, maxY: 18.5 }}
/>
<autoroutingphase
name="PMIC_LPM_PMIC_LINK_ROUTE"
phaseIndex={PMIC_LPM_ROUTE_PHASE.PMIC_LINK}
autorouter="default"
region={{ shape: "rect", minX: 9.5, maxX: 14.5, minY: 15.5, maxY: 18.5 }}
/>
<autoroutingphase
name="PMIC_LPM_PULLUP_SUPPLY_ROUTE"
phaseIndex={PMIC_LPM_ROUTE_PHASE.PULLUP_SUPPLY}
autorouter="default"
region={{ shape: "rect", minX: 9.5, maxX: 18.5, minY: 14.5, maxY: 18 }}
/>
<autoroutingphase
name="PMIC_INTERRUPT_SIGNAL_ROUTE"
phaseIndex={PMIC_INTERRUPT_ROUTE_PHASE.SIGNAL}
autorouter="default"
region={{ shape: "rect", minX: -2, maxX: 14.5, minY: 8.8, maxY: 25 }}
/>
<autoroutingphase
name="PMIC_INTERRUPT_PMIC_LINK_ROUTE"
phaseIndex={PMIC_INTERRUPT_ROUTE_PHASE.PMIC_LINK}
autorouter="default"
region={{ shape: "rect", minX: 9, maxX: 12.5, minY: 21.5, maxY: 25 }}
/>
<autoroutingphase
name="PMIC_INTERRUPT_PULLUP_SUPPLY_ROUTE"
phaseIndex={PMIC_INTERRUPT_ROUTE_PHASE.PULLUP_SUPPLY}
autorouter="default"
region={{ shape: "rect", minX: 10.5, maxX: 14.5, minY: 23.5, maxY: 25.5 }}
/>
<autoroutingphase
name="VOUT_PCLK_ROUTE"
phaseIndex={VOUT_ROUTE_PHASE.PCLK}
autorouter="default"
region={{ shape: "rect", minX: -18, maxX: 13, minY: -14.5, maxY: -11.5 }}
/>
<autoroutingphase
name="VOUT_DE_ROUTE"
phaseIndex={VOUT_ROUTE_PHASE.DE}
autorouter="default"
region={{ shape: "rect", minX: -18, maxX: 13, minY: -14.5, maxY: -10 }}
/>
<autoroutingphase
name="VOUT_HSYNC_ROUTE"
phaseIndex={VOUT_ROUTE_PHASE.HSYNC}
autorouter="default"
region={{ shape: "rect", minX: -18, maxX: 13, minY: -21, maxY: 7.5 }}
/>
<autoroutingphase
name="VOUT_VSYNC_LOCAL_LINK"
phaseIndex={VOUT_ROUTE_PHASE.VSYNC_LOCAL}
autorouter="default"
region={{ shape: "rect", minX: -27, maxX: -16, minY: 4.5, maxY: 8.5 }}
/>
<autoroutingphase
name="VOUT_VSYNC_ROUTE"
phaseIndex={VOUT_ROUTE_PHASE.VSYNC}
autorouter="default"
region={{ shape: "rect", minX: -18, maxX: 13, minY: -21, maxY: 8.5 }}
/>
<breakout
name="SOC_FANOUT"
pcbX={0}
pcbY={0}
width="26mm"
height="30mm"
autorouter={{
preset: "fanout",
algorithmFn: createCachedSocFanoutAutorouter,
}}
fanoutRoutingLayers={[...SIGNAL_LAYERS]}
fanoutPourNetMap={{
inner1: ["GND"],
inner2: ["VDD_CORE_0V85"],
bottom: ["VDD_DDR_1V1"],
}}
busFanoutDirections={ACTIVE_BUS_DIRECTIONS}
>
<Am625Sip name="U1" noSchematicRepresentation />
{ACTIVE_BREAKOUT_BUSES.map(({ name, points }) => (
<Fragment key={name}>
{points.map(({ ball, pcbX, pcbY }) => (
<Fragment key={`${name}-${ball}`}>
<breakoutpoint
connection={`.U1 > .${ball}`}
pcbX={pcbX}
pcbY={pcbY}
/>
</Fragment>
))}
</Fragment>
))}
{SOC_GROUND_BALLS.map((ball) => (
<Fragment key={`SOC_GND_${ball}`}>
<trace from={`.U1 > .${ball}`} to="net.GND" width="0.2mm" />
</Fragment>
))}
{SOC_CORE_BALLS.map((ball) => (
<Fragment key={`SOC_CORE_${ball}`}>
<trace
from={`.U1 > .${ball}`}
to="net.VDD_CORE_0V85"
width="0.2mm"
/>
</Fragment>
))}
{SOC_DDR_1P1_BALLS.map((ball) => (
<Fragment key={`SOC_DDR_1P1_${ball}`}>
<trace
from={`.U1 > .${ball}`}
to="net.VDD_DDR_1V1"
width="0.2mm"
/>
</Fragment>
))}
{SOC_IO_1P8_BUSES.flatMap(({ points }) => points).map(({ ball }) => (
<Fragment key={`SOC_IO_1P8_${ball}`}>
<trace
name={`SOC_IO_1P8_${ball}`}
from={`.U1 > .${ball}`}
to="net.VDD_IO_1V8"
width="0.2mm"
/>
</Fragment>
))}
{SOC_ANALOG_1P8_BUSES.flatMap(({ points }) => points).map(({ ball }, index) => (
<Fragment key={`SOC_ANALOG_1P8_${ball}`}>
<trace
name={`SOC_ANALOG_1P8_${ball}`}
from={`.U1 > .${ball}`}
to="net.VDDA_1V8"
width="0.2mm"
routingPhaseIndex={getAnalogRoutePhase(index)}
/>
</Fragment>
))}
</breakout>
<net name="GND" routingPhaseIndex={1} />
{SOC_IO_1P8_FANOUT_BUSES.map(
({ name, balls, preferredLayers }) => (
<Fragment key={name}>
<bus
name={name}
connections={balls.map((ball) => `SOC_IO_1P8_${ball}`)}
preferredLayers={[...preferredLayers]}
/>
</Fragment>
),
)}
{SOC_ANALOG_1P8_PINNED_FANOUT_BUSES.map(
({ name, balls, preferredLayers }) => (
<Fragment key={name}>
<bus
name={name}
connections={balls.map((ball) => `SOC_ANALOG_1P8_${ball}`)}
preferredLayers={[...preferredLayers]}
/>
</Fragment>
),
)}
<copperpour
name="GND_PLANE"
layer="inner1"
connectsTo="net.GND"
clearance="0.15mm"
boardEdgeMargin="0.3mm"
/>
<copperpour
name="VDD_CORE_PLANE"
layer="inner2"
connectsTo="net.VDD_CORE_0V85"
clearance="0.15mm"
boardEdgeMargin="0.3mm"
/>
<copperpour
name="VDD_DDR_1P1_PLANE"
layer="bottom"
connectsTo="net.VDD_DDR_1V1"
clearance="0.15mm"
boardEdgeMargin="0.3mm"
/>
<capacitor
name="C24"
capacitance="10uF"
maxVoltageRating="6.3V"
footprint="0603"
supplierPartNumbers={{ jlcpcb: ["C19702"] }}
pcbX={-8.5}
pcbY={-5}
pcbRotation={270}
/>
<capacitor
name="C25"
capacitance="4.7uF"
maxVoltageRating="10V"
footprint="0402"
supplierPartNumbers={{ jlcpcb: ["C23733"] }}
pcbX={-8.5}
pcbY={-0.5}
pcbRotation={90}
/>
<capacitor
name="C26"
capacitance="1uF"
maxVoltageRating="10V"
footprint="0402"
supplierPartNumbers={{ jlcpcb: ["C52923"] }}
pcbX={-8.5}
pcbY={2}
pcbRotation={90}
/>
{["C24", "C25", "C26"].map((name) => (
<Fragment key={`${name}-soc-core-bulk`}>
<trace
from={`.${name} > .pin1`}
to="net.VDD_CORE_0V85"
width="0.2mm"
routingPhaseIndex={3}
/>
<trace
from={`.${name} > .pin2`}
to="net.GND"
width="0.2mm"
routingPhaseIndex={3}
/>
</Fragment>
))}
{[
{ name: "C27", x: -6 },
{ name: "C28", x: -4 },
{ name: "C29", x: -2 },
{ name: "C30", x: 2 },
{ name: "C31", x: 4 },
{ name: "C32", x: 7.5 },
].map(({ name, x }) => (
<Fragment key={`${name}-soc-core-hf`}>
<capacitor
name={name}
capacitance="100nF"
maxVoltageRating="10V"
footprint="0201"
supplierPartNumbers={{ jlcpcb: ["C1525"] }}
pcbX={x}
pcbY={-7}
/>
<trace
from={`.${name} > .pin1`}
to="net.VDD_CORE_0V85"
routingPhaseIndex={3}
/>
<trace
from={`.${name} > .pin2`}
to="net.GND"
routingPhaseIndex={3}
/>
</Fragment>
))}
<capacitor
name="C33"
capacitance="10uF"
maxVoltageRating="6.3V"
footprint="0603"
supplierPartNumbers={{ jlcpcb: ["C19702"] }}
pcbX={14.5}
pcbY={-3}
pcbRotation={90}
/>
<capacitor
name="C34"
capacitance="4.7uF"
maxVoltageRating="10V"
footprint="0402"
supplierPartNumbers={{ jlcpcb: ["C23733"] }}
pcbX={14.5}
pcbY={-5.8}
pcbRotation={90}
/>
<capacitor
name="C35"
capacitance="1uF"
maxVoltageRating="10V"
footprint="0402"
supplierPartNumbers={{ jlcpcb: ["C52923"] }}
pcbX={14.5}
pcbY={-10.5}
pcbRotation={90}
/>
{[
{ name: "C33", phase: 6 },
{ name: "C34", phase: 7 },
{ name: "C35", phase: 8 },
].map(({ name, phase }) => (
<Fragment key={`${name}-soc-ddr-bulk`}>
<trace
from={`.${name} > .pin1`}
to="net.VDD_DDR_1V1"
width="0.2mm"
routingPhaseIndex={phase}
/>
<trace
from={`.${name} > .pin2`}
to="net.GND"
width="0.2mm"
routingPhaseIndex={phase}
/>
</Fragment>
))}
{[
{ name: "C36", x: -7, phase: 5 },
{ name: "C37", x: -4, phase: 5 },
{ name: "C38", x: -2, phase: 5 },
{ name: "C39", x: 2, phase: 9 },
{ name: "C40", x: 4, phase: 9 },
{ name: "C41", x: 6, phase: 9 },
].map(({ name, x, phase }) => (
<Fragment key={`${name}-soc-ddr-hf`}>
<capacitor
name={name}
capacitance="100nF"
maxVoltageRating="10V"
footprint="0201"
supplierPartNumbers={{ jlcpcb: ["C1525"] }}
pcbX={x}
pcbY={-9}
/>
<trace
from={`.${name} > .pin1`}
to="net.VDD_DDR_1V1"
routingPhaseIndex={phase}
/>
<trace
from={`.${name} > .pin2`}
to="net.GND"
routingPhaseIndex={phase}
/>
</Fragment>
))}
<capacitor
name="C42"
capacitance="4.7uF"
maxVoltageRating="10V"
footprint="0402"
supplierPartNumbers={{ jlcpcb: ["C23733"] }}
pcbX={10}
pcbY={-17}
/>
<capacitor
name="C43"
capacitance="1uF"
maxVoltageRating="10V"
footprint="0402"
supplierPartNumbers={{ jlcpcb: ["C52923"] }}
pcbX={13}
pcbY={-17}
/>
{[
{ name: "C42", groundPhase: 12, supplyPhase: 17.22 },
{ name: "C43", groundPhase: 12.1, supplyPhase: 17.23 },
].map(({ name, groundPhase, supplyPhase }) => (
<Fragment key={`${name}-soc-analog-bulk`}>
<trace
from={`.${name} > .pin1`}
to="net.VDDA_1V8"
width="0.2mm"
routingPhaseIndex={supplyPhase}
/>
<trace
from={`.${name} > .pin2`}
to="net.GND"
routingPhaseIndex={groundPhase}
/>
</Fragment>
))}
{CAP_VDDS_BREAKOUT_BUSES.map(({ name, points, preferredLayers }) => (
<Fragment key={`${name}-fanout-bus`}>
<bus
name={name}
connections={points.map(({ ball }) => `CAP_VDDS_${ball}`)}
preferredLayers={preferredLayers}
/>
</Fragment>
))}
<subcircuit
name="CAP_VDDS_CACHE"
circuitJson={capVddsCircuitJson}
pcbX={0}
pcbY={0}
exposedNets={["GND"]}
/>
{CAP_VDDS_LINKS.map(({ ball }, index) => (
<Fragment key={`CAP_VDDS_${ball}`}>
<trace
name={`CAP_VDDS_${ball}`}
from={`.U1 > .${ball}`}
to={`.CAP_VDDS_CACHE .CAP_VDDS .X_${ball} > .pin1`}
routingPhaseIndex={getAnalogRoutePhase(10 + index)}
maxLength={ball === "U7" || ball === "W17" ? "14mm" : "12mm"}
/>
</Fragment>
))}
<resistor
name="R7"
resistance="10k"
footprint="0201"
supplierPartNumbers={{ jlcpcb: ["C473048"] }}
pcbX={-19}
pcbY={6}
/>
<resistor
name="R8"
resistance="240"
footprint="0201"
pcbX={-19}
pcbY={-3}
pcbRotation={90}
/>
<resistor
name="R9"
resistance="240"
footprint="0201"
pcbX={-18}
pcbY={-6}
/>
<bus
name="DDR_STRAPS"
connections={["DDR0_RESET0_N", "DDR0_CAL0", "DDR_ZQ"]}
preferredLayers={DDR_STRAPS_BUS.preferredLayers}
routingPhaseIndex={27}
/>
<trace
name="DDR0_RESET0_N"
from=".U1 > .G1"
to=".R7 > .pin1"
routingPhaseIndex={27}
/>
<trace
name="DDR0_CAL0"
from=".U1 > .M2"
to=".R8 > .pin1"
routingPhaseIndex={27}
/>
<trace
name="DDR_ZQ"
from=".U1 > .R3"
to=".R9 > .pin1"
routingPhaseIndex={27}
/>
<trace from=".R7 > .pin2" to="net.GND" routingPhaseIndex={10} />
<trace from=".R8 > .pin2" to="net.GND" routingPhaseIndex={10} />
<trace
from=".R9 > .pin2"
to="net.VDD_DDR_1V1"
routingPhaseIndex={11}
/>
<X322525MOB4SI name="Y1" pcbX={-8} pcbY={20} />
<capacitor
name="C1"
capacitance="22pF"
maxVoltageRating="25V"
footprint="0201"
pcbX={-11.3}
pcbY={19.15}
pcbRotation={180}
/>
<capacitor
name="C2"
capacitance="22pF"
maxVoltageRating="25V"
footprint="0201"
pcbX={-4.9}
pcbY={20.85}
/>
<bus
name="MCU_OSC0"
connections={["MCU_OSC0_B2", "MCU_OSC0_A3"]}
preferredLayers={MCU_OSC0_BUS.preferredLayers}
routingPhaseIndex={16.9}
/>
<trace
name="MCU_OSC0_B2"
from=".U1 > .B2"
to=".Y1 > .OSC1"
routingPhaseIndex={16.9}
/>
<trace
name="MCU_OSC0_A3"
from=".U1 > .A3"
to=".Y1 > .OSC2"
routingPhaseIndex={16.9}
/>
<trace
from=".Y1 > .OSC1"
to=".C1 > .pin1"
routingPhaseIndex={16.9}
/>
<trace
from=".Y1 > .OSC2"
to=".C2 > .pin1"
routingPhaseIndex={16.9}
/>
<trace from=".Y1 > .GND1" to="net.GND" routingPhaseIndex={0} />
<trace from=".Y1 > .GND2" to="net.GND" routingPhaseIndex={0} />
<trace from=".C1 > .pin2" to="net.GND" routingPhaseIndex={0} />
<trace from=".C2 > .pin2" to="net.GND" routingPhaseIndex={0} />
<bus
name="MMC1_MICROSD"
connections={MMC1_BOOT_CONNECTIONS.map(
({ ball }) => `MMC1_ESCAPE_${ball}`,
)}
preferredLayers={MMC1_BOOT_BUS.preferredLayers}
routingPhaseIndex={21}
/>
{MMC1_BOOT_CONNECTIONS.map(({ ball, pin }) => (
<trace
key={`MMC1_MICROSD-${ball}`}
name={`MMC1_ESCAPE_${ball}`}
from={`.U1 > .${ball}`}
to={`.MICROSD .X_SOC_${pin} > .pin1`}
routingPhaseIndex={21}
/>
))}
<subcircuit
name="MICROSD"
circuitJson={microSdCircuitJson}
pcbX={30.2}
pcbY={0}
schTraceAutoLabelEnabled
/>
<trace
name="MICROSD_VDD_LINK"
from=".MICROSD .X_VDD > .pin1"
to=".C8 > .pin1"
width="0.2mm"
routingPhaseIndex={25}
/>
<trace
name="MICROSD_GND_LINK"
from=".MICROSD .X_GND > .pin1"
to="net.GND"
width="0.3mm"
routingPhaseIndex={25.1}
/>
<bus
name="PMIC_CONTROL"
connections={["PMIC_SDA", "PMIC_SCL"]}
preferredLayers={PMIC_RUNTIME_BUS.preferredLayers}
routingPhaseIndex={29}
/>
<bus
name="PMIC_RESET_SOC_BUS"
connections={["PMIC_RESET_SOC_LINK"]}
preferredLayers={["inner2"]}
routingPhaseIndex={PMIC_RESET_ROUTE_PHASE.SIGNAL}
/>
<trace
name="PMIC_RESET_SOC_LINK"
from=".U1 > .D2"
to=".R16 > .pin1"
routingPhaseIndex={PMIC_RESET_ROUTE_PHASE.SIGNAL}
/>
<trace
name="PMIC_SDA"
from=".R11 > .pin2"
to=".U1 > .A16"
routingPhaseIndex={29}
/>
<trace
name="PMIC_SCL"
from=".R12 > .pin2"
to=".U1 > .B16"
routingPhaseIndex={29}
/>
<net name="VDD_CORE_0V85" routingPhaseIndex={3} />
<net name="VDD_IO_1V8" routingPhaseIndex={23} />
<net name="VDD_DDR_1V1" routingPhaseIndex={4} />
<net name="VDDA_1V8" routingPhaseIndex={17.3} />
<bus
name="VOUT_CONTROL_FAST"
connections={ACTIVE_VOUT_CONTROL_CONNECTIONS.slice(0, 2).map(
({ name }) => name,
)}
preferredLayers={VOUT_CONTROL_FAST_BUS.preferredLayers}
/>
<bus
name="VOUT_HSYNC_ESCAPE"
connections={ACTIVE_VOUT_CONTROL_CONNECTIONS.slice(2).map(
({ name }) => name,
)}
preferredLayers={VOUT_HSYNC_ESCAPE_BUS.preferredLayers}
/>
{ACTIVE_VOUT_CONTROL_CONNECTIONS.map(({ name, ball, routingPhase }) => (
<trace
key={name}
name={name}
from={`.U1 > .${ball}`}
to={
name === "VOUT0_VSYNC"
? ".HDMI_VSYNC_BOUNDARY > .pin1"
: `.HDMI_CACHE .HDMI .X_${name} > .pin1`
}
routingPhaseIndex={routingPhase}
/>
))}
<subcircuit
name="HDMI_CACHE"
circuitJson={hdmiCircuitJson}
pcbX={0}
pcbY={0}
/>
<subcircuit
name="PMIC_CACHE"
circuitJson={pmicVsysCircuitJson}
pcbX={0}
pcbY={0}
/>
<resistor
name="R16"
resistance="10k"
footprint="0201"
supplierPartNumbers={{ jlcpcb: ["C473048"] }}
pcbX={5.5}
pcbY={13}
/>
<bus
name="PMIC_RESET_PMIC_BUS"
connections={["PMIC_RESET_PMIC_LINK"]}
preferredLayers={["bottom"]}
routingPhaseIndex={PMIC_RESET_ROUTE_PHASE.PULLUP_SIGNAL}
/>
<trace
name="PMIC_RESET_PMIC_LINK"
from=".R16 > .pin1"
to=".U2 > .nRSTOUT"
routingPhaseIndex={PMIC_RESET_ROUTE_PHASE.PULLUP_SIGNAL}
/>
<bus
name="PMIC_RESET_PULLUP_SUPPLY_BUS"
connections={["PMIC_RESET_PULLUP_SUPPLY"]}
preferredLayers={["bottom"]}
routingPhaseIndex={PMIC_RESET_ROUTE_PHASE.PULLUP_SUPPLY}
/>
<trace
name="PMIC_RESET_PULLUP_SUPPLY"
from=".R16 > .pin2"
to=".C13 > .pin1"
routingPhaseIndex={PMIC_RESET_ROUTE_PHASE.PULLUP_SUPPLY}
/>
<resistor
name="R17"
resistance="10k"
footprint="0201"
supplierPartNumbers={{ jlcpcb: ["C473048"] }}
pcbX={13.8}
pcbY={16.35}
/>
<bus
name="PMIC_LPM_SOC_BUS"
connections={["PMIC_LPM_SOC_LINK"]}
preferredLayers={["inner2"]}
routingPhaseIndex={PMIC_LPM_ROUTE_PHASE.SIGNAL}
/>
<trace
name="PMIC_LPM_SOC_LINK"
from=".U1 > .B7"
to=".R17 > .pin1"
routingPhaseIndex={PMIC_LPM_ROUTE_PHASE.SIGNAL}
/>
<bus
name="PMIC_LPM_PMIC_BUS"
connections={["PMIC_LPM_PMIC_LINK"]}
preferredLayers={["top"]}
routingPhaseIndex={PMIC_LPM_ROUTE_PHASE.PMIC_LINK}
/>
<trace
name="PMIC_LPM_PMIC_LINK"
from=".R17 > .pin1"
to=".U2 > .MODE_STBY"
routingPhaseIndex={PMIC_LPM_ROUTE_PHASE.PMIC_LINK}
/>
<bus
name="PMIC_LPM_PULLUP_SUPPLY_BUS"
connections={["PMIC_LPM_PULLUP_SUPPLY"]}
preferredLayers={["top"]}
routingPhaseIndex={PMIC_LPM_ROUTE_PHASE.PULLUP_SUPPLY}
/>
<trace
name="PMIC_LPM_PULLUP_SUPPLY"
from=".R17 > .pin2"
to=".C13 > .pin1"
routingPhaseIndex={PMIC_LPM_ROUTE_PHASE.PULLUP_SUPPLY}
/>
<resistor
name="R18"
resistance="10k"
footprint="0201"
supplierPartNumbers={{ jlcpcb: ["C473048"] }}
pcbX={11.5}
pcbY={24.5}
/>
<bus
name="PMIC_INTERRUPT_SOC_BUS"
connections={["PMIC_INTERRUPT_SOC_LINK"]}
preferredLayers={["inner2"]}
routingPhaseIndex={PMIC_INTERRUPT_ROUTE_PHASE.SIGNAL}
/>
<trace
name="PMIC_INTERRUPT_SOC_LINK"
from=".U1 > .D16"
to=".U2 > .nINT"
routingPhaseIndex={PMIC_INTERRUPT_ROUTE_PHASE.SIGNAL}
/>
<bus
name="PMIC_INTERRUPT_PMIC_BUS"
connections={["PMIC_INTERRUPT_PMIC_LINK"]}
preferredLayers={["top"]}
routingPhaseIndex={PMIC_INTERRUPT_ROUTE_PHASE.PMIC_LINK}
/>
<trace
name="PMIC_INTERRUPT_PMIC_LINK"
from=".R18 > .pin1"
to=".U2 > .nINT"
routingPhaseIndex={PMIC_INTERRUPT_ROUTE_PHASE.PMIC_LINK}
/>
<bus
name="PMIC_INTERRUPT_PULLUP_SUPPLY_BUS"
connections={["PMIC_INTERRUPT_PULLUP_SUPPLY"]}
preferredLayers={["top"]}
routingPhaseIndex={PMIC_INTERRUPT_ROUTE_PHASE.PULLUP_SUPPLY}
/>
<trace
name="PMIC_INTERRUPT_PULLUP_SUPPLY"
from=".R18 > .pin2"
to=".R3 > .pin2"
routingPhaseIndex={PMIC_INTERRUPT_ROUTE_PHASE.PULLUP_SUPPLY}
/>
<resistor
name="R15"
resistance="0"
footprint="0201"
pcbX={5.3}
pcbY={16.9}
pcbRotation={90}
/>
<trace
name="PMIC_BUCK2_INPUT_CAP"
from=".U2 > .PVIN_B2"
to=".C4 > .pin1"
width="0.3mm"
routingPhaseIndex={getPmicInputRoutePhase(2)}
/>
<trace
name="PMIC_BUCK2_INPUT_LINK"
from=".C4 > .pin1"
to=".R13 > .pin1"
width="0.3mm"
routingPhaseIndex={getPmicInputRoutePhase(2)}
/>
<trace
from=".U2 > .PVIN_B3"
to=".C5 > .pin1"
width="0.3mm"
routingPhaseIndex={getPmicInputRoutePhase(4)}
/>
<trace
from=".U2 > .VDD1P8"
to=".C7 > .pin1"
routingPhaseIndex={getPmicInputRoutePhase(8)}
/>
<trace
name="PMIC_AGND_DROP"
from=".U2 > .AGND"
to="net.GND"
routingPhaseIndex={1}
/>
<trace
from=".U2 > .GND"
to=".U2 > .AGND"
width="0.5mm"
routingPhaseIndex={1.005}
/>
{[
{ name: "C3", phase: 1.01 },
{ name: "C4", phase: 1.011 },
{ name: "C5", phase: 1.012 },
].map(({ name, phase }) => (
<trace key={`${name}-gnd`} from={`.${name} > .pin2`} to="net.GND" routingPhaseIndex={phase} />
))}
<trace
from=".C6 > .pin2"
to="net.GND"
routingPhaseIndex={1.02}
/>
<trace
from=".C7 > .pin2"
to="net.GND"
routingPhaseIndex={1.02}
/>
<bus
name="PMIC_VDD_SD_LOCAL_BUS"
connections={["PMIC_VDD_SD_LOCAL"]}
routingPhaseIndex={21.4}
preferredLayer="top"
pcbAllowedLayers={["top"]}
/>
<trace
name="PMIC_VDD_SD_LOCAL"
from=".U2 > .VLDO1"
to=".C8 > .pin1"
width="0.2mm"
routingPhaseIndex={21.4}
/>
<trace from=".C8 > .pin2" to="net.GND" routingPhaseIndex={1.1} />
<trace
from=".U2 > .PVIN_LDO2"
to=".C9 > .pin1"
width="0.2mm"
routingPhaseIndex={PMIC_LDO2_ROUTE_PHASES.LOCAL}
/>
<trace
name="PMIC_LDO2_ISOLATION"
from=".C9 > .pin1"
to=".R15 > .pin1"
width="0.2mm"
routingPhaseIndex={PMIC_LDO2_ROUTE_PHASES.ISOLATION}
/>
<trace
name="PMIC_LDO2_FEED"
from=".R15 > .pin2"
to=".C13 > .pin1"
width="0.2mm"
routingPhaseIndex={PMIC_LDO2_ROUTE_PHASES.FEED}
/>
<trace
from=".C9 > .pin2"
to="net.GND"
routingPhaseIndex={1.1}
/>
<trace
from=".U2 > .PVIN_LDO34"
to=".C19 > .pin1"
width="0.3mm"
routingPhaseIndex={24.03}
/>
<trace
from=".C19 > .pin1"
to=".R14 > .pin1"
width="0.3mm"
routingPhaseIndex={24.04}
/>
<trace
from=".C19 > .pin2"
to="net.GND"
routingPhaseIndex={1.1}
/>
<trace
name="PMIC_VDDA_1V8_SOURCE"
from=".U2 > .VLDO3"
to=".C20 > .pin1"
width="0.2mm"
routingPhaseIndex={17.2}
/>
<trace
from=".C20 > .pin1"
to="net.VDDA_1V8"
width="0.2mm"
routingPhaseIndex={17.21}
/>
<trace
from=".C20 > .pin2"
to="net.GND"
routingPhaseIndex={1.1}
/>
<trace
from=".U2 > .VLDO4"
to=".C21 > .pin1"
width="0.2mm"
routingPhaseIndex={24.05}
/>
<trace
from=".C21 > .pin2"
to="net.GND"
routingPhaseIndex={1.1}
/>
<bus
name="PMIC_ENABLE_LOCAL_BUS"
connections={["PMIC_ENABLE_LOCAL"]}
routingPhaseIndex={24.1}
preferredLayer="top"
pcbAllowedLayers={["top"]}
/>
<trace
name="PMIC_ENABLE_LOCAL"
from=".U2 > .EN_PB_VSENSE"
to=".R1 > .pin1"
routingPhaseIndex={24.1}
/>
<bus
name="PMIC_VSEL_LOCAL_BUS"
connections={["PMIC_VSEL_LOCAL"]}
routingPhaseIndex={24.11}
preferredLayer="top"
pcbAllowedLayers={["top"]}
/>
<trace
name="PMIC_VSEL_LOCAL"
from=".U2 > .VSEL_SD_VSEL_DDR"
to=".R2 > .pin1"
routingPhaseIndex={24.11}
/>
<bus
name="PMIC_SDA_LOCAL_BUS"
connections={["PMIC_SDA_PULLUP", "PMIC_SDA_HANDOFF"]}
routingPhaseIndex={22.2}
preferredLayer="top"
pcbAllowedLayers={["top"]}
/>
<bus
name="PMIC_SCL_LOCAL_BUS"
connections={["PMIC_SCL_PULLUP", "PMIC_SCL_HANDOFF"]}
routingPhaseIndex={22.3}
preferredLayer="top"
pcbAllowedLayers={["top"]}
/>
<trace
name="PMIC_SDA_PULLUP"
from=".R3 > .pin1"
to=".U2 > .SDA"
routingPhaseIndex={22.2}
/>
<trace
from=".R3 > .pin2"
to=".C13 > .pin1"
routingPhaseIndex={24.4}
/>
<trace
name="PMIC_SCL_PULLUP"
from=".R4 > .pin1"
to=".U2 > .SCL"
routingPhaseIndex={22.3}
/>
<trace
from=".R4 > .pin2"
to=".C13 > .pin1"
routingPhaseIndex={24.4}
/>
<trace
name="PMIC_SDA_HANDOFF"
from=".U2 > .SDA"
to=".R11 > .pin1"
routingPhaseIndex={22.2}
/>
<trace
name="PMIC_SCL_HANDOFF"
from=".U2 > .SCL"
to=".R12 > .pin1"
routingPhaseIndex={22.3}
/>
<trace
from=".U2 > .LX_B1_1"
to=".L1 > .pin1"
width="0.3mm"
routingPhaseIndex={22}
/>
<trace
from=".U2 > .LX_B1_2"
to=".L1 > .pin1"
width="0.3mm"
routingPhaseIndex={22}
/>
<trace
from=".L1 > .pin2"
to=".C10 > .pin1"
width="0.3mm"
routingPhaseIndex={22}
/>
<trace
from=".U2 > .FB_B1"
to=".C10 > .pin1"
routingPhaseIndex={22}
/>
<trace
from=".C11 > .pin1"
to=".C10 > .pin1"
width="0.3mm"
routingPhaseIndex={22}
/>
<trace
from=".C12 > .pin1"
to=".C10 > .pin1"
width="0.3mm"
routingPhaseIndex={22}
/>
<trace
from=".C10 > .pin1"
to="net.VDD_CORE_0V85"
width="0.3mm"
routingPhaseIndex={3}
/>
{["C10", "C11", "C12"].map((name) => (
<trace
key={`${name}-buck1-gnd`}
from={`.${name} > .pin2`}
to="net.GND"
routingPhaseIndex={1.2}
/>
))}
<trace
from=".U2 > .LX_B2"
to=".L2 > .pin1"
width="0.3mm"
routingPhaseIndex={22.05}
/>
<trace
from=".L2 > .pin2"
to=".C13 > .pin1"
width="0.3mm"
routingPhaseIndex={22.05}
/>
<trace
from=".U2 > .FB_B2"
to=".C13 > .pin1"
routingPhaseIndex={22.05}
/>
<trace
from=".C14 > .pin1"
to=".C13 > .pin1"
width="0.3mm"
routingPhaseIndex={22.05}
/>
<trace
from=".C15 > .pin1"
to=".C13 > .pin1"
width="0.3mm"
routingPhaseIndex={22.05}
/>
<trace
from=".C13 > .pin1"
to=".R10 > .pin1"
width="0.3mm"
routingPhaseIndex={22.05}
/>
<trace
from=".R10 > .pin2"
to="net.VDD_IO_1V8"
width="0.3mm"
routingPhaseIndex={23}
/>
{["C13", "C14", "C15"].map((name) => (
<trace
key={`${name}-buck2-gnd`}
from={`.${name} > .pin2`}
to="net.GND"
routingPhaseIndex={1.3}
/>
))}
<trace
from=".U2 > .LX_B3"
to=".L3 > .pin2"
width="0.3mm"
routingPhaseIndex={22.05}
/>
<trace
from=".L3 > .pin1"
to=".C16 > .pin1"
width="0.3mm"
routingPhaseIndex={22.05}
/>
<trace
from=".U2 > .FB_B3"
to=".C16 > .pin1"
routingPhaseIndex={22.05}
/>
<trace
from=".C17 > .pin1"
to=".C16 > .pin1"
width="0.3mm"
routingPhaseIndex={22.05}
/>
<trace
from=".C18 > .pin1"
to=".C16 > .pin1"
width="0.3mm"
routingPhaseIndex={22.05}
/>
<trace
from=".C16 > .pin1"
to="net.VDD_DDR_1V1"
width="0.3mm"
routingPhaseIndex={4}
/>
<trace
from=".C17 > .pin2"
to="net.GND"
width="0.3mm"
routingPhaseIndex={1.4}
/>
<trace
from=".C18 > .pin2"
to="net.GND"
width="0.3mm"
routingPhaseIndex={1.4}
/>
<trace
from=".C16 > .pin2"
to="net.GND"
width="0.3mm"
routingPhaseIndex={1.4}
/>
<trace
name="HDMI_3V3_FEED_FROM_VSYS"
from=".C3 > .pin1"
to=".HDMI_CACHE .HDMI .X_3V3 > .pin1"
width="0.3mm"
routingPhaseIndex={24.5}
/>
<PowerInputSubcircuit />
<trace
name="POWER_INPUT_GND_LINK"
from=".POWER_INPUT .X_GND > .pin1"
to="net.GND"
width="0.8mm"
routingPhaseIndex={26.1}
/>
<trace
name="POWER_INPUT_VSYS_LINK"
from=".POWER_INPUT .R23 > .pin2"
to=".C3 > .pin1"
width="0.5mm"
routingPhaseIndex={POWER_INPUT_VSYS_ROUTE_PHASE}
/>
<chip
name="HDMI_VSYNC_BOUNDARY"
pcbX={-17}
pcbY={7.5}
noSchematicRepresentation
footprint={
<footprint>
<smtpad
portHints={["pin1"]}
shape="rect"
width="0.8mm"
height="0.8mm"
/>
</footprint>
}
/>
<trace
name="HDMI_VSYNC_LOCAL_LINK"
from=".HDMI_VSYNC_BOUNDARY > .pin1"
to=".HDMI_CACHE .HDMI .U3 > .VSYNC"
routingPhaseIndex={VOUT_ROUTE_PHASE.VSYNC_LOCAL}
/>
{[
{ name: "UART0_RX_BOUNDARY", pcbX: 21, pcbY: 6.17872 },
{ name: "UART0_TX_BOUNDARY", pcbX: 22, pcbY: 5.85744 },
].map(({ name, pcbX, pcbY }) => (
<chip
key={name}
name={name}
pcbX={pcbX}
pcbY={pcbY}
noSchematicRepresentation
footprint={
<footprint>
<platedhole
portHints={["pin1"]}
shape="circle"
holeDiameter="0.3mm"
outerDiameter="0.7mm"
/>
</footprint>
}
/>
))}
<bus
name="UART0_ESCAPE"
connections={["UART0_RX_ESCAPE", "UART0_TX_ESCAPE"]}
preferredLayers={UART0_CONSOLE_BUS.preferredLayers}
/>
<trace
name="UART0_RX_ESCAPE"
from=".U1 > .D14"
to=".UART0_RX_BOUNDARY > .pin1"
routingPhaseIndex={UART0_ESCAPE_PHASE.RX}
/>
<trace
name="UART0_TX_ESCAPE"
from=".U1 > .E14"
to=".UART0_TX_BOUNDARY > .pin1"
routingPhaseIndex={UART0_ESCAPE_PHASE.TX}
/>
<chip
name="J4"
manufacturerPartNumber="UART0_1V8_DEBUG_HEADER"
pinLabels={{
pin1: ["GND"],
pin2: ["RX"],
pin3: ["TX"],
}}
pcbX={50}
pcbY={29}
noSchematicRepresentation
footprint={
<footprint>
<platedhole
portHints={["pin1"]}
pcbX={-2.54}
pcbY={0}
shape="circle"
holeDiameter="1mm"
outerDiameter="1.7mm"
/>
<platedhole
portHints={["pin2"]}
pcbX={0}
pcbY={0}
shape="circle"
holeDiameter="1mm"
outerDiameter="1.7mm"
/>
<platedhole
portHints={["pin3"]}
pcbX={2.54}
pcbY={0}
shape="circle"
holeDiameter="1mm"
outerDiameter="1.7mm"
/>
<silkscreenpath
route={[
{ x: -3.8, y: -1.3 },
{ x: 3.8, y: -1.3 },
{ x: 3.8, y: 1.3 },
{ x: -3.8, y: 1.3 },
{ x: -3.8, y: -1.3 },
]}
/>
<silkscreencircle pcbX={-2.54} pcbY={0} radius="1.05mm" />
</footprint>
}
/>
<bus
name="UART0_CONSOLE"
connections={["UART0_RX", "UART0_TX"]}
preferredLayers={UART0_CONSOLE_BUS.preferredLayers}
/>
<trace
name="UART0_HEADER_GND"
from=".J4 > .pin1"
to="net.GND"
width="0.3mm"
routingPhaseIndex={UART0_HEADER_GROUND_PHASE}
/>
<trace
name="UART0_RX"
from=".UART0_RX_BOUNDARY > .pin1"
to=".J4 > .pin2"
routingPhaseIndex={UART0_ROUTE_PHASE.RX}
/>
<trace
name="UART0_TX"
from=".UART0_TX_BOUNDARY > .pin1"
to=".J4 > .pin3"
routingPhaseIndex={UART0_ROUTE_PHASE.TX}
/>
{[
{ name: "USB0_DP_BOUNDARY", pcbX: 4, pcbY: -15 },
{ name: "USB0_DM_BOUNDARY", pcbX: 3.5, pcbY: -15 },
].map(({ name, pcbX, pcbY }) => (
<chip
key={name}
name={name}
pcbX={pcbX}
pcbY={pcbY}
noSchematicRepresentation
footprint={
<footprint>
<smtpad
portHints={["pin1"]}
shape="rect"
width="0.3mm"
height="0.3mm"
/>
</footprint>
}
/>
))}
<bus
name="USB0_DATA"
connections={["USB0_DP_ESCAPE", "USB0_DM_ESCAPE"]}
preferredLayers={USB0_DATA_BUS.preferredLayers}
/>
<trace
name="USB0_DP_ESCAPE"
from=".U1 > .AD11"
to=".USB0_DP_BOUNDARY > .pin1"
routingPhaseIndex={USB0_ESCAPE_PHASE}
/>
<trace
name="USB0_DM_ESCAPE"
from=".U1 > .AE11"
to=".USB0_DM_BOUNDARY > .pin1"
routingPhaseIndex={USB0_ESCAPE_PHASE}
/>
<subcircuit
name="USB_C_CACHE"
circuitJson={usbCDeviceCircuitJson}
pcbX={8}
pcbY={-26.2}
pcbRotation={-90}
/>
<subcircuit
name="USB0_ESD_CACHE"
circuitJson={usb0DataEsdCircuitJson}
pcbX={6}
pcbY={-16.6}
/>
<bus
name="USB0_ESD_SOC_DATA"
connections={["USB0_DP_TO_ESD", "USB0_DM_TO_ESD"]}
routingPhaseIndex={USB0_CONNECTOR_PHASE.DATA_TO_ESD}
maxLengthSkew="0.2mm"
targetImpedance="45ohm"
pcbTraceWidth="0.15mm"
preferredLayer="top"
pcbAllowedLayers={["top"]}
/>
<trace
name="USB0_DP_TO_ESD"
from=".USB0_DP_BOUNDARY > .pin1"
to=".USB0_ESD_CACHE .USB0_DATA_ESD .X_SOC_DP > .pin1"
width="0.15mm"
routingPhaseIndex={USB0_CONNECTOR_PHASE.DATA_TO_ESD}
/>
<trace
name="USB0_DM_TO_ESD"
from=".USB0_DM_BOUNDARY > .pin1"
to=".USB0_ESD_CACHE .USB0_DATA_ESD .X_SOC_DM > .pin1"
width="0.15mm"
routingPhaseIndex={USB0_CONNECTOR_PHASE.DATA_TO_ESD}
/>
<bus
name="USB0_ESD_CONNECTOR_DATA"
connections={["USB0_DP_FROM_ESD", "USB0_DM_FROM_ESD"]}
routingPhaseIndex={USB0_CONNECTOR_PHASE.DATA_TO_CONNECTOR}
maxLengthSkew="0.2mm"
targetImpedance="45ohm"
pcbTraceWidth="0.15mm"
preferredLayer="top"
pcbAllowedLayers={["top"]}
/>
<trace
name="USB0_DP_FROM_ESD"
from=".USB0_ESD_CACHE .USB0_DATA_ESD .X_CONNECTOR_DP > .pin1"
to=".USB_C_CACHE .USB_C_DEVICE .X_DP > .pin1"
width="0.15mm"
routingPhaseIndex={USB0_CONNECTOR_PHASE.DATA_TO_CONNECTOR}
/>
<trace
name="USB0_DM_FROM_ESD"
from=".USB0_ESD_CACHE .USB0_DATA_ESD .X_CONNECTOR_DM > .pin1"
to=".USB_C_CACHE .USB_C_DEVICE .X_DM > .pin1"
width="0.15mm"
routingPhaseIndex={USB0_CONNECTOR_PHASE.DATA_TO_CONNECTOR}
/>
<trace
name="USB0_ESD_GND"
from=".USB0_ESD_CACHE .USB0_DATA_ESD .X_GND > .pin1"
to="net.GND"
width="0.3mm"
routingPhaseIndex={USB0_CONNECTOR_PHASE.ESD_GROUND}
/>
<trace
name="USB0_CONNECTOR_GND"
from=".USB_C_CACHE .USB_C_DEVICE .X_GND > .pin1"
to="net.GND"
width="0.3mm"
routingPhaseIndex={USB0_CONNECTOR_PHASE.GND}
/>
<subcircuit
name="USB0_ANALOG_CACHE"
circuitJson={usb0AnalogSupportCircuitJson}
pcbX={21.2}
pcbY={-18}
/>
<bus
name="USB0_ANALOG"
connections={["USB0_VBUS_SUPPORT", "USB0_RCALIB_SUPPORT"]}
routingPhaseIndex={USB0_ANALOG_PHASE.SOC_LINKS}
preferredLayers={USB0_ANALOG_BUS.preferredLayers}
/>
<trace
name="USB0_VBUS_SUPPORT"
from=".U1 > .AC11"
to=".USB0_ANALOG_CACHE .USB0_ANALOG_SUPPORT .X_SOC_VBUS > .pin1"
width="0.15mm"
routingPhaseIndex={USB0_ANALOG_PHASE.SOC_LINKS}
/>
<trace
name="USB0_RCALIB_SUPPORT"
from=".U1 > .AE10"
to=".USB0_ANALOG_CACHE .USB0_ANALOG_SUPPORT .X_RCALIB > .pin1"
width="0.15mm"
routingPhaseIndex={USB0_ANALOG_PHASE.SOC_LINKS}
/>
<trace
name="USB0_VBUS_FROM_CONNECTOR"
from=".USB_C_CACHE .USB_C_DEVICE .X_VBUS > .pin1"
to=".USB0_ANALOG_CACHE .USB0_ANALOG_SUPPORT .X_CONNECTOR_VBUS > .pin1"
width="0.3mm"
routingPhaseIndex={USB0_ANALOG_PHASE.CONNECTOR_VBUS}
/>
<trace
name="USB0_ANALOG_GND"
from=".USB0_ANALOG_CACHE .USB0_ANALOG_SUPPORT .X_GND > .pin1"
to="net.GND"
width="0.3mm"
routingPhaseIndex={USB0_ANALOG_PHASE.GROUND}
/>
<silkscreentext
text="USB0 VBUS SENSE"
pcbX={21.5}
pcbY={-22.2}
fontSize="0.6mm"
anchorAlignment="center"
/>
<silkscreentext
text="USB-C DEVICE"
pcbX={14}
pcbY={-29}
fontSize="0.7mm"
anchorAlignment="center"
/>
<silkscreentext
text="UART0 1V8"
pcbX={50}
pcbY={31.3}
fontSize="0.8mm"
anchorAlignment="center"
/>
<silkscreentext
text="G RX TX"
pcbX={50}
pcbY={26.9}
fontSize="0.65mm"
anchorAlignment="center"
/>
<pcbnotetext
pcbX={-12}
pcbY={-22.5}
fontSize="0.7mm"
text="AM625SIP Linux board — exact SiP + mandatory 25 MHz clock + boot fanout"
/>
<pcbnotetext
pcbX={-12}
pcbY={-23.7}
fontSize="0.55mm"
text="Incremental autorouting; TI 8/18 mil PTH escape is the final target"
/>
</board>
)