diff --git a/bench/diagnose.py b/bench/diagnose.py index 3a35473..7c8a4d5 100644 --- a/bench/diagnose.py +++ b/bench/diagnose.py @@ -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", []):