Use layer instead of special flags for wells

This commit is contained in:
Matt Guthaus 2019-11-26 13:22:52 -08:00
parent 909321326d
commit 102758881a
4 changed files with 8 additions and 13 deletions

View File

@ -8,7 +8,7 @@
import contact
import design
import debug
from tech import drc
from tech import layers
from vector import vector
from globals import OPTS
from sram_factory import factory
@ -141,7 +141,7 @@ class pgate(design.design):
max_y_offset = self.height + 0.5 * self.m1_width
self.nwell_position = middle_position
nwell_height = max_y_offset - middle_position.y
if drc("has_nwell"):
if layers["nwell"]:
self.add_rect(layer="nwell",
offset=middle_position,
width=self.well_width,
@ -153,7 +153,7 @@ class pgate(design.design):
pwell_position = vector(0, -0.5 * self.m1_width)
pwell_height = middle_position.y - pwell_position.y
if drc("has_pwell"):
if layers["pwell"]:
self.add_rect(layer="pwell",
offset=pwell_position,
width=self.well_width,

View File

@ -152,7 +152,8 @@ class ptx(design.design):
self.active_offset = vector([self.well_enclose_active] * 2)
# Well enclosure of active, ensure minwidth as well
if drc("has_{}well".format(self.well_type)):
well_name = "{}well".format(self.well_type)
if layer[well_name]):
self.cell_well_width = max(self.active_width + 2 * self.well_enclose_active,
self.well_width)
self.cell_well_height = max(self.tx_width + 2 * self.well_enclose_active,

View File

@ -46,6 +46,7 @@ layer["thkox"] = (8, 0)
layer["poly"] = (9, 0)
layer["contact"] = (10, 0)
layer["active_contact"] = (10, 0)
layer["poly_contact"] = None
layer["metal1"] = (11, 0)
layer["via1"] = (12, 0)
layer["metal2"] = (13, 0)
@ -89,10 +90,6 @@ drclvs_home=os.environ.get("DRCLVS_HOME")
drc = design_rules("freepdk45")
drc["body_tie_down"] = 0
drc["has_pwell"] = True
drc["has_nwell"] = True
#grid size
drc["grid"] = 0.0025

View File

@ -37,13 +37,14 @@ GDS["zoom"] = 0.5
layer={}
layer["vtg"] = (-1, 0)
layer["vth"] = (-1, 0)
layer["contact"] = (47, 0)
layer["pwell"] = (41, 0)
layer["nwell"] = (42, 0)
layer["active"] = (43, 0)
layer["pimplant"] = (44, 0)
layer["nimplant"] = (45, 0)
layer["poly"] = (46, 0)
layer["poly_contact"] = None
layer["contact"] = (47, 0)
layer["active_contact"] = (48, 0)
layer["metal1"] = (49, 0)
layer["via1"] = (50, 0)
@ -78,10 +79,6 @@ drclvs_home=os.environ.get("DRCLVS_HOME")
drc = design_rules("scn4me_sub")
drc["body_tie_down"] = 0
drc["has_pwell"] = True
drc["has_nwell"] = True
#grid size is 1/2 a lambda
drc["grid"]=0.5*_lambda_