mirror of https://github.com/VLSIDA/OpenRAM.git
Make sure via probes can also be blocked by other blockages
This commit is contained in:
parent
62a04ce874
commit
d609ef9243
|
|
@ -99,9 +99,15 @@ class graph:
|
||||||
return blocked
|
return blocked
|
||||||
|
|
||||||
|
|
||||||
def is_via_blocked(self, point):
|
def is_via_blocked(self, nodes):
|
||||||
""" Return if a via on the given point is blocked by another via. """
|
""" Return if a via on the given point is blocked by another via. """
|
||||||
|
|
||||||
|
# If the nodes are blocked by a blockage other than a via
|
||||||
|
for node in nodes:
|
||||||
|
if self.is_node_blocked(node):
|
||||||
|
return True
|
||||||
|
# If the nodes are blocked by a via
|
||||||
|
point = node.center
|
||||||
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()
|
||||||
|
|
@ -273,7 +279,7 @@ class graph:
|
||||||
search(i, lambda count: (count / 2) >= y_len, y_len * 2) # Left
|
search(i, lambda count: (count / 2) >= y_len, y_len * 2) # Left
|
||||||
if not hasattr(self.nodes[i], "remove") and \
|
if not hasattr(self.nodes[i], "remove") and \
|
||||||
not hasattr(self.nodes[i + 1], "remove") and \
|
not hasattr(self.nodes[i + 1], "remove") and \
|
||||||
not self.is_via_blocked(self.nodes[i].center):
|
not self.is_via_blocked(self.nodes[i:i+2]):
|
||||||
self.nodes[i].add_neighbor(self.nodes[i + 1])
|
self.nodes[i].add_neighbor(self.nodes[i + 1])
|
||||||
|
|
||||||
# Remove marked nodes
|
# Remove marked nodes
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue