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
+498 -6
View File
@@ -8,7 +8,7 @@ from ...electronics.eic_units import Vias_arc
from ..pic.taper import taper_xs2xs
from ...structures import *
from ...geometry import *
import nazca.interconnects as IC
class Route(IC.Interconnect):
@@ -26,6 +26,114 @@ from ...basic import __list_convert__,__array_convert__
""" This is used within the situation that double side is the same, and concentric coupling """
""" Refreshed 2023.09.14 """
class AED_Ring_PIN(MRR_AED): ## Finished in 2022.11.23
"""
AED Ring PIN primitive component.
This component builds the AED Ring PIN 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 9.
IRx : float, optional
Value for the IRx parameter. Default is 10 - 0.65.
IRy : float, optional
Value for the IRy parameter. Default is 9 - 0.4.
gap : float, optional
Spacing or gap parameter in microns. Default is 0.2.
dual_BUS : bool, optional
Value for the dual_BUS parameter. Default is False.
w_bus : float, optional
Width parameter in microns. Default is 0.45.
R_cp : Any, optional
Radius parameter in microns. Default is None.
A_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.
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.
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.
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 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.
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_ht_dX : int, optional
Value for the epin_ht_dX parameter. Default is 10.
epin_ht_dY : int, optional
Value for the epin_ht_dY parameter. Default is 3.
via_i2m : Any, optional
Via definition used between implant and metal layers. Default is None.
xs_metal_imp : str, optional
Layer or cross-section name used by the device. Default is 'metal'.
xs_p : str, optional
Layer or cross-section name used by the device. Default is 'p'.
xs_n : str, optional
Layer or cross-section name used by the device. Default is 'n'.
xs_cont_wg : Optional[str], optional
Layer or cross-section name used by the device. Default is None.
w_p : float, optional
Width parameter in microns. Default is 3.0.
gap_p_i : float, optional
Spacing or gap parameter in microns. Default is 1.
gap_n_i : float, optional
Spacing or gap parameter in microns. Default is 1.
w_n : float, optional
Width parameter in microns. Default is 3.0.
offset_i : float, optional
Value for the offset_i parameter. Default is 0.
A_imp_in : int, optional
Angle parameter in degrees. Default is 180.
A_imp_out : int, optional
Angle parameter in degrees. Default is 180.
sp_cont : float, optional
Spacing or gap parameter in microns. Default is 0.2.
w_ovlp : float, optional
Width parameter in microns. Default is 0.1.
bus_dopping : bool, optional
Value for the bus_dopping parameter. Default is True.
p_in_n_out : bool, optional
Value for the p_in_n_out parameter. Default is False.
cell_xs_transition : Any, optional
Cell or component dependency used by this device. Default is None.
"""
def __init__(self,
name: Optional[str]=None,
ORx: float=10,
@@ -579,6 +687,116 @@ class AED_Ring_PIN(MRR_AED): ## Finished in 2022.11.23
## Sub-classes for standard ring resonators
class STD_Ring_PIN(AED_Ring_PIN):
"""
STD Ring PIN primitive component.
This component builds the STD Ring PIN layout cell.
Parameters
----------
name : str
Unique identifier for the device cell.
r_ring : float, optional
Radius parameter in microns. Default is 10.
w_ring : float, optional
Width parameter in microns. Default is 0.55.
gap : float, optional
Spacing or gap parameter in microns. Default is 0.2.
dual_BUS : bool, optional
Value for the dual_BUS parameter. Default is True.
w_bus : float, optional
Width parameter in microns. Default is 0.45.
R_cp : Any, optional
Radius parameter in microns. Default is None.
A_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.
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.
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.
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 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.
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_ht_dX : int, optional
Value for the epin_ht_dX parameter. Default is 10.
epin_ht_dY : int, optional
Value for the epin_ht_dY parameter. Default is 3.
xs_metal_imp : str, optional
Layer or cross-section name used by the device. Default is 'metal'.
via_i2m : Any, optional
Via definition used between implant and metal layers. Default is None.
xs_p : str, optional
Layer or cross-section name used by the device. Default is 'p'.
xs_n : str, optional
Layer or cross-section name used by the device. Default is 'n'.
xs_cont_wg : Optional[str], optional
Layer or cross-section name used by the device. Default is None.
w_p : float, optional
Width parameter in microns. Default is 3.
gap_p_i : float, optional
Spacing or gap parameter in microns. Default is 1.
gap_n_i : float, optional
Spacing or gap parameter in microns. Default is 1.
w_n : float, optional
Width parameter in microns. Default is 3.
offset_i : float, optional
Value for the offset_i parameter. Default is 0.
A_imp_in : int, optional
Angle parameter in degrees. Default is 180.
A_imp_out : int, optional
Angle parameter in degrees. Default is 180.
xs_pcont : str, optional
Layer or cross-section name used by the device. Default is 'pp'.
xs_ncont : str, optional
Layer or cross-section name used by the device. Default is 'np'.
w_pcont : float, optional
Width parameter in microns. Default is 3.
w_ncont : float, optional
Width parameter in microns. Default is 3.
sp_cont : float, optional
Spacing or gap parameter in microns. Default is 0.2.
w_ovlp : float, optional
Width parameter in microns. Default is 0.2.
bus_dopping : bool, optional
Value for the bus_dopping parameter. Default is True.
p_in_n_out : bool, optional
Value for the p_in_n_out parameter. Default is False.
"""
def __init__(self,
name: str,
r_ring: float=10,
@@ -676,10 +894,6 @@ class STD_Ring_PIN(AED_Ring_PIN):
A_imp_in = A_imp_in,
A_imp_out = A_imp_out,
xs_pcont = xs_pcont,
xs_ncont = xs_ncont,
w_pcont = w_pcont,
w_ncont = w_ncont,
sp_cont = sp_cont,
w_ovlp = w_ovlp, ## overlapping area for doping
@@ -691,6 +905,102 @@ class STD_Ring_PIN(AED_Ring_PIN):
## Sub-classed for allpass rings with Euler shape coupling
class PIN_MRR_MM_Allpass(AED_Ring_PIN):
"""
PIN MRR MM Allpass primitive component.
This component builds the PIN 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.55.
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.
R_cp : Any, optional
Radius parameter in microns. Default is None.
A_cp : int, optional
Angle parameter in degrees. Default is 0.
R_att : int, optional
Radius parameter in microns. Default is 10.
R_att_min : int, optional
Radius parameter in microns. Default is 10.
A_att : int, optional
Angle parameter in degrees. Default is 10.
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.
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.
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 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.
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_ht_dX : int, optional
Value for the epin_ht_dX parameter. Default is 10.
epin_ht_dY : int, optional
Value for the epin_ht_dY parameter. Default is 3.
xs_metal_imp : str, optional
Layer or cross-section name used by the device. Default is 'metal'.
via_i2m : Any, optional
Via definition used between implant and metal layers. Default is None.
xs_p : str, optional
Layer or cross-section name used by the device. Default is 'p'.
xs_n : str, optional
Layer or cross-section name used by the device. Default is 'n'.
xs_cont_wg : Optional[str], optional
Layer or cross-section name used by the device. Default is None.
w_p : float, optional
Width parameter in microns. Default is 3.
w_n : float, optional
Width parameter in microns. Default is 3.
w_i : float, optional
Width parameter in microns. Default is 1.
offset_i : float, optional
Value for the offset_i parameter. Default is 0.
A_imp_in : int, optional
Angle parameter in degrees. Default is 180.
A_imp_out : int, optional
Angle parameter in degrees. Default is 180.
sp_cont : float, optional
Spacing or gap parameter in microns. Default is 0.2.
w_ovlp : float, optional
Width parameter in microns. Default is 0.2.
bus_dopping : bool, optional
Value for the bus_dopping parameter. Default is True.
cell_xs_transition : Any, optional
Cell or component dependency used by this device. Default is None.
p_in_n_out : bool, optional
Value for the p_in_n_out parameter. Default is False.
"""
def __init__(self,
name: Optional[str] = None,
r_ring: float=10,
@@ -803,6 +1113,102 @@ class PIN_MRR_MM_Allpass(AED_Ring_PIN):
## Sub-classed for allpass rings with Euler shape coupling
class PIN_MRR_MM_Adddrop(AED_Ring_PIN):
"""
PIN MRR MM Adddrop primitive component.
This component builds the PIN 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.55.
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.
R_cp : Any, optional
Radius parameter in microns. Default is None.
A_cp : int, optional
Angle parameter in degrees. Default is 0.
R_att : int, optional
Radius parameter in microns. Default is 10.
R_att_min : int, optional
Radius parameter in microns. Default is 10.
A_att : int, optional
Angle parameter in degrees. Default is 10.
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.
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.
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 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.
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_ht_dX : int, optional
Value for the epin_ht_dX parameter. Default is 10.
epin_ht_dY : int, optional
Value for the epin_ht_dY parameter. Default is 3.
xs_metal_imp : str, optional
Layer or cross-section name used by the device. Default is 'metal'.
via_i2m : Any, optional
Via definition used between implant and metal layers. Default is None.
xs_p : str, optional
Layer or cross-section name used by the device. Default is 'p'.
xs_n : str, optional
Layer or cross-section name used by the device. Default is 'n'.
xs_cont_wg : Optional[str], optional
Layer or cross-section name used by the device. Default is None.
w_p : float, optional
Width parameter in microns. Default is 3.
w_n : float, optional
Width parameter in microns. Default is 3.
w_i : float, optional
Width parameter in microns. Default is 1.
offset_i : float, optional
Value for the offset_i parameter. Default is 0.
A_imp_in : int, optional
Angle parameter in degrees. Default is 180.
A_imp_out : int, optional
Angle parameter in degrees. Default is 180.
sp_cont : float, optional
Spacing or gap parameter in microns. Default is 0.2.
w_ovlp : float, optional
Width parameter in microns. Default is 0.2.
bus_dopping : bool, optional
Value for the bus_dopping parameter. Default is True.
cell_xs_transition : Any, optional
Cell or component dependency used by this device. Default is None.
p_in_n_out : bool, optional
Value for the p_in_n_out parameter. Default is False.
"""
def __init__(self,
name: Optional[str] = None,
r_ring: float=10,
@@ -917,6 +1323,92 @@ class PIN_MRR_MM_Adddrop(AED_Ring_PIN):
## Sub-classed for allpass rings with standard coupling
class PIN_MRR_STD_Allpass(AED_Ring_PIN):
"""
PIN MRR STD Allpass primitive component.
This component builds the PIN MRR STD 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.55.
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 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.
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 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.
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_ht_dX : int, optional
Value for the epin_ht_dX parameter. Default is 10.
epin_ht_dY : int, optional
Value for the epin_ht_dY parameter. Default is 3.
xs_metal_imp : str, optional
Layer or cross-section name used by the device. Default is 'metal'.
via_i2m : Any, optional
Via definition used between implant and metal layers. Default is None.
xs_p : str, optional
Layer or cross-section name used by the device. Default is 'p'.
xs_n : str, optional
Layer or cross-section name used by the device. Default is 'n'.
xs_cont_wg : Optional[str], optional
Layer or cross-section name used by the device. Default is None.
w_p : float, optional
Width parameter in microns. Default is 3.
w_n : float, optional
Width parameter in microns. Default is 3.
w_i : float, optional
Width parameter in microns. Default is 1.
offset_i : float, optional
Value for the offset_i parameter. Default is 0.
A_imp_in : int, optional
Angle parameter in degrees. Default is 180.
A_imp_out : int, optional
Angle parameter in degrees. Default is 180.
sp_cont : float, optional
Spacing or gap parameter in microns. Default is 0.2.
w_ovlp : float, optional
Width parameter in microns. Default is 0.2.
bus_dopping : bool, optional
Value for the bus_dopping parameter. Default is True.
cell_xs_transition : Any, optional
Cell or component dependency used by this device. Default is None.
p_in_n_out : bool, optional
Value for the p_in_n_out parameter. Default is False.
"""
def __init__(self,
name: Optional[str]=None,
r_ring: float=10,
@@ -1017,4 +1509,4 @@ class PIN_MRR_STD_Allpass(AED_Ring_PIN):
bus_dopping = bus_dopping,
p_in_n_out=p_in_n_out, ## default , p-outside n-inside
cell_xs_transition=cell_xs_transition,
)
)