Remove some unnecessary via directions.

This commit is contained in:
Matt Guthaus 2019-12-19 13:54:50 -08:00
parent b7d78ec2ec
commit 0da8164ea6
3 changed files with 9 additions and 20 deletions

View File

@ -378,16 +378,14 @@ class pbitcell(bitcell_base.bitcell_base):
+ 0.5 * contact.polym1.height, + 0.5 * contact.polym1.height,
self.cross_couple_upper_ypos) self.cross_couple_upper_ypos)
self.add_via_center(layers=self.poly_stack, self.add_via_center(layers=self.poly_stack,
offset=contact_offset_left, offset=contact_offset_left)
directions=("H", "H"))
contact_offset_right = vector(self.inverter_nmos_right.get_pin("S").lc().x \ contact_offset_right = vector(self.inverter_nmos_right.get_pin("S").lc().x \
- 0.5*contact.polym1.height, - 0.5*contact.polym1.height,
self.cross_couple_lower_ypos) self.cross_couple_lower_ypos)
self.add_via_center(layers=self.poly_stack, self.add_via_center(layers=self.poly_stack,
offset=contact_offset_right, offset=contact_offset_right)
directions=("H", "H"))
# connect contacts to gate poly (cross couple connections) # connect contacts to gate poly (cross couple connections)
gate_offset_right = vector(self.inverter_nmos_right.get_pin("G").lc().x, 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) offset=port_contact_offset)
self.add_via_center(layers=self.m1_stack, self.add_via_center(layers=self.m1_stack,
offset=wl_contact_offset, offset=wl_contact_offset)
directions=("H", "H"))
self.add_path("poly", [gate_offset, port_contact_offset]) self.add_path("poly", [gate_offset, port_contact_offset])
self.add_path("m2", self.add_path("m2",
@ -862,8 +859,7 @@ class pbitcell(bitcell_base.bitcell_base):
supply_offset = vector(position.x + contact_correct, supply_offset = vector(position.x + contact_correct,
self.gnd_position.y) self.gnd_position.y)
self.add_via_center(layers=self.m1_stack, self.add_via_center(layers=self.m1_stack,
offset=supply_offset, offset=supply_offset)
directions=("H", "H"))
self.add_path("m2", [position, 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.poly_to_contact - 0.5*contact.polym1.width,
self.cross_couple_upper_ypos) self.cross_couple_upper_ypos)
self.add_via_center(layers=self.poly_stack, self.add_via_center(layers=self.poly_stack,
offset=left_storage_contact, offset=left_storage_contact)
directions=("H", "H"))
right_storage_contact = vector(self.inverter_nmos_right.get_pin("G").rc().x \ right_storage_contact = vector(self.inverter_nmos_right.get_pin("G").rc().x \
+ self.poly_to_contact + 0.5*contact.polym1.width, + self.poly_to_contact + 0.5*contact.polym1.width,
self.cross_couple_upper_ypos) self.cross_couple_upper_ypos)
self.add_via_center(layers=self.poly_stack, self.add_via_center(layers=self.poly_stack,
offset=right_storage_contact, offset=right_storage_contact)
directions=("H", "H"))
inverter_gate_offset_left = vector(self.inverter_nmos_left.get_pin("G").lc().x, self.cross_couple_upper_ypos) 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]) self.add_path("poly", [left_storage_contact, inverter_gate_offset_left])

View File

@ -106,11 +106,8 @@ class pgate(design.design):
else: else:
debug.error("Invalid contact placement option.", -1) debug.error("Invalid contact placement option.", -1)
# Non-preferred direction via
v=self.add_via_center(layers=self.poly_stack, v=self.add_via_center(layers=self.poly_stack,
offset=contact_offset, offset=contact_offset)
directions = ("V", "H"))
self.add_layout_pin_rect_center(text=name, self.add_layout_pin_rect_center(text=name,
layer="m1", layer="m1",

View File

@ -226,11 +226,9 @@ class pnand2(pgate.pgate):
mid2_offset = vector(out_offset.x, bottom_pin_offset.y) mid2_offset = vector(out_offset.x, bottom_pin_offset.y)
self.add_via_center(layers=self.m1_stack, self.add_via_center(layers=self.m1_stack,
offset=pmos_pin.center(), offset=pmos_pin.center())
directions=("V", "H"))
self.add_via_center(layers=self.m1_stack, self.add_via_center(layers=self.m1_stack,
offset=nmos_pin.center(), offset=nmos_pin.center())
directions=("V", "H"))
self.add_via_center(layers=self.m1_stack, self.add_via_center(layers=self.m1_stack,
offset=out_offset) offset=out_offset)