diff --git a/compiler/pgates/pgate.py b/compiler/pgates/pgate.py index a7974cd2..0c1c0b52 100644 --- a/compiler/pgates/pgate.py +++ b/compiler/pgates/pgate.py @@ -8,7 +8,7 @@ import contact import design import debug -from tech import layers +from tech import layer, drc from vector import vector from globals import OPTS from sram_factory import factory @@ -141,27 +141,29 @@ 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 layers["nwell"]: + if layer["nwell"]: self.add_rect(layer="nwell", offset=middle_position, width=self.well_width, height=nwell_height) - self.add_rect(layer="vtg", - offset=self.nwell_position, - width=self.well_width, - height=nwell_height) + if layer["vtg"]: + self.add_rect(layer="vtg", + offset=self.nwell_position, + width=self.well_width, + height=nwell_height) pwell_position = vector(0, -0.5 * self.m1_width) pwell_height = middle_position.y - pwell_position.y - if layers["pwell"]: + if layer["pwell"]: self.add_rect(layer="pwell", offset=pwell_position, width=self.well_width, height=pwell_height) - self.add_rect(layer="vtg", - offset=pwell_position, - width=self.well_width, - height=pwell_height) + if layer["vtg"]: + self.add_rect(layer="vtg", + offset=pwell_position, + width=self.well_width, + height=pwell_height) def add_nwell_contact(self, pmos, pmos_pos): """ Add an nwell contact next to the given pmos device. """ diff --git a/compiler/pgates/ptx.py b/compiler/pgates/ptx.py index 64e6a893..f3180840 100644 --- a/compiler/pgates/ptx.py +++ b/compiler/pgates/ptx.py @@ -7,7 +7,7 @@ # import design import debug -from tech import drc, spice +from tech import layer, drc, spice from vector import vector from sram_factory import factory @@ -319,11 +319,13 @@ class ptx(design.design): """ Add an (optional) well and implant for the type of transistor. """ - if drc("has_{}well".format(self.well_type)): - self.add_rect(layer="{}well".format(self.well_type), + well_name = "{}well".format(self.well_type) + if layer[well_name]: + self.add_rect(layer=well_name, offset=(0,0), width=self.cell_well_width, height=self.cell_well_height) + if layer["vtg"]: self.add_rect(layer="vtg", offset=(0,0), width=self.cell_well_width, diff --git a/technology/scn4m_subm/tech/tech.py b/technology/scn4m_subm/tech/tech.py index 60dc8421..8d466023 100644 --- a/technology/scn4m_subm/tech/tech.py +++ b/technology/scn4m_subm/tech/tech.py @@ -35,8 +35,8 @@ GDS["zoom"] = 0.5 # create the GDS layer map layer={} -layer["vtg"] = (-1, 0) -layer["vth"] = (-1, 0) +layer["vtg"] = None +layer["vth"] = None layer["pwell"] = (41, 0) layer["nwell"] = (42, 0) layer["active"] = (43, 0)