--fanout: leave out pins a same-net pour on their layer already joins
This commit is contained in:
@@ -57,6 +57,12 @@ def plan_fanout(board: BasicBoard, rules: FanoutRules) -> list:
|
||||
for z in board.get_conduction_areas():
|
||||
if z.net_nos and not board.layer_structure.arr[z.layer].is_signal:
|
||||
planes.setdefault(z.net_nos[0], []).append(z)
|
||||
# copper pours on the routing layers, by net: a pad inside one is joined
|
||||
# by the fill, and a stub there would take the room its thermal spokes need
|
||||
pours: dict[int, list] = {}
|
||||
for z in board.get_conduction_areas():
|
||||
if z.net_nos and board.layer_structure.arr[z.layer].is_signal:
|
||||
pours.setdefault(z.net_nos[0], []).append(z)
|
||||
placed = _Placed(board, rules)
|
||||
by_net: dict[int, list[Pin]] = {}
|
||||
for pin in board.get_pins():
|
||||
@@ -73,6 +79,9 @@ def plan_fanout(board: BasicBoard, rules: FanoutRules) -> list:
|
||||
if net is None:
|
||||
continue
|
||||
layer = next(layer for layer in pin.layers if layer in rules.signal_layers)
|
||||
if any(z.layer == layer and z.polygon is not None and z.polygon.contains(pin.location)
|
||||
for z in pours.get(net, [])):
|
||||
continue # the pour joins it
|
||||
direction = _outward(pin.location, centre)
|
||||
reach = _pad_reach(pin, direction) + rules.clearance + half + rules.trace_width
|
||||
end = _step(pin.location, direction, reach)
|
||||
|
||||
Reference in New Issue
Block a user