Files
mxpic_forge/mxpic/components/pdks/qy_pdk_A.py
T
2026-06-04 23:21:39 +08:00

146 lines
4.7 KiB
Python

from typing import Optional
import numpy as np
import nazca as nd
from ..primitives.passive import *
from ..gds_devices import generate_gds_lib
""" test passed, in ANT-20230228 submission """
class DC_pX3_50_50_Cband(DC_pX_3sg):
def __init__(self, w_wg: float=0.5,gds_lib_generate: bool=False,name: Optional[str]=None) -> None:
# DC_50_50_pX3 = mx.passive.DC_pX_3sg(name="DC_50_50_pX3",Lc1=33, Lp1=0.55, Lc2=15, Lt=1, w_cp=0.5, dw=0.1, gap=0.2, R0=17.5, A=20, w_wg=0.5, pX_type='symmetric', sharp_patch=True)
super().__init__(name=name,xs_wg='strip', Lc1=33, Lp1=0.55, Lc2=15, Lt=1, w_cp=0.5, dw=0.1, gap=0.2, R0=17.5, A=20, w_wg=w_wg, pX_type='symmetric', sharp_patch=True)
if (gds_lib_generate):
self.generate_gds_lib()
def generate_gds_lib(self):
generate_gds_lib("DC_pX3_50_50_Cband",self.cell,with_txt=True)
class MMG_1D_D14um_1550_2modes(GC_STD_1D):
def __init__(self, w_wg: float = 0.5, gds_lib_generate:bool=False) -> None:
pitch_1D_apodized = np.linspace(0.602,0.602,40)
eta_1D_apodized = np.linspace(0.389,0.613,40)
super().__init__(xs_wg='strip', w_wg=w_wg, etch_type='SETCH', xs_open='gc_open', L_taper=500, L_end=5, A_taper=2.5,
Pitch=pitch_1D_apodized, eta_etch=eta_1D_apodized, num=len(eta_1D_apodized), shape='rectangle')
if (gds_lib_generate):
self.generate_gds_lib()
def generate_gds_lib(self):
generate_gds_lib("MMG_1D_D14um_1550_2modes",self.cell,with_txt=True)
""" Aborted due to failure testing, 2022.12.30 """
class MDM_ADC_TE1_1550(MDM):
def __init__(self,w_wg: float=0.45,gds_lib_generate: bool=False) -> None:
"""
w_wg the single mode input for the device
"""
self.wb0 = 0.44
self.wb1 = 0.61
self.wb_in = 0.45
self.wb_out = 0.85
self.w0 = 0.33
self.w1 = 0.2
self.w_wg = w_wg
self.xs='strip'
self.Lt_bus = 22
self.Lt_cp = 22
self.R0 = 40
self.Rmin=8
self.angle=22.5
self.gap0=0.2
self.gap1=0.2
super().__init__(xs=self.xs,
wb0=self.wb0, wb1=self.wb1, wb_in=self.wb_in, wb_out=self.wb_out,
w_wg=self.w_wg, w0=self.w0, w1=self.w1,
gap0=self.gap0, Lt_bus=self.Lt_bus, R0=self.R0, angle=self.angle, Lt_cp=self.Lt_cp, gap1=self.gap1,
name=None, Lb0=None, symmetric_BUS=False, single_end=True)
if (gds_lib_generate):
self.generate_gds_lib()
def generate_gds_lib(self):
generate_gds_lib("MDM_ADC_TE1_1550",self.cell,with_txt=True)
class MDM_ADC_TE2_1550(MDM):
def __init__(self,w_wg: float=0.45,gds_lib_generate: bool=False) -> None:
"""
w_wg the single mode input for the device
"""
self.wb0 = 0.85
self.wb1 = 1.04
self.wb_in = 0.85
self.wb_out = 1.2
self.w0 = 0.33
self.w1 = 0.2
self.w_wg = w_wg
self.xs='strip'
self.Lt_bus = 32
self.Lt_cp = 32
self.R0 = 40
self.Rmin=8
self.angle=22.5
self.gap0=0.2
self.gap1=0.2
super().__init__(xs=self.xs,
wb0=self.wb0, wb1=self.wb1, wb_in=self.wb_in, wb_out=self.wb_out,
w_wg=self.w_wg, w0=self.w0, w1=self.w1,
gap0=self.gap0, Lt_bus=self.Lt_bus, R0=self.R0, angle=self.angle, Lt_cp=self.Lt_cp, gap1=self.gap1,
name=None, Lb0=None, symmetric_BUS=False, single_end=None)
if (gds_lib_generate):
self.generate_gds_lib()
def generate_gds_lib(self):
generate_gds_lib("MDM_ADC_TE2_1550",self.cell,with_txt=True)
class MDM_ADC_TE3_1550(MDM):
def __init__(self,w_wg: float=0.45,gds_lib_generate: bool=False) -> None:
"""
w_wg the single mode input for the device
"""
self.wb0 = 1.25
self.wb1 = 1.41
self.wb_in = 1.2
self.wb_out = 1.8
self.w0 = 0.33
self.w1 = 0.2
self.w_wg = w_wg
self.xs = 'strip'
self.Lt_bus = 70
self.Lt_cp = 70
self.R0 = 40
self.Rmin=8
self.angle=22.5
self.gap0=0.2
self.gap1=0.2
super().__init__(xs=self.xs,
wb0=self.wb0, wb1=self.wb1, wb_in=self.wb_in, wb_out=self.wb_out,
w_wg=self.w_wg, w0=self.w0, w1=self.w1,
gap0=self.gap0, Lt_bus=self.Lt_bus, R0=self.R0, angle=self.angle, Lt_cp=self.Lt_cp, gap1=self.gap1,
name=None, Lb0=None, symmetric_BUS=False, single_end=None)
if (gds_lib_generate):
self.generate_gds_lib()
def generate_gds_lib(self):
generate_gds_lib("MDM_ADC_TE3_1550",self.cell,with_txt=True)