astra/am3352-sbc
A 4-layer AM3352 single-board computer with 128‑MiB DDR3, PMIC power regulation, USB‑C 5‑V PD input, dual USB host ports, HDMI output with ESD protection, microSD/UART/JTAG interfaces, addressable RGB indicators, and a PWM-driven buzzer.
- Version
- 0.1.19
- License
- unset
- Stars
- 0
design/power-escapes.tsx
import bridges from "./power-bridges.json";
import {ramPoint,isRamRef} from "./ram-placement";
import { Fragment } from "react";
import escapes from "./power-escapes.json";
const ramVias = new Set(escapes.traces.filter(t=>isRamRef(t.from.split(" > ")[0].slice(1))).map(t=>t.via));
export function PowerEscapes() {
if (process.env.SBC_SIGNAL_ROUTING === "1") return null;
return (
<>
{escapes.vias.map((v) => (
<Fragment key={v.name}>
<via
name={v.name}
pcbX={ramVias.has(v.name)?ramPoint(v.x,v.y).x:v.x}
pcbY={ramVias.has(v.name)?ramPoint(v.x,v.y).y:v.y}
fromLayer="top"
toLayer="bottom"
layers={["top", "inner1", "inner2", "bottom"]}
outerDiameter={0.3}
holeDiameter={0.15}
connectsTo={`net.${v.net}`}
/>
</Fragment>
))}
{(bridges as {name:string;fromVia:string;toVia:string;waypoints:{x:number;y:number}[]}[]).map(b=>(
<trace key={b.name} name={b.name} from={`.${b.fromVia} > .bottom`} to={`.${b.toVia} > .bottom`} pcbPath={[`.${b.fromVia} > .bottom`,...b.waypoints,`.${b.toVia} > .bottom`]} />
))}
</>
);
}
export const escapeByTrace = new Map(escapes.traces.map((t) => [t.name, t]));