Include mirror/rotate on translate_all boundary update

This commit is contained in:
mrg 2020-06-13 06:50:53 -07:00
parent 33a32101c9
commit 8f1dc7eeea
1 changed files with 8 additions and 4 deletions

View File

@ -55,14 +55,17 @@ class layout():
# GDS layout # GDS layout
############################################################ ############################################################
def offset_all_coordinates(self): def offset_all_coordinates(self):
""" This function is called after everything is placed to """
shift the origin in the lowest left corner """ This function is called after everything is placed to
shift the origin in the lowest left corner
"""
offset = self.find_lowest_coords() offset = self.find_lowest_coords()
self.translate_all(offset) self.translate_all(offset)
return offset return offset
def get_gate_offset(self, x_offset, height, inv_num): def get_gate_offset(self, x_offset, height, inv_num):
"""Gets the base offset and y orientation of stacked rows of gates """
Gets the base offset and y orientation of stacked rows of gates
assuming a minwidth metal1 vdd/gnd rail. Input is which gate assuming a minwidth metal1 vdd/gnd rail. Input is which gate
in the stack from 0..n in the stack from 0..n
""" """
@ -120,6 +123,7 @@ class layout():
highesty2 = max(inst.uy() for inst in self.insts) highesty2 = max(inst.uy() for inst in self.insts)
else: else:
highestx2 = highesty2 = None highestx2 = highesty2 = None
if highestx1 == None and highestx2 == None: if highestx1 == None and highestx2 == None:
return None return None
elif highestx1 == None: elif highestx1 == None:
@ -188,7 +192,7 @@ class layout():
inst.offset = vector(inst.offset - offset) inst.offset = vector(inst.offset - offset)
# The instances have a precomputed boundary that we need to update. # The instances have a precomputed boundary that we need to update.
if inst.__class__.__name__ == "instance": if inst.__class__.__name__ == "instance":
inst.compute_boundary(inst.offset) inst.compute_boundary(inst.offset, inst.mirror, inst.rotate)
for pin_name in self.pin_map.keys(): for pin_name in self.pin_map.keys():
# All the pins are absolute coordinates that need to be updated. # All the pins are absolute coordinates that need to be updated.
pin_list = self.pin_map[pin_name] pin_list = self.pin_map[pin_name]