DingoOz / TraceMaker
git clone https://github.com/DingoOz/TraceMaker.git
v0.10.0 · 4d ago
—
+1
stars, 24h · #9,813
+~7
stars, 7 days · #10,461
+170
stars, 30 days · #3,103
171
★ total · +4% this week
16
forks · 2 open issues
Star history (as recorded here)
LanguageC++
LicenseGPL-3.0
Created2026-10-05 (17d ago)
Last push1d ago
Watchers2
OwnerUser
Links
- GitHub: github.com/DingoOz/TraceMaker
- Homepage: https://dingooz.github.io/TraceMaker/
- Releases · Issues · Hacker News mentions
README excerpt
**An autorouter and component placer for KiCad.** You give it a `.kicad_pcb`; it draws the tracks and vias and writes them back into the file. *The live viewer after routing a three-channel motor driver: 195 of 195 connections, front copper in red, back in blue.* ## In one minute - **What it does:** routes unrouted connections on KiCad 9 and 10 boards, and can place components first. - **How it is judged:** by KiCad's own design-rule check (`kicad-cli pcb drc`), not by its own opinion. - **What it never does:** touch anything it did not create. The rest of your file round-trips byte for byte. - **What it runs on:** Linux, C++20. A CUDA 12.x GPU speeds it up; it works without one. A macOS build with a Metal backend is contributed and has not been run by the project. - **Status:** release 0.10.0. Licence GPL-3.0-or-later. ## How good is it? Share of boards routed with **every connection made and no KiCad error added** (PCBench, 120 s per board): | Tier | Boards | TraceMaker 0.10.0 | Freerouting 2.5 | |---|--:|--:|--:| | A (routine) | 40 | **100%** | 100% | | B | 40 | **70.0%** | 50.0% | | C | 30 | **46.7%** | 46.7% | | D (hardest) | 22 | **40.9%** | 36.4% | Freerouting's figures are its own published results on the same boards. Since 2026-10-14 the judge compares physical violation instances and calls a board *unknown*, never clean, when KiCad's report is truncated at a capped error type on either side (199 solder-mask bridges the board had before routing, say), because a zero delta cannot then be proved (decision D106); three tier C and three tier D boards that are fully routed with no added error fall under that. By the 0.9.0 criterion the same runs give 100%, 70.0%, 56.7% and 54.5%, against 100%, 72.5%, 60.0% and 54.5% at release 0.9.0 (one board each way in tiers B and C, on a machine shared with other jobs; the 0.9.0 binary run beside it under the same load scored within one board of it in every tier, `bench/records/release-0.10.0`). **Known limits, stated plainly:** - Placing a board from scratch gives 85% clean boards on held-out designs; the project's target was 90%. - On boards with dense packages (BGAs, fine-pitch QFNs), 41% come out clean. - On tscircuit's public BGA breakout problems (sets srj19 and srj20, KiCad errors never added) it routes about 95% and 78% of the boards completely with a 16-variant portfolio (about 2-7 minutes per board; a single 30-60 s run: 89% and 64%); tscircuit's own router completes 92% and 79% (360 s on 32 vCPU). Both figures are composites of runs; srj20 is 156/200 within 330 s and 160/200 with up to 433 s. Boards that stay open there are mostly limited by the lattice, not by room: `--relax` (route at 60-80 % of the clearance, then move the track vertices off the lattice up to the real rules) closed sample031, 039, 048, 071, 072, 095, 103 and 159 with a clean KiCad DRC; sample104 is still one connection short (doc 16 section 13). - It uses more vias than Freerouting. - Eight real-world KiCad boards that