seveibar/adm6-breakout

This code defines PCB designs featuring a 60-pin fanout or direct routing layout with multiple signal and power layers, test pads, and component footprints for a high-density electronic breakout board.

Version
1.0.2
License
unset
Stars
0

scripts/render-fanout-stage.mjs

import { mkdirSync, readFileSync, writeFileSync } from "node:fs"
import { Resvg } from "@resvg/resvg-js"
import { convertCircuitJsonToPcbSvg } from "circuit-to-svg"

const debugDir = "dist/autorouter-debug"
const outputDir = "dist/adm6-fanout"
const circuit = JSON.parse(
  readFileSync(`${debugDir}/board.source-and-pcb.circuit.json`, "utf8"),
)
const fanoutTraces = JSON.parse(
  readFileSync(`${debugDir}/phase-1.previous-output.traces.json`, "utf8"),
)
const fanoutCircuit = [...circuit, ...fanoutTraces]

mkdirSync(outputDir, { recursive: true })
writeFileSync(
  `${outputDir}/fanout-stage.circuit.json`,
  JSON.stringify(fanoutCircuit, null, 2),
)

const svg = convertCircuitJsonToPcbSvg(fanoutCircuit, {
  width: 1800,
  height: 700,
  matchBoardAspectRatio: true,
  backgroundColor: "#111827",
  showPinNumbers: false,
})
writeFileSync(`${outputDir}/fanout-stage.svg`, svg)

const png = new Resvg(svg, {
  fitTo: { mode: "width", value: 2400 },
}).render()
writeFileSync(`${outputDir}/fanout-stage.png`, png.asPng())