Don't cost a pin stub for a route that ends on a plane
A plane end is marked with its zone, not a pin, so a route from a pad outside the plane's outline crashed looking for the pin's location (the flight-controller board's first placement).
This commit is contained in:
@@ -202,6 +202,18 @@ def test_smd_pads_reach_an_inner_plane_by_their_own_via():
|
||||
assert all(names[layer] in ("F.Cu", "B.Cu") for segs in result.result.wires.values() for layer, _ in segs)
|
||||
|
||||
|
||||
def test_a_pad_outside_the_plane_routes_to_it():
|
||||
# G1 sits left of a plane that covers only the right half, so its route
|
||||
# has to reach the plane's cells: those ends are the plane, not a pin
|
||||
dsn_text = _four_layer_dsn().replace(
|
||||
"(plane GND (polygon In1.Cu 0 500 -500 29500 -500 29500 -29500 500 -29500 500 -500))",
|
||||
"(plane GND (polygon In1.Cu 0 15000 -500 29500 -500 29500 -29500 15000 -29500 15000 -500))",
|
||||
)
|
||||
result, _scale, _names = route_dsn_board_exact(parse_dsn(dsn_text))
|
||||
gnd = next(i + 1 for i, n in enumerate(parse_dsn(dsn_text).nets) if n.name == "GND")
|
||||
assert gnd in result.result.routed_net_numbers
|
||||
|
||||
|
||||
def test_a_through_hole_pad_inside_a_plane_needs_no_route():
|
||||
from freeroute.route.grid_router import _connected_groups
|
||||
|
||||
|
||||
Reference in New Issue
Block a user