Ryan Malloy faf2df42bc Add continuity-win fixture and room-router tests
Adds narrow_channel.dsn: a keepout wall with a narrow gap positioned off the
routing grid, so no grid cell centre falls inside the gap's free centreline.
The exact/grid track drops the net (cell quantization can't fit a centreline
in the channel); the continuous room track routes it. This is the headline
result that continuous free-space beats the grid.

Tests: the room router's output is DRC-clean (exact has_violation is None) on
simple/crossing/kicad/narrow_channel; it connects simple/crossing (with a via)
and all four multi-pin KiCad nets; traces are orthogonal and end on pads; and
the continuity contrast asserts exact routes 0 while rooms routes 1, both
clean. Oracle-gated connectivity parity on simple/crossing.
2026-07-13 09:38:52 -06:00
..

DSN test fixtures

Hand-crafted minimal Specctra DSN files, written to exercise the parser. They are modeled on the real fixtures shipped in the upstream FreeRouting repo (fixtures/empty_board.dsn and fixtures/SMD-routing-issue-demo.dsn) so the grammar and formatting match what kicad-cli pcb export specctra-dsn and FreeRouting itself produce, but they were typed fresh here (no upstream file is copied into this tree).

  • empty_board.dsn — the smallest valid board: parser, resolution, unit, and a structure with two signal layers and a pcb boundary path. Modeled on FreeRouting fixtures/empty_board.dsn.
  • smd_demo.dsn — a fuller board exercising every scope the parser handles: quoted board/padstack/image names, via, default rule (width + clearance with a (type smd_smd) pair), a keepout, padstacks (rect and circle pads), images with pins, placement with front/rotation, nets with Comp-Pin references, and a class with circuit/use_via and a rule. Modeled on FreeRouting fixtures/SMD-routing-issue-demo.dsn.