Folder structure simplfied

This commit is contained in:
=
2026-06-06 16:43:26 +08:00
parent 8da92ced57
commit 8a17f1dde0
138 changed files with 10429 additions and 1432 deletions
+33 -1
View File
@@ -7,10 +7,42 @@ import math
from .taper import taper_xs2xs
from ...routing import Route
from ...structures import *
from ...geometry import *
from ....technologies import *
class PBS_3wg:
"""
PBS 3wg primitive component.
This component builds the PBS 3wg layout cell.
Parameters
----------
name : Optional[str], optional
Unique identifier for the device cell. Default is None.
xs : str, optional
Layer or cross-section name used by the device. Default is 'strip'.
Lcp : float, optional
Length parameter in microns. Default is 11.7.
w1_tp : float, optional
Value for the w1_tp parameter. Default is 0.55.
w2_tp : float, optional
Value for the w2_tp parameter. Default is 0.3.
w_m : float, optional
Width parameter in microns. Default is 0.45.
gap : float, optional
Spacing or gap parameter in microns. Default is 0.25.
R_bend : int, optional
Radius parameter in microns. Default is 20.
A_bend : float, optional
Angle parameter in degrees. Default is 7.5.
w_wg : float, optional
Width parameter in microns. Default is 0.45.
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,
xs: str = 'strip',
+62 -2
View File
@@ -4,15 +4,43 @@ import numpy as np
import math
from ...routing import Route
from ...structures import *
from ...geometry import *
from ....technologies import *
import pandas as pd
from ...structures import _my_polygon
from ...geometry import _my_polygon
from scipy.interpolate import CubicSpline
from ...basic import __cell_arg__
class YBranch:
"""
YBranch primitive component.
This component builds the YBranch layout cell.
Parameters
----------
name : str, optional
Unique identifier for the device cell. Default is None.
xs : str, optional
Layer or cross-section name used by the device. Default is 'strip'.
w : list or np.ndarray, optional
Width parameter in microns. Default is [1.2, 1.0, 1.8, 1.2, 1.0, 1.2, 1.2].
L : float, optional
Length parameter in microns. Default is 6.
R_att : float, optional
Radius parameter in microns. Default is 10.
A_att : float, optional
Angle parameter in degrees. Default is 10.
w_port : float, optional
Width parameter in microns. Default is 0.45.
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.
res : float, optional
Value for the res parameter. Default is 0.1.
"""
def __init__(self,
name : str = None,
xs : str = 'strip',
@@ -105,6 +133,38 @@ class YBranch:
class Ybranch_3wg:
"""
Ybranch 3wg primitive component.
This component builds the Ybranch 3wg layout cell.
Parameters
----------
name : Optional[str], optional
Unique identifier for the device cell. Default is None.
w0 : float, optional
Width parameter in microns. Default is 0.4.
w1 : float, optional
Width parameter in microns. Default is 0.2.
gap : float, optional
Spacing or gap parameter in microns. Default is 0.18.
Lcp : float, optional
Length parameter in microns. Default is 20.
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.
R0 : float, optional
Radius parameter in microns. Default is 10.
angle : float, optional
Angle parameter in degrees. Default is 20.
L_attach : float, optional
Length parameter in microns. Default is 3.
L_in_tp : float, optional
Length parameter in microns. Default is 3.
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,
w0:float=0.4,
+57 -1
View File
@@ -2,13 +2,43 @@ import nazca as nd
import numpy as np
from ...structures import *
from ...geometry import *
from ...routing import Route
from . import MDM
class Bragg_apodized:
"""
Bragg apodized primitive component.
This component builds the Bragg apodized layout cell.
Parameters
----------
Period : float, optional
Value for the Period parameter. Default is 0.3.
w : float, optional
Width parameter in microns. Default is 1.1.
xs : str, optional
Layer or cross-section name used by the device. Default is 'strip'.
etch_type : str, optional
Value for the etch_type parameter. Default is 'FETCH'.
etch_shape : str, optional
Value for the etch_shape parameter. Default is 'rectangle'.
N : int, optional
Value for the N parameter. Default is 200.
eta_etch : float, optional
Value for the eta_etch parameter. Default is 0.5.
dT : float, optional
Value for the dT parameter. Default is 0.15.
b : int, optional
Value for the b parameter. Default is 10.
eta_ds : float, optional
Value for the eta_ds parameter. Default is 0.5.
show_pins : bool, optional
Whether to draw pin markers in the generated layout. Default is False.
"""
def __init__(self,
Period: float = 0.3,
w: float = 1.1,
@@ -138,6 +168,32 @@ class Bragg_apodized:
return C
class Bragg(Bragg_apodized):
"""
Bragg primitive component.
This component builds the Bragg layout cell.
Parameters
----------
Period : float, optional
Value for the Period parameter. Default is 0.3.
w : float, optional
Width parameter in microns. Default is 1.1.
xs : str, optional
Layer or cross-section name used by the device. Default is 'strip'.
etch_type : str, optional
Value for the etch_type parameter. Default is 'FETCH'.
etch_shape : str, optional
Value for the etch_shape parameter. Default is 'rectangle'.
N : int, optional
Value for the N parameter. Default is 200.
eta_etch : float, optional
Value for the eta_etch parameter. Default is 0.5.
dT : float, optional
Value for the dT parameter. Default is 0.15.
show_pins : bool, optional
Whether to draw pin markers in the generated layout. Default is False.
"""
def __init__(self, Period: float=0.3,
w: float=1.1,
xs: str='strip',
+298 -6
View File
@@ -5,20 +5,74 @@ import numpy as np
from . import taper
from ...structures import *
from ...geometry import *
from ...routing import Route
# import nazca.interconnects as IC
# class Route(IC.Interconnect):
# pass
from ...structures import _my_polygon
from ...geometry import _my_polygon
from ...basic import __cell_arg__
class ring_bus_wg :
## two types:
## DC, BDC
"""
ring bus wg primitive component.
This component builds the ring bus wg layout cell.
Parameters
----------
xs : str, optional
Layer or cross-section name used by the device. Default is 'strip'.
R_cp : int, optional
Radius parameter in microns. Default is 20.
w_bus : float, optional
Width parameter in microns. Default is 0.5.
bend_DC : bool, optional
Value for the bend_DC parameter. Default is True.
w_wg : float, optional
Width parameter in microns. Default is 0.5.
dLc : float, optional
Value for the dLc parameter. Default is 10.
dAc : float, optional
Value for the dAc parameter. Default is 10.
euler_transistion : bool, optional
Value for the euler_transistion parameter. Default is False.
dL_trans : float, optional
Value for the dL_trans parameter. Default is 10.
dA_trans : float, optional
Value for the dA_trans parameter. Default is 30.
R_max_trans : int, optional
Radius parameter in microns. Default is 100.
w_trans : float, optional
Width parameter in microns. Default is 0.5.
euler_anti_bend : bool, optional
Value for the euler_anti_bend parameter. Default is False.
R_max_anti : int, optional
Radius parameter in microns. Default is 100.
R_min_anti : int, optional
Radius parameter in microns. Default is 10.
A_anti : Any, optional
Angle parameter in degrees. Default is None.
res : float, optional
Value for the res parameter. Default is 0.1.
wg_Ltp : int, optional
Value for the wg_Ltp parameter. Default is 5.
dL_p2p : Optional[float], optional
Value for the dL_p2p parameter. 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 False.
end_patch : bool, optional
Value for the end_patch parameter. Default is False.
clothoid_order : int, optional
Value for the clothoid_order parameter. Default is 1.
"""
def __init__(self,
xs: str='strip',
R_cp: int = 20,
@@ -183,6 +237,68 @@ class ring_bus_wg :
class ADC_STD_2x2:
"""
ADC STD 2x2 primitive component.
This component builds the ADC STD 2x2 layout cell.
Parameters
----------
name : Optional[str], optional
Unique identifier for the device cell. Default is None.
xs : str, optional
Layer or cross-section name used by the device. Default is 'strip'.
wu0 : float, optional
Value for the wu0 parameter. Default is 0.45.
wu1 : float, optional
Value for the wu1 parameter. Default is 0.61.
wu_in : float, optional
Value for the wu_in parameter. Default is 0.45.
wu_out : float, optional
Value for the wu_out parameter. Default is 0.8.
wd0 : float, optional
Value for the wd0 parameter. Default is 0.33.
wd1 : float, optional
Value for the wd1 parameter. Default is 0.2.
wd_in : float, optional
Value for the wd_in parameter. Default is 0.45.
wd_out : float, optional
Value for the wd_out parameter. Default is 0.8.
Lu : int, optional
Length parameter in microns. Default is 33.
Ld : int, optional
Length parameter in microns. Default is 33.
angle : float, optional
Angle parameter in degrees. Default is 20.
g0 : float, optional
Value for the g0 parameter. Default is 0.2.
g1 : float, optional
Value for the g1 parameter. Default is 0.2.
sbend_type : str, optional
Value for the sbend_type parameter. Default is 'euler'.
Rmax : Any, optional
Radius parameter in microns. Default is None.
Rmin : int, optional
Radius parameter in microns. Default is 5.
Ru0 : int, optional
Radius parameter in microns. Default is 0.
Ru1 : int, optional
Radius parameter in microns. Default is 20.
Rd0 : int, optional
Radius parameter in microns. Default is 20.
Rd1 : int, optional
Radius parameter in microns. Default is 0.
tp_angle : int, optional
Value for the tp_angle parameter. Default is 2.
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 False.
euler_points : int, optional
Value for the euler_points parameter. Default is 64.
res : float, optional
Value for the res parameter. Default is 0.1.
"""
def __init__ (self,
name: Optional[str] = None,
xs: str='strip',
@@ -504,6 +620,42 @@ class ADC_STD_2x2:
class DC(ADC_STD_2x2):
"""
DC primitive component.
This component builds the DC layout cell.
Parameters
----------
name : Optional[str], optional
Unique identifier for the device cell. Default is None.
xs : str, optional
Layer or cross-section name used by the device. Default is 'strip'.
w_cp : float, optional
Width parameter in microns. Default is 0.45.
w_wg : float, optional
Width parameter in microns. Default is 0.45.
L_cp : float, optional
Length parameter in microns. Default is 30.
angle : float, optional
Angle parameter in degrees. Default is 20.
gap : float, optional
Spacing or gap parameter in microns. Default is 0.2.
sbend_type : str, optional
Value for the sbend_type parameter. Default is 'circular'.
Rmax : float, optional
Radius parameter in microns. Default is None.
Rmin : float, optional
Radius parameter in microns. Default is 5.
R0 : float, optional
Radius parameter in microns. Default is 10.
tp_angle : float, optional
Value for the tp_angle parameter. Default is 2.
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 False.
"""
def __init__(self,
name: Optional[str] = None,
xs:str='strip',
@@ -580,6 +732,38 @@ class DC(ADC_STD_2x2):
return C
class BS_tdc(ADC_STD_2x2):
"""
BS tdc primitive component.
This component builds the BS tdc layout cell.
Parameters
----------
name : Optional[str], optional
Unique identifier for the device cell. Default is None.
xs : str, optional
Layer or cross-section name used by the device. Default is 'strip'.
wa0 : float, optional
Value for the wa0 parameter. Default is 0.35.
wa1 : float, optional
Value for the wa1 parameter. Default is 0.45.
wb0 : float, optional
Value for the wb0 parameter. Default is 0.55.
wb1 : float, optional
Value for the wb1 parameter. Default is 0.45.
w_wg : float, optional
Width parameter in microns. Default is 0.45.
gap : float, optional
Spacing or gap parameter in microns. Default is 0.2.
Lt : float, optional
Length parameter in microns. Default is 20.
R0 : float, optional
Radius parameter in microns. Default is 30.
angle : float, optional
Angle parameter in degrees. Default is 15.
sbend_type : str, optional
Value for the sbend_type parameter. Default is 'circle'.
"""
def __init__(self,
name: Optional[str]=None,
xs:str ='strip',
@@ -622,6 +806,52 @@ class BS_tdc(ADC_STD_2x2):
class MDM(ADC_STD_2x2):
"""
MDM primitive component.
This component builds the MDM layout cell.
Parameters
----------
name : Optional[str], optional
Unique identifier for the device cell. Default is None.
xs : str, optional
Layer or cross-section name used by the device. Default is 'strip'.
wb0 : float, optional
Value for the wb0 parameter. Default is 0.45.
wb1 : float, optional
Value for the wb1 parameter. Default is 0.61.
wb_in : float, optional
Value for the wb_in parameter. Default is 0.45.
wb_out : float, optional
Value for the wb_out parameter. Default is 0.88.
w_wg : float, optional
Width parameter in microns. Default is 0.45.
w0 : float, optional
Width parameter in microns. Default is 0.33.
w1 : float, optional
Width parameter in microns. Default is 0.2.
gap0 : float, optional
Spacing or gap parameter in microns. Default is 0.2.
Lt_bus : float, optional
Length parameter in microns. Default is 20.
R0 : float, optional
Radius parameter in microns. Default is 40.
angle : float, optional
Angle parameter in degrees. Default is 22.5.
Lt_cp : float, optional
Length parameter in microns. Default is None.
gap1 : float, optional
Spacing or gap parameter in microns. Default is None.
Lb0 : float, optional
Length parameter in microns. Default is None.
symmetric_BUS : bool, optional
Value for the symmetric_BUS parameter. Default is True.
single_end : bool, optional
Value for the single_end parameter. Default is True.
Rmin : float, optional
Radius parameter in microns. Default is 8.
"""
def __init__(self,
name: Optional[str] = None,
xs:str='strip',
@@ -749,10 +979,34 @@ class MDM(ADC_STD_2x2):
class DC_bend :
'''
This is a class for bend directional coupler for broadband and fabrication tolerant power splitting.
Written by HU GAOLEI at 2022.5.15.
'''
"""
This is a class for bend directional coupler for broadband and fabrication tolerant power splitting.
Parameters
----------
name : Optional[str], optional
Unique identifier for the device cell. Default is None.
w_in : float, optional
Width parameter in microns. Default is 0.45.
w_out : float, optional
Width parameter in microns. Default is 0.45.
gap : float, optional
Spacing or gap parameter in microns. Default is 0.2.
r_in : float, optional
Radius parameter in microns. Default is 40.
theta_arc : float, optional
Angle parameter in degrees. Default is 30.
w_wg : float, optional
Width parameter in microns. Default is 0.45.
theta_ext : float, optional
Angle parameter in degrees. Default is 15.
xs_wg : 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.
show_pins : bool, optional
Whether to draw pin markers in the generated layout. Default is False.
"""
def __init__(
self,
@@ -903,6 +1157,44 @@ class DC_bend :
class DC_pX_3sg:
"""
DC pX 3sg primitive component.
This component builds the DC pX 3sg layout cell.
Parameters
----------
name : Optional[str], optional
Unique identifier for the device cell. Default is None.
xs_wg : str, optional
Layer or cross-section name used by the device. Default is 'strip'.
Lc1 : float, optional
Length parameter in microns. Default is 10.
Lp1 : float, optional
Length parameter in microns. Default is 5.
Lc2 : float, optional
Length parameter in microns. Default is 10.
Lt : float, optional
Length parameter in microns. Default is 1.
w_cp : float, optional
Width parameter in microns. Default is 0.5.
dw : float, optional
Value for the dw parameter. Default is 0.1.
gap : float, optional
Spacing or gap parameter in microns. Default is 0.2.
R0 : float, optional
Radius parameter in microns. Default is 10.
A : float, optional
Angle parameter in degrees. Default is 15.
w_wg : float, optional
Width parameter in microns. Default is 0.45.
pX_type : str, optional
Value for the pX_type parameter. Default is 'symmetric'.
port_symmetric : bool, optional
Value for the port_symmetric parameter. Default is True.
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,
xs_wg:str='strip',
+40 -2
View File
@@ -4,13 +4,31 @@ import numpy as np
import math
from ...routing import Route
from ...structures import *
from ...geometry import *
from ....technologies import *
import pandas as pd
from ...structures import _my_polygon
from ...geometry import _my_polygon
class Cross:
"""
Cross primitive component.
This component builds the Cross layout cell.
Parameters
----------
name : Optional[str], optional
Unique identifier for the device cell. Default is None.
L : list, optional
Length parameter in microns. Default is [0, 1, 2, 3, 4].
w : list, optional
Width parameter in microns. Default is [0.5, 0.45, 0.6, 0.4, 0.5].
xs : str, optional
Layer or cross-section name used by the device. Default is 'strip'.
show_pins : bool, optional
Whether to draw pin markers in the generated layout. Default is False.
"""
def __init__(self,
name: Optional[str] = None,
L: list = [0 , 1, 2, 3, 4],
@@ -97,6 +115,26 @@ class Cross:
return C
class Cross_Sine(Cross):
"""
Cross Sine primitive component.
This component builds the Cross Sine layout cell.
Parameters
----------
name : Optional[str], optional
Unique identifier for the device cell. Default is None.
res : list, optional
Value for the res parameter. Default is [1, 1, 1, 1].
w : list, optional
Width parameter in microns. Default is [0.5, 0.45, 0.6, 0.4, 0.5].
xs : str, optional
Layer or cross-section name used by the device. Default is 'strip'.
n_points : int, optional
Value for the n_points parameter. Default is 4.
show_pins : bool, optional
Whether to draw pin markers in the generated layout. Default is False.
"""
def __init__(self,
name: Optional[str] = None,
res: list = [1,1,1,1],
+225 -25
View File
@@ -3,8 +3,8 @@ import nazca as nd
import numpy as np
import math
from ...structures import *
from ...structures import _my_polygon
from ...geometry import *
from ...geometry import _my_polygon
from ...basic import __cell_arg__
from ...routing import Route
@@ -13,26 +13,37 @@ import pandas as pd
''' Class for nanoantenna '''
class Nano_ant():
"""Class of nanoantenna for optical phased array.
This is the class of nanoantenna for optical phased array. GDS cell can be generated using this class. Simulation structure generation and simulation results analysis is going to be added in the future.
Args:
- tapeout [class] (Default: CUMEC_CSiP130Cu)
- w_wg [um] (Default: 0.5um)
Width of input waveguide
- vector [um] (Default: [0.5,..,0.5]])
Vectors to define the length of each teeth
- taper_length [um] (Default: 1um)
Length of the linear taper region
- width [um] (Default: 3um)
Width of the nanoantenna
- max_theta [degree](Default: 110)
Open degree of linear taper
- define_type [str] (Default: non-periodic)
Way to define the antenna, including: "non-periodic", "periodic"
- etch_depth [str] (Default: "DETCH")
Define the etch depth, including: "FETCH", "METCH", "SETCH"
"""
Class of nanoantenna for optical phased array.
This is the class of nanoantenna for optical phased array. GDS cell can be generated using this class. Simulation structure generation and simulation results analysis is going to be added in the future.
Parameters
----------
w_wg : float, optional
Width parameter in microns. Default is 0.41.
xs_wg : str, optional
Layer or cross-section name used by the device. Default is 'strip'.
define_type : str, optional
Value for the define_type parameter. Default is 'non-periodic'.
vector : list, optional
Value for the vector parameter. Default is [0.5, 0.5, 0.5, 0.5, 0.5, 0.5].
taper_length : float, optional
Value for the taper_length parameter. Default is 3.
width : float, optional
Width parameter in microns. Default is 6.
max_theta : float, optional
Value for the max_theta parameter. Default is 110.
pitch : float, optional
Spacing or gap parameter in microns. Default is 0.6.
duty_cycle : float, optional
Value for the duty_cycle parameter. Default is 0.3.
teeth_number : float, optional
Value for the teeth_number parameter. Default is 6.
etch_depth : list, optional
Value for the etch_depth parameter. Default is ['METCH'].
show_pins : bool, optional
Whether to draw pin markers in the generated layout. Default is True.
"""
def __init__(
@@ -193,6 +204,24 @@ class Nano_ant():
''' Class for 2D antenna array for FMF grating '''
class Taper() :
"""
Taper primitive component.
This component builds the Taper layout cell.
Parameters
----------
width1 : float, optional
Width parameter in microns. Default is 4.
width2 : float, optional
Width parameter in microns. Default is 0.45.
length : float, optional
Length parameter in microns. Default is 30.
type : str, optional
Value for the type parameter. Default is 'linear'.
show_pins : bool, optional
Whether to draw pin markers in the generated layout. Default is False.
"""
def __init__(self, width1: float=4, width2: float=0.45, length: float=30, type: str="linear", show_pins: bool=False) -> None:
self.width1 = width1
self.width2 = width2
@@ -252,9 +281,36 @@ class Taper() :
class Grating_2D_Hole() :
'''
This is a class for 2D Grating in IMEC.
'''
"""
This is a class for 2D Grating in IMEC.
Parameters
----------
w_wg : float, optional
Width parameter in microns. Default is 0.5.
w_gt : float, optional
Width parameter in microns. Default is 5.
l_taper : float, optional
Value for the l_taper parameter. Default is 30.
type_taper : str, optional
Value for the type_taper parameter. Default is 'parabolic'.
gt_vector : list, optional
Value for the gt_vector parameter. Default is [0.5, 0.5, 0.5, 0.5, 0.5].
gt_diameter : float, optional
Value for the gt_diameter parameter. Default is 0.4.
gt_layer : str, optional
Value for the gt_layer parameter. Default is 'STRIP_COR'.
polysi_vector : list, optional
Value for the polysi_vector parameter. Default is [0.5, 0.5, 0.5, 0.5, 0.5].
polysi_diameter : float, optional
Value for the polysi_diameter parameter. Default is 0.4.
polysi_layer : str, optional
Value for the polysi_layer parameter. Default is 'FCW_TRE'.
reflector_vector : list, optional
Value for the reflector_vector parameter. Default is [0.3, 0.3, 0.3, 0.3, 0.3, 0.3].
l_field_center : float, optional
Value for the l_field_center parameter. Default is 1.
"""
def __init__(
self,
w_wg: float=0.5,
@@ -344,6 +400,22 @@ class Grating_2D_Hole() :
class Grating_2D_Hole_4Rec() :
"""
Grating 2D Hole 4Rec primitive component.
This component builds the Grating 2D Hole 4Rec layout cell.
Parameters
----------
grating_unit : Any
Grating unit cell or component used by this wrapper.
mode_radius : int, optional
Value for the mode_radius parameter. Default is 8.
cell_name : Optional[str], optional
Optional generated cell name. Default is None.
show_pins : bool, optional
Whether to draw pin markers in the generated layout. Default is False.
"""
def __init__(self, grating_unit: Any, mode_radius: int=8, cell_name: Optional[str]=None, show_pins: bool=False) -> None:
self.gt_2D_class = grating_unit
self.cell_unit = grating_unit.cell
@@ -416,6 +488,22 @@ class Grating_2D_Hole_4Rec() :
class Grating_2D_Hole_3Rec() :
"""
Grating 2D Hole 3Rec primitive component.
This component builds the Grating 2D Hole 3Rec layout cell.
Parameters
----------
grating_unit : Any
Grating unit cell or component used by this wrapper.
mode_radius : float, optional
Value for the mode_radius parameter. Default is 6.5.
cell_name : Optional[str], optional
Optional generated cell name. Default is None.
show_pins : bool, optional
Whether to draw pin markers in the generated layout. Default is False.
"""
def __init__(self, grating_unit: Any, mode_radius: float=6.5, cell_name: Optional[str]=None, show_pins: bool=False) -> None:
self.gt_2D_class = grating_unit
self.cell_unit = grating_unit.cell
@@ -484,6 +572,62 @@ class Grating_2D_Hole_3Rec() :
""" Renamed for simplification in 2023.04.02 """
class GC_STD_2D:
"""
GC STD 2D primitive component.
This component builds the GC STD 2D layout cell.
Parameters
----------
name : Optional[str], optional
Unique identifier for the device cell. Default is None.
etch_type : str, optional
Value for the etch_type parameter. Default is 'FETCH'.
xs_wg : str, optional
Layer or cross-section name used by the device. Default is 'grating'.
Dx_hole : float, optional
Value for the Dx_hole parameter. Default is 0.3.
Dy_hole : float, optional
Value for the Dy_hole parameter. Default is 0.3.
hole_shape : str, optional
Value for the hole_shape parameter. Default is 'circle'.
shape : str, optional
Value for the shape parameter. Default is 'circle'.
xs_open : str, optional
Layer or cross-section name used by the device. Default is None.
Px : float, optional
Value for the Px parameter. Default is 0.57.
Py : float, optional
Value for the Py parameter. Default is 0.57.
num_x : float, optional
Count or repetition parameter. Default is 25.
num_y : float, optional
Count or repetition parameter. Default is 25.
Lx_taper : float, optional
Length parameter in microns. Default is 50.
Ly_taper : float, optional
Length parameter in microns. Default is 0.
Lx_end : float, optional
Length parameter in microns. Default is 1.
Ly_end : float, optional
Length parameter in microns. Default is 1.
Lx_side : float, optional
Length parameter in microns. Default is 0.5.
Ly_side : float, optional
Length parameter in microns. Default is 0.5.
Lx_port : float, optional
Length parameter in microns. Default is 5.
Ly_port : float, optional
Length parameter in microns. Default is 5.
w_wg : float, optional
Width parameter in microns. Default is 0.5.
show_pins : bool, optional
Whether to draw pin markers in the generated layout. Default is False.
P_AR : float, optional
Value for the P_AR parameter. Default is 0.6.
L_AR : float, optional
Length parameter in microns. Default is 1.
"""
def __init__(self,
name: Optional[str]=None,
etch_type :str = 'FETCH',
@@ -773,6 +917,46 @@ class GC_STD_2D:
return C
class GC_STD_1D:
"""
GC STD 1D primitive component.
This component builds the GC STD 1D layout cell.
Parameters
----------
name : Optional[str], optional
Unique identifier for the device cell. Default is None.
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.
etch_type : str, optional
Value for the etch_type parameter. Default is 'FETCH'.
xs_open : str, optional
Layer or cross-section name used by the device. Default is None.
L_taper : float, optional
Length parameter in microns. Default is 10.
L_end : float, optional
Length parameter in microns. Default is 2.
A_taper : float, optional
Angle parameter in degrees. Default is 30.
Period : float, optional
Value for the Period parameter. Default is 0.5.
eta_etch : float, optional
Value for the eta_etch parameter. Default is 0.5.
num : float, optional
Count or repetition parameter. Default is 20.
sector_gc : bool, optional
Value for the sector_gc parameter. Default is True.
show_pins : bool, optional
Whether to draw pin markers in the generated layout. Default is False.
L_tail : int, optional
Length parameter in microns. Default is 2.
P_AR : float, optional
Value for the P_AR parameter. Default is 1.
L_AR : float, optional
Length parameter in microns. Default is 2.
"""
def __init__ (self,
name: Optional[str]=None,
xs_wg : str = 'strip',
@@ -1074,6 +1258,22 @@ class GC_STD_1D:
return C
class FA:
"""
FA primitive component.
This component builds the FA layout cell.
Parameters
----------
fiber_coupler : Any
Fiber coupler cell or component used by this array.
pitch : float
Spacing or gap parameter in microns.
number : int
Count or repetition parameter.
show_pins : bool, optional
Whether to draw pin markers in the generated layout. Default is False.
"""
def __init__(self,fiber_coupler: Any,pitch: float,number: int,show_pins: bool=False) -> None:
# if (isinstance(fiber_coupler,nd.Cell)):
+74 -2
View File
@@ -7,13 +7,51 @@ import math
from .taper import taper_xs2xs
from ...routing import Route
from ...structures import *
from ...geometry import *
from ....technologies import *
from ...structures import _my_polygon,Conchoid
from ...geometry import _my_polygon,Conchoid
""" Mono layer MMI """
class MMI_ML:
"""
MMI ML primitive component.
This component builds the MMI ML layout cell.
Parameters
----------
name : Optional[str], optional
Unique identifier for the device cell. Default is None.
L_arm : list, optional
Length parameter in microns. Default is [10].
w_arm : list, optional
Width parameter in microns. Default is [0.45, 1.35].
xs : str, optional
Layer or cross-section name used by the device. Default is 'strip'.
arm_sine_width : bool, optional
Value for the arm_sine_width parameter. Default is False.
L_mmi : list, optional
Length parameter in microns. Default is [10].
w_mmi : list, optional
Width parameter in microns. Default is [5, 5].
mmi_sine_width : bool, optional
Value for the mmi_sine_width parameter. Default is False.
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 False.
res : float, optional
Value for the res parameter. Default is 0.01.
N_out : int, optional
Count or repetition parameter. Default is 3.
N_in : int, optional
Count or repetition parameter. Default is 1.
Dp_out : float, optional
Value for the Dp_out parameter. Default is 1.5.
Dp_in : float, optional
Value for the Dp_in parameter. Default is 1.5.
"""
def __init__(self,
name: Optional[str]=None,
L_arm: list=[10],
@@ -163,6 +201,40 @@ class MMI_ML:
class MMI_STD(MMI_ML):
"""
MMI STD primitive component.
This component builds the MMI STD layout cell.
Parameters
----------
name : Optional[str], optional
Unique identifier for the device cell. Default is None.
N_out : int, optional
Count or repetition parameter. Default is 3.
N_in : int, optional
Count or repetition parameter. Default is 1.
L_arm : int, optional
Length parameter in microns. Default is 10.
w_wg : float, optional
Width parameter in microns. Default is 0.45.
w_port : float, optional
Width parameter in microns. Default is 1.2.
xs : str, optional
Layer or cross-section name used by the device. Default is 'strip'.
L_mmi : int, optional
Length parameter in microns. Default is 10.
w_mmi : float, optional
Width parameter in microns. Default is 5.
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 False.
Dp_out : float, optional
Value for the Dp_out parameter. Default is 1.5.
Dp_in : float, optional
Value for the Dp_in parameter. Default is 1.5.
"""
def __init__(self,
name: Optional[str]=None,
N_out: int=3,
+219 -1
View File
@@ -5,7 +5,7 @@ from .couplers import ring_bus_wg
from .taper import taper_xs2xs
from ...structures import Racetrack,Clothoid,circle,Elipse_dual
from ...geometry import Racetrack,Clothoid,circle,Elipse_dual
from . import ring_bus_wg
from ...electronics import Vias
import nazca.interconnects as IC
@@ -18,6 +18,76 @@ class Route(IC.Interconnect):
class RacetrackResonator:
"""
RacetrackResonator primitive component.
This component builds the RacetrackResonator layout cell.
Parameters
----------
R0 : Any
Radius parameter in microns.
w0 : float
Width parameter in microns.
R1 : Any
Radius parameter in microns.
w1 : float
Width parameter in microns.
dLy : float
Value for the dLy parameter.
dLx : float
Value for the dLx parameter.
name : Optional[str], optional
Unique identifier for the device cell. Default is None.
xs : str, optional
Layer or cross-section name used by the device. Default is 'strip'.
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.
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.
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.
res : float, optional
Value for the res parameter. Default is 0.01.
show_pins : bool, optional
Whether to draw pin markers in the generated layout. Default is False.
"""
def __init__(self,
R0: Any,
@@ -147,6 +217,58 @@ class RacetrackResonator:
class Racetrack_STD_Allpass(RacetrackResonator):
"""
Racetrack STD Allpass primitive component.
This component builds the Racetrack STD Allpass layout cell.
Parameters
----------
r_rck : float
Radius parameter in microns.
w_rck : float
Width parameter in microns.
dLy : float
Value for the dLy parameter.
name : Optional[str], optional
Unique identifier for the device cell. Default is None.
xs : str, optional
Layer or cross-section name used by the device. Default is 'strip'.
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.
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 0.
Ratt : int, optional
Radius parameter in microns. Default is 10.
w_ht : float, optional
Width parameter in microns. Default is 0.
w_mt : float, optional
Width parameter in microns. Default is 10.
via_h2m : Any, optional
Via definition used between heater and metal layers. Default is None.
xs_ht : str, optional
Layer or cross-section name used by the device. Default is 'heater'.
xs_mt : str, optional
Layer or cross-section name used by the device. Default is 'metal'.
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.
res : float, optional
Value for the res parameter. Default is 0.01.
show_pins : bool, optional
Whether to draw pin markers in the generated layout. Default is False.
"""
def __init__(self,
r_rck: float, w_rck: float,
dLy: float,
@@ -232,6 +354,54 @@ class Racetrack_STD_Allpass(RacetrackResonator):
class Racetrack_MM_Allpass(RacetrackResonator):
"""
Racetrack MM Allpass primitive component.
This component builds the Racetrack MM Allpass layout cell.
Parameters
----------
r1_rck : float
Value for the r1_rck parameter.
w1_rck : float
Value for the w1_rck parameter.
r0_rck : float
Value for the r0_rck parameter.
w0_rck : float
Value for the w0_rck parameter.
dLy : float
Value for the dLy parameter.
name : Optional[str], optional
Unique identifier for the device cell. Default is None.
xs : str, optional
Layer or cross-section name used by the device. Default is 'strip'.
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 : int, optional
Radius parameter in microns. Default is 50.
R_att_min : int, optional
Radius parameter in microns. Default is 10.
A_att : int, optional
Angle parameter in degrees. Default is 15.
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.
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.
res : float, optional
Value for the res parameter. Default is 0.01.
show_pins : bool, optional
Whether to draw pin markers in the generated layout. Default is False.
"""
def __init__(self,
r1_rck: float, w1_rck: float,
r0_rck: float, w0_rck: float,
@@ -264,6 +434,54 @@ class Racetrack_MM_Allpass(RacetrackResonator):
class Racetrack_MM_Adddrop(RacetrackResonator):
"""
Racetrack MM Adddrop primitive component.
This component builds the Racetrack MM Adddrop layout cell.
Parameters
----------
r1_rck : float
Value for the r1_rck parameter.
w1_rck : float
Value for the w1_rck parameter.
r0_rck : float
Value for the r0_rck parameter.
w0_rck : float
Value for the w0_rck parameter.
dLy : float
Value for the dLy parameter.
name : Optional[str], optional
Unique identifier for the device cell. Default is None.
xs : str, optional
Layer or cross-section name used by the device. Default is 'strip'.
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 : int, optional
Radius parameter in microns. Default is 50.
R_att_min : int, optional
Radius parameter in microns. Default is 10.
A_att : int, optional
Angle parameter in degrees. Default is 15.
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.
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.
res : float, optional
Value for the res parameter. Default is 0.01.
show_pins : bool, optional
Whether to draw pin markers in the generated layout. Default is False.
"""
def __init__(self,
r1_rck: float, w1_rck: float,
r0_rck: float, w0_rck: float,
+137 -1
View File
@@ -5,7 +5,7 @@ from .couplers import ring_bus_wg
from .taper import taper_xs2xs
from ...structures import *
from ...geometry import *
# import nazca.interconnects as IC
from ...routing import Route
@@ -20,6 +20,76 @@ from ...basic import __cell_arg__
""" NOTE: n_points will not be used in any future class, res will be the accurancy parameter """
class AED_ring :
"""
AED ring primitive component.
This component builds the AED ring 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.65.
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 : 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.
res : float, optional
Value for the res parameter. Default is 0.01.
show_pins : bool, optional
Whether to draw pin markers in the generated layout. Default is False.
"""
def __init__(self,
name: Optional[str]=None,
ORx: float = 10,
@@ -247,6 +317,72 @@ class AED_ring :
return C
class STD_PIC_Rings(AED_ring):
"""
STD PIC Rings primitive component.
This component builds the STD PIC Rings 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 10.
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 : 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.
res : float, optional
Value for the res parameter. Default is 0.001.
show_pins : bool, optional
Whether to draw pin markers in the generated layout. Default is False.
"""
def __init__(self,
name: Optional[str] = None,
r_ring: float=10,
+270 -2
View File
@@ -7,14 +7,66 @@ import math
from .taper import taper_xs2xs
from ...routing import Route
from ...structures import *
from ...geometry import *
from ....technologies import *
from ...structures import _my_polygon,Conchoid,_my_poly_spiral
from ...geometry import _my_polygon,Conchoid,_my_poly_spiral
from scipy import optimize
class spiral:
"""
spiral primitive component.
This component builds the spiral layout cell.
Parameters
----------
name : str, optional
Unique identifier for the device cell. Default is None.
shape : str, optional
Value for the shape parameter. Default is 'circle'.
Dmin : float, optional
Value for the Dmin parameter. Default is 50.
R_bend : float, optional
Radius parameter in microns. Default is 10.
Rmin_euler : float, optional
Radius parameter in microns. Default is 10.
Lmin : float, optional
Length parameter in microns. Default is 50.
width : float, optional
Width parameter in microns. Default is 2.
w_port : float, optional
Width parameter in microns. Default is 0.45.
w_bend_center : float, optional
Width parameter in microns. Default is 1.
Rmin_bend_center : float, optional
Radius parameter in microns. Default is 10.
gap : float, optional
Spacing or gap parameter in microns. Default is 1.
cycles : float, optional
Count or repetition parameter. Default is 20.
xs : str, optional
Layer or cross-section name used by the device. Default is 'strip'.
layer : str, optional
Layer or cross-section name used by the device. Default is None.
w_bend_port : Optional[float], optional
Width parameter in microns. Default is None.
Ltp_port : int, optional
Length parameter in microns. Default is 10.
res : float, optional
Value for the res parameter. Default is 0.5.
rib2strip : bool, optional
Value for the rib2strip parameter. Default is True.
port_angle : float, optional
Value for the port_angle parameter. Default is 180.
Euler_bend : bool, optional
Value for the Euler_bend parameter. Default is False.
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: str = None,
shape: str = 'circle',
@@ -350,6 +402,58 @@ class spiral:
return C
class spiral_rectangle:
"""
spiral rectangle primitive component.
This component builds the spiral rectangle layout cell.
Parameters
----------
name : str, optional
Unique identifier for the device cell. Default is None.
Dmin : float, optional
Value for the Dmin parameter. Default is 50.
Rmax_bend : float, optional
Radius parameter in microns. Default is 10.
Rmin_bend : float, optional
Radius parameter in microns. Default is 10.
wmin_bend : float, optional
Value for the wmin_bend parameter. Default is 10.
Lmin : float, optional
Length parameter in microns. Default is 50.
width : float, optional
Width parameter in microns. Default is 2.
w_port : float, optional
Width parameter in microns. Default is None.
gap : float, optional
Spacing or gap parameter in microns. Default is 1.
cycles : float, optional
Count or repetition parameter. Default is 20.
xs : str, optional
Layer or cross-section name used by the device. Default is 'strip'.
layer : str, optional
Layer or cross-section name used by the device. Default is None.
w_bend_port : Optional[float], optional
Width parameter in microns. Default is None.
Lport : int, optional
Length parameter in microns. Default is 10.
Ltp : int, optional
Length parameter in microns. Default is 10.
res : float, optional
Value for the res parameter. Default is 0.5.
cell_xs_transition : Any, optional
Cell or component dependency used by this device. Default is None.
port_angle : float, optional
Value for the port_angle parameter. Default is 180.
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.
in_out_align : bool, optional
Value for the in_out_align parameter. Default is True.
Lpatch : float, optional
Length parameter in microns. Default is 0.05.
"""
def __init__(self,
name: str = None,
Dmin: float = 50,
@@ -653,6 +757,48 @@ class spiral_rectangle:
return C
class Spiral_Rect_STD(spiral_rectangle):
"""
Spiral Rect STD primitive component.
This component builds the Spiral Rect STD layout cell.
Parameters
----------
name : str, optional
Unique identifier for the device cell. Default is None.
Dmin : float, optional
Value for the Dmin parameter. Default is 50.
R_bend : float, optional
Radius parameter in microns. Default is 10.
Lmin : float, optional
Length parameter in microns. Default is 50.
width : float, optional
Width parameter in microns. Default is 2.
w_port : float, optional
Width parameter in microns. Default is 0.45.
gap : float, optional
Spacing or gap parameter in microns. Default is 1.
cycles : float, optional
Count or repetition parameter. Default is 20.
xs : str, optional
Layer or cross-section name used by the device. Default is 'strip'.
layer : str, optional
Layer or cross-section name used by the device. Default is None.
Lport : int, optional
Length parameter in microns. Default is 10.
in_out_align : bool, optional
Value for the in_out_align parameter. Default is True.
res : float, optional
Value for the res parameter. Default is 0.5.
cell_xs_transition : Any, optional
Cell or component dependency used by this device. Default is None.
port_angle : float, optional
Value for the port_angle parameter. Default is 180.
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: str = None,
Dmin: float = 50,
@@ -693,6 +839,50 @@ class Spiral_Rect_STD(spiral_rectangle):
in_out_align=in_out_align)
class spiral_circle:
"""
spiral circle primitive component.
This component builds the spiral circle layout cell.
Parameters
----------
name : str, optional
Unique identifier for the device cell. Default is None.
Dmin : float, optional
Value for the Dmin parameter. Default is 50.
width : float, optional
Width parameter in microns. Default is 2.
w_port : float, optional
Width parameter in microns. Default is 0.45.
w_bend_center : float, optional
Width parameter in microns. Default is 1.
gap : float, optional
Spacing or gap parameter in microns. Default is 1.
cycles : float, optional
Count or repetition parameter. Default is 20.
xs : str, optional
Layer or cross-section name used by the device. Default is 'strip'.
layer : str, optional
Layer or cross-section name used by the device. Default is None.
Lport : int, optional
Length parameter in microns. Default is 10.
res : float, optional
Value for the res parameter. Default is 0.5.
rib2strip : bool, optional
Value for the rib2strip parameter. Default is True.
port_angle : float, optional
Value for the port_angle parameter. Default is 180.
Euler_Sbend : bool, optional
Value for the Euler_Sbend parameter. Default is False.
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.
strict_condition : bool, optional
Value for the strict_condition parameter. Default is False.
R_ratio_mamnual : Any, optional
Radius parameter in microns. Default is None.
"""
def __init__(self,
name: str = None,
Dmin: float = 50,
@@ -942,6 +1132,46 @@ class spiral_circle:
return C
class Spiral_Cicle_MM(spiral_circle):
"""
Spiral Cicle MM primitive component.
This component builds the Spiral Cicle MM layout cell.
Parameters
----------
name : str, optional
Unique identifier for the device cell. Default is None.
Dmin : float, optional
Value for the Dmin parameter. Default is 50.
width : float, optional
Width parameter in microns. Default is 2.
w_port : float, optional
Width parameter in microns. Default is 0.45.
w_bend_center : float, optional
Width parameter in microns. Default is 1.
gap : float, optional
Spacing or gap parameter in microns. Default is 1.
cycles : float, optional
Count or repetition parameter. Default is 20.
xs : str, optional
Layer or cross-section name used by the device. Default is 'strip'.
layer : str, optional
Layer or cross-section name used by the device. Default is None.
Lport : int, optional
Length parameter in microns. Default is 10.
res : float, optional
Value for the res parameter. Default is 0.5.
rib2strip : bool, optional
Value for the rib2strip parameter. Default is True.
port_angle : float, optional
Value for the port_angle parameter. Default is 180.
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.
strict_condition : bool, optional
Value for the strict_condition parameter. Default is False.
"""
def __init__(self,
name: str = None,
Dmin: float = 50,
@@ -974,6 +1204,44 @@ class Spiral_Cicle_MM(spiral_circle):
strict_condition=strict_condition)
class Spiral_Cicle_STD(spiral_circle):
"""
Spiral Cicle STD primitive component.
This component builds the Spiral Cicle STD layout cell.
Parameters
----------
name : str, optional
Unique identifier for the device cell. Default is None.
Dmin : float, optional
Value for the Dmin parameter. Default is 50.
width : float, optional
Width parameter in microns. Default is 2.
w_port : float, optional
Width parameter in microns. Default is 0.45.
gap : float, optional
Spacing or gap parameter in microns. Default is 1.
cycles : float, optional
Count or repetition parameter. Default is 20.
xs : str, optional
Layer or cross-section name used by the device. Default is 'strip'.
layer : str, optional
Layer or cross-section name used by the device. Default is None.
Lport : int, optional
Length parameter in microns. Default is 10.
res : float, optional
Value for the res parameter. Default is 0.5.
rib2strip : bool, optional
Value for the rib2strip parameter. Default is True.
port_angle : float, optional
Value for the port_angle parameter. Default is 180.
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.
strict_condition : bool, optional
Value for the strict_condition parameter. Default is False.
"""
def __init__(self,
name: str = None,
Dmin: float = 50,
+78 -3
View File
@@ -3,14 +3,44 @@ import numpy as np
import math
from ...routing import Route
from ...structures import *
from ...geometry import *
from ....technologies import *
import pandas as pd
from ...structures import _my_polygon
from ...geometry import _my_polygon
""" NEW Classes :: Transistion area of rib to strip, to minize the loss """
class transition:
"""
transition primitive component.
This component builds the transition layout cell.
Parameters
----------
layer_FETCH : str, optional
Layer or cross-section name used by the device. Default is 'STRIP_TRE'.
layer_METCH : str, optional
Layer or cross-section name used by the device. Default is 'RIB_TRE'.
w_rib : float, optional
Width parameter in microns. Default is 1.1.
dw_tolerance : float, optional
Value for the dw_tolerance parameter. Default is 0.2.
w_grow_rib : float, optional
Width parameter in microns. Default is 2.
w_grow_strip : float, optional
Width parameter in microns. Default is 2.
Ltp1 : int, optional
Length parameter in microns. Default is 15.
Ltp2 : int, optional
Length parameter in microns. Default is 10.
Ltrans : int, optional
Length parameter in microns. Default is 5.
L_port : int, optional
Length parameter in microns. Default is 2.
show_pins : bool, optional
Whether to draw pin markers in the generated layout. Default is False.
"""
def __init__(self,
layer_FETCH: str="STRIP_TRE",
layer_METCH: str="RIB_TRE",
@@ -59,6 +89,26 @@ class transition:
self.cell = C
class taper_xs2xs:
"""
taper xs2xs primitive component.
This component builds the taper xs2xs layout cell.
Parameters
----------
xs_1 : str, optional
Layer or cross-section name used by the device. Default is 'rib'.
xs_2 : str, optional
Layer or cross-section name used by the device. Default is 'strip'.
L_taper : float, optional
Length parameter in microns. Default is 10.
w_1 : float, optional
Width parameter in microns. Default is 0.45.
w_2 : float, optional
Width parameter in microns. Default is 0.45.
L_port : float, optional
Length parameter in microns. Default is 0.
"""
def __init__ (self,
xs_1:str='rib',
xs_2:str='strip',
@@ -157,7 +207,32 @@ class taper_xs2xs:
class PSR:
"""
Polarization Splitter & rotator
Polarization Splitter & rotator.
Parameters
----------
name : str, optional
Unique identifier for the device cell. Default is 'PSR_unit'.
xs : str, optional
Layer or cross-section name used by the device. Default is 'rib'.
layer_u : str, optional
Layer or cross-section name used by the device. Default is None.
layer_d : str, optional
Layer or cross-section name used by the device. Default is None.
w : list, optional
Width parameter in microns. Default is [0.45, 0.45, 0.55, 1.2, 1.2].
Lt_rib : list, optional
Length parameter in microns. Default is [10, 30, 30, 10].
ws : list, optional
Value for the ws parameter. Default is [0.45, 2, 1.2].
Lt_slab : list, optional
Length parameter in microns. Default is [40, 40].
shape : str, optional
Value for the shape parameter. Default is 'sine'.
L_port : float, optional
Length parameter in microns. Default is 5.
res : float, optional
Value for the res parameter. Default is 0.01.
"""
def __init__ (self,