Generalize active and poly stacks

This commit is contained in:
Matt Guthaus 2019-12-13 14:56:14 -08:00
parent 3ad7c8a8b5
commit f71cfe0d9d
6 changed files with 10 additions and 10 deletions

View File

@ -1019,7 +1019,7 @@ class pbitcell(bitcell_base.bitcell_base):
# add well contacts
# connect pimplants to gnd
offset = vector(0, self.gnd_position.y)
self.add_via_center(layers=("active", "contact", "metal1"),
self.add_via_center(layers=self.active_stack,
offset=offset,
directions=("H", "H"),
implant_type="p",
@ -1027,7 +1027,7 @@ class pbitcell(bitcell_base.bitcell_base):
# connect nimplants to vdd
offset = vector(0, self.vdd_position.y)
self.add_via_center(layers=("active", "contact", "metal1"),
self.add_via_center(layers=self.active_stack,
offset=offset,
directions=("H", "H"),
implant_type="n",

View File

@ -168,7 +168,7 @@ class pgate(design.design):
def add_nwell_contact(self, pmos, pmos_pos):
""" Add an nwell contact next to the given pmos device. """
layer_stack = ("active", "contact", "metal1")
layer_stack = self.active_stack
# To the right a spacing away from the pmos right active edge
contact_xoffset = pmos_pos.x + pmos.active_width \
@ -221,7 +221,7 @@ class pgate(design.design):
def add_pwell_contact(self, nmos, nmos_pos):
""" Add an pwell contact next to the given nmos device. """
layer_stack = ("active", "contact", "metal1")
layer_stack = self.active_stack
pwell_position = vector(0, -0.5 * self.m1_width)

View File

@ -177,7 +177,7 @@ class precharge(design.design):
well_contact_pos = self.upper_pmos1_inst.get_pin("D").center().scale(1, 0) \
+ vector(0, self.upper_pmos1_inst.uy() + contact.well.height / 2 \
+ drc("well_extend_active"))
self.add_via_center(layers=("active", "contact", "metal1"),
self.add_via_center(layers=self.active_stack,
offset=well_contact_pos,
implant_type="n",
well_type="n")

View File

@ -191,7 +191,7 @@ class ptristate_inv(pgate.pgate):
supplies AFTER the wells are created
"""
layer_stack = ("active", "contact", "metal1")
layer_stack = self.active_stack
drain_pos = self.nmos1_inst.get_pin("S").center()
vdd_pos = self.get_pin("vdd").center()

View File

@ -124,7 +124,7 @@ class ptx(design.design):
# This is not actually instantiated but used for calculations
self.active_contact = factory.create(module_type="contact",
layer_stack=("active", "contact", "metal1"),
layer_stack=self.active_stack,
dimensions=(1, self.num_contacts))
@ -373,7 +373,7 @@ class ptx(design.design):
[source_positions,drain_positions] = self.get_contact_positions()
for pos in source_positions:
contact=self.add_via_center(layers=("active", "contact", "metal1"),
contact=self.add_via_center(layers=self.active_stack,
offset=pos,
size=(1, self.num_contacts),
directions=("H","V"),
@ -387,7 +387,7 @@ class ptx(design.design):
for pos in drain_positions:
contact=self.add_via_center(layers=("active", "contact", "metal1"),
contact=self.add_via_center(layers=self.active_stack,
offset=pos,
size=(1, self.num_contacts),
directions=("H","V"),

View File

@ -175,7 +175,7 @@ class single_level_column_mux(pgate.pgate):
# Add it to the right, aligned in between the two tx
active_pos = vector(self.bitcell.width,
self.nmos_upper.by() - 0.5 * self.poly_space)
self.add_via_center(layers=("active", "contact", "metal1"),
self.add_via_center(layers=self.active_stack,
offset=active_pos,
implant_type="p",
well_type="p")