mirror of https://github.com/VLSIDA/OpenRAM.git
Use layer instead of special flags for wells
This commit is contained in:
parent
909321326d
commit
102758881a
|
|
@ -8,7 +8,7 @@
|
||||||
import contact
|
import contact
|
||||||
import design
|
import design
|
||||||
import debug
|
import debug
|
||||||
from tech import drc
|
from tech import layers
|
||||||
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,7 +141,7 @@ 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 drc("has_nwell"):
|
if layers["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,
|
||||||
|
|
@ -153,7 +153,7 @@ class pgate(design.design):
|
||||||
|
|
||||||
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 drc("has_pwell"):
|
if layers["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,
|
||||||
|
|
|
||||||
|
|
@ -152,7 +152,8 @@ class ptx(design.design):
|
||||||
self.active_offset = vector([self.well_enclose_active] * 2)
|
self.active_offset = vector([self.well_enclose_active] * 2)
|
||||||
|
|
||||||
# Well enclosure of active, ensure minwidth as well
|
# 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.cell_well_width = max(self.active_width + 2 * self.well_enclose_active,
|
||||||
self.well_width)
|
self.well_width)
|
||||||
self.cell_well_height = max(self.tx_width + 2 * self.well_enclose_active,
|
self.cell_well_height = max(self.tx_width + 2 * self.well_enclose_active,
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,7 @@ layer["thkox"] = (8, 0)
|
||||||
layer["poly"] = (9, 0)
|
layer["poly"] = (9, 0)
|
||||||
layer["contact"] = (10, 0)
|
layer["contact"] = (10, 0)
|
||||||
layer["active_contact"] = (10, 0)
|
layer["active_contact"] = (10, 0)
|
||||||
|
layer["poly_contact"] = None
|
||||||
layer["metal1"] = (11, 0)
|
layer["metal1"] = (11, 0)
|
||||||
layer["via1"] = (12, 0)
|
layer["via1"] = (12, 0)
|
||||||
layer["metal2"] = (13, 0)
|
layer["metal2"] = (13, 0)
|
||||||
|
|
@ -89,10 +90,6 @@ drclvs_home=os.environ.get("DRCLVS_HOME")
|
||||||
|
|
||||||
drc = design_rules("freepdk45")
|
drc = design_rules("freepdk45")
|
||||||
|
|
||||||
drc["body_tie_down"] = 0
|
|
||||||
drc["has_pwell"] = True
|
|
||||||
drc["has_nwell"] = True
|
|
||||||
|
|
||||||
#grid size
|
#grid size
|
||||||
drc["grid"] = 0.0025
|
drc["grid"] = 0.0025
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,13 +37,14 @@ GDS["zoom"] = 0.5
|
||||||
layer={}
|
layer={}
|
||||||
layer["vtg"] = (-1, 0)
|
layer["vtg"] = (-1, 0)
|
||||||
layer["vth"] = (-1, 0)
|
layer["vth"] = (-1, 0)
|
||||||
layer["contact"] = (47, 0)
|
|
||||||
layer["pwell"] = (41, 0)
|
layer["pwell"] = (41, 0)
|
||||||
layer["nwell"] = (42, 0)
|
layer["nwell"] = (42, 0)
|
||||||
layer["active"] = (43, 0)
|
layer["active"] = (43, 0)
|
||||||
layer["pimplant"] = (44, 0)
|
layer["pimplant"] = (44, 0)
|
||||||
layer["nimplant"] = (45, 0)
|
layer["nimplant"] = (45, 0)
|
||||||
layer["poly"] = (46, 0)
|
layer["poly"] = (46, 0)
|
||||||
|
layer["poly_contact"] = None
|
||||||
|
layer["contact"] = (47, 0)
|
||||||
layer["active_contact"] = (48, 0)
|
layer["active_contact"] = (48, 0)
|
||||||
layer["metal1"] = (49, 0)
|
layer["metal1"] = (49, 0)
|
||||||
layer["via1"] = (50, 0)
|
layer["via1"] = (50, 0)
|
||||||
|
|
@ -78,10 +79,6 @@ drclvs_home=os.environ.get("DRCLVS_HOME")
|
||||||
|
|
||||||
drc = design_rules("scn4me_sub")
|
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
|
#grid size is 1/2 a lambda
|
||||||
drc["grid"]=0.5*_lambda_
|
drc["grid"]=0.5*_lambda_
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue