Scaffold freeroute: Python port of the FreeRouting engine
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.
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user