Ryan Malloy e58f63e0f1 Add dense fixture and shove tests
Adds shove_needed.dsn: one signal layer (no vias), where NET_A routes as
a straight wall that boxes NET_C out under greedy ordering. Tests assert
the contrast: without shove NET_C is dropped (result still DRC-clean, just
incomplete); with shove NET_A is moved aside and both nets connect, the
exact has_violation check is clean, endpoints stay on pads, and the result
is deterministic. Regression tests confirm shove is a no-op on the simple/
crossing/ripup/kicad boards (same connectivity, DRC-clean, zero shoves).
Oracle-gated parity is included (skips when the JAR cannot route the
synthetic single-layer board).
2026-07-13 02:43:35 -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.