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
scripts/diagnose-peripheral-no-power.ts
import { readFileSync, writeFileSync } from "node:fs";
import { routeAlternateSignalDogbones } from "/workspace/bus-lanes-length-limits/lib/alternate-signal-dogbones";
const input=JSON.parse(readFileSync("output/peripheral-no-power.srj.json","utf8"));
const json=JSON.parse(readFileSync("output/board.circuit.json","utf8"));
const names=new Map(json.filter((e:any)=>e.type==="source_trace").map((e:any)=>[e.source_trace_id,e.name]));
const reports=[];
for(const pair of input.differentialPairs){
const source={...input,connections:input.connections.filter((c:any)=>pair.connectionNames.includes(c.name)),differentialPairs:[pair],buses:[]};
const row:any={names:pair.connectionNames.map((n:string)=>names.get(n)),success:false};
for(let attempt=0;attempt<4;attempt++){
try {const result=routeAlternateSignalDogbones(source,{targetLayers:new Map(source.connections.map((c:any)=>[c.name,"inner2"])),viaDiameter:.3,viaHoleDiameter:.15,traceWidth:.1,clearance:.1,boardEdgeClearance:.2,holeToHoleClearance:.1,allowBlindAndBuriedVias:false},attempt);row.success=true;row.attempt=attempt;row.traces=result.traces;break;}
catch(e){row.error=e instanceof Error?e.message:String(e);}
}
reports.push(row);console.log(JSON.stringify({...row,traces:undefined}));
}
writeFileSync("output/peripheral-no-power-dogbone-diagnosis.json",JSON.stringify(reports,null,2));