mirror of https://github.com/VLSIDA/OpenRAM.git
Add horizontal pin helper function
This commit is contained in:
parent
5451a8d07a
commit
d4c14d7d19
|
|
@ -422,6 +422,35 @@ class layout():
|
||||||
for pin_name in self.pin_map.keys():
|
for pin_name in self.pin_map.keys():
|
||||||
self.copy_layout_pin(instance, pin_name, prefix + pin_name)
|
self.copy_layout_pin(instance, pin_name, prefix + pin_name)
|
||||||
|
|
||||||
|
def route_horizontal_pin(self, name):
|
||||||
|
"""
|
||||||
|
Route together all of the pins of a given name that horizontally align.
|
||||||
|
"""
|
||||||
|
bins = {}
|
||||||
|
|
||||||
|
for i in range(len(self.local_insts)):
|
||||||
|
inst = self.local_insts[i]
|
||||||
|
for pin in inst.get_pins(name):
|
||||||
|
try:
|
||||||
|
bins[pin.cy()].append(pin)
|
||||||
|
except KeyError:
|
||||||
|
bins[pin.cy()] = [pin]
|
||||||
|
|
||||||
|
for y, v in bins.items():
|
||||||
|
left_x = min([x.lx() for x in v])
|
||||||
|
right_x = max([x.rx() for x in v])
|
||||||
|
|
||||||
|
last_via = None
|
||||||
|
for pin in v:
|
||||||
|
last_via = self.add_via_stack_center(from_layer=pin.layer,
|
||||||
|
to_layer=self.supply_stack[0],
|
||||||
|
offset=pin.center())
|
||||||
|
|
||||||
|
self.add_layout_pin_segment_center(text=name,
|
||||||
|
layer=self.supply_stack[0],
|
||||||
|
start=vector(left_x, y),
|
||||||
|
end=vector(right_x, y))
|
||||||
|
|
||||||
def add_layout_pin_segment_center(self, text, layer, start, end, width=None):
|
def add_layout_pin_segment_center(self, text, layer, start, end, width=None):
|
||||||
"""
|
"""
|
||||||
Creates a path like pin with center-line convention
|
Creates a path like pin with center-line convention
|
||||||
|
|
@ -450,8 +479,8 @@ class layout():
|
||||||
return self.add_layout_pin(text=text,
|
return self.add_layout_pin(text=text,
|
||||||
layer=layer,
|
layer=layer,
|
||||||
offset=ll_offset,
|
offset=ll_offset,
|
||||||
width=bbox_width,
|
width=max(bbox_width, layer_width),
|
||||||
height=bbox_height)
|
height=max(bbox_height, layer_width))
|
||||||
|
|
||||||
def add_layout_pin_rect_center(self, text, layer, offset, width=None, height=None):
|
def add_layout_pin_rect_center(self, text, layer, offset, width=None, height=None):
|
||||||
""" Creates a path like pin with center-line convention """
|
""" Creates a path like pin with center-line convention """
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue