Files
mxpic_forge/mxpic/technologies/Silterra.py
T
2026-06-04 23:21:39 +08:00

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)