146 lines
4.7 KiB
Python
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)
|
|
|
|
|
|
|
|
|