Folder structure simplfied
This commit is contained in:
@@ -4,7 +4,7 @@ import nazca as nd
|
||||
import numpy as np
|
||||
import nazca.interconnects as IC
|
||||
|
||||
from ...structures import *
|
||||
from ...geometry import *
|
||||
from ...routing import *
|
||||
|
||||
from .unit import *
|
||||
@@ -16,6 +16,56 @@ from ...electronics import Vias
|
||||
from ...basic import __array_convert__,__list_convert__,__xs_exist__,__cell_arg__
|
||||
|
||||
class STD_CROW_V:
|
||||
"""
|
||||
STD CROW V primitive component.
|
||||
|
||||
This component builds the STD CROW V layout cell.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
ring : Any
|
||||
Ring cell or component used by this composite.
|
||||
bus : Any
|
||||
Bus waveguide cell or component used by this composite.
|
||||
w_bus : float or list
|
||||
Width parameter in microns.
|
||||
w_ring : float or list
|
||||
Width parameter in microns.
|
||||
sz_ring : float or list
|
||||
Value for the sz_ring parameter.
|
||||
sz_bus : float or list
|
||||
Value for the sz_bus parameter.
|
||||
name : str, optional
|
||||
Unique identifier for the device cell. Default is None.
|
||||
gap_crows : float or list, optional
|
||||
Spacing or gap parameter in microns. Default is [0.4].
|
||||
gap_cp : float or list, optional
|
||||
Spacing or gap parameter in microns. Default is [0.45, 0.45].
|
||||
w_heater : float or list, optional
|
||||
Width parameter in microns. Default is 0.
|
||||
xs_heater : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'heater'.
|
||||
connected : bool, optional
|
||||
Value for the connected parameter. Default is True.
|
||||
w_metal : float, optional
|
||||
Width parameter in microns. Default is 8.
|
||||
xs_metal : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'metal'.
|
||||
via_h2m : Any, optional
|
||||
Via definition used between heater and metal layers. Default is None.
|
||||
isl : Any, optional
|
||||
Isolation-trench definition used by the electrical layout. Default is None.
|
||||
ht_shift : int, optional
|
||||
Value for the ht_shift parameter. Default is 0.
|
||||
A_ht : int, optional
|
||||
Angle parameter in degrees. Default is 45.
|
||||
ISL_LEFT : bool, optional
|
||||
Value for the ISL_LEFT parameter. Default is True.
|
||||
ISL_RIGHT : bool, optional
|
||||
Value for the ISL_RIGHT parameter. Default is True.
|
||||
show_pins : bool, optional
|
||||
Whether to draw pin markers in the generated layout. Default is False.
|
||||
"""
|
||||
def __init__(self,
|
||||
|
||||
ring: Any,
|
||||
@@ -425,6 +475,82 @@ class STD_CROW_V:
|
||||
|
||||
|
||||
class CROW_Eul_Ring(STD_CROW_V) :
|
||||
"""
|
||||
CROW Eul Ring primitive component.
|
||||
|
||||
This component builds the CROW Eul Ring layout cell.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
name : str
|
||||
Unique identifier for the device cell.
|
||||
R0 : int, optional
|
||||
Radius parameter in microns. Default is 10.
|
||||
R1 : int, optional
|
||||
Radius parameter in microns. Default is 3.
|
||||
w0 : float, optional
|
||||
Width parameter in microns. Default is 0.38.
|
||||
w1 : float, optional
|
||||
Width parameter in microns. Default is 0.65.
|
||||
w_bus : float, optional
|
||||
Width parameter in microns. Default is 0.35.
|
||||
R_att : int, optional
|
||||
Radius parameter in microns. Default is 15.
|
||||
R_att_min : int, optional
|
||||
Radius parameter in microns. Default is 3.
|
||||
A_att : int, optional
|
||||
Angle parameter in degrees. Default is 30.
|
||||
w_wg : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
dLx : float, optional
|
||||
Value for the dLx parameter. Default is 0.
|
||||
dLy : float, optional
|
||||
Value for the dLy parameter. Default is 0.
|
||||
xs_wg : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'strip'.
|
||||
gap_crows : list, optional
|
||||
Spacing or gap parameter in microns. Default is [0.4].
|
||||
gap_cp : float, optional
|
||||
Spacing or gap parameter in microns. Default is 0.45.
|
||||
w_heater : float, optional
|
||||
Width parameter in microns. Default is 0.
|
||||
xs_heater : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'heater'.
|
||||
connected : bool, optional
|
||||
Value for the connected parameter. Default is True.
|
||||
w_metal : float, optional
|
||||
Width parameter in microns. Default is 8.
|
||||
xs_metal : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'metal'.
|
||||
via_h2m : Any, optional
|
||||
Via definition used between heater and metal layers. Default is None.
|
||||
isl : Any, optional
|
||||
Isolation-trench definition used by the electrical layout. Default is None.
|
||||
ISL_LEFT : bool, optional
|
||||
Value for the ISL_LEFT parameter. Default is True.
|
||||
ISL_RIGHT : bool, optional
|
||||
Value for the ISL_RIGHT parameter. Default is True.
|
||||
show_pins : bool, optional
|
||||
Whether to draw pin markers in the generated layout. Default is False.
|
||||
sharp_patch : bool, optional
|
||||
Whether to add geometry patches for sharp corners or cladding continuity. Default is True.
|
||||
dL_p2p : Optional[float], optional
|
||||
Value for the dL_p2p parameter. Default is None.
|
||||
Ltp_bus : int, optional
|
||||
Length parameter in microns. Default is 0.
|
||||
ht_shift : int, optional
|
||||
Value for the ht_shift parameter. Default is 0.
|
||||
A_ht : int, optional
|
||||
Angle parameter in degrees. Default is 45.
|
||||
R_cp : Any, optional
|
||||
Radius parameter in microns. Default is None.
|
||||
bus_order : float, optional
|
||||
Value for the bus_order parameter. Default is 1.0.
|
||||
width_type : str, optional
|
||||
Width parameter in microns. Default is 'crow_customize'.
|
||||
A_cp : int, optional
|
||||
Angle parameter in degrees. Default is 0.
|
||||
"""
|
||||
def __init__(self,
|
||||
name: str,
|
||||
R0: int = 10, R1: int=3,
|
||||
@@ -516,6 +642,76 @@ class CROW_Eul_Ring(STD_CROW_V) :
|
||||
A_ht=A_ht)
|
||||
|
||||
class CROW_Eul_RCK(STD_CROW_V) :
|
||||
"""
|
||||
CROW Eul RCK primitive component.
|
||||
|
||||
This component builds the CROW Eul RCK layout cell.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
R0 : int, optional
|
||||
Radius parameter in microns. Default is 10.
|
||||
R1 : int, optional
|
||||
Radius parameter in microns. Default is 3.
|
||||
R2 : int, optional
|
||||
Radius parameter in microns. Default is 20.
|
||||
w0 : float, optional
|
||||
Width parameter in microns. Default is 0.38.
|
||||
w1 : float, optional
|
||||
Width parameter in microns. Default is 0.65.
|
||||
w_bus : float, optional
|
||||
Width parameter in microns. Default is 0.35.
|
||||
R_att : int, optional
|
||||
Radius parameter in microns. Default is 15.
|
||||
R_att_min : int, optional
|
||||
Radius parameter in microns. Default is 3.
|
||||
A_att : int, optional
|
||||
Angle parameter in degrees. Default is 30.
|
||||
w_wg : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
dAc : float, optional
|
||||
Value for the dAc parameter. Default is 0.
|
||||
dLx : float, optional
|
||||
Value for the dLx parameter. Default is 0.
|
||||
dLy : float, optional
|
||||
Value for the dLy parameter. Default is 0.
|
||||
xs_wg : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'strip'.
|
||||
gap_crows : list, optional
|
||||
Spacing or gap parameter in microns. Default is [0.4].
|
||||
gap_cp : float, optional
|
||||
Spacing or gap parameter in microns. Default is 0.45.
|
||||
w_heater : float, optional
|
||||
Width parameter in microns. Default is 0.
|
||||
xs_heater : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'heater'.
|
||||
connected : bool, optional
|
||||
Value for the connected parameter. Default is True.
|
||||
w_metal : float, optional
|
||||
Width parameter in microns. Default is 8.
|
||||
xs_metal : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'metal'.
|
||||
via_h2m : Any, optional
|
||||
Via definition used between heater and metal layers. Default is None.
|
||||
isl : Any, optional
|
||||
Isolation-trench definition used by the electrical layout. Default is None.
|
||||
ISL_LEFT : bool, optional
|
||||
Value for the ISL_LEFT parameter. Default is True.
|
||||
ISL_RIGHT : bool, optional
|
||||
Value for the ISL_RIGHT parameter. Default is True.
|
||||
show_pins : bool, optional
|
||||
Whether to draw pin markers in the generated layout. Default is False.
|
||||
sharp_patch : bool, optional
|
||||
Whether to add geometry patches for sharp corners or cladding continuity. Default is True.
|
||||
dL_p2p : Optional[float], optional
|
||||
Value for the dL_p2p parameter. Default is None.
|
||||
Ltp_bus : int, optional
|
||||
Length parameter in microns. Default is 0.
|
||||
ht_shift : int, optional
|
||||
Value for the ht_shift parameter. Default is 0.
|
||||
A_ht : int, optional
|
||||
Angle parameter in degrees. Default is 45.
|
||||
"""
|
||||
def __init__(self,
|
||||
R0: int = 10, R1: int=3,R2: int=20,
|
||||
w0: float = 0.38,w1: float=0.65,
|
||||
@@ -590,6 +786,84 @@ class CROW_Eul_RCK(STD_CROW_V) :
|
||||
|
||||
""" Circular ring """
|
||||
class CROW_Circular_ring(STD_CROW_V):
|
||||
"""
|
||||
CROW Circular ring primitive component.
|
||||
|
||||
This component builds the CROW Circular ring layout cell.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
r_ring : float, optional
|
||||
Radius parameter in microns. Default is 10.
|
||||
w_ring : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
xs_ring : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'strip'.
|
||||
w1_bus : float, optional
|
||||
Value for the w1_bus parameter. Default is 0.45.
|
||||
A1_cp : int, optional
|
||||
Angle parameter in degrees. Default is 10.
|
||||
w2_bus : float, optional
|
||||
Value for the w2_bus parameter. Default is 0.45.
|
||||
A2_cp : int, optional
|
||||
Angle parameter in degrees. Default is 10.
|
||||
gap1 : float, optional
|
||||
Spacing or gap parameter in microns. Default is 0.45.
|
||||
gap2 : float, optional
|
||||
Spacing or gap parameter in microns. Default is 0.45.
|
||||
w_wg : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
Euler_trasition : bool, optional
|
||||
Value for the Euler_trasition parameter. Default is True.
|
||||
R1_cp : Any, optional
|
||||
Radius parameter in microns. Default is None.
|
||||
R2_cp : Any, optional
|
||||
Radius parameter in microns. Default is None.
|
||||
R1_att : float, optional
|
||||
Radius parameter in microns. Default is 10.
|
||||
R2_att : float, optional
|
||||
Radius parameter in microns. Default is 10.
|
||||
R1_att_min : float, optional
|
||||
Radius parameter in microns. Default is 5.
|
||||
R2_att_min : float, optional
|
||||
Radius parameter in microns. Default is 5.
|
||||
A1_att : int, optional
|
||||
Angle parameter in degrees. Default is 45.
|
||||
A2_att : int, optional
|
||||
Angle parameter in degrees. Default is 45.
|
||||
gap_crows : float or list, optional
|
||||
Spacing or gap parameter in microns. Default is [0.4].
|
||||
w_heater : float or list, optional
|
||||
Width parameter in microns. Default is 0.
|
||||
xs_heater : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'heater'.
|
||||
connected : bool, optional
|
||||
Value for the connected parameter. Default is True.
|
||||
w_metal : float, optional
|
||||
Width parameter in microns. Default is 8.
|
||||
xs_metal : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'metal'.
|
||||
via_h2m : Any, optional
|
||||
Via definition used between heater and metal layers. Default is None.
|
||||
isl : Any, optional
|
||||
Isolation-trench definition used by the electrical layout. Default is None.
|
||||
ISL_LEFT : bool, optional
|
||||
Value for the ISL_LEFT parameter. Default is True.
|
||||
ISL_RIGHT : bool, optional
|
||||
Value for the ISL_RIGHT parameter. Default is True.
|
||||
show_pins : bool, optional
|
||||
Whether to draw pin markers in the generated layout. Default is False.
|
||||
sharp_patch : bool, optional
|
||||
Whether to add geometry patches for sharp corners or cladding continuity. Default is True.
|
||||
dL_p2p : Optional[float], optional
|
||||
Value for the dL_p2p parameter. Default is None.
|
||||
Ltp_bus : int, optional
|
||||
Length parameter in microns. Default is 0.
|
||||
ht_shift : int, optional
|
||||
Value for the ht_shift parameter. Default is 0.
|
||||
A_ht : int, optional
|
||||
Angle parameter in degrees. Default is 45.
|
||||
"""
|
||||
def __init__(self,
|
||||
r_ring: float = 10, w_ring:float = 0.45,xs_ring: str='strip',
|
||||
w1_bus: float = 0.45,A1_cp: int = 10,
|
||||
@@ -723,6 +997,64 @@ class CROW_Circular_ring(STD_CROW_V):
|
||||
|
||||
""" CROW with standard identical ring """
|
||||
class CROW_STD_Allpass(CROW_Circular_ring):
|
||||
"""
|
||||
CROW STD Allpass primitive component.
|
||||
|
||||
This component builds the CROW STD Allpass layout cell.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
r_ring : float, optional
|
||||
Radius parameter in microns. Default is 10.
|
||||
w_ring : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
xs_ring : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'strip'.
|
||||
w_bus : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
A_cp : int, optional
|
||||
Angle parameter in degrees. Default is 10.
|
||||
gap_bus : float, optional
|
||||
Spacing or gap parameter in microns. Default is 0.45.
|
||||
w_wg : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
Euler_trasition : bool, optional
|
||||
Value for the Euler_trasition parameter. Default is True.
|
||||
R_att : float, optional
|
||||
Radius parameter in microns. Default is 10.
|
||||
R_att_min : float, optional
|
||||
Radius parameter in microns. Default is 5.
|
||||
A_att : int, optional
|
||||
Angle parameter in degrees. Default is 45.
|
||||
gap_crows : float or list, optional
|
||||
Spacing or gap parameter in microns. Default is [0.4].
|
||||
w_heater : float or list, optional
|
||||
Width parameter in microns. Default is 0.
|
||||
xs_heater : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'heater'.
|
||||
connected : bool, optional
|
||||
Value for the connected parameter. Default is True.
|
||||
w_metal : float, optional
|
||||
Width parameter in microns. Default is 8.
|
||||
xs_metal : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'metal'.
|
||||
via_h2m : Any, optional
|
||||
Via definition used between heater and metal layers. Default is None.
|
||||
isl : Any, optional
|
||||
Isolation-trench definition used by the electrical layout. Default is None.
|
||||
show_pins : bool, optional
|
||||
Whether to draw pin markers in the generated layout. Default is False.
|
||||
sharp_patch : bool, optional
|
||||
Whether to add geometry patches for sharp corners or cladding continuity. Default is True.
|
||||
dL_p2p : Optional[float], optional
|
||||
Value for the dL_p2p parameter. Default is None.
|
||||
Ltp_bus : int, optional
|
||||
Length parameter in microns. Default is 0.
|
||||
ht_shift : int, optional
|
||||
Value for the ht_shift parameter. Default is 0.
|
||||
A_ht : int, optional
|
||||
Angle parameter in degrees. Default is 45.
|
||||
"""
|
||||
def __init__(self,
|
||||
r_ring: float=10,
|
||||
w_ring: float = 0.45,
|
||||
@@ -786,6 +1118,64 @@ class CROW_STD_Allpass(CROW_Circular_ring):
|
||||
A_ht=A_ht)
|
||||
|
||||
class CROW_STD_Adddrop(CROW_Circular_ring):
|
||||
"""
|
||||
CROW STD Adddrop primitive component.
|
||||
|
||||
This component builds the CROW STD Adddrop layout cell.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
r_ring : float, optional
|
||||
Radius parameter in microns. Default is 10.
|
||||
w_ring : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
xs_ring : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'strip'.
|
||||
w_bus : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
A_cp : int, optional
|
||||
Angle parameter in degrees. Default is 10.
|
||||
gap_bus : float, optional
|
||||
Spacing or gap parameter in microns. Default is 0.45.
|
||||
w_wg : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
Euler_trasition : bool, optional
|
||||
Value for the Euler_trasition parameter. Default is True.
|
||||
R_att : float, optional
|
||||
Radius parameter in microns. Default is 10.
|
||||
R_att_min : float, optional
|
||||
Radius parameter in microns. Default is 5.
|
||||
A_att : int, optional
|
||||
Angle parameter in degrees. Default is 45.
|
||||
gap_crows : float or list, optional
|
||||
Spacing or gap parameter in microns. Default is [0.4].
|
||||
w_heater : float or list, optional
|
||||
Width parameter in microns. Default is 0.
|
||||
xs_heater : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'heater'.
|
||||
connected : bool, optional
|
||||
Value for the connected parameter. Default is True.
|
||||
w_metal : float, optional
|
||||
Width parameter in microns. Default is 8.
|
||||
xs_metal : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'metal'.
|
||||
via_h2m : Any, optional
|
||||
Via definition used between heater and metal layers. Default is None.
|
||||
isl : Any, optional
|
||||
Isolation-trench definition used by the electrical layout. Default is None.
|
||||
show_pins : bool, optional
|
||||
Whether to draw pin markers in the generated layout. Default is False.
|
||||
sharp_patch : bool, optional
|
||||
Whether to add geometry patches for sharp corners or cladding continuity. Default is True.
|
||||
dL_p2p : Optional[float], optional
|
||||
Value for the dL_p2p parameter. Default is None.
|
||||
Ltp_bus : int, optional
|
||||
Length parameter in microns. Default is 0.
|
||||
ht_shift : int, optional
|
||||
Value for the ht_shift parameter. Default is 0.
|
||||
A_ht : int, optional
|
||||
Angle parameter in degrees. Default is 45.
|
||||
"""
|
||||
def __init__(self,
|
||||
r_ring: float=10,
|
||||
w_ring: float = 0.45,
|
||||
@@ -851,6 +1241,90 @@ class CROW_STD_Adddrop(CROW_Circular_ring):
|
||||
|
||||
""" Adiabatic Elipse Diameter """
|
||||
class CROW_AED(STD_CROW_V):
|
||||
"""
|
||||
CROW AED primitive component.
|
||||
|
||||
This component builds the CROW AED layout cell.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
r_outer : float, optional
|
||||
Radius parameter in microns. Default is 10.
|
||||
wa : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
wb : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
xs_ring : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'strip'.
|
||||
w1_bus : float, optional
|
||||
Value for the w1_bus parameter. Default is 0.45.
|
||||
A1_cp : int, optional
|
||||
Angle parameter in degrees. Default is 10.
|
||||
w2_bus : float, optional
|
||||
Value for the w2_bus parameter. Default is 0.45.
|
||||
A2_cp : int, optional
|
||||
Angle parameter in degrees. Default is 10.
|
||||
gap1 : float, optional
|
||||
Spacing or gap parameter in microns. Default is 0.45.
|
||||
gap2 : float, optional
|
||||
Spacing or gap parameter in microns. Default is 0.45.
|
||||
w_wg : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
Euler_trasition : bool, optional
|
||||
Value for the Euler_trasition parameter. Default is True.
|
||||
R1_cp : float, optional
|
||||
Radius parameter in microns. Default is None.
|
||||
R2_cp : float, optional
|
||||
Radius parameter in microns. Default is None.
|
||||
R1_att : float, optional
|
||||
Radius parameter in microns. Default is 15.
|
||||
R2_att : float, optional
|
||||
Radius parameter in microns. Default is 15.
|
||||
R1_att_min : float, optional
|
||||
Radius parameter in microns. Default is 5.
|
||||
R2_att_min : float, optional
|
||||
Radius parameter in microns. Default is 5.
|
||||
L_tilt : int, optional
|
||||
Length parameter in microns. Default is 0.
|
||||
A1_att : int, optional
|
||||
Angle parameter in degrees. Default is 45.
|
||||
A2_att : int, optional
|
||||
Angle parameter in degrees. Default is 45.
|
||||
Ltp_bus : int, optional
|
||||
Length parameter in microns. Default is 0.
|
||||
dL_p2p : Optional[float], optional
|
||||
Value for the dL_p2p parameter. Default is None.
|
||||
gap_crows : float or list, optional
|
||||
Spacing or gap parameter in microns. Default is [0.4].
|
||||
gap_cp : float or list, optional
|
||||
Spacing or gap parameter in microns. Default is [0.45, 0.45].
|
||||
w_heater : float or list, optional
|
||||
Width parameter in microns. Default is 0.
|
||||
xs_heater : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'heater'.
|
||||
connected : bool, optional
|
||||
Value for the connected parameter. Default is True.
|
||||
w_metal : float, optional
|
||||
Width parameter in microns. Default is 8.
|
||||
xs_metal : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'metal'.
|
||||
via_h2m : Any, optional
|
||||
Via definition used between heater and metal layers. Default is None.
|
||||
isl : Any, optional
|
||||
Isolation-trench definition used by the electrical layout. Default is None.
|
||||
ISL_LEFT : bool, optional
|
||||
Value for the ISL_LEFT parameter. Default is True.
|
||||
ISL_RIGHT : bool, optional
|
||||
Value for the ISL_RIGHT parameter. Default is True.
|
||||
show_pins : bool, optional
|
||||
Whether to draw pin markers in the generated layout. Default is False.
|
||||
sharp_patch : bool, optional
|
||||
Whether to add geometry patches for sharp corners or cladding continuity. Default is True.
|
||||
ht_shift : int, optional
|
||||
Value for the ht_shift parameter. Default is 0.
|
||||
A_ht : int, optional
|
||||
Angle parameter in degrees. Default is 45.
|
||||
"""
|
||||
def __init__(self,
|
||||
r_outer: float = 10,
|
||||
wa: float = 0.45,
|
||||
|
||||
@@ -4,7 +4,7 @@ import numpy as np
|
||||
|
||||
from ...basic import __xs_exist__
|
||||
|
||||
from ...structures import *
|
||||
from ...geometry import *
|
||||
import nazca.interconnects as IC
|
||||
|
||||
class Route(IC.Interconnect):
|
||||
@@ -21,9 +21,42 @@ from ...basic import __xs_exist__
|
||||
|
||||
|
||||
class SOCR():
|
||||
'''
|
||||
This is the class for normal Strong Over Coupled Ring for phase modulation.
|
||||
'''
|
||||
"""
|
||||
This is the class for normal Strong Over Coupled Ring for phase modulation.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
w_wg : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
w_cp : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
w_ring : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
r_ring : float, optional
|
||||
Radius parameter in microns. Default is 6.
|
||||
gap : float, optional
|
||||
Spacing or gap parameter in microns. Default is 0.2.
|
||||
theta_arc : float, optional
|
||||
Angle parameter in degrees. Default is 100.
|
||||
Ls : float, optional
|
||||
Length parameter in microns. Default is 2.
|
||||
xs_ring : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'strip'.
|
||||
w_heater : float, optional
|
||||
Width parameter in microns. Default is 1.5.
|
||||
xs_heater : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'heater'.
|
||||
w_metal : float, optional
|
||||
Width parameter in microns. Default is 6.
|
||||
xs_metal : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'metal'.
|
||||
via_h2m : Any, optional
|
||||
Via definition used between heater and metal layers. Default is None.
|
||||
sharp_patch : bool, optional
|
||||
Whether to add geometry patches for sharp corners or cladding continuity. Default is True.
|
||||
show_pins : bool, optional
|
||||
Whether to draw pin markers in the generated layout. Default is True.
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
@@ -365,22 +398,65 @@ class SOCR():
|
||||
return C
|
||||
|
||||
class SOCR_Cband(SOCR):
|
||||
'''
|
||||
This is the class for already designed SOCR with multimode waveguide to suppres the phase noise.
|
||||
'''
|
||||
def __init__(self, w_wg : float = 0.45, show_pins : bool = True) -> None:
|
||||
"""
|
||||
This is the class for already designed SOCR with multimode waveguide to suppres the phase noise.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
w_wg : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
via_h2m : Any, optional
|
||||
Via definition used between heater and metal layers. Default is None.
|
||||
show_pins : bool, optional
|
||||
Whether to draw pin markers in the generated layout. Default is True.
|
||||
"""
|
||||
def __init__(self, w_wg : float = 0.45, via_h2m: Any = None, show_pins : bool = True) -> None:
|
||||
super().__init__(
|
||||
w_wg=w_wg,
|
||||
w_cp=0.45, w_ring=0.8, r_ring=5.6, gap=0.18, theta_arc=150, Ls=1, w_heater=1.5,
|
||||
via_h2m=via_h2m,
|
||||
show_pins=show_pins
|
||||
)
|
||||
|
||||
class SOCR_Adiabatic(SOCR):
|
||||
'''
|
||||
This is the class for adiabatic Strong Over Coupled Ring(SOCR) for phase modulation.
|
||||
See detail in:
|
||||
[1] Liang, G., Huang, H., Mohanty, A. et al. Robust, efficient, micrometre-scale phase modulators at visible wavelengths. Nat. Photon. 15, 908–913 (2021).
|
||||
'''
|
||||
"""
|
||||
This is the class for adiabatic Strong Over Coupled Ring(SOCR) for phase modulation.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
w_wg : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
w_cp : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
w_in : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
w_out : float, optional
|
||||
Width parameter in microns. Default is 2.
|
||||
r_out : float, optional
|
||||
Radius parameter in microns. Default is 6.
|
||||
gap : float, optional
|
||||
Spacing or gap parameter in microns. Default is 0.2.
|
||||
theta_arc : float, optional
|
||||
Angle parameter in degrees. Default is 100.
|
||||
Ls : float, optional
|
||||
Length parameter in microns. Default is 2.
|
||||
xs_ring : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'strip'.
|
||||
w_heater : float, optional
|
||||
Width parameter in microns. Default is 1.5.
|
||||
xs_heater : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'heater'.
|
||||
w_metal : float, optional
|
||||
Width parameter in microns. Default is 6.
|
||||
xs_metal : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'metal'.
|
||||
via_h2m : Any, optional
|
||||
Via definition used between heater and metal layers. Default is None.
|
||||
sharp_patch : bool, optional
|
||||
Whether to add geometry patches for sharp corners or cladding continuity. Default is True.
|
||||
show_pins : bool, optional
|
||||
Whether to draw pin markers in the generated layout. Default is True.
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
@@ -588,27 +664,122 @@ class SOCR_Adiabatic(SOCR):
|
||||
return super().generate_gds()
|
||||
|
||||
class SOCR_Adiabatic_Cband(SOCR_Adiabatic):
|
||||
'''
|
||||
This is already designed SOCR at C-band.
|
||||
"""
|
||||
This is already designed SOCR at C-band.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
w_wg : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
via_h2m : Any, optional
|
||||
Via definition used between heater and metal layers. Default is None.
|
||||
show_pins : bool, optional
|
||||
Whether to draw pin markers in the generated layout. Default is True.
|
||||
"""
|
||||
|
||||
Args:
|
||||
- Gap: 200nm
|
||||
- w_wg: 450nm
|
||||
- w_in: 510nm
|
||||
- w_out: 2um
|
||||
- gap: 200nm
|
||||
- theta_arc: 120degree
|
||||
- Ls: 1um
|
||||
'''
|
||||
|
||||
def __init__(self, w_wg : float=0.45, show_pins : bool = True) -> None:
|
||||
def __init__(self, w_wg : float=0.45, via_h2m: Any = None, show_pins : bool = True) -> None:
|
||||
super().__init__(
|
||||
w_wg=w_wg,
|
||||
w_cp=0.45, w_in=0.51, w_out=2, r_out=9, gap=0.2, theta_arc=120, Ls=1,
|
||||
via_h2m=via_h2m,
|
||||
show_pins=show_pins
|
||||
)
|
||||
|
||||
class MRR_AED(AED_ring):
|
||||
"""
|
||||
MRR AED primitive component.
|
||||
|
||||
This component builds the MRR AED layout cell.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
name : Optional[str], optional
|
||||
Unique identifier for the device cell. Default is None.
|
||||
ORx : float, optional
|
||||
Value for the ORx parameter. Default is 10.
|
||||
ORy : float, optional
|
||||
Value for the ORy parameter. Default is 10.
|
||||
IRx : float, optional
|
||||
Value for the IRx parameter. Default is 10 - 0.45.
|
||||
IRy : float, optional
|
||||
Value for the IRy parameter. Default is 10 - 0.5.
|
||||
gap1 : float, optional
|
||||
Spacing or gap parameter in microns. Default is 0.2.
|
||||
gap2 : float, optional
|
||||
Spacing or gap parameter in microns. Default is 0.2.
|
||||
w1_bus : float, optional
|
||||
Value for the w1_bus parameter. Default is 0.45.
|
||||
w2_bus : float, optional
|
||||
Value for the w2_bus parameter. Default is 0.45.
|
||||
R1_cp : Any, optional
|
||||
Radius parameter in microns. Default is None.
|
||||
R2_cp : Any, optional
|
||||
Radius parameter in microns. Default is None.
|
||||
A1_cp : int, optional
|
||||
Angle parameter in degrees. Default is 0.
|
||||
A2_cp : int, optional
|
||||
Angle parameter in degrees. Default is 0.
|
||||
offset_X : float, optional
|
||||
Value for the offset_X parameter. Default is 0.
|
||||
offset_Y : float, optional
|
||||
Value for the offset_Y parameter. Default is 0.
|
||||
w_wg : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
R1_att : float, optional
|
||||
Radius parameter in microns. Default is 20.
|
||||
R2_att : float, optional
|
||||
Radius parameter in microns. Default is 20.
|
||||
R2_att_min : float, optional
|
||||
Radius parameter in microns. Default is 10.
|
||||
R1_att_min : float, optional
|
||||
Radius parameter in microns. Default is 10.
|
||||
A1_att : float, optional
|
||||
Angle parameter in degrees. Default is 30.
|
||||
A2_att : float, optional
|
||||
Angle parameter in degrees. Default is 20.
|
||||
Ltp_bus : int, optional
|
||||
Length parameter in microns. Default is 10.
|
||||
dL_p2p : Optional[float], optional
|
||||
Value for the dL_p2p parameter. Default is None.
|
||||
L_tilt : int, optional
|
||||
Length parameter in microns. Default is 10.
|
||||
xs_ring : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'strip'.
|
||||
sharp_patch : bool, optional
|
||||
Whether to add geometry patches for sharp corners or cladding continuity. Default is True.
|
||||
cell_xs_transition : Any, optional
|
||||
Cell or component dependency used by this device. Default is None.
|
||||
Euler_trasition : bool, optional
|
||||
Value for the Euler_trasition parameter. Default is False.
|
||||
show_pins : bool, optional
|
||||
Whether to draw pin markers in the generated layout. Default is False.
|
||||
xs_heater : str, optional
|
||||
Layer or cross-section name used by the device. Default is None.
|
||||
w_heater : float, optional
|
||||
Width parameter in microns. Default is 0.
|
||||
xs_metal : str, optional
|
||||
Layer or cross-section name used by the device. Default is None.
|
||||
w_metal : float, optional
|
||||
Width parameter in microns. Default is 0.
|
||||
via_h2m : Any, optional
|
||||
Via definition used between heater and metal layers. Default is None.
|
||||
isl : Any, optional
|
||||
Isolation-trench definition used by the electrical layout. Default is None.
|
||||
A_ht : float, optional
|
||||
Angle parameter in degrees. Default is 270.
|
||||
ht_notch_dual : bool, optional
|
||||
Value for the ht_notch_dual parameter. Default is True.
|
||||
epin_dX : int, optional
|
||||
Value for the epin_dX parameter. Default is 0.
|
||||
epin_dY : int, optional
|
||||
Value for the epin_dY parameter. Default is 0.
|
||||
res : float, optional
|
||||
Value for the res parameter. Default is 0.05.
|
||||
res_eic : float, optional
|
||||
Value for the res_eic parameter. Default is 0.5.
|
||||
ht_rot : bool, optional
|
||||
Value for the ht_rot parameter. Default is False.
|
||||
"""
|
||||
def __init__(self,
|
||||
name: Optional[str] =None,
|
||||
ORx: float=10,
|
||||
@@ -842,6 +1013,96 @@ class MRR_AED(AED_ring):
|
||||
|
||||
class MRR_STD_Ring(MRR_AED) :
|
||||
|
||||
"""
|
||||
MRR STD Ring primitive component.
|
||||
|
||||
This component builds the MRR STD Ring layout cell.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
name : Optional[str], optional
|
||||
Unique identifier for the device cell. Default is None.
|
||||
r_ring : float, optional
|
||||
Radius parameter in microns. Default is 10.
|
||||
w_ring : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
gap1 : float, optional
|
||||
Spacing or gap parameter in microns. Default is 0.2.
|
||||
gap2 : float, optional
|
||||
Spacing or gap parameter in microns. Default is 0.2.
|
||||
w1_bus : float, optional
|
||||
Value for the w1_bus parameter. Default is 0.45.
|
||||
w2_bus : float, optional
|
||||
Value for the w2_bus parameter. Default is 0.
|
||||
R1_cp : Any, optional
|
||||
Radius parameter in microns. Default is None.
|
||||
R2_cp : Any, optional
|
||||
Radius parameter in microns. Default is None.
|
||||
A1_cp : int, optional
|
||||
Angle parameter in degrees. Default is 0.
|
||||
A2_cp : int, optional
|
||||
Angle parameter in degrees. Default is 0.
|
||||
offset_X : float, optional
|
||||
Value for the offset_X parameter. Default is 0.
|
||||
offset_Y : float, optional
|
||||
Value for the offset_Y parameter. Default is 0.
|
||||
w_wg : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
R1_att : float, optional
|
||||
Radius parameter in microns. Default is 20.
|
||||
R2_att : float, optional
|
||||
Radius parameter in microns. Default is 20.
|
||||
R2_att_min : float, optional
|
||||
Radius parameter in microns. Default is 10.
|
||||
R1_att_min : float, optional
|
||||
Radius parameter in microns. Default is 10.
|
||||
A1_att : float, optional
|
||||
Angle parameter in degrees. Default is 30.
|
||||
A2_att : float, optional
|
||||
Angle parameter in degrees. Default is 20.
|
||||
Ltp_bus : int, optional
|
||||
Length parameter in microns. Default is 10.
|
||||
dL_p2p : Optional[float], optional
|
||||
Value for the dL_p2p parameter. Default is None.
|
||||
L_tilt : int, optional
|
||||
Length parameter in microns. Default is 10.
|
||||
xs_ring : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'strip'.
|
||||
sharp_patch : bool, optional
|
||||
Whether to add geometry patches for sharp corners or cladding continuity. Default is True.
|
||||
cell_xs_transition : Any, optional
|
||||
Cell or component dependency used by this device. Default is None.
|
||||
Euler_trasition : bool, optional
|
||||
Value for the Euler_trasition parameter. Default is False.
|
||||
show_pins : bool, optional
|
||||
Whether to draw pin markers in the generated layout. Default is False.
|
||||
xs_heater : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'heater'.
|
||||
w_heater : float, optional
|
||||
Width parameter in microns. Default is 0.
|
||||
xs_metal : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'metal'.
|
||||
w_metal : float, optional
|
||||
Width parameter in microns. Default is 0.
|
||||
via_h2m : Any, optional
|
||||
Via definition used between heater and metal layers. Default is None.
|
||||
isl : Any, optional
|
||||
Isolation-trench definition used by the electrical layout. Default is None.
|
||||
A_ht : float, optional
|
||||
Angle parameter in degrees. Default is 270.
|
||||
ht_notch_dual : bool, optional
|
||||
Value for the ht_notch_dual parameter. Default is False.
|
||||
epin_dX : int, optional
|
||||
Value for the epin_dX parameter. Default is 0.
|
||||
epin_dY : int, optional
|
||||
Value for the epin_dY parameter. Default is 0.
|
||||
res : float, optional
|
||||
Value for the res parameter. Default is 0.05.
|
||||
res_eic : float, optional
|
||||
Value for the res_eic parameter. Default is 0.5.
|
||||
ht_rot : bool, optional
|
||||
Value for the ht_rot parameter. Default is False.
|
||||
"""
|
||||
def __init__(self,
|
||||
name: Optional[str]=None,
|
||||
r_ring: float=10,
|
||||
@@ -950,6 +1211,68 @@ class MRR_STD_Ring(MRR_AED) :
|
||||
|
||||
""" Simplified classed for Standard ring """
|
||||
class MRR_STD_Allpass(MRR_STD_Ring):
|
||||
"""
|
||||
MRR STD Allpass primitive component.
|
||||
|
||||
This component builds the MRR STD Allpass layout cell.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
name : str
|
||||
Unique identifier for the device cell.
|
||||
r_ring : float
|
||||
Radius parameter in microns.
|
||||
w_ring : float
|
||||
Width parameter in microns.
|
||||
gap : float
|
||||
Spacing or gap parameter in microns.
|
||||
w_bus : float
|
||||
Width parameter in microns.
|
||||
A_cp : Any
|
||||
Angle parameter in degrees.
|
||||
w_wg : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
R_att : float, optional
|
||||
Radius parameter in microns. Default is 20.
|
||||
Ltp_bus : int, optional
|
||||
Length parameter in microns. Default is 10.
|
||||
dL_p2p : Optional[float], optional
|
||||
Value for the dL_p2p parameter. Default is None.
|
||||
L_tilt : int, optional
|
||||
Length parameter in microns. Default is 10.
|
||||
xs_ring : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'strip'.
|
||||
sharp_patch : bool, optional
|
||||
Whether to add geometry patches for sharp corners or cladding continuity. Default is True.
|
||||
cell_xs_transition : Any, optional
|
||||
Cell or component dependency used by this device. Default is None.
|
||||
show_pins : bool, optional
|
||||
Whether to draw pin markers in the generated layout. Default is False.
|
||||
xs_heater : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'heater'.
|
||||
w_heater : float, optional
|
||||
Width parameter in microns. Default is 0.
|
||||
xs_metal : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'metal'.
|
||||
w_metal : float, optional
|
||||
Width parameter in microns. Default is 0.
|
||||
via_h2m : Any, optional
|
||||
Via definition used between heater and metal layers. Default is None.
|
||||
isl : Any, optional
|
||||
Isolation-trench definition used by the electrical layout. Default is None.
|
||||
A_ht : float, optional
|
||||
Angle parameter in degrees. Default is 270.
|
||||
epin_dX : int, optional
|
||||
Value for the epin_dX parameter. Default is 0.
|
||||
epin_dY : int, optional
|
||||
Value for the epin_dY parameter. Default is 0.
|
||||
res : float, optional
|
||||
Value for the res parameter. Default is 0.05.
|
||||
res_eic : float, optional
|
||||
Value for the res_eic parameter. Default is 0.5.
|
||||
ht_rot : bool, optional
|
||||
Value for the ht_rot parameter. Default is False.
|
||||
"""
|
||||
def __init__(self, name: str,
|
||||
r_ring: float,
|
||||
w_ring: float,
|
||||
@@ -1048,6 +1371,68 @@ class MRR_STD_Allpass(MRR_STD_Ring):
|
||||
ht_rot=ht_rot)
|
||||
|
||||
class MRR_STD_Adddrop(MRR_STD_Ring):
|
||||
"""
|
||||
MRR STD Adddrop primitive component.
|
||||
|
||||
This component builds the MRR STD Adddrop layout cell.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
name : str
|
||||
Unique identifier for the device cell.
|
||||
r_ring : float
|
||||
Radius parameter in microns.
|
||||
w_ring : float
|
||||
Width parameter in microns.
|
||||
gap : float
|
||||
Spacing or gap parameter in microns.
|
||||
w_bus : float
|
||||
Width parameter in microns.
|
||||
A_cp : Any
|
||||
Angle parameter in degrees.
|
||||
w_wg : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
R_att : float, optional
|
||||
Radius parameter in microns. Default is 20.
|
||||
Ltp_bus : int, optional
|
||||
Length parameter in microns. Default is 10.
|
||||
dL_p2p : Optional[float], optional
|
||||
Value for the dL_p2p parameter. Default is None.
|
||||
L_tilt : int, optional
|
||||
Length parameter in microns. Default is 10.
|
||||
xs_ring : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'strip'.
|
||||
sharp_patch : bool, optional
|
||||
Whether to add geometry patches for sharp corners or cladding continuity. Default is True.
|
||||
cell_xs_transition : Any, optional
|
||||
Cell or component dependency used by this device. Default is None.
|
||||
show_pins : bool, optional
|
||||
Whether to draw pin markers in the generated layout. Default is False.
|
||||
xs_heater : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'heater'.
|
||||
w_heater : float, optional
|
||||
Width parameter in microns. Default is 0.
|
||||
xs_metal : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'metal'.
|
||||
w_metal : float, optional
|
||||
Width parameter in microns. Default is 0.
|
||||
via_h2m : Any, optional
|
||||
Via definition used between heater and metal layers. Default is None.
|
||||
isl : Any, optional
|
||||
Isolation-trench definition used by the electrical layout. Default is None.
|
||||
A_ht : float, optional
|
||||
Angle parameter in degrees. Default is 270.
|
||||
epin_dX : int, optional
|
||||
Value for the epin_dX parameter. Default is 0.
|
||||
epin_dY : int, optional
|
||||
Value for the epin_dY parameter. Default is 0.
|
||||
res : float, optional
|
||||
Value for the res parameter. Default is 0.05.
|
||||
res_eic : float, optional
|
||||
Value for the res_eic parameter. Default is 0.5.
|
||||
ht_rot : bool, optional
|
||||
Value for the ht_rot parameter. Default is False.
|
||||
"""
|
||||
def __init__(self, name: str,
|
||||
r_ring: float,
|
||||
w_ring: float,
|
||||
@@ -1121,6 +1506,70 @@ class MRR_STD_Adddrop(MRR_STD_Ring):
|
||||
|
||||
""" Multimode ring simplified """
|
||||
class MRR_MM_Allpass(MRR_STD_Ring):
|
||||
"""
|
||||
MRR MM Allpass primitive component.
|
||||
|
||||
This component builds the MRR MM Allpass layout cell.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
name : Optional[str], optional
|
||||
Unique identifier for the device cell. Default is None.
|
||||
r_ring : float, optional
|
||||
Radius parameter in microns. Default is 10.
|
||||
w_ring : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
gap : float, optional
|
||||
Spacing or gap parameter in microns. Default is 0.2.
|
||||
w_bus : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
A_cp : int, optional
|
||||
Angle parameter in degrees. Default is 0.
|
||||
w_wg : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
R_att : float, optional
|
||||
Radius parameter in microns. Default is 20.
|
||||
R_att_min : float, optional
|
||||
Radius parameter in microns. Default is 10.
|
||||
A_att : float, optional
|
||||
Angle parameter in degrees. Default is 30.
|
||||
Ltp_bus : int, optional
|
||||
Length parameter in microns. Default is 10.
|
||||
dL_p2p : Optional[float], optional
|
||||
Value for the dL_p2p parameter. Default is None.
|
||||
xs_ring : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'strip'.
|
||||
sharp_patch : bool, optional
|
||||
Whether to add geometry patches for sharp corners or cladding continuity. Default is True.
|
||||
cell_xs_transition : Any, optional
|
||||
Cell or component dependency used by this device. Default is None.
|
||||
show_pins : bool, optional
|
||||
Whether to draw pin markers in the generated layout. Default is False.
|
||||
xs_heater : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'heater'.
|
||||
w_heater : float, optional
|
||||
Width parameter in microns. Default is 0.
|
||||
xs_metal : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'metal'.
|
||||
w_metal : float, optional
|
||||
Width parameter in microns. Default is 0.
|
||||
via_h2m : Any, optional
|
||||
Via definition used between heater and metal layers. Default is None.
|
||||
isl : Any, optional
|
||||
Isolation-trench definition used by the electrical layout. Default is None.
|
||||
A_ht : float, optional
|
||||
Angle parameter in degrees. Default is 270.
|
||||
epin_dX : int, optional
|
||||
Value for the epin_dX parameter. Default is 0.
|
||||
epin_dY : int, optional
|
||||
Value for the epin_dY parameter. Default is 0.
|
||||
res : float, optional
|
||||
Value for the res parameter. Default is 0.05.
|
||||
res_eic : float, optional
|
||||
Value for the res_eic parameter. Default is 0.5.
|
||||
ht_rot : bool, optional
|
||||
Value for the ht_rot parameter. Default is False.
|
||||
"""
|
||||
def __init__(self, name: Optional[str]=None,
|
||||
r_ring: float=10,
|
||||
w_ring: float=0.45,
|
||||
@@ -1200,6 +1649,70 @@ class MRR_MM_Allpass(MRR_STD_Ring):
|
||||
ht_rot=ht_rot)
|
||||
|
||||
class MRR_MM_Adddrop(MRR_STD_Ring):
|
||||
"""
|
||||
MRR MM Adddrop primitive component.
|
||||
|
||||
This component builds the MRR MM Adddrop layout cell.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
name : Optional[str], optional
|
||||
Unique identifier for the device cell. Default is None.
|
||||
r_ring : float, optional
|
||||
Radius parameter in microns. Default is 10.
|
||||
w_ring : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
gap : float, optional
|
||||
Spacing or gap parameter in microns. Default is 0.2.
|
||||
w_bus : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
A_cp : int, optional
|
||||
Angle parameter in degrees. Default is 0.
|
||||
w_wg : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
R_att : float, optional
|
||||
Radius parameter in microns. Default is 20.
|
||||
R_att_min : float, optional
|
||||
Radius parameter in microns. Default is 10.
|
||||
A_att : float, optional
|
||||
Angle parameter in degrees. Default is 30.
|
||||
Ltp_bus : int, optional
|
||||
Length parameter in microns. Default is 10.
|
||||
dL_p2p : Optional[float], optional
|
||||
Value for the dL_p2p parameter. Default is None.
|
||||
xs_ring : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'strip'.
|
||||
sharp_patch : bool, optional
|
||||
Whether to add geometry patches for sharp corners or cladding continuity. Default is True.
|
||||
cell_xs_transition : Any, optional
|
||||
Cell or component dependency used by this device. Default is None.
|
||||
show_pins : bool, optional
|
||||
Whether to draw pin markers in the generated layout. Default is False.
|
||||
xs_heater : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'heater'.
|
||||
w_heater : float, optional
|
||||
Width parameter in microns. Default is 0.
|
||||
xs_metal : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'metal'.
|
||||
w_metal : float, optional
|
||||
Width parameter in microns. Default is 0.
|
||||
via_h2m : Any, optional
|
||||
Via definition used between heater and metal layers. Default is None.
|
||||
isl : Any, optional
|
||||
Isolation-trench definition used by the electrical layout. Default is None.
|
||||
A_ht : float, optional
|
||||
Angle parameter in degrees. Default is 270.
|
||||
epin_dX : int, optional
|
||||
Value for the epin_dX parameter. Default is 0.
|
||||
epin_dY : int, optional
|
||||
Value for the epin_dY parameter. Default is 0.
|
||||
res : float, optional
|
||||
Value for the res parameter. Default is 0.05.
|
||||
res_eic : float, optional
|
||||
Value for the res_eic parameter. Default is 0.5.
|
||||
ht_rot : bool, optional
|
||||
Value for the ht_rot parameter. Default is False.
|
||||
"""
|
||||
def __init__(self, name: Optional[str]=None,
|
||||
r_ring: float=10,
|
||||
w_ring: float=0.45,
|
||||
@@ -1275,6 +1788,72 @@ class MRR_MM_Adddrop(MRR_STD_Ring):
|
||||
|
||||
""" Dual width controled ring with Euler shape coupler """
|
||||
class MRR_DW_Adddrop(MRR_AED):
|
||||
"""
|
||||
MRR DW Adddrop primitive component.
|
||||
|
||||
This component builds the MRR DW Adddrop layout cell.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
name : str
|
||||
Unique identifier for the device cell.
|
||||
r_ring : float
|
||||
Radius parameter in microns.
|
||||
w0_ring : float
|
||||
Value for the w0_ring parameter.
|
||||
w1_ring : float
|
||||
Value for the w1_ring parameter.
|
||||
gap : float, optional
|
||||
Spacing or gap parameter in microns. Default is 0.2.
|
||||
w_bus : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
A_cp : int, optional
|
||||
Angle parameter in degrees. Default is 0.
|
||||
w_wg : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
R_att : float, optional
|
||||
Radius parameter in microns. Default is 20.
|
||||
R_att_min : float, optional
|
||||
Radius parameter in microns. Default is 10.
|
||||
A_att : float, optional
|
||||
Angle parameter in degrees. Default is 30.
|
||||
Ltp_bus : int, optional
|
||||
Length parameter in microns. Default is 10.
|
||||
dL_p2p : Optional[float], optional
|
||||
Value for the dL_p2p parameter. Default is None.
|
||||
xs_ring : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'strip'.
|
||||
sharp_patch : bool, optional
|
||||
Whether to add geometry patches for sharp corners or cladding continuity. Default is True.
|
||||
cell_xs_transition : Any, optional
|
||||
Cell or component dependency used by this device. Default is None.
|
||||
show_pins : bool, optional
|
||||
Whether to draw pin markers in the generated layout. Default is False.
|
||||
xs_heater : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'heater'.
|
||||
w_heater : float, optional
|
||||
Width parameter in microns. Default is 0.
|
||||
xs_metal : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'metal'.
|
||||
w_metal : float, optional
|
||||
Width parameter in microns. Default is 0.
|
||||
via_h2m : Any, optional
|
||||
Via definition used between heater and metal layers. Default is None.
|
||||
isl : Any, optional
|
||||
Isolation-trench definition used by the electrical layout. Default is None.
|
||||
A_ht : float, optional
|
||||
Angle parameter in degrees. Default is 270.
|
||||
epin_dX : int, optional
|
||||
Value for the epin_dX parameter. Default is 0.
|
||||
epin_dY : int, optional
|
||||
Value for the epin_dY parameter. Default is 0.
|
||||
res : float, optional
|
||||
Value for the res parameter. Default is 0.05.
|
||||
res_eic : float, optional
|
||||
Value for the res_eic parameter. Default is 0.5.
|
||||
ht_rot : bool, optional
|
||||
Value for the ht_rot parameter. Default is False.
|
||||
"""
|
||||
def __init__(self, name: str,
|
||||
r_ring: float,
|
||||
w0_ring: float,
|
||||
@@ -1338,6 +1917,72 @@ class MRR_DW_Adddrop(MRR_AED):
|
||||
epin_dX=epin_dX, epin_dY=epin_dY, res=res, res_eic=res_eic,ht_rot=ht_rot)
|
||||
|
||||
class MRR_DW_Allpass(MRR_AED):
|
||||
"""
|
||||
MRR DW Allpass primitive component.
|
||||
|
||||
This component builds the MRR DW Allpass layout cell.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
name : str
|
||||
Unique identifier for the device cell.
|
||||
r_ring : float
|
||||
Radius parameter in microns.
|
||||
w0_ring : float
|
||||
Value for the w0_ring parameter.
|
||||
w1_ring : float
|
||||
Value for the w1_ring parameter.
|
||||
gap : float, optional
|
||||
Spacing or gap parameter in microns. Default is 0.2.
|
||||
w_bus : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
A_cp : int, optional
|
||||
Angle parameter in degrees. Default is 0.
|
||||
w_wg : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
R_att : float, optional
|
||||
Radius parameter in microns. Default is 20.
|
||||
R_att_min : float, optional
|
||||
Radius parameter in microns. Default is 10.
|
||||
A_att : float, optional
|
||||
Angle parameter in degrees. Default is 30.
|
||||
Ltp_bus : int, optional
|
||||
Length parameter in microns. Default is 10.
|
||||
dL_p2p : Optional[float], optional
|
||||
Value for the dL_p2p parameter. Default is None.
|
||||
xs_ring : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'strip'.
|
||||
sharp_patch : bool, optional
|
||||
Whether to add geometry patches for sharp corners or cladding continuity. Default is True.
|
||||
cell_xs_transition : Any, optional
|
||||
Cell or component dependency used by this device. Default is None.
|
||||
show_pins : bool, optional
|
||||
Whether to draw pin markers in the generated layout. Default is False.
|
||||
xs_heater : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'heater'.
|
||||
w_heater : float, optional
|
||||
Width parameter in microns. Default is 0.
|
||||
xs_metal : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'metal'.
|
||||
w_metal : float, optional
|
||||
Width parameter in microns. Default is 0.
|
||||
via_h2m : Any, optional
|
||||
Via definition used between heater and metal layers. Default is None.
|
||||
isl : Any, optional
|
||||
Isolation-trench definition used by the electrical layout. Default is None.
|
||||
A_ht : float, optional
|
||||
Angle parameter in degrees. Default is 270.
|
||||
epin_dX : int, optional
|
||||
Value for the epin_dX parameter. Default is 0.
|
||||
epin_dY : int, optional
|
||||
Value for the epin_dY parameter. Default is 0.
|
||||
res : float, optional
|
||||
Value for the res parameter. Default is 0.05.
|
||||
res_eic : float, optional
|
||||
Value for the res_eic parameter. Default is 0.5.
|
||||
ht_rot : bool, optional
|
||||
Value for the ht_rot parameter. Default is False.
|
||||
"""
|
||||
def __init__(self, name: str,
|
||||
r_ring: float,
|
||||
w0_ring: float,
|
||||
@@ -1403,6 +2048,56 @@ class MRR_DW_Allpass(MRR_AED):
|
||||
|
||||
""" NEW CLASS: 2023.03.21"""
|
||||
class STD_ring_AMZI_adddrop:
|
||||
"""
|
||||
STD ring AMZI adddrop primitive component.
|
||||
|
||||
This component builds the STD ring AMZI adddrop layout cell.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
name : Optional[str], optional
|
||||
Unique identifier for the device cell. Default is None.
|
||||
r_ring : float, optional
|
||||
Radius parameter in microns. Default is 30.
|
||||
w_ring : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
w_wg : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
xs_wg : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'strip'.
|
||||
w_bus : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
gap : float, optional
|
||||
Spacing or gap parameter in microns. Default is 0.2.
|
||||
dAc : float, optional
|
||||
Value for the dAc parameter. Default is 10.
|
||||
L_tilt : int, optional
|
||||
Length parameter in microns. Default is 1.
|
||||
dL_arm : float, optional
|
||||
Value for the dL_arm parameter. Default is 10.
|
||||
w_heater : float, optional
|
||||
Width parameter in microns. Default is 2.5.
|
||||
xs_heater : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'heater'.
|
||||
w_metal : float, optional
|
||||
Width parameter in microns. Default is 6.
|
||||
xs_metal : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'metal'.
|
||||
via_h2m : Any, optional
|
||||
Via definition used between heater and metal layers. Default is None.
|
||||
isl : Any, optional
|
||||
Isolation-trench definition used by the electrical layout. Default is None.
|
||||
res : float, optional
|
||||
Value for the res parameter. Default is 0.1.
|
||||
R_bend : int, optional
|
||||
Radius parameter in microns. Default is 10.
|
||||
L_tp : int, optional
|
||||
Length parameter in microns. Default is 5.
|
||||
show_pins : bool, optional
|
||||
Whether to draw pin markers in the generated layout. Default is False.
|
||||
sharp_patch : bool, optional
|
||||
Whether to add geometry patches for sharp corners or cladding continuity. Default is True.
|
||||
"""
|
||||
def __init__(self,
|
||||
name: Optional[str]=None,
|
||||
r_ring: float = 30,
|
||||
|
||||
@@ -3,7 +3,7 @@ from typing import Any, Optional
|
||||
import nazca as nd
|
||||
import numpy as np
|
||||
|
||||
from ...structures import *
|
||||
from ...geometry import *
|
||||
from ....technologies import *
|
||||
from ...electronics import Vias
|
||||
from ...electronics import ISL
|
||||
@@ -17,6 +17,56 @@ from ...routing import Route
|
||||
|
||||
|
||||
class waveguide:
|
||||
"""
|
||||
waveguide primitive component.
|
||||
|
||||
This component builds the waveguide layout cell.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
w_heater : float, optional
|
||||
Width parameter in microns. Default is 2.5.
|
||||
L_wg : int, optional
|
||||
Length parameter in microns. Default is 150.
|
||||
L_heater : int, optional
|
||||
Length parameter in microns. Default is 150.
|
||||
w_metal : float, optional
|
||||
Width parameter in microns. Default is 10.
|
||||
xs_heater : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'heater'.
|
||||
xs_metal : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'metal'.
|
||||
xs_wg : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'strip'.
|
||||
w_wg : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
w_port : Optional[float], optional
|
||||
Width parameter in microns. Default is None.
|
||||
Ltp : Any, optional
|
||||
Length parameter in microns. Default is None.
|
||||
via_h2m : Any, optional
|
||||
Via definition used between heater and metal layers. Default is None.
|
||||
isl : Any, optional
|
||||
Isolation-trench definition used by the electrical layout. Default is None.
|
||||
euler_bend : bool, optional
|
||||
Value for the euler_bend parameter. Default is False.
|
||||
Rmin : int, optional
|
||||
Radius parameter in microns. Default is 5.
|
||||
thin_attach : bool, optional
|
||||
Value for the thin_attach parameter. Default is False.
|
||||
UPPER_ISL : bool, optional
|
||||
Value for the UPPER_ISL parameter. Default is True.
|
||||
LOWER_ISL : bool, optional
|
||||
Length parameter in microns. Default is True.
|
||||
shape : str, optional
|
||||
Value for the shape parameter. Default is 'strip'.
|
||||
R_bend : int, optional
|
||||
Radius parameter in microns. Default is 10.
|
||||
ubend_offset : int, optional
|
||||
Value for the ubend_offset parameter. Default is 20.
|
||||
show_pins : bool, optional
|
||||
Whether to draw pin markers in the generated layout. Default is False.
|
||||
"""
|
||||
def __init__(self,
|
||||
w_heater: float=2.5,
|
||||
L_wg: int=150,
|
||||
@@ -185,6 +235,54 @@ class waveguide:
|
||||
|
||||
""" NEW CLASS:: 2023.03.21, two stage phase shifters, to replace PS_3wg """
|
||||
class PS_2st:
|
||||
"""
|
||||
PS 2st primitive component.
|
||||
|
||||
This component builds the PS 2st layout cell.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
xs_wg : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'strip'.
|
||||
w_wg : float, optional
|
||||
Width parameter in microns. Default is 0.5.
|
||||
w1 : float, optional
|
||||
Width parameter in microns. Default is 0.7.
|
||||
w2 : float, optional
|
||||
Width parameter in microns. Default is 0.9.
|
||||
L1 : int, optional
|
||||
Length parameter in microns. Default is 10.
|
||||
L2 : int, optional
|
||||
Length parameter in microns. Default is 55.
|
||||
L_wg : int, optional
|
||||
Length parameter in microns. Default is 0.
|
||||
L_tp : int, optional
|
||||
Length parameter in microns. Default is 1.
|
||||
L12 : Any, optional
|
||||
Length parameter in microns. Default is None.
|
||||
L_ht : Any, optional
|
||||
Length parameter in microns. Default is None.
|
||||
xs_heater : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'heater'.
|
||||
xs_metal : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'metal'.
|
||||
w_heater : float, optional
|
||||
Width parameter in microns. Default is 2.5.
|
||||
w_metal : float, optional
|
||||
Width parameter in microns. Default is 8.
|
||||
via_h2m : Any, optional
|
||||
Via definition used between heater and metal layers. Default is None.
|
||||
isl : Any, optional
|
||||
Isolation-trench definition used by the electrical layout. Default is None.
|
||||
UPPER_ISL : bool, optional
|
||||
Value for the UPPER_ISL parameter. Default is True.
|
||||
LOWER_ISL : bool, optional
|
||||
Length parameter in microns. Default is True.
|
||||
R_bend : int, optional
|
||||
Radius parameter in microns. Default is 10.
|
||||
show_pins : bool, optional
|
||||
Whether to draw pin markers in the generated layout. Default is False.
|
||||
"""
|
||||
def __init__(self,
|
||||
xs_wg: str = 'strip',
|
||||
w_wg: float = 0.5,
|
||||
@@ -320,6 +418,52 @@ class PS_2st:
|
||||
return C
|
||||
|
||||
class PS_2st_Straight:
|
||||
"""
|
||||
PS 2st Straight primitive component.
|
||||
|
||||
This component builds the PS 2st Straight layout cell.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
xs_wg : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'strip'.
|
||||
w_wg : float, optional
|
||||
Width parameter in microns. Default is 0.5.
|
||||
w1 : float, optional
|
||||
Width parameter in microns. Default is 0.7.
|
||||
w2 : float, optional
|
||||
Width parameter in microns. Default is 0.9.
|
||||
L1 : int, optional
|
||||
Length parameter in microns. Default is 10.
|
||||
L2 : int, optional
|
||||
Length parameter in microns. Default is 55.
|
||||
L_wg : int, optional
|
||||
Length parameter in microns. Default is 0.
|
||||
L_tp : int, optional
|
||||
Length parameter in microns. Default is 1.
|
||||
L12 : Any, optional
|
||||
Length parameter in microns. Default is None.
|
||||
L_ht : Any, optional
|
||||
Length parameter in microns. Default is None.
|
||||
xs_heater : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'heater'.
|
||||
xs_metal : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'metal'.
|
||||
w_heater : float, optional
|
||||
Width parameter in microns. Default is 2.5.
|
||||
w_metal : float, optional
|
||||
Width parameter in microns. Default is 8.
|
||||
via_h2m : Any, optional
|
||||
Via definition used between heater and metal layers. Default is None.
|
||||
isl : Any, optional
|
||||
Isolation-trench definition used by the electrical layout. Default is None.
|
||||
UPPER_ISL : bool, optional
|
||||
Value for the UPPER_ISL parameter. Default is True.
|
||||
LOWER_ISL : bool, optional
|
||||
Length parameter in microns. Default is True.
|
||||
show_pins : bool, optional
|
||||
Whether to draw pin markers in the generated layout. Default is False.
|
||||
"""
|
||||
def __init__(self,
|
||||
xs_wg: str = 'strip',
|
||||
w_wg: float = 0.5,
|
||||
@@ -427,6 +571,26 @@ class PS_2st_Straight:
|
||||
return C
|
||||
|
||||
class PSR_1x2:
|
||||
"""
|
||||
PSR 1x2 primitive component.
|
||||
|
||||
This component builds the PSR 1x2 layout cell.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
PSR : Any
|
||||
Polarization splitter-rotator cell or component used by this composite.
|
||||
MDM : Any
|
||||
Mode multiplexer/demultiplexer cell or component used by this composite.
|
||||
xs : str, optional
|
||||
Layer or cross-section name used by the device. Default is 'strip'.
|
||||
w_wg : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
L_tp : int, optional
|
||||
Length parameter in microns. Default is 15.
|
||||
show_pins : bool, optional
|
||||
Whether to draw pin markers in the generated layout. Default is False.
|
||||
"""
|
||||
def __init__(self,PSR: Any,MDM: Any,xs: str='strip',w_wg: float=0.45,L_tp: int=15,show_pins: bool=False) -> None:
|
||||
self.w_wg = w_wg
|
||||
|
||||
@@ -477,6 +641,24 @@ class PSR_1x2:
|
||||
return C
|
||||
|
||||
class Brag_WDM:
|
||||
"""
|
||||
Brag WDM primitive component.
|
||||
|
||||
This component builds the Brag WDM layout cell.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
Brag : Any
|
||||
Bragg grating cell or component used by this composite.
|
||||
MDM : Any
|
||||
Mode multiplexer/demultiplexer cell or component used by this composite.
|
||||
w_wg : float, optional
|
||||
Width parameter in microns. Default is 0.45.
|
||||
L_tp : int, optional
|
||||
Length parameter in microns. Default is 30.
|
||||
show_pins : bool, optional
|
||||
Whether to draw pin markers in the generated layout. Default is False.
|
||||
"""
|
||||
def __init__(self,Brag: Any,MDM: Any,w_wg: float=0.45,L_tp: int=30,show_pins: bool=False) -> None:
|
||||
self.w_wg = w_wg
|
||||
|
||||
|
||||
Reference in New Issue
Block a user