diagnose.py: --negotiate, as the router

This commit is contained in:
2026-10-03 15:34:37 -06:00
parent 09c58ea630
commit 6a560b9506
+4 -1
View File
@@ -186,6 +186,7 @@ def _flood(router: GridRouter, pin, net_no: int, conns) -> tuple[int, Counter]:
def diagnose(
dsn_text: str, edge_clearance_mm: float | None, resolution: int = 2, shove: bool = False,
access_cost: float = 0.0, hole_to_hole_mm: float = 0.25, seed: int | None = None,
negotiate: int = 0,
) -> dict:
dsn = parse_dsn(dsn_text)
names = {i + 1: n.name for i, n in enumerate(dsn.nets)}
@@ -202,6 +203,7 @@ def diagnose(
shove=shove,
access_cost=access_cost,
seed=seed,
negotiate=negotiate,
# the product's configuration: net-class widths and hole spacing
net_widths=_net_widths_board(dsn, scale),
via_drill=_via_drill_board(dsn, scale),
@@ -278,12 +280,13 @@ def main(argv: list[str] | None = None) -> int:
ap.add_argument("--shove", action="store_true", help="as mckicad routes")
ap.add_argument("--access-cost", type=float, default=0.0)
ap.add_argument("--seed", type=int, help="route in this shuffled order, as bench.py does")
ap.add_argument("--negotiate", type=int, default=0, metavar="N", help="as the router's --negotiate")
ap.add_argument("--hole-to-hole", type=float, default=0.25, metavar="MM")
ap.add_argument("--json", type=Path, help="also write the full table here")
args = ap.parse_args(argv)
report = diagnose(args.dsn.read_text(), args.edge_clearance, args.grid_resolution, args.shove,
args.access_cost, args.hole_to_hole, args.seed)
args.access_cost, args.hole_to_hole, args.seed, args.negotiate)
for row in report["failures"]:
extra = ""
for w in row.get("walled", []):