mxpic.components.primitives.passive.rings#
Route#
- class mxpic.components.primitives.passive.rings.Route(radius=None, width=None, angle=90, Ltp_mm=10, width2_mm=1.0, MM_route=False, xs=None, layer=None, adapt_width=False, adapt_xs=False, instantiate=False, pinstyle=None, offset=None, varname=None, doc='', PCB=False, modes=None, sharp_patch=True)#
Bases:
Interconnect- bend_mine(radius=None, angle=None, width=None, pin=None, xs=None, length1=0, length2=0, name=None, arrow=False, offset=None, sharp_patch=True)#
- bend_p2p(pin1=None, pin2=None, radius=None, width=None, xs=None, name=None, arrow=False, width_mm=None, Ltp=None, sharp_path=True)#
Another package of IC.strt_bend_strt_p2p, which gives the possiblity to attach pins with right angle
- bend_route(radius=None, angle=None, width=None, pin=None, xs=None, length1=0.1, length2=0.1, name=None, arrow=False, offset=None, sharp_patch=True, original_function=False)#
- bend_route_p2p(pin1=None, pin2=None, radius=None, width=None, xs=None, name=None, arrow=False, original_function=False)#
- bend_strt_bend_p2p(pin1=None, pin2=None, radius=None, radius1=None, radius2=None, width=None, xs=None, length1=0, length2=0, ictype='shortest', name=None, arrow=True, width_mm=None, Ltp=None)#
Generate a point-to-point bend-straight-bend interconnect.
- Parameters:
pin1 (Node | Instance | tuple(x, y, a)) – start pin (default=cp)
pin2 (Node | Instance | tuple(x, y, a)) – end pin
radius1 (float) – optional first bend radius in um
radius2 (float) – optional second bend radius im um
width (float) – optional waveguide width in um
xs (str) – optional xsection
ictype (str) – interconnection type (default=’shortest’) options: ‘shortest’, ‘ll’, ‘lr’, ‘rl’, rr’, ‘all’
name (str) – optional new name for the component
arrow (bool) – draw connection arrows (default=True)
- Returns:
bend_strt_bend element
- Return type:
Cell
Example
Create and place a bend-straight-bend guide to connect two specific points:
import nazca as nd from nazca.interconnects import Interconnect ic = Interconnect(width=2.0, radius=10.0) guide = ic.bend_strt_bend_p2p(pin1=(0, 0, 0), pin2=(40, 20, 90)) guide.put() nd.export_plt()
- bend_strt_bend_p2p_mine(pin1=None, pin2=None, radius=None, radius1=None, radius2=None, width=None, xs=None, length1=0, length2=0, ictype='shortest', name=None, arrow=False)#
Generate a point-to-point bend-straight-bend interconnect.
- Parameters:
pin1 (Node | Instance | tuple(x, y, a)) – start pin (default=cp)
pin2 (Node | Instance | tuple(x, y, a)) – end pin
radius1 (float) – optional first bend radius in um
radius2 (float) – optional second bend radius im um
width (float) – optional waveguide width in um
xs (str) – optional xsection
ictype (str) – interconnection type (default=’shortest’) options: ‘shortest’, ‘ll’, ‘lr’, ‘rl’, rr’, ‘all’
name (str) – optional new name for the component
arrow (bool) – draw connection arrows (default=True)
- Returns:
bend_strt_bend element
- Return type:
Cell
Example
Create and place a bend-straight-bend guide to connect two specific points:
import nazca as nd from nazca.interconnects import Interconnect ic = Interconnect(width=2.0, radius=10.0) guide = ic.bend_strt_bend_p2p(pin1=(0, 0, 0), pin2=(40, 20, 90)) guide.put() nd.export_plt()
- connPatch()#
- line_mm(length=None, width=None, xs=None, width_mm=None, Ltp=None)#
- rt_bend(width=3, xs='strip', angle=90, layer=None, pin=None)#
- sbend_p2p(pin1=None, pin2=None, width=None, radius=None, Amax=90, xs=None, doStrFirst=1, Lstart=0, BendEndFlag=1, ref=None, name=None, arrow=False, bsb=True, sharp_patch=None, width_mm=None, Ltp=None)#
Create point-to-point s-bend interconnect.
The direction of the end pin is ignored.
- Parameters:
pin1 (Node | Instance | tuple(x, y, a)) – start pin (default=cp)
pin2 (Node | Instance | tuple(x, y, a)) – end pin
width (float) – width of the interconnect in um
radius (float) – bend radius of the interconnect in um
xs (str) – optional xsection of sbend
doFirst (int) – (default=1)
Amax (float) – maximum bend angle (default=90)
Lstart (float) – straight waveguide length at beginning (positive value) or end (negative value) of sbend
ref (Node) – reference direction for the sbend (default=pin1).
name (str) – optional new name for the component
BendEndFlag (int) – (default=1)
arrow (bool) – draw connection arrows (default=True)
bsb (bool) – If True, use bend_straight_bend_p2p() as fallback (default=True)
- Returns:
sbend element
- Return type:
Cell
Example
Create and place a sbend to connect two specific points:
import nazca as nd from nazca.interconnects import Interconnect ic = Interconnect(width=2.0, radius=10.0) guide = ic.sbend_p2p(pin1=(0), pin2=(40, 20)) guide.put() nd.export_plt()
- sbend_p2p_mine(pin1=None, pin2=None, width=None, radius=None, Lstart=0, doFirst=1, arrow=False, width_mm=None, Ltp=None, sharp_patch=False)#
Create pin-to-pin s-bend interconnect. This code is made by myself to avoid the possible gap between two bend
The direction of the end pin is ignored and is assumed to be parallel with pin1.
- Parameters:
pin1 (Node | Instance | tuple(x, y, a)) – start pin (default=cp)
pin2 (Node | Instance | tuple(x, y, a)) – end pin
width (float) – width of the interconnect in um
radius (float) – bend radius of the interconnect in um
xs (str) – optional xsection of sbend
doFirst (int) – (default=1)
Lstart (float) – straight waveguide length at beginning (positive value) or end (negative value) of sbend
arrow (bool) – draw connection arrows (default=True)
- Returns:
sbend element
- Return type:
Cell
Example
Create and place a sbend to connect two specific points:
import nazca as nd from nazca.interconnects import Interconnect ic = Interconnect(width=2.0, radius=10.0) guide = ic.sbend_p2p(pin1=(0), pin2=(40, 20)) guide.put() nd.export_plt()
- sbend_route(radius=None, width=None, pin=None, xs=None, offset=20, Ltot=None, length1=0, length2=0, name=None, arrow=False, Amax=90.0, original_function=False)#
- strt(length=None, width=None, pin=None, xs=None, edge1=None, edge2=None, edgepoints=50, name=None, arrow=False, gridpatch=None)#
Create a straight waveguide.
- Parameters:
length (float) – length of guide in um
width (float) – width of guide in um
pin (Node) – optional Node for modeling info
xs (str) – optionals xsection of guide
layer (int | str) – layer number or layername
edge1 (function) – optional function F(t) describing edge1 of the waveguide
edge2 (function) – optional function G(t) describing edge2 of the waveguide
edgepoints (int) – optional number of points for edge1 and edge2 (default=50)
name (str) – optional new name for the component
arrow (bool) – draw connection arrows (default=True)
gridpatch (float) – patch gridsnap jumps at grid disconnect of cells with chamfers of size gridpatch. Default=0 is no patch.
- Returns:
waveguide element
- Return type:
Cell
Example
Create and place a straight waveguide:
import nazca as nd from nazca.interconnects import Interconnect ic = Interconnect(width=2.0, radius=10.0) guide = ic.strt(length=20) guide.put() nd.export_plt()
- strt_bend_strt_p2p_mine(pin1=None, pin2=None, radius=None, radius1=None, radius2=None, width=None, xs=None, length1=0, length2=0, ictype='shortest', name=None, arrow=False, width_mm=None, Ltp=None)#
- strt_mm(pin=None, width2=None, Ltp=None, width1=None, Lstart=0.5, length=None, xs=None, arrow=False)#
- strt_mm_p2p(pin1=None, pin2=None, width2=None, Ltp=None, width1=None, Lstart=0.5, length=None, xs=None, arrow=False, name=None)#
- strt_p2p(pin1=None, pin2=None, width=None, xs=None, name=None, arrow=False)#
Create point-to-point straight interconnect.
- Parameters:
pin1 (Node | Instance | tuple(x, y, a)) – start of waveguide
pin2 (Node | Instance | tuple(x, y, a)) – end of waveguide
width (float) – width of waveguide
xs (str) – optional xsection of waveguide
name (str) – optional new name for the component
arrow (bool) – draw connection arrows (default=True)
- Returns:
straight waveguide element
- Return type:
Cell
Example
Create and place a straight guide between points:
import nazca as nd from nazca.interconnects import Interconnect ic = Interconnect(width=2.0, radius=10.0) guide = ic.strt_p2p(pin1=(0, 0), pin2=(10, 10)) guide.put() nd.export_plt()
- taper(length=None, width1=None, width2=None, shift=0, xs=None, pin=None, name=None, patch=False, arrow=False)#
Create a linear taper.
- Parameters:
length (float) – length of taper
width1 (float) – start width of taper
width2 (float) – end width of taper
shift (float) – lateral shift of taper end
xs (str) – optional xsection of taper
pin (Node) – optional Node for modeling info
name (str) – optional new name for the component
arrow (bool) – draw connection arrows (default=True)
- Returns:
linear taper element
- Return type:
Cell
Example
Create and place a linear taper:
import nazca as nd from nazca.interconnects import Interconnect ic = Interconnect(width=2.0, radius=10.0) guide = ic.taper(length=10, width1=2.0, width2=5.0) guide.put() nd.export_plt()
- taper_p2p(pin1=None, pin2=None, width1=None, width2=None, xs=None, name=None, arrow=False)#
Create point-to-point (angled) taper interconnect.
- Parameters:
pin1 (Node | Instance | tuple(x, y, a)) – start pin (default=cp)
pin2 (Node | Instance | tuple(x, y, a)) – end pin
width1 (float) – width at start (taken from pin1 if None)
width2 (float) – width at end (taken from pin2 if None)
xs (str) – optional xsection of taper
name (str) – optional new name for the component
BendEndFlag (int) – (default=1)
arrow (bool) – draw connection arrows (default=True)
- Returns:
taper element
- Return type:
Cell
Example
Create and place a taper to connect two specific points:
import nazca as nd from nazca.interconnects import Interconnect ic = Interconnect(width=2, radius=10) guide = ic.taper_p2p(pin1=(0), pin2=(40, 10), width2=4) guide.put() nd.export_plt()
- tube_mine(geo, showpins=False, name=None, xs=None, arrow=False, Ltp=None, width_mm=None, sharp_patch=None)#
draw interconnect based on symbols.
- Returns:
Tube element based on the provided elements
- Return type:
Cell
- ubend_p2p(pin1=None, pin2=None, radius=None, width=None, xs=None, length=0.1, name=None, arrow=False, balance=0, end_angle=False, original_function=False, Ltp=None, width_mm=None)#
Create point-to-point u-bend interconnect.
An extra straight length can be added to the ubend with <length>.
If the sideways translation needed in the ubend is <2*radius, then the ubend automatically introduces a ‘horseshoe’ shape. The horseshoe can be made sidelobed by a <balance> parameter between -1 and 1, where 0 results in a symmetric shape.
The orientation of the output pin does not matter unless end_angle=True is set (default=False). If True an extra bend is introduced on pin2 to align its direction with pin1 before drawing an orthogonal ubend.
- Parameters:
pin1 (Node | Instance | tuple(x, y, a)) – start pin (default=cp)
pin2 (Node | Instance | tuple(x, y, a)) – end pin
radius (float) – optional bend radius in um
width (float) – optional waveguide width in um
xs (str) – optional xsection of ubend
length (float) – extra straight section for longer ubend (default=0)
balance (float) – for a ubend <2*radius sidewyas, shift the horseshoe shape (default=0)
end_angle (bool) – Take pin2 angle into account when connecting if True (default=False)
- Returns:
ubend element
- Return type:
Cell
Example
Create and place a ubend to connect two specific points:
import nazca as nd from nazca.interconnects import Interconnect ic = Interconnect(width=2.0, radius=10.0) guide = ic.ubend_p2p(pin1=(0, 0, 0), pin2=(10, 20, 90), length=10) guide.put() nd.export_plt()
- ubend_route(pin=None, offset=20.0, radius=None, width=None, xs=None, length=0, name=None, arrow=False, balance=0, end_angle=False, width_mm=None, Ltp=None)#
SOCR#
- class mxpic.components.primitives.passive.rings.SOCR(w_wg=0.45, w_cp=0.45, w_ring=0.45, r_ring=6, gap=0.2, theta_arc=100, Ls=2, xs_ring='strip', w_heater=1.5, xs_heater='heater', w_metal=6, xs_metal='metal', via_h2m=None, sharp_patch=True, show_pins=True)#
Bases:
objectThis 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.
- generate_2pi_gds(gap=10)#
- generate_eic_part()#
- generate_gds()#
- generate_pic_part()#
Generate gds. Return: Cell
- generate_test_gds(gc, num_socr=1, gc2gc_length=250, cell_name=None)#
- generate_test_mzi_gds(gc, mmi, num_socr=1, gc2gc_length=250, mid_offset=40, show_pins=False)#
SOCR_Cband#
- class mxpic.components.primitives.passive.rings.SOCR_Cband(w_wg=0.45, via_h2m=None, show_pins=True)#
Bases:
SOCRThis 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.
SOCR_Adiabatic#
- class mxpic.components.primitives.passive.rings.SOCR_Adiabatic(w_wg=0.45, w_cp=0.45, w_in=0.45, w_out=2, r_out=6, gap=0.2, theta_arc=100, Ls=2, xs_ring='strip', w_heater=1.5, xs_heater='heater', w_metal=6, xs_metal='metal', via_h2m=None, sharp_patch=True, show_pins=True)#
Bases:
SOCRThis 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.
- generate_eic_part()#
- generate_gds()#
- generate_pic_part()#
Generate gds. Return: Cell
SOCR_Adiabatic_Cband#
- class mxpic.components.primitives.passive.rings.SOCR_Adiabatic_Cband(w_wg=0.45, via_h2m=None, show_pins=True)#
Bases:
SOCR_AdiabaticThis 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.
MRR_AED#
- class mxpic.components.primitives.passive.rings.MRR_AED(name=None, ORx=10, ORy=10, IRx=9.55, IRy=9.5, gap1=0.2, gap2=0.2, w1_bus=0.45, w2_bus=0.45, R1_cp=None, R2_cp=None, A1_cp=0, A2_cp=0, offset_X=0, offset_Y=0, w_wg=0.45, R1_att=20, R2_att=20, R2_att_min=10, R1_att_min=10, A1_att=30, A2_att=20, Ltp_bus=10, dL_p2p=None, L_tilt=10, xs_ring='strip', sharp_patch=True, cell_xs_transition=None, Euler_trasition=False, show_pins=False, xs_heater=None, w_heater=0, xs_metal=None, w_metal=0, via_h2m=None, isl=None, A_ht=270, ht_notch_dual=True, epin_dX=0, epin_dY=0, res=0.05, res_eic=0.5, ht_rot=False)#
Bases:
AED_ringMRR 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.
- generate_eic_gds(show_pins=False)#
MRR_STD_Ring#
- class mxpic.components.primitives.passive.rings.MRR_STD_Ring(name=None, r_ring=10, w_ring=0.45, gap1=0.2, gap2=0.2, w1_bus=0.45, w2_bus=0, R1_cp=None, R2_cp=None, A1_cp=0, A2_cp=0, offset_X=0, offset_Y=0, w_wg=0.45, R1_att=20, R2_att=20, R2_att_min=10, R1_att_min=10, A1_att=30, A2_att=20, Ltp_bus=10, dL_p2p=None, L_tilt=10, xs_ring='strip', sharp_patch=True, cell_xs_transition=None, Euler_trasition=False, show_pins=False, xs_heater='heater', w_heater=0, xs_metal='metal', w_metal=0, via_h2m=None, isl=None, A_ht=270, ht_notch_dual=False, epin_dX=0, epin_dY=0, res=0.05, res_eic=0.5, ht_rot=False)#
Bases:
MRR_AEDMRR 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.
MRR_STD_Allpass#
- class mxpic.components.primitives.passive.rings.MRR_STD_Allpass(name, r_ring, w_ring, gap, w_bus, A_cp, w_wg=0.45, R_att=20, Ltp_bus=10, dL_p2p=None, L_tilt=10, xs_ring='strip', sharp_patch=True, cell_xs_transition=None, show_pins=False, xs_heater='heater', w_heater=0, xs_metal='metal', w_metal=0, via_h2m=None, isl=None, A_ht=270, epin_dX=0, epin_dY=0, res=0.05, res_eic=0.5, ht_rot=False)#
Bases:
MRR_STD_RingMRR 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.
MRR_STD_Adddrop#
- class mxpic.components.primitives.passive.rings.MRR_STD_Adddrop(name, r_ring, w_ring, gap, w_bus, A_cp, w_wg=0.45, R_att=20, Ltp_bus=10, dL_p2p=None, L_tilt=10, xs_ring='strip', sharp_patch=True, cell_xs_transition=None, show_pins=False, xs_heater='heater', w_heater=0, xs_metal='metal', w_metal=0, via_h2m=None, isl=None, A_ht=270, epin_dX=0, epin_dY=0, res=0.05, res_eic=0.5, ht_rot=False)#
Bases:
MRR_STD_RingMRR 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.
MRR_MM_Allpass#
- class mxpic.components.primitives.passive.rings.MRR_MM_Allpass(name=None, r_ring=10, w_ring=0.45, gap=0.2, w_bus=0.45, A_cp=0, w_wg=0.45, R_att=20, R_att_min=10, A_att=30, Ltp_bus=10, dL_p2p=None, xs_ring='strip', sharp_patch=True, cell_xs_transition=None, show_pins=False, xs_heater='heater', w_heater=0, xs_metal='metal', w_metal=0, via_h2m=None, isl=None, A_ht=270, epin_dX=0, epin_dY=0, res=0.05, res_eic=0.5, ht_rot=False)#
Bases:
MRR_STD_RingMRR 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.
MRR_MM_Adddrop#
- class mxpic.components.primitives.passive.rings.MRR_MM_Adddrop(name=None, r_ring=10, w_ring=0.45, gap=0.2, w_bus=0.45, A_cp=0, w_wg=0.45, R_att=20, R_att_min=10, A_att=30, Ltp_bus=10, dL_p2p=None, xs_ring='strip', sharp_patch=True, cell_xs_transition=None, show_pins=False, xs_heater='heater', w_heater=0, xs_metal='metal', w_metal=0, via_h2m=None, isl=None, A_ht=270, epin_dX=0, epin_dY=0, res=0.05, res_eic=0.5, ht_rot=False)#
Bases:
MRR_STD_RingMRR 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.
MRR_DW_Adddrop#
- class mxpic.components.primitives.passive.rings.MRR_DW_Adddrop(name, r_ring, w0_ring, w1_ring, gap=0.2, w_bus=0.45, A_cp=0, w_wg=0.45, R_att=20, R_att_min=10, A_att=30, Ltp_bus=10, dL_p2p=None, xs_ring='strip', sharp_patch=True, cell_xs_transition=None, show_pins=False, xs_heater='heater', w_heater=0, xs_metal='metal', w_metal=0, via_h2m=None, isl=None, A_ht=270, epin_dX=0, epin_dY=0, res=0.05, res_eic=0.5, ht_rot=False)#
Bases:
MRR_AEDMRR 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.
MRR_DW_Allpass#
- class mxpic.components.primitives.passive.rings.MRR_DW_Allpass(name, r_ring, w0_ring, w1_ring, gap=0.2, w_bus=0.45, A_cp=0, w_wg=0.45, R_att=20, R_att_min=10, A_att=30, Ltp_bus=10, dL_p2p=None, xs_ring='strip', sharp_patch=True, cell_xs_transition=None, show_pins=False, xs_heater='heater', w_heater=0, xs_metal='metal', w_metal=0, via_h2m=None, isl=None, A_ht=270, epin_dX=0, epin_dY=0, res=0.05, res_eic=0.5, ht_rot=False)#
Bases:
MRR_AEDMRR 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.
STD_ring_AMZI_adddrop#
- class mxpic.components.primitives.passive.rings.STD_ring_AMZI_adddrop(name=None, r_ring=30, w_ring=0.45, w_wg=0.45, xs_wg='strip', w_bus=0.45, gap=0.2, dAc=10, L_tilt=1, dL_arm=10, w_heater=2.5, xs_heater='heater', w_metal=6, xs_metal='metal', via_h2m=None, isl=None, res=0.1, R_bend=10, L_tp=5, show_pins=False, sharp_patch=True)#
Bases:
objectSTD 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.
- generate_gds(show_pins, sharp_patch)#