101 lines
2.4 KiB
Python
101 lines
2.4 KiB
Python
from typing import Any
|
|
import nazca as nd
|
|
from .Foundry import Foundry
|
|
|
|
class EOM1_2ML_CU(Foundry) :
|
|
|
|
## Generall parameters
|
|
STD_SMWG_WIDTH = 0.45
|
|
SLAB_GROWTH = 2
|
|
W_METAL_MIN = 5
|
|
SPACING_HEATER_MIN = 2
|
|
SPACING_METAL_MIN = 4
|
|
W_HEATER_MIN = 3
|
|
|
|
lib_path = 'GDS_lib\\'
|
|
|
|
# show_pins = False
|
|
|
|
LAYERS = {
|
|
|
|
'WG_HM' : ((275,0)),
|
|
'WG_STRIP' : ((101,251)),
|
|
'WG_LOWRIB' : ((100,90)),
|
|
'WG_HIGHRIB' : ((232,0)),
|
|
|
|
'HEATER' : ((29,30)),
|
|
'CT_SI' : ((268,0)),
|
|
'CT_GE' : ((35,0)),
|
|
|
|
'UTV' : ((172,0)),
|
|
'RDL_VIA' : ((194,0)),
|
|
|
|
'UTM' : ((173,0)),
|
|
'UTM2' : ((197,0)),
|
|
'RDL_MET' : ((195,0)),
|
|
|
|
'PAD_ELE' : ((100,170)),
|
|
'PAD_OPTICAL' : ((100,160)),
|
|
"PAD_AL" : ((145,0)),
|
|
|
|
"WG_N" : ((263,0)),
|
|
"SiN_Rib_WG" : ((63,30)),
|
|
|
|
"SSIN0" : ((283,0)),
|
|
"SSIN1" : ((289,0)),
|
|
"SSIN2" : ((290,0)),
|
|
"SSIN3" : ((291,0)),
|
|
|
|
"EXCLUSION" : (57,0),
|
|
|
|
"SALICIDE" : ((128,60)),
|
|
|
|
"DM_EXL" : ((23,0)),
|
|
"DM_EXL_FE" : ((23,40)),
|
|
"DM_EXL_BE" : ((23,41)),
|
|
|
|
"OXIDE_FACET" : ((90,0)),
|
|
|
|
"DT" : ((404,0)),
|
|
|
|
### Active part
|
|
'P' : ((256,0)),
|
|
'N' : ((257,0)),
|
|
'PP' : ((258,0)),
|
|
'NP' : ((259,0)),
|
|
'PPP' : ((260,0)),
|
|
'NPP' : ((261,0)),
|
|
|
|
'PD_SIPP' : ((100,140)),
|
|
'PD_SINP' : ((100,150)),
|
|
}
|
|
|
|
ROLES = {
|
|
"strip_core": "WG_STRIP",
|
|
"rib_core": "WG_LOWRIB",
|
|
"rib_low": "WG_LOWRIB",
|
|
"shallow_rib_core": "WG_HIGHRIB",
|
|
"rib_high": "WG_HIGHRIB",
|
|
"heater": "HEATER",
|
|
"metal1": "UTM",
|
|
"metal2": "UTM2",
|
|
"metal3": "RDL_MET",
|
|
"pad": "PAD_ELE",
|
|
"electrical_pad": "PAD_ELE",
|
|
"optical_pad": "PAD_OPTICAL",
|
|
"pad_al": "PAD_AL",
|
|
"via_s2m": "CT_SI",
|
|
"via_h2m": "CT_SI",
|
|
"via_m2m": "RDL_VIA",
|
|
"isolation": "DT",
|
|
"exclusion": "EXCLUSION",
|
|
"n_implant": "N",
|
|
"p_implant": "P",
|
|
"np_implant": "NP",
|
|
"pp_implant": "PP",
|
|
"salicide": "SALICIDE",
|
|
}
|
|
|
|
def __init__(self, layermap: Any=None, roles: Any=None) -> None:
|
|
super().__init__(layermap=layermap or self.LAYERS, roles=roles or self.ROLES)
|