None for layer means unused.

This commit is contained in:
Matt Guthaus 2019-11-26 13:34:39 -08:00
parent 04045cf672
commit b71d630643
3 changed files with 20 additions and 16 deletions

View File

@ -8,7 +8,7 @@
import contact import contact
import design import design
import debug import debug
from tech import layers from tech import layer, drc
from vector import vector from vector import vector
from globals import OPTS from globals import OPTS
from sram_factory import factory from sram_factory import factory
@ -141,27 +141,29 @@ class pgate(design.design):
max_y_offset = self.height + 0.5 * self.m1_width max_y_offset = self.height + 0.5 * self.m1_width
self.nwell_position = middle_position self.nwell_position = middle_position
nwell_height = max_y_offset - middle_position.y nwell_height = max_y_offset - middle_position.y
if layers["nwell"]: if layer["nwell"]:
self.add_rect(layer="nwell", self.add_rect(layer="nwell",
offset=middle_position, offset=middle_position,
width=self.well_width, width=self.well_width,
height=nwell_height) height=nwell_height)
self.add_rect(layer="vtg", if layer["vtg"]:
offset=self.nwell_position, self.add_rect(layer="vtg",
width=self.well_width, offset=self.nwell_position,
height=nwell_height) width=self.well_width,
height=nwell_height)
pwell_position = vector(0, -0.5 * self.m1_width) pwell_position = vector(0, -0.5 * self.m1_width)
pwell_height = middle_position.y - pwell_position.y pwell_height = middle_position.y - pwell_position.y
if layers["pwell"]: if layer["pwell"]:
self.add_rect(layer="pwell", self.add_rect(layer="pwell",
offset=pwell_position, offset=pwell_position,
width=self.well_width, width=self.well_width,
height=pwell_height) height=pwell_height)
self.add_rect(layer="vtg", if layer["vtg"]:
offset=pwell_position, self.add_rect(layer="vtg",
width=self.well_width, offset=pwell_position,
height=pwell_height) width=self.well_width,
height=pwell_height)
def add_nwell_contact(self, pmos, pmos_pos): def add_nwell_contact(self, pmos, pmos_pos):
""" Add an nwell contact next to the given pmos device. """ """ Add an nwell contact next to the given pmos device. """

View File

@ -7,7 +7,7 @@
# #
import design import design
import debug import debug
from tech import drc, spice from tech import layer, drc, spice
from vector import vector from vector import vector
from sram_factory import factory from sram_factory import factory
@ -319,11 +319,13 @@ class ptx(design.design):
""" """
Add an (optional) well and implant for the type of transistor. Add an (optional) well and implant for the type of transistor.
""" """
if drc("has_{}well".format(self.well_type)): well_name = "{}well".format(self.well_type)
self.add_rect(layer="{}well".format(self.well_type), if layer[well_name]:
self.add_rect(layer=well_name,
offset=(0,0), offset=(0,0),
width=self.cell_well_width, width=self.cell_well_width,
height=self.cell_well_height) height=self.cell_well_height)
if layer["vtg"]:
self.add_rect(layer="vtg", self.add_rect(layer="vtg",
offset=(0,0), offset=(0,0),
width=self.cell_well_width, width=self.cell_well_width,

View File

@ -35,8 +35,8 @@ GDS["zoom"] = 0.5
# create the GDS layer map # create the GDS layer map
layer={} layer={}
layer["vtg"] = (-1, 0) layer["vtg"] = None
layer["vth"] = (-1, 0) layer["vth"] = None
layer["pwell"] = (41, 0) layer["pwell"] = (41, 0)
layer["nwell"] = (42, 0) layer["nwell"] = (42, 0)
layer["active"] = (43, 0) layer["active"] = (43, 0)