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/run-fanout-test.mjs

import { existsSync, rmSync } from "node:fs"
import { spawnSync } from "node:child_process"

const debugDir = "dist/autorouter-debug"
rmSync(debugDir, { recursive: true, force: true })

const cli = "./node_modules/.bin/tsci"
const build = spawnSync(
  cli,
  [
    "build",
    "adm6-fanout.circuit.tsx",
    "--autorouter-timeout",
    "20s",
  ],
  { stdio: "inherit" },
)

const expectedArtifacts = [
  `${debugDir}/phase-1.previous-output.traces.json`,
  `${debugDir}/phase-1.timeout.json`,
  `${debugDir}/board.source-and-pcb.circuit.json`,
]

if (!expectedArtifacts.every(existsSync)) {
  throw new Error(
    `The bounded tscircuit run did not produce the expected fanout artifacts (exit ${build.status})`,
  )
}

for (const script of ["scripts/verify-fanout.mjs", "scripts/render-fanout-stage.mjs"]) {
  const result = spawnSync(process.execPath, [script], { stdio: "inherit" })
  if (result.status !== 0) process.exit(result.status ?? 1)
}