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

51 lines
1.9 KiB
Python

from typing import Any
import nazca as nd
import numpy as np
from .Foundry import Foundry
from .layer_models import LayerSpec
class IMECAS_SiP(Foundry) :
lib_path = 'GDS_lib\\'
W_ISL = 10
SP_ISL = 10
SP_METAL = 1.5
LAYERS = {
'FECOR' : LayerSpec('FECOR', (10,2), aliases=('STRIP_COR',)),
'FECLD' : LayerSpec('FECLD', (10,3), aliases=('STRIP_CLD',)),
'FETCH' : LayerSpec('FETCH', (10,4), aliases=('STRIP_TRE',)),
'SECOR' : LayerSpec('SECOR', (11,2), aliases=('SRIB_COR',)),
'SECLD' : LayerSpec('SECLD', (11,3), aliases=('SRIB_CLD',)),
'SETCH' : LayerSpec('SETCH', (11,4), aliases=('SRIB_TRE',)),
'MECOR' : LayerSpec('MECOR', (12,2), aliases=('RIB_COR',)),
'MECLD' : LayerSpec('MECLD', (12,3), aliases=('RIB_CLD',)),
'METCH' : LayerSpec('METCH', (12,4), aliases=('RIB_TRE',)),
'M1' : LayerSpec('M1', (31,0), aliases=('METAL',)),
'TIN' : LayerSpec('TIN', (34,0), aliases=('HEATER',)),
'PAD' : (36,0),
'DETCH' : (80,0),
}
ROLES = {}
def __init__(self, layermap: Any=None, roles: Any=None) -> None:
super().__init__(layermap=layermap or self.LAYERS, roles=roles or self.ROLES)
self._add_xsection_(xsection='strip',layers=['STRIP_COR','STRIP_CLD'],growth=[0,self.SLAB_GROWTH])
self._add_xsection_(xsection='rib_s',layers=['RIB_COR','RIB_CLD'],growth=[0,self.SLAB_GROWTH])
self._add_xsection_(xsection='rib',layers=['RIB_COR','RIB_CLD','STRIP_COR','STRIP_CLD'],growth=[0,self.SLAB_GROWTH*2,self.SLAB_GROWTH,self.SLAB_GROWTH*2])
self._add_xsection_(xsection='drib',layers=['RIB_COR','RIB_CLD','STRIP_COR','STRIP_CLD'],growth=[0,self.SLAB_GROWTH*2,self.SLAB_GROWTH,self.SLAB_GROWTH*2])
self._add_xsection_(xsection='pad',layers=['METAL','PAD'],growth=[5,0])
self._add_xsection_(xsection='isl',layers=['DETCH'],growth=[0])