51 lines
1.9 KiB
Python
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])
|