Pure-Python PCB autorouter replacing the freerouting.jar step in kicad-mcp. Contract is Specctra DSN in, SES out — a drop-in for the JAR so the toolchain needs no JVM. Includes pyproject (uv/ruff/pytest, src-layout) and a porting plan seeded for study of the upstream FreeRouting Java source.
46 lines
1.0 KiB
Markdown
46 lines
1.0 KiB
Markdown
# freeroute
|
|
|
|
A native Python PCB autorouter — a Java-free port of the
|
|
[FreeRouting](https://github.com/freerouting/freerouting) engine.
|
|
|
|
## Why
|
|
|
|
`kicad-mcp` currently autoroutes by shelling out to `freerouting.jar`, which
|
|
drags in a JVM dependency. `freeroute` reimplements the routing engine in
|
|
pure Python so the toolchain needs no Java at all.
|
|
|
|
## The contract
|
|
|
|
The entire integration surface is two Specctra files:
|
|
|
|
```
|
|
board.dsn ──▶ freeroute ──▶ board.ses
|
|
(unrouted) (routed session: traces + vias)
|
|
```
|
|
|
|
`kicad-cli` already exports `.dsn` and imports `.ses`, so `freeroute` is a
|
|
drop-in replacement for the JAR step — nothing else in the pipeline changes.
|
|
|
|
## Status
|
|
|
|
Pre-alpha. Under active development. See [`docs/PORTING_PLAN.md`](docs/PORTING_PLAN.md)
|
|
for the architecture and porting roadmap.
|
|
|
|
## Usage (target)
|
|
|
|
```bash
|
|
freeroute board.dsn -o board.ses
|
|
```
|
|
|
|
## Development
|
|
|
|
```bash
|
|
uv sync
|
|
uv run pytest
|
|
uv run ruff check src/ tests/
|
|
```
|
|
|
|
## License
|
|
|
|
GPL-3.0-or-later, matching the FreeRouting source it is ported from.
|