imrishabh18/corne-keyboard

The code defines and renders two surface-mount chip components with SMT pads, silkscreen outlines, and 3D CAD models (OBJ and STEP) for PCB assembly.

Version
2.0.21
License
unset
Stars
1

scripts/check-routing.ts

import { readFileSync } from "node:fs"
import {
  checkCopperToBoardEdgeClearance,
  checkPcbCopperOverKeepout,
  dedupePcbDrcErrors,
  runAllRoutingChecks,
} from "@tscircuit/checks"

let failed = false
for (const side of ["left", "right"]) {
  const circuit = JSON.parse(readFileSync(`dist/${side}/circuit.json`, "utf8"))
  const traces = circuit.filter((item: any) => item.type === "pcb_trace")
  const errors = dedupePcbDrcErrors([
    ...circuit.filter((item: any) => item.type === "pcb_autorouting_error"),
    ...await runAllRoutingChecks(circuit),
    ...checkCopperToBoardEdgeClearance(circuit),
    ...checkPcbCopperOverKeepout(circuit),
  ])
  console.log(`${side}: ${traces.length} traces, ${errors.length} routing/clearance errors`)
  for (const error of errors) console.error(`${error.type}: ${error.message}`)
  if (!traces.length || errors.length) failed = true
}
if (failed) process.exit(1)