Honour KiCad's keepouts: keyhole rings, wire_keepout, per-tile rasterizing
On the TerraHawk rc4 power stage every engine misread the board's rule areas: - A no-track ring along the board edge arrives as one keyhole polygon, and keepout polygons were wrapped in a single convex tile, so the ring became the whole board. Split keepout polygons into convex pieces instead. - The grid engine rasterized an area by its overall bounding box, which for that ring is again the whole board; it routed nothing. Rasterize per tile. - "Keep router off" rule areas arrive as wire_keepout, which the reader did not know, so tracks ran through them (172 DRC items_not_allowed). Read it at board and image level. For now it blocks vias too, which is stricter than KiCad and cannot create a violation. - place_keepout only restricts part placement; stop treating it as copper. The oracle now runs the JAR headless; it was opening FreeRouting's GUI on the desktop for every oracle test.
This commit is contained in:
+6
-1
@@ -111,12 +111,17 @@ def route_dsn(dsn_path: str | Path, *, max_passes: int = 6, timeout: int = 180)
|
||||
with tempfile.NamedTemporaryFile(suffix=".ses", delete=False) as tmp:
|
||||
out_path = tmp.name
|
||||
try:
|
||||
# Headless: without these the JAR opens its GUI on the developer's
|
||||
# desktop for every oracle run.
|
||||
env = {k: v for k, v in os.environ.items() if k not in ("DISPLAY", "WAYLAND_DISPLAY")}
|
||||
subprocess.run(
|
||||
[JAVA, "-jar", JAR, "-de", str(dsn_path), "-do", out_path, "-mp", str(max_passes)],
|
||||
[JAVA, "-Djava.awt.headless=true", "-jar", JAR, "-de", str(dsn_path),
|
||||
"-do", out_path, "-mp", str(max_passes), "--gui.enabled=false"],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
timeout=timeout,
|
||||
check=False,
|
||||
env=env,
|
||||
)
|
||||
text = Path(out_path).read_text()
|
||||
finally:
|
||||
|
||||
Reference in New Issue
Block a user