mirror of https://github.com/VLSIDA/OpenRAM.git
Merge branch 'multiport_control_fix' of ssh://scone/home/mrg/openram into multiport_control_fix
This commit is contained in:
commit
e98f7075e2
|
|
@ -673,11 +673,13 @@ class layout(lef.lef):
|
||||||
offset=bus_pos,
|
offset=bus_pos,
|
||||||
rotate=90)
|
rotate=90)
|
||||||
|
|
||||||
def add_horizontal_trunk_route(self, pins, trunk_offset,
|
def add_horizontal_trunk_route(self,
|
||||||
|
pins,
|
||||||
|
trunk_offset,
|
||||||
layer_stack=("metal1", "via1", "metal2"),
|
layer_stack=("metal1", "via1", "metal2"),
|
||||||
pitch=None):
|
pitch=None):
|
||||||
"""
|
"""
|
||||||
Create a trunk route for all pins with the the trunk located at the given y offset.
|
Create a trunk route for all pins with the trunk located at the given y offset.
|
||||||
"""
|
"""
|
||||||
if not pitch:
|
if not pitch:
|
||||||
pitch = self.m1_pitch
|
pitch = self.m1_pitch
|
||||||
|
|
@ -704,15 +706,18 @@ class layout(lef.lef):
|
||||||
|
|
||||||
# Route each pin to the trunk
|
# Route each pin to the trunk
|
||||||
for pin in pins:
|
for pin in pins:
|
||||||
# Bend to the center of the trunk so it adds a via automatically
|
|
||||||
mid = vector(pin.center().x, trunk_offset.y)
|
mid = vector(pin.center().x, trunk_offset.y)
|
||||||
self.add_wire(layer_stack, [pin.center(), mid, trunk_mid])
|
self.add_path(layer_stack[2], [pin.center(), mid])
|
||||||
|
self.add_via_center(layers=layer_stack,
|
||||||
|
offset=mid)
|
||||||
|
|
||||||
def add_vertical_trunk_route(self, pins, trunk_offset,
|
def add_vertical_trunk_route(self,
|
||||||
|
pins,
|
||||||
|
trunk_offset,
|
||||||
layer_stack=("metal1", "via1", "metal2"),
|
layer_stack=("metal1", "via1", "metal2"),
|
||||||
pitch=None):
|
pitch=None):
|
||||||
"""
|
"""
|
||||||
Create a trunk route for all pins with the the trunk located at the given x offset.
|
Create a trunk route for all pins with the trunk located at the given x offset.
|
||||||
"""
|
"""
|
||||||
if not pitch:
|
if not pitch:
|
||||||
pitch = self.m2_pitch
|
pitch = self.m2_pitch
|
||||||
|
|
@ -740,9 +745,11 @@ class layout(lef.lef):
|
||||||
|
|
||||||
# Route each pin to the trunk
|
# Route each pin to the trunk
|
||||||
for pin in pins:
|
for pin in pins:
|
||||||
# Bend to the center of the trunk so it adds a via automatically
|
|
||||||
mid = vector(trunk_offset.x, pin.center().y)
|
mid = vector(trunk_offset.x, pin.center().y)
|
||||||
self.add_wire(layer_stack, [pin.center(), mid, trunk_mid])
|
self.add_path(layer_stack[0], [pin.center(), mid])
|
||||||
|
self.add_via_center(layers=layer_stack,
|
||||||
|
offset=mid,
|
||||||
|
rotate=90)
|
||||||
|
|
||||||
|
|
||||||
def create_channel_route(self, netlist,
|
def create_channel_route(self, netlist,
|
||||||
|
|
@ -835,8 +842,6 @@ class layout(lef.lef):
|
||||||
if vcg_nets_overlap(nets[net_name1], nets[net_name2], vertical):
|
if vcg_nets_overlap(nets[net_name1], nets[net_name2], vertical):
|
||||||
vcg[net_name2].append(net_name1)
|
vcg[net_name2].append(net_name1)
|
||||||
|
|
||||||
#FIXME: What if we have a cycle?
|
|
||||||
|
|
||||||
# list of routes to do
|
# list of routes to do
|
||||||
while vcg:
|
while vcg:
|
||||||
#from pprint import pformat
|
#from pprint import pformat
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue