New forge coding added

This commit is contained in:
=
2026-06-04 23:21:39 +08:00
parent 518eb06591
commit 8da92ced57
288 changed files with 52017 additions and 1913 deletions
+68
View File
@@ -0,0 +1,68 @@
from typing import Any
import nazca as nd
from .Foundry import Foundry
from .layer_models import LayerSpec
class AMF_Si220_Active(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', (10,0), aliases=('STRIP_COR',)),
'GRAT' : LayerSpec('GRAT', (11,0), aliases=('SRIB_COR',)),
'SLAB' : LayerSpec('SLAB', (12,0), aliases=('RIB_COR',)),
'SINWIN1' : (53,0),
'SINWG1' : (54,0),
'HTR' : LayerSpec('HTR', (115,0), aliases=('HEATER',)),
'VIA1' : LayerSpec('VIA1', (100,0), aliases=('VIA_S2M',)),
'VIA2' : LayerSpec('VIA2', (120,0), aliases=('VIA_H2M','VIA_M2M')),
'METAL' : (105,0),
'METAL_2' : (125,0),
'BONDPAD' : LayerSpec('BONDPAD', (150,0), aliases=('PAD',)),
'OX_OPEN' : LayerSpec('OX_OPEN', (151,0), aliases=('OPEN',)),
'DT' : LayerSpec('DT', (160,0), aliases=('ISL',)),
### Active part
'PCONT' : LayerSpec('PCONT', (21,0), aliases=('PP',)),
'NCONT' : LayerSpec('NCONT', (22,0), aliases=('NP',)),
'PIM' : LayerSpec('PIM', (23,0), aliases=('PLD',)),
'NIM' : LayerSpec('NIM', (24,0), aliases=('NLD',)),
'IPD' : LayerSpec('IPD', (25,0), aliases=('PLD2',)),
'NPD' : LayerSpec('NPD', (26,0), aliases=('NLD2',)),
'GeEP' : LayerSpec('GeEP', (40,0), aliases=('GE',)),
'PPPGE' : (20,0),
'NPPGE' : (41,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'],growth=[0])
self._add_xsection_(xsection='rib',layers=['STRIP_COR','RIB_COR'],growth=[0,3]) ## 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_2','PAD'],growth=[0,-2.5]) ## DRC 4.2 - [AMF-QP-RND-006]