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: object

This is the class for normal Strong Over Coupled Ring for phase modulation.

Parameters:
  • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

  • w_cp (float, optional) – Width parameter in microns. Default is 0.45.

  • w_ring (float, optional) – Width parameter in microns. Default is 0.45.

  • r_ring (float, optional) – Radius parameter in microns. Default is 6.

  • gap (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

  • theta_arc (float, optional) – Angle parameter in degrees. Default is 100.

  • Ls (float, optional) – Length parameter in microns. Default is 2.

  • xs_ring (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

  • w_heater (float, optional) – Width parameter in microns. Default is 1.5.

  • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

  • w_metal (float, optional) – Width parameter in microns. Default is 6.

  • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

  • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

  • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

  • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is True.

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: SOCR

This is the class for already designed SOCR with multimode waveguide to suppres the phase noise.

Parameters:
  • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

  • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

  • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is True.

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: SOCR

This is the class for adiabatic Strong Over Coupled Ring(SOCR) for phase modulation.

Parameters:
  • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

  • w_cp (float, optional) – Width parameter in microns. Default is 0.45.

  • w_in (float, optional) – Width parameter in microns. Default is 0.45.

  • w_out (float, optional) – Width parameter in microns. Default is 2.

  • r_out (float, optional) – Radius parameter in microns. Default is 6.

  • gap (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

  • theta_arc (float, optional) – Angle parameter in degrees. Default is 100.

  • Ls (float, optional) – Length parameter in microns. Default is 2.

  • xs_ring (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

  • w_heater (float, optional) – Width parameter in microns. Default is 1.5.

  • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

  • w_metal (float, optional) – Width parameter in microns. Default is 6.

  • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

  • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

  • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

  • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is True.

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_Adiabatic

This is already designed SOCR at C-band.

Parameters:
  • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

  • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

  • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is True.

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_ring

MRR AED primitive component.

This component builds the MRR AED layout cell.

Parameters:
  • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

  • ORx (float, optional) – Value for the ORx parameter. Default is 10.

  • ORy (float, optional) – Value for the ORy parameter. Default is 10.

  • IRx (float, optional) – Value for the IRx parameter. Default is 10 - 0.45.

  • IRy (float, optional) – Value for the IRy parameter. Default is 10 - 0.5.

  • gap1 (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

  • gap2 (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

  • w1_bus (float, optional) – Value for the w1_bus parameter. Default is 0.45.

  • w2_bus (float, optional) – Value for the w2_bus parameter. Default is 0.45.

  • R1_cp (Any, optional) – Radius parameter in microns. Default is None.

  • R2_cp (Any, optional) – Radius parameter in microns. Default is None.

  • A1_cp (int, optional) – Angle parameter in degrees. Default is 0.

  • A2_cp (int, optional) – Angle parameter in degrees. Default is 0.

  • offset_X (float, optional) – Value for the offset_X parameter. Default is 0.

  • offset_Y (float, optional) – Value for the offset_Y parameter. Default is 0.

  • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

  • R1_att (float, optional) – Radius parameter in microns. Default is 20.

  • R2_att (float, optional) – Radius parameter in microns. Default is 20.

  • R2_att_min (float, optional) – Radius parameter in microns. Default is 10.

  • R1_att_min (float, optional) – Radius parameter in microns. Default is 10.

  • A1_att (float, optional) – Angle parameter in degrees. Default is 30.

  • A2_att (float, optional) – Angle parameter in degrees. Default is 20.

  • Ltp_bus (int, optional) – Length parameter in microns. Default is 10.

  • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

  • L_tilt (int, optional) – Length parameter in microns. Default is 10.

  • xs_ring (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

  • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

  • cell_xs_transition (Any, optional) – Cell or component dependency used by this device. Default is None.

  • Euler_trasition (bool, optional) – Value for the Euler_trasition parameter. Default is False.

  • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

  • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is None.

  • w_heater (float, optional) – Width parameter in microns. Default is 0.

  • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is None.

  • w_metal (float, optional) – Width parameter in microns. Default is 0.

  • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

  • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

  • A_ht (float, optional) – Angle parameter in degrees. Default is 270.

  • ht_notch_dual (bool, optional) – Value for the ht_notch_dual parameter. Default is True.

  • epin_dX (int, optional) – Value for the epin_dX parameter. Default is 0.

  • epin_dY (int, optional) – Value for the epin_dY parameter. Default is 0.

  • res (float, optional) – Value for the res parameter. Default is 0.05.

  • res_eic (float, optional) – Value for the res_eic parameter. Default is 0.5.

  • ht_rot (bool, optional) – Value for the ht_rot parameter. Default is False.

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_AED

MRR STD Ring primitive component.

This component builds the MRR STD Ring layout cell.

Parameters:
  • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

  • r_ring (float, optional) – Radius parameter in microns. Default is 10.

  • w_ring (float, optional) – Width parameter in microns. Default is 0.45.

  • gap1 (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

  • gap2 (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

  • w1_bus (float, optional) – Value for the w1_bus parameter. Default is 0.45.

  • w2_bus (float, optional) – Value for the w2_bus parameter. Default is 0.

  • R1_cp (Any, optional) – Radius parameter in microns. Default is None.

  • R2_cp (Any, optional) – Radius parameter in microns. Default is None.

  • A1_cp (int, optional) – Angle parameter in degrees. Default is 0.

  • A2_cp (int, optional) – Angle parameter in degrees. Default is 0.

  • offset_X (float, optional) – Value for the offset_X parameter. Default is 0.

  • offset_Y (float, optional) – Value for the offset_Y parameter. Default is 0.

  • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

  • R1_att (float, optional) – Radius parameter in microns. Default is 20.

  • R2_att (float, optional) – Radius parameter in microns. Default is 20.

  • R2_att_min (float, optional) – Radius parameter in microns. Default is 10.

  • R1_att_min (float, optional) – Radius parameter in microns. Default is 10.

  • A1_att (float, optional) – Angle parameter in degrees. Default is 30.

  • A2_att (float, optional) – Angle parameter in degrees. Default is 20.

  • Ltp_bus (int, optional) – Length parameter in microns. Default is 10.

  • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

  • L_tilt (int, optional) – Length parameter in microns. Default is 10.

  • xs_ring (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

  • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

  • cell_xs_transition (Any, optional) – Cell or component dependency used by this device. Default is None.

  • Euler_trasition (bool, optional) – Value for the Euler_trasition parameter. Default is False.

  • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

  • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

  • w_heater (float, optional) – Width parameter in microns. Default is 0.

  • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

  • w_metal (float, optional) – Width parameter in microns. Default is 0.

  • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

  • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

  • A_ht (float, optional) – Angle parameter in degrees. Default is 270.

  • ht_notch_dual (bool, optional) – Value for the ht_notch_dual parameter. Default is False.

  • epin_dX (int, optional) – Value for the epin_dX parameter. Default is 0.

  • epin_dY (int, optional) – Value for the epin_dY parameter. Default is 0.

  • res (float, optional) – Value for the res parameter. Default is 0.05.

  • res_eic (float, optional) – Value for the res_eic parameter. Default is 0.5.

  • ht_rot (bool, optional) – Value for the ht_rot parameter. Default is False.

MRR_STD_Allpass#

../../../../_images/MRR_STD_Allpass.png
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_Ring

MRR STD Allpass primitive component.

This component builds the MRR STD Allpass layout cell.

Parameters:
  • name (str) – Unique identifier for the device cell.

  • r_ring (float) – Radius parameter in microns.

  • w_ring (float) – Width parameter in microns.

  • gap (float) – Spacing or gap parameter in microns.

  • w_bus (float) – Width parameter in microns.

  • A_cp (Any) – Angle parameter in degrees.

  • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

  • R_att (float, optional) – Radius parameter in microns. Default is 20.

  • Ltp_bus (int, optional) – Length parameter in microns. Default is 10.

  • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

  • L_tilt (int, optional) – Length parameter in microns. Default is 10.

  • xs_ring (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

  • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

  • cell_xs_transition (Any, optional) – Cell or component dependency used by this device. Default is None.

  • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

  • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

  • w_heater (float, optional) – Width parameter in microns. Default is 0.

  • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

  • w_metal (float, optional) – Width parameter in microns. Default is 0.

  • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

  • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

  • A_ht (float, optional) – Angle parameter in degrees. Default is 270.

  • epin_dX (int, optional) – Value for the epin_dX parameter. Default is 0.

  • epin_dY (int, optional) – Value for the epin_dY parameter. Default is 0.

  • res (float, optional) – Value for the res parameter. Default is 0.05.

  • res_eic (float, optional) – Value for the res_eic parameter. Default is 0.5.

  • ht_rot (bool, optional) – Value for the ht_rot parameter. Default is False.

MRR_STD_Adddrop#

../../../../_images/MRR_STD_Adddrop.png
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_Ring

MRR STD Adddrop primitive component.

This component builds the MRR STD Adddrop layout cell.

Parameters:
  • name (str) – Unique identifier for the device cell.

  • r_ring (float) – Radius parameter in microns.

  • w_ring (float) – Width parameter in microns.

  • gap (float) – Spacing or gap parameter in microns.

  • w_bus (float) – Width parameter in microns.

  • A_cp (Any) – Angle parameter in degrees.

  • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

  • R_att (float, optional) – Radius parameter in microns. Default is 20.

  • Ltp_bus (int, optional) – Length parameter in microns. Default is 10.

  • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

  • L_tilt (int, optional) – Length parameter in microns. Default is 10.

  • xs_ring (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

  • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

  • cell_xs_transition (Any, optional) – Cell or component dependency used by this device. Default is None.

  • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

  • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

  • w_heater (float, optional) – Width parameter in microns. Default is 0.

  • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

  • w_metal (float, optional) – Width parameter in microns. Default is 0.

  • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

  • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

  • A_ht (float, optional) – Angle parameter in degrees. Default is 270.

  • epin_dX (int, optional) – Value for the epin_dX parameter. Default is 0.

  • epin_dY (int, optional) – Value for the epin_dY parameter. Default is 0.

  • res (float, optional) – Value for the res parameter. Default is 0.05.

  • res_eic (float, optional) – Value for the res_eic parameter. Default is 0.5.

  • ht_rot (bool, optional) – Value for the ht_rot parameter. Default is False.

MRR_MM_Allpass#

../../../../_images/MRR_MM_Allpass.png
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_Ring

MRR MM Allpass primitive component.

This component builds the MRR MM Allpass layout cell.

Parameters:
  • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

  • r_ring (float, optional) – Radius parameter in microns. Default is 10.

  • w_ring (float, optional) – Width parameter in microns. Default is 0.45.

  • gap (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

  • w_bus (float, optional) – Width parameter in microns. Default is 0.45.

  • A_cp (int, optional) – Angle parameter in degrees. Default is 0.

  • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

  • R_att (float, optional) – Radius parameter in microns. Default is 20.

  • R_att_min (float, optional) – Radius parameter in microns. Default is 10.

  • A_att (float, optional) – Angle parameter in degrees. Default is 30.

  • Ltp_bus (int, optional) – Length parameter in microns. Default is 10.

  • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

  • xs_ring (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

  • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

  • cell_xs_transition (Any, optional) – Cell or component dependency used by this device. Default is None.

  • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

  • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

  • w_heater (float, optional) – Width parameter in microns. Default is 0.

  • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

  • w_metal (float, optional) – Width parameter in microns. Default is 0.

  • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

  • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

  • A_ht (float, optional) – Angle parameter in degrees. Default is 270.

  • epin_dX (int, optional) – Value for the epin_dX parameter. Default is 0.

  • epin_dY (int, optional) – Value for the epin_dY parameter. Default is 0.

  • res (float, optional) – Value for the res parameter. Default is 0.05.

  • res_eic (float, optional) – Value for the res_eic parameter. Default is 0.5.

  • ht_rot (bool, optional) – Value for the ht_rot parameter. Default is False.

MRR_MM_Adddrop#

../../../../_images/MRR_MM_Adddrop.png
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_Ring

MRR MM Adddrop primitive component.

This component builds the MRR MM Adddrop layout cell.

Parameters:
  • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

  • r_ring (float, optional) – Radius parameter in microns. Default is 10.

  • w_ring (float, optional) – Width parameter in microns. Default is 0.45.

  • gap (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

  • w_bus (float, optional) – Width parameter in microns. Default is 0.45.

  • A_cp (int, optional) – Angle parameter in degrees. Default is 0.

  • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

  • R_att (float, optional) – Radius parameter in microns. Default is 20.

  • R_att_min (float, optional) – Radius parameter in microns. Default is 10.

  • A_att (float, optional) – Angle parameter in degrees. Default is 30.

  • Ltp_bus (int, optional) – Length parameter in microns. Default is 10.

  • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

  • xs_ring (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

  • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

  • cell_xs_transition (Any, optional) – Cell or component dependency used by this device. Default is None.

  • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

  • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

  • w_heater (float, optional) – Width parameter in microns. Default is 0.

  • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

  • w_metal (float, optional) – Width parameter in microns. Default is 0.

  • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

  • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

  • A_ht (float, optional) – Angle parameter in degrees. Default is 270.

  • epin_dX (int, optional) – Value for the epin_dX parameter. Default is 0.

  • epin_dY (int, optional) – Value for the epin_dY parameter. Default is 0.

  • res (float, optional) – Value for the res parameter. Default is 0.05.

  • res_eic (float, optional) – Value for the res_eic parameter. Default is 0.5.

  • ht_rot (bool, optional) – Value for the ht_rot parameter. Default is False.

MRR_DW_Adddrop#

../../../../_images/MRR_DW_Adddrop.png
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_AED

MRR DW Adddrop primitive component.

This component builds the MRR DW Adddrop layout cell.

Parameters:
  • name (str) – Unique identifier for the device cell.

  • r_ring (float) – Radius parameter in microns.

  • w0_ring (float) – Value for the w0_ring parameter.

  • w1_ring (float) – Value for the w1_ring parameter.

  • gap (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

  • w_bus (float, optional) – Width parameter in microns. Default is 0.45.

  • A_cp (int, optional) – Angle parameter in degrees. Default is 0.

  • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

  • R_att (float, optional) – Radius parameter in microns. Default is 20.

  • R_att_min (float, optional) – Radius parameter in microns. Default is 10.

  • A_att (float, optional) – Angle parameter in degrees. Default is 30.

  • Ltp_bus (int, optional) – Length parameter in microns. Default is 10.

  • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

  • xs_ring (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

  • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

  • cell_xs_transition (Any, optional) – Cell or component dependency used by this device. Default is None.

  • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

  • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

  • w_heater (float, optional) – Width parameter in microns. Default is 0.

  • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

  • w_metal (float, optional) – Width parameter in microns. Default is 0.

  • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

  • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

  • A_ht (float, optional) – Angle parameter in degrees. Default is 270.

  • epin_dX (int, optional) – Value for the epin_dX parameter. Default is 0.

  • epin_dY (int, optional) – Value for the epin_dY parameter. Default is 0.

  • res (float, optional) – Value for the res parameter. Default is 0.05.

  • res_eic (float, optional) – Value for the res_eic parameter. Default is 0.5.

  • ht_rot (bool, optional) – Value for the ht_rot parameter. Default is False.

MRR_DW_Allpass#

../../../../_images/MRR_DW_Allpass.png
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_AED

MRR DW Allpass primitive component.

This component builds the MRR DW Allpass layout cell.

Parameters:
  • name (str) – Unique identifier for the device cell.

  • r_ring (float) – Radius parameter in microns.

  • w0_ring (float) – Value for the w0_ring parameter.

  • w1_ring (float) – Value for the w1_ring parameter.

  • gap (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

  • w_bus (float, optional) – Width parameter in microns. Default is 0.45.

  • A_cp (int, optional) – Angle parameter in degrees. Default is 0.

  • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

  • R_att (float, optional) – Radius parameter in microns. Default is 20.

  • R_att_min (float, optional) – Radius parameter in microns. Default is 10.

  • A_att (float, optional) – Angle parameter in degrees. Default is 30.

  • Ltp_bus (int, optional) – Length parameter in microns. Default is 10.

  • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

  • xs_ring (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

  • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

  • cell_xs_transition (Any, optional) – Cell or component dependency used by this device. Default is None.

  • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

  • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

  • w_heater (float, optional) – Width parameter in microns. Default is 0.

  • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

  • w_metal (float, optional) – Width parameter in microns. Default is 0.

  • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

  • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

  • A_ht (float, optional) – Angle parameter in degrees. Default is 270.

  • epin_dX (int, optional) – Value for the epin_dX parameter. Default is 0.

  • epin_dY (int, optional) – Value for the epin_dY parameter. Default is 0.

  • res (float, optional) – Value for the res parameter. Default is 0.05.

  • res_eic (float, optional) – Value for the res_eic parameter. Default is 0.5.

  • ht_rot (bool, optional) – Value for the ht_rot parameter. Default is False.

STD_ring_AMZI_adddrop#

../../../../_images/STD_ring_AMZI_adddrop.png
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: object

STD ring AMZI adddrop primitive component.

This component builds the STD ring AMZI adddrop layout cell.

Parameters:
  • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

  • r_ring (float, optional) – Radius parameter in microns. Default is 30.

  • w_ring (float, optional) – Width parameter in microns. Default is 0.45.

  • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

  • xs_wg (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

  • w_bus (float, optional) – Width parameter in microns. Default is 0.45.

  • gap (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

  • dAc (float, optional) – Value for the dAc parameter. Default is 10.

  • L_tilt (int, optional) – Length parameter in microns. Default is 1.

  • dL_arm (float, optional) – Value for the dL_arm parameter. Default is 10.

  • w_heater (float, optional) – Width parameter in microns. Default is 2.5.

  • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

  • w_metal (float, optional) – Width parameter in microns. Default is 6.

  • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

  • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

  • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

  • res (float, optional) – Value for the res parameter. Default is 0.1.

  • R_bend (int, optional) – Radius parameter in microns. Default is 10.

  • L_tp (int, optional) – Length parameter in microns. Default is 5.

  • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

  • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

generate_gds(show_pins, sharp_patch)#