--seed: shuffle the order connections are routed in
The router is deterministic, but its result depends heavily on which connection routes first. A seed shuffles that order reproducibly, so a change can be judged over several orders instead of the one it happened to get.
This commit is contained in:
@@ -264,6 +264,19 @@ def test_larger_board_still_connects_its_multipin_nets():
|
||||
assert len(result.routed_net_numbers) == multi_pin == 4
|
||||
|
||||
|
||||
def test_a_seed_is_repeatable_and_does_change_the_order():
|
||||
# The benchmark samples seeds to measure how much a result owes to the
|
||||
# routing order. A seed that changed nothing would make every sample the
|
||||
# same run and report no spread at all.
|
||||
text = (FIXTURES / "kicad_routable.dsn").read_text()
|
||||
default = _wire_key(route_dsn_board(parse_dsn(text))[0])
|
||||
runs = {s: route_dsn_board(parse_dsn(text), seed=s)[0] for s in range(4)}
|
||||
again = route_dsn_board(parse_dsn(text), seed=1)[0]
|
||||
assert _wire_key(again) == _wire_key(runs[1])
|
||||
assert any(_wire_key(r) != default for r in runs.values())
|
||||
assert all(r.unrouted == 0 for r in runs.values())
|
||||
|
||||
|
||||
# --- oracle parity ----------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
@@ -154,6 +154,7 @@ def test_cli_supported_combinations_are_accepted(tmp_path):
|
||||
"diagonal": ["--diagonal"],
|
||||
"rip_up": ["--no-rip-up"],
|
||||
"max_passes": ["-mp", "4"],
|
||||
"seed": ["--seed", "3"],
|
||||
}
|
||||
for engine, options in ENGINE_OPTIONS.items():
|
||||
for option in options:
|
||||
|
||||
Reference in New Issue
Block a user