From 288f15341efd5c103fdf24c92d2a64548edae138 Mon Sep 17 00:00:00 2001 From: Rushabh Patil Date: Sun, 30 Aug 2026 01:19:11 +0530 Subject: [PATCH 1/2] Add repro for over-distance multi-pin ground trace --- ...pro-multi-pin-ground-max-distance.snap.svg | 83 +++++++++++++++++++ ...epro-multi-pin-ground-max-distance.test.ts | 52 ++++++++++++ 2 files changed, 135 insertions(+) create mode 100644 tests/repros/__snapshots__/repro-multi-pin-ground-max-distance.snap.svg create mode 100644 tests/repros/repro-multi-pin-ground-max-distance.test.ts diff --git a/tests/repros/__snapshots__/repro-multi-pin-ground-max-distance.snap.svg b/tests/repros/__snapshots__/repro-multi-pin-ground-max-distance.snap.svg new file mode 100644 index 000000000..acf5ae392 --- /dev/null +++ b/tests/repros/__snapshots__/repro-multi-pin-ground-max-distance.snap.svg @@ -0,0 +1,83 @@ + + + + + + U1GNDU2GNDU3GNDXXXXXXXXXX + + \ No newline at end of file diff --git a/tests/repros/repro-multi-pin-ground-max-distance.test.ts b/tests/repros/repro-multi-pin-ground-max-distance.test.ts new file mode 100644 index 000000000..407c81c70 --- /dev/null +++ b/tests/repros/repro-multi-pin-ground-max-distance.test.ts @@ -0,0 +1,52 @@ +import { expect, test } from "bun:test" +import { SchematicTracePipelineSolver } from "lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver" +import type { InputProblem } from "lib/types/InputProblem" +import "tests/fixtures/matcher" + +const MAX_MSP_PAIR_DISTANCE = 2 + +const inputProblem: InputProblem = { + chips: [-20, 0, 20].map((x, index) => ({ + chipId: `U${index + 1}`, + center: { x, y: 0 }, + width: 1, + height: 1, + pins: [ + { + pinId: `U${index + 1}.GND`, + x: x + 0.5, + y: 0, + _facingDirection: "x+" as const, + }, + ], + })), + directConnections: [], + netConnections: [ + { + netId: "GND", + pinIds: ["U1.GND", "U2.GND", "U3.GND"], + isGround: true, + netLabelWidth: 0.72, + netLabelHeight: 0.42, + }, + ], + availableNetLabelOrientations: { GND: ["x+"] }, + maxMspPairDistance: MAX_MSP_PAIR_DISTANCE, +} + +test("repro 20-unit multi-pin ground trace despite 2-unit maxMspPairDistance", () => { + const solver = new SchematicTracePipelineSolver(inputProblem) + + solver.solve() + + const [longGroundTrace] = solver.longDistancePairSolver!.getOutput().newTraces + expect(longGroundTrace).toBeDefined() + + const [start, end] = longGroundTrace!.pins + const manhattanDistance = + Math.abs(start.x - end.x) + Math.abs(start.y - end.y) + expect(manhattanDistance).toBe(20) + expect(manhattanDistance).toBeGreaterThan(MAX_MSP_PAIR_DISTANCE) + + expect(solver).toMatchSolverSnapshot(import.meta.path) +}) From 9bf42a03b960659efa5e101173b3501c37a12c14 Mon Sep 17 00:00:00 2001 From: Rushabh Patil Date: Sun, 30 Aug 2026 01:59:05 +0530 Subject: [PATCH 2/2] Use SparkFun Qwiic Shim for ground trace repro --- ...pro-multi-pin-ground-max-distance.snap.svg | 38 +++++------- ...epro-multi-pin-ground-max-distance.test.ts | 60 +++++++++++++------ 2 files changed, 55 insertions(+), 43 deletions(-) diff --git a/tests/repros/__snapshots__/repro-multi-pin-ground-max-distance.snap.svg b/tests/repros/__snapshots__/repro-multi-pin-ground-max-distance.snap.svg index acf5ae392..722953436 100644 --- a/tests/repros/__snapshots__/repro-multi-pin-ground-max-distance.snap.svg +++ b/tests/repros/__snapshots__/repro-multi-pin-ground-max-distance.snap.svg @@ -1,13 +1,17 @@ -