tscircuit-autorouter
MIT-licensed PCB autorouter built from hundreds of pipeline algorithms, published as the @tscircuit/capacity-autorouter library for tscircuit designs.
What it does and how it connects
tscircuit-autorouter is the built-in PCB autorouter for tscircuit, published as the @tscircuit/capacity-autorouter library. It is composed of hundreds of algorithms organized as a pipeline, and it routes by successive approximation with hypergraphs rather than by sequential routing.
It takes a SimpleRouteJson object describing layer count, minimum trace width, obstacles, connections, and board bounds, and returns the same format with traces added. A separate simplification pipeline cleans up traces on boards that are already routed, without routing missing connections. An online playground at autorouter.tscircuit.com lets anyone try it in the browser.
Bug reports follow a fixture workflow: a report URL from the tscircuit errors tab is downloaded into an examples directory, and a matching snapshot test can be scaffolded under tests. The README also documents a DRC failure dataset (SRJ33) used to measure the router.
Alternatives
Compare side by side- tscircuit
The full code-based PCB toolchain the autorouter plugs into, rather than the routing library alone.
- TraceMaker
Routes and places an existing KiCad board file, rather than routing tscircuit Circuit JSON as a library.
- DeepPCB
A cloud routing service for an already placed board, rather than a local library the user calls from code.
- tscircuit core
Builds Circuit JSON from TypeScript and React elements, which the autorouter then routes, rather than routing itself.
- pcbkit
Generates and routes KiCad boards from Python with Freerouting, rather than routing tscircuit designs with a pipeline solver.
Recurring errors it addresses
Error Index entries this tool is built to reduce or work around.
- A PCB autorouter lost component-pad targets on one dataset board, so a 1.72 mm QFP connection ran out of search; nearly coincident top and bottom SMT terminals could also collapse into one identity during stitching, and an upstream simplifier measured a 39.56 mm route as 2,248.36 mm and silently polled its failed child.Error Index
- Bus length matching measures only newly routed copper, so it can report skew success while retained fanout copper breaks it, repro A at 19 mm against B at 10 mm against a 0.1 mm limit with zero DRC errors.Error Index
- Obstacle filtering used a rotated exclusion zone's unrotated width and height, so the zone was dropped and the router reported solved: true while routing straight through it.Error Index
- Passed sample16's reference checks while one via pad stuck about 0.08 mm past the board outline; now the full via footprint has to fit the outline.Error Index
- One repair stage of the router passed a hardcoded 0.1 mm trace clearance while the board declared 0.45 mm, and the next stage enforced 0.45 mm. Candidates got rejected and pad/trace DRC violations stayed. Two stages of one tool held different clearance rules for the same board.Error Index
Sources
Not verified
- No GitHub releases exist, so latest release fields are null.
- No independent user voice found: recent repo activity is maintainer and bot pull requests.
- Pricing: none stated on the repo or playground.
Last verified November 6, 2026. Listings are informational. The evidence score measures public, verifiable evidence and is not an endorsement or a compatibility claim.