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/verify-no-fanout.mjs

import { readFileSync } from "node:fs"

const debugDir = "dist/adm6-no-fanout-debug"
const input = JSON.parse(
  readFileSync(`${debugDir}/phase-0.input.simple-route.json`, "utf8"),
)
const previousOutput = JSON.parse(
  readFileSync(`${debugDir}/phase-0.previous-output.traces.json`, "utf8"),
)
const timeout = JSON.parse(
  readFileSync(`${debugDir}/phase-0.timeout.json`, "utf8"),
)

const summary = {
  configuration: "direct auto-local routing without <fanout>",
  inputConnections: input.connections.length,
  timeoutSeconds: timeout.elapsedMs / 1000,
  phase: timeout.phaseOrdinal,
  lastSolverStage: timeout.lastProgress?.phase,
  completedOutputTraces: previousOutput.length,
  result: "timeout",
}

console.log(JSON.stringify(summary, null, 2))

if (input.connections.length !== 240) {
  throw new Error(`Expected 240 direct connections, found ${input.connections.length}`)
}
if (timeout.phaseOrdinal !== 1 || timeout.elapsedMs < 300_000) {
  throw new Error("Saved result is not the expected five-minute phase-1 timeout")
}
if (previousOutput.length !== 0) {
  throw new Error(
    `Expected no emitted route set at timeout, found ${previousOutput.length} traces`,
  )
}