From 5ce193c2dd855f720a059ba20c405324d6b51014 Mon Sep 17 00:00:00 2001 From: Eren Dogan Date: Wed, 19 Jul 2023 18:32:22 -0700 Subject: [PATCH] Snap node vectors to grid to prevent precision errors --- compiler/router/graph.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/compiler/router/graph.py b/compiler/router/graph.py index 4c8494e9..9d7e7afb 100644 --- a/compiler/router/graph.py +++ b/compiler/router/graph.py @@ -57,12 +57,11 @@ class graph: # Probe is blocked if the shape isn't routable if not self.is_routable(blockage): return True - elif blockage.inflated_from is None: + if blockage.inflated_from is not None: + blockage = blockage.inflated_from + if blockage.overlaps(probe_shape): continue - elif blockage.inflated_from.overlaps(probe_shape): - continue - else: - return True + return True return False @@ -90,7 +89,7 @@ class graph: offset = self.router.offset p = node.center lengths = [blockage.width(), blockage.height()] - centers = blockage.center() + centers = blockage.center().snap_to_grid() ll, ur = blockage.rect safe = [True, True] for i in range(2): @@ -114,7 +113,7 @@ class graph: for via in self.graph_vias: ll, ur = via.rect - center = via.center() + center = via.center().snap_to_grid() if via.on_segment(ll, point, ur) and \ (center.x != point.x or center.y != point.y): return True @@ -191,6 +190,7 @@ class graph: else: # Square-like pin points = [shape.center()] for p in points: + p.snap_to_grid() x_values.add(p.x) y_values.add(p.y)