Keep a route's own vias apart while it is searched
Committed vias were checked for hole spacing, but a route's own vias are not committed until it is done, so a route hopping layers (more of them on 6 layers) could put two of its vias 0.41 mm apart, as th-eda's 6-layer flight controller showed. A via is now also checked against layer changes earlier on its own route.
This commit is contained in:
@@ -124,3 +124,13 @@ def test_hole_spacing_from_a_fixed_via_is_measured_from_where_it_really_is():
|
||||
assert not router._holes_clear(cell, 1), f"{d / s:.0f} um from the fixed via"
|
||||
elif 560 * s < d < 700 * s and cell not in router._tht_block:
|
||||
assert router._holes_clear(cell, 1)
|
||||
|
||||
|
||||
def test_a_route_keeps_its_own_vias_apart():
|
||||
# a route that changed layer at (10, 10) may not change layer again one
|
||||
# cell away; the same cell is the same through via, and far is fine
|
||||
router, _s = _router(_THT)
|
||||
came_from = {(10, 10, 1): (10, 10, 0), (11, 10, 1): (10, 10, 1), (12, 10, 1): (11, 10, 1)}
|
||||
assert router._near_path_via((12, 10, 1), (11, 10), came_from)
|
||||
assert not router._near_path_via((12, 10, 1), (10, 10), came_from)
|
||||
assert not router._near_path_via((12, 10, 1), (40, 10), came_from)
|
||||
|
||||
Reference in New Issue
Block a user