Route with copper zones, and let vias into no-tracks areas
freeroute ignored the DSN's planes (KiCad's zones), so it never knew that pads in a pour are joined by it. On the rc4 power stage those pads sit inside "keep router off" areas as well, and every connection to them was dropped without a word. - Read (plane <net> <shape>) and put each zone on the board as a ConductionArea of its net. Zones are not obstacles: KiCad refills them around other nets' copper. - The grid groups each net's pads and zone pieces that copper already joins (a pad in a zone, two zones sharing a pad) and routes only between groups. A connection may end on a zone by a via inside its copper, or by a track where tracks are allowed. - wire_keepout now blocks traces only, as KiCad's "no tracks" rule area does; via_keepout only vias; keepout both, in the grid and in the exact verifier. rc4 power stage, exact engine, resolution 2: 2 unconnected, down from 8 (FreeRouting JAR: 12), no DRC errors.
This commit is contained in:
@@ -72,6 +72,10 @@ class ObstacleArea(Item):
|
||||
name: str | None = None
|
||||
layer: int = 0
|
||||
tiles: list = field(default_factory=list)
|
||||
#: a DSN keepout blocks both; wire_keepout only traces (KiCad's "no
|
||||
#: tracks" rule area, where vias are allowed), via_keepout only vias
|
||||
blocks_wires: bool = True
|
||||
blocks_vias: bool = True
|
||||
|
||||
def is_obstacle(self) -> bool:
|
||||
return True
|
||||
@@ -87,7 +91,16 @@ class ObstacleArea(Item):
|
||||
|
||||
@dataclass
|
||||
class ConductionArea(ObstacleArea):
|
||||
"""A power-plane conduction area (an obstacle carrying a net)."""
|
||||
"""A copper zone of one net (a DSN plane): not an obstacle to routing,
|
||||
since KiCad refills it around other nets' copper, but copper of its net:
|
||||
pads it touches are connected through it, and a route of its net ends on
|
||||
it by placing a via inside it."""
|
||||
|
||||
#: the zone outline, for point containment
|
||||
polygon: object = None
|
||||
|
||||
def is_obstacle(self) -> bool:
|
||||
return False
|
||||
|
||||
|
||||
@dataclass
|
||||
|
||||
Reference in New Issue
Block a user