mirror of https://github.com/VLSIDA/OpenRAM.git
Remove some unnecessary via directions.
This commit is contained in:
parent
b7d78ec2ec
commit
0da8164ea6
|
|
@ -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])
|
||||||
|
|
|
||||||
|
|
@ -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",
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue