New forge coding added
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
from typing import Any
|
||||
import nazca as nd
|
||||
from .Foundry import Foundry
|
||||
from .layer_models import LayerSpec
|
||||
|
||||
class CT_CU3ML(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 = {
|
||||
|
||||
'RIB' : LayerSpec('RIB', (275,0), aliases=('STRIP_COR',)),
|
||||
|
||||
'GRAT' : LayerSpec('GRAT', (407,0), aliases=('SRIB_COR',)),
|
||||
|
||||
'SLAB' : LayerSpec('SLAB', (406,0), aliases=('RIB_COR',)),
|
||||
|
||||
'NitrideWG' : LayerSpec('NitrideWG', (263,0), aliases=('SINWG',)),
|
||||
'NitrideWG_RIB' : LayerSpec('NitrideWG_RIB', (415,0), aliases=('RIB_SIN',), description='Legacy map used NitrideWG for this layer.'),
|
||||
|
||||
'TIN' : LayerSpec('TIN', (398,0), aliases=('HEATER',)),
|
||||
|
||||
'ContSi' : LayerSpec('ContSi', (268,0), aliases=('VIA_S2M',)),
|
||||
'ContGe' : LayerSpec('ContGe', (35,0), aliases=('VIA_G2M',)),
|
||||
# 'VIA1' : LayerSpec('VIA1', (85,0), aliases=('VIA_H2M',)),
|
||||
'VIA1' : LayerSpec('VIA1', (85,0), aliases=('VIA_M2M',)),
|
||||
'VIA2' : LayerSpec('VIA2', (86,0), aliases=('VIA_M2M_2',)),
|
||||
'VIA3' : LayerSpec('VIA3', (419,0), aliases=('VIA_M2M_3',)),
|
||||
|
||||
'M1' : LayerSpec('M1', (6,0), aliases=('METAL',)),
|
||||
'M2' : LayerSpec('M2', (86,0), aliases=('METAL_2',)),
|
||||
'M3' : LayerSpec('M3', (27,0), aliases=('METAL_3','PAD')),
|
||||
|
||||
'BEOL_N0_RMV' : LayerSpec('BEOL_N0_RMV', (283,0), aliases=('N0RMV',)),
|
||||
'BEOL_N1_RMV' : LayerSpec('BEOL_N1_RMV', (289,0), aliases=('N1RMV',)),
|
||||
'BEOL_N2_RMV' : LayerSpec('BEOL_N2_RMV', (290,0), aliases=('N2RMV',)),
|
||||
'BEOL_N3_RMV' : LayerSpec('BEOL_N3_RMV', (291,0), aliases=('N3RMV',)),
|
||||
|
||||
'SIN_RMV' : LayerSpec('SIN_RMV', (483,0), aliases=('PAD_OPEN',)),
|
||||
|
||||
'DT' : LayerSpec('DT', (404,0), aliases=('ISL',)),
|
||||
|
||||
### Active part
|
||||
'P' : (256,0),
|
||||
'N' : (257,0),
|
||||
'P+' : (258,0),
|
||||
'N+' : (259,0),
|
||||
'P++' : (260,0),
|
||||
'N++' : (261,0),
|
||||
|
||||
'GePD' : LayerSpec('GePD', (262,0), aliases=('GE',)),
|
||||
'GeN+' : LayerSpec('GeN+', (265,0), aliases=('GN+',)),
|
||||
'GeP+' : LayerSpec('GeP+', (266,0), aliases=('GP+',)),
|
||||
'GeWindow' : LayerSpec('GeWindow', (264,0), aliases=('GW',)),
|
||||
}
|
||||
|
||||
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'],growth=[0])
|
||||
self._add_xsection_(xsection='rib',layers=['STRIP_COR','RIB_COR'],growth=[0,4]) ## Slab waveguide
|
||||
self._add_xsection_(xsection='rib_s',layers=['STRIP_COR','SRIB_COR'],growth=[0,4]) ## Slab waveguide
|
||||
self._add_xsection_(xsection='isl',layers=['ISL'],growth=[0])
|
||||
# self._add_xsection_(xsection='sn',layers=['SINWG1','SINWIN1'],growth=[0,21])
|
||||
|
||||
self._add_xsection_(xsection='pad',layers=['METAL_3','PAD_OPEN'],growth=[0,-2.5]) ## DRC 4.2 - [AMF-QP-RND-006]
|
||||
Reference in New Issue
Block a user