0hmX/simplified-am62l-computer
This code defines components and scripts for physically representing and routing high-speed DDR memory signals, power lines, and ground planes on an 8-layer PCB with detailed pin assignments, copper pours, and precise via and trace layouts based on TI EVM reference data.
- Version
- 1.0.16
- License
- unset
- Stars
- 0
routing/ti-am62l-evm-mmc1-escapes.ts
// Extracted from TI TMDS62LEVM SPRCAL6D Altium ASCII board data.
// Coordinates are millimetres relative to U28 (AM62L) centre. These routes
// intentionally stop at the first clean point outside the 12 mm BGA body so
// the board-level router can continue without searching inside the ball field.
type EscapeWire = {
route_type: "wire"
x: number
y: number
width: number
layer: "top" | "inner2" | "bottom"
}
type EscapeVia = {
route_type: "via"
x: number
y: number
from_layer: "top" | "inner2" | "bottom"
to_layer: "top" | "inner2" | "bottom"
via_diameter: number
via_hole_diameter: number
}
const wire = (
layer: EscapeWire["layer"],
width: number,
points: readonly (readonly [number, number])[],
): EscapeWire[] =>
points.map(([x, y]) => ({ route_type: "wire", x, y, width, layer }))
const via = (
x: number,
y: number,
from_layer: EscapeVia["from_layer"],
to_layer: EscapeVia["to_layer"],
): EscapeVia => ({
route_type: "via",
x,
y,
from_layer,
to_layer,
via_diameter: 0.4572,
via_hole_diameter: 0.2032,
})
export const TI_AM62L_EVM_MMC1_ESCAPES = {
MMC1_SDCD: {
ball: "B6",
route: [
...wire("top", 0.08128, [[2.999999, -5], [3.00229, -5], [3.251063, -5.248773], [3.251063, -6.983613]]),
...wire("top", 0.13208, [[3.251063, -6.983613], [3.251063, -7.111863], [3.554613, -7.415413]]),
via(3.554613, -7.415413, "top", "inner2"),
...wire("inner2", 0.09398, [[3.554613, -7.415413], [3.554613, -9.085669]]),
],
},
MMC1_SDWP: {
ball: "D6",
route: [
...wire("top", 0.08128, [[2.999999, -4], [2.999999, -3.874237], [3.441055, -3.433181]]),
via(3.441055, -3.433181, "top", "bottom"),
...wire("bottom", 0.13208, [[3.441055, -3.433181], [3.098917, -3.775319], [3.098917, -4.673717], [3.656305, -5.231105], [5.535905, -5.231105], [6.094613, -5.789813], [7.999613, -5.789813]]),
],
},
MMC1_CLK: {
ball: "Y2",
route: [
...wire("top", 0.08128, [[5, 4], [5.24892, 4.24892], [5.846346, 4.24892], [6.424813, 4.827387], [6.628013, 4.827387]]),
],
},
MMC1_CMD: {
ball: "Y3",
route: [
...wire("top", 0.13208, [[4.500001, 4], [4.573387, 3.605413]]),
via(4.573387, 3.605413, "top", "inner2"),
...wire("inner2", 0.09398, [[4.573387, 3.605413], [4.573387, 4.037467], [4.827133, 4.291213], [4.827133, 4.603633], [4.664827, 4.766193], [4.664827, 5.937601], [5.078613, 6.351387]]),
],
},
MMC1_DAT0: {
ball: "AA1",
route: [
...wire("top", 0.13208, [[5.499999, 4.500001], [5.765917, 4.500001], [6.347303, 5.081387], [7.266021, 5.081387], [7.772517, 5.587883]]),
via(7.772517, 5.587883, "top", "inner2"),
...wire("inner2", 0.09398, [[7.772517, 5.587883], [8.074309, 5.587883]]),
],
},
MMC1_DAT1: {
ball: "Y4",
route: [
...wire("top", 0.13208, [[4, 4], [4.450197, 4.447423]]),
via(4.450197, 4.447423, "top", "inner2"),
...wire("inner2", 0.09398, [[4.450197, 4.447423], [4.450197, 6.078571], [4.824613, 6.452987]]),
],
},
MMC1_DAT2: {
ball: "AA2",
route: [
...wire("top", 0.08128, [[5, 4.500001], [5.249682, 4.749683], [5.638663, 4.749683], [5.81659, 4.92761]]),
...wire("top", 0.13208, [[5.81659, 4.92761], [6.461623, 5.572643], [7.101703, 5.572643]]),
via(7.101703, 5.572643, "top", "inner2"),
...wire("inner2", 0.09398, [[7.101703, 5.572643], [7.252566, 5.572643]]),
],
},
MMC1_DAT3: {
ball: "AB2",
route: [
...wire("top", 0.08128, [[5, 5], [5.249027, 5.248793], [5.249027, 5.858393], [5.485247, 6.094613]]),
via(5.485247, 6.094613, "top", "inner2"),
...wire("inner2", 0.09398, [[5.485247, 6.094613], [6.018413, 6.627779]]),
],
},
} as const