mirror of https://github.com/VLSIDA/OpenRAM.git
Snap node vectors to grid to prevent precision errors
This commit is contained in:
parent
e8c3cf0a94
commit
5ce193c2dd
|
|
@ -57,12 +57,11 @@ class graph:
|
||||||
# Probe is blocked if the shape isn't routable
|
# Probe is blocked if the shape isn't routable
|
||||||
if not self.is_routable(blockage):
|
if not self.is_routable(blockage):
|
||||||
return True
|
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
|
continue
|
||||||
elif blockage.inflated_from.overlaps(probe_shape):
|
return True
|
||||||
continue
|
|
||||||
else:
|
|
||||||
return True
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -90,7 +89,7 @@ class graph:
|
||||||
offset = self.router.offset
|
offset = self.router.offset
|
||||||
p = node.center
|
p = node.center
|
||||||
lengths = [blockage.width(), blockage.height()]
|
lengths = [blockage.width(), blockage.height()]
|
||||||
centers = blockage.center()
|
centers = blockage.center().snap_to_grid()
|
||||||
ll, ur = blockage.rect
|
ll, ur = blockage.rect
|
||||||
safe = [True, True]
|
safe = [True, True]
|
||||||
for i in range(2):
|
for i in range(2):
|
||||||
|
|
@ -114,7 +113,7 @@ class graph:
|
||||||
|
|
||||||
for via in self.graph_vias:
|
for via in self.graph_vias:
|
||||||
ll, ur = via.rect
|
ll, ur = via.rect
|
||||||
center = via.center()
|
center = via.center().snap_to_grid()
|
||||||
if via.on_segment(ll, point, ur) and \
|
if via.on_segment(ll, point, ur) and \
|
||||||
(center.x != point.x or center.y != point.y):
|
(center.x != point.x or center.y != point.y):
|
||||||
return True
|
return True
|
||||||
|
|
@ -191,6 +190,7 @@ class graph:
|
||||||
else: # Square-like pin
|
else: # Square-like pin
|
||||||
points = [shape.center()]
|
points = [shape.center()]
|
||||||
for p in points:
|
for p in points:
|
||||||
|
p.snap_to_grid()
|
||||||
x_values.add(p.x)
|
x_values.add(p.x)
|
||||||
y_values.add(p.y)
|
y_values.add(p.y)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue