diff --git a/compiler/bitcells/pbitcell.py b/compiler/bitcells/pbitcell.py index 2d9b4384..d809c6f1 100644 --- a/compiler/bitcells/pbitcell.py +++ b/compiler/bitcells/pbitcell.py @@ -378,16 +378,14 @@ class pbitcell(bitcell_base.bitcell_base): + 0.5 * contact.polym1.height, self.cross_couple_upper_ypos) self.add_via_center(layers=self.poly_stack, - offset=contact_offset_left, - directions=("H", "H")) + offset=contact_offset_left) contact_offset_right = vector(self.inverter_nmos_right.get_pin("S").lc().x \ - 0.5*contact.polym1.height, self.cross_couple_lower_ypos) self.add_via_center(layers=self.poly_stack, - offset=contact_offset_right, - directions=("H", "H")) + offset=contact_offset_right) # connect contacts to gate poly (cross couple connections) gate_offset_right = vector(self.inverter_nmos_right.get_pin("G").lc().x, @@ -784,8 +782,7 @@ class pbitcell(bitcell_base.bitcell_base): offset=port_contact_offset) self.add_via_center(layers=self.m1_stack, - offset=wl_contact_offset, - directions=("H", "H")) + offset=wl_contact_offset) self.add_path("poly", [gate_offset, port_contact_offset]) self.add_path("m2", @@ -862,8 +859,7 @@ class pbitcell(bitcell_base.bitcell_base): supply_offset = vector(position.x + contact_correct, self.gnd_position.y) self.add_via_center(layers=self.m1_stack, - offset=supply_offset, - directions=("H", "H")) + offset=supply_offset) self.add_path("m2", [position, supply_offset]) @@ -928,15 +924,13 @@ class pbitcell(bitcell_base.bitcell_base): - self.poly_to_contact - 0.5*contact.polym1.width, self.cross_couple_upper_ypos) self.add_via_center(layers=self.poly_stack, - offset=left_storage_contact, - directions=("H", "H")) + offset=left_storage_contact) right_storage_contact = vector(self.inverter_nmos_right.get_pin("G").rc().x \ + self.poly_to_contact + 0.5*contact.polym1.width, self.cross_couple_upper_ypos) self.add_via_center(layers=self.poly_stack, - offset=right_storage_contact, - directions=("H", "H")) + offset=right_storage_contact) inverter_gate_offset_left = vector(self.inverter_nmos_left.get_pin("G").lc().x, self.cross_couple_upper_ypos) self.add_path("poly", [left_storage_contact, inverter_gate_offset_left]) diff --git a/compiler/pgates/pgate.py b/compiler/pgates/pgate.py index 5bf3e5e3..9cb73542 100644 --- a/compiler/pgates/pgate.py +++ b/compiler/pgates/pgate.py @@ -106,11 +106,8 @@ class pgate(design.design): else: debug.error("Invalid contact placement option.", -1) - # Non-preferred direction via - v=self.add_via_center(layers=self.poly_stack, - offset=contact_offset, - directions = ("V", "H")) + offset=contact_offset) self.add_layout_pin_rect_center(text=name, layer="m1", diff --git a/compiler/pgates/pnand2.py b/compiler/pgates/pnand2.py index c7f184b2..bc520c7b 100644 --- a/compiler/pgates/pnand2.py +++ b/compiler/pgates/pnand2.py @@ -226,11 +226,9 @@ class pnand2(pgate.pgate): mid2_offset = vector(out_offset.x, bottom_pin_offset.y) self.add_via_center(layers=self.m1_stack, - offset=pmos_pin.center(), - directions=("V", "H")) + offset=pmos_pin.center()) self.add_via_center(layers=self.m1_stack, - offset=nmos_pin.center(), - directions=("V", "H")) + offset=nmos_pin.center()) self.add_via_center(layers=self.m1_stack, offset=out_offset)