mirror of https://github.com/VLSIDA/OpenRAM.git
Cleanup graph router
This commit is contained in:
parent
db2a276077
commit
da24c52c52
|
|
@ -48,7 +48,7 @@ class graph:
|
|||
|
||||
# Constant values
|
||||
pin = pin.get_core()
|
||||
offset = self.router.offset
|
||||
offset = self.router.half_wire
|
||||
spacing = self.router.track_space
|
||||
size_limit = snap(offset * 4 + spacing)
|
||||
|
||||
|
|
@ -98,16 +98,12 @@ class graph:
|
|||
|
||||
def closest(value, checklist):
|
||||
""" Return the distance of the closest value in the checklist. """
|
||||
min_diff = float("inf")
|
||||
for other in checklist:
|
||||
diff = snap(abs(value - other))
|
||||
if diff < min_diff:
|
||||
min_diff = diff
|
||||
return min_diff
|
||||
diffs = [abs(value - other) for other in checklist]
|
||||
return snap(min(diffs))
|
||||
|
||||
wide = self.router.track_wire
|
||||
offset = self.router.offset
|
||||
spacing = snap(self.router.track_space + offset + drc["grid"])
|
||||
half_wide = self.router.half_wire
|
||||
spacing = snap(self.router.track_space + half_wide + drc["grid"])
|
||||
blocked = False
|
||||
for blockage in self.graph_blockages:
|
||||
# Check if the node is inside the blockage
|
||||
|
|
@ -126,8 +122,8 @@ class graph:
|
|||
safe = [True, True]
|
||||
for i in range(2):
|
||||
if lengths[i] >= wide:
|
||||
min_diff = snap(min(abs(ll[i] - p[i]), abs(ur[i] - p[i])))
|
||||
if min_diff < offset:
|
||||
min_diff = closest(p[i], [ll[i], ur[i]])
|
||||
if min_diff < half_wide:
|
||||
safe[i] = False
|
||||
elif centers[i] != p[i]:
|
||||
safe[i] = False
|
||||
|
|
@ -262,7 +258,7 @@ class graph:
|
|||
y_values.update(ys)
|
||||
|
||||
# Add corners for blockages
|
||||
offset = vector(drc["grid"], drc["grid"])
|
||||
offset = vector([drc["grid"]] * 2)
|
||||
for blockage in self.graph_blockages:
|
||||
ll, ur = blockage.rect
|
||||
# Add minimum offset to the blockage corner nodes to prevent overlap
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ class graph_router(router_tech):
|
|||
self.fake_pins = []
|
||||
|
||||
# Set the offset here
|
||||
self.offset = snap(self.track_wire / 2)
|
||||
self.half_wire = snap(self.track_wire / 2)
|
||||
|
||||
|
||||
def prepare_gds_reader(self):
|
||||
|
|
@ -213,7 +213,7 @@ class graph_router(router_tech):
|
|||
if wide > self.layer_widths[0]:
|
||||
spacing = self.get_layer_space(self.get_zindex(shape.lpp), wide)
|
||||
return shape.inflated_pin(spacing=spacing,
|
||||
extra_spacing=self.offset)
|
||||
extra_spacing=self.half_wire)
|
||||
|
||||
|
||||
def add_path(self, path):
|
||||
|
|
@ -262,7 +262,8 @@ class graph_router(router_tech):
|
|||
direction = nodes[i].get_direction(nodes[i + 1])
|
||||
diff = start - end
|
||||
offset = start.min(end)
|
||||
offset = vector(offset.x - self.offset, offset.y - self.offset)
|
||||
offset = vector(offset.x - self.half_wire,
|
||||
offset.y - self.half_wire)
|
||||
if direction == (1, 1): # Via
|
||||
offset = vector(start.x, start.y)
|
||||
self.design.add_via_center(layers=self.layers,
|
||||
|
|
@ -274,7 +275,7 @@ class graph_router(router_tech):
|
|||
height=abs(diff.y) + self.track_wire)
|
||||
|
||||
|
||||
def write_debug_gds(self, gds_name="debug_route.gds", g=None, source=None, target=None):
|
||||
def write_debug_gds(self, gds_name, g=None, source=None, target=None):
|
||||
""" Write the debug GDSII file for the router. """
|
||||
|
||||
self.add_router_info(g, source, target)
|
||||
|
|
@ -299,9 +300,6 @@ class graph_router(router_tech):
|
|||
self.design.add_label(text="n{}".format(node.center.z),
|
||||
layer="text",
|
||||
offset=offset)
|
||||
#debug.info(0, "Neighbors of {}".format(node.center))
|
||||
#for neighbor in node.neighbors:
|
||||
# debug.info(0, " {}".format(neighbor.center))
|
||||
else:
|
||||
for blockage in self.blockages:
|
||||
self.add_object_info(blockage, "blockage{}".format(self.get_zindex(blockage.lpp)))
|
||||
|
|
|
|||
Loading…
Reference in New Issue