mxpic.components.composites.MZI#

Mach-Zehnder interferometer composite layouts.

MZI#

class mxpic.components.composites.MZI.MZI(name=None, xs_wg='strip', w_wg=0.45, dL_Amzi=0, L_arm=150, R_bend=10, D_arm=75, D_port=None, w_arm=1.0, xs_heater='heater', w_heater=0, Ltp=15, xs_metal='metal', w_metal=10, via_h2m=None, isl=None, outer_isl=True, dual_ht=True, L_patch=0.5, BS=None, BS2=None, sharp_patch=True, show_pins=False)#

Bases: object

Mach-Zehnder interferometer with optional heaters and isolation.

Parameters:
  • name (str, optional) – Nazca cell name. If omitted, the generated cell is not instantiated.

  • xs_wg (str, optional) – Optical waveguide cross-section name.

  • w_wg (float, optional) – Input and output waveguide width in microns.

  • dL_Amzi (float, optional) – Differential arm length for asymmetric MZI operation.

  • L_arm (int, optional) – Nominal straight arm length.

  • R_bend (int, optional) – Bend radius used by internal routing.

  • D_arm (int, optional) – Vertical distance between interferometer arms.

  • D_port (Any, optional) – Output port pitch. If omitted, the beam splitter port pitch is used.

  • w_arm (float, optional) – Internal arm waveguide width.

  • xs_heater (str, optional) – Heater cross-section name.

  • w_heater (float, optional) – Heater width. Use 0 to disable heater drawing.

  • Ltp (int, optional) – Taper length between bus and arm widths.

  • xs_metal (str, optional) – Metal routing cross-section name.

  • w_metal (float, optional) – Metal routing width.

  • via_h2m (Any, optional) – Heater-to-metal via object or cell.

  • isl (Any, optional) – Isolation trench object or cell.

  • outer_isl (bool, optional) – Add outer isolation structures.

  • dual_ht (bool, optional) – Add heaters on both arms.

  • L_patch (float, optional) – Straight patch length at routing interfaces.

  • BS (Any, optional) – First beam splitter cell or object. If omitted, a default DC is used.

  • BS2 (Any, optional) – Second beam splitter cell or object. If omitted, BS is reused.

  • sharp_patch (bool, optional) – Add cladding patches around sharp geometry features.

  • show_pins (bool, optional) – Show Nazca pin stubs in the generated layout.

cell#

Generated MZI layout cell.

Type:

nazca.Cell

MZI_NS#

class mxpic.components.composites.MZI.MZI_NS(name, BS, xs_wg, w1, w2, L0, Ln, Ls, Ltp, R_bend, w_wg, L_patch, D_arm=40, L12=None, w_heater=0, L_ht=None, via_h2m=None, isl=None, show_pins=False, D_port=None, sharp_patch=True, dual_ht=False)#

Bases: object

Nested-straight MZI composite with taperable arm widths.

Parameters:
  • name (str) – Nazca cell name.

  • BS (Any) – Beam splitter cell or object used at both splitter positions.

  • xs_wg (str) – Optical waveguide cross-section name.

  • w1 (float) – Input/output waveguide width.

  • w2 (float) – Internal arm waveguide width.

  • L0 (Any) – Input/output straight section length.

  • Ln (Any) – Length of the nominal arm section.

  • Ls (Any) – Length of the shifted arm section.

  • Ltp (Any) – Taper length between w1 and w2.

  • R_bend (Any) – Bend radius used by the arm routing.

  • w_wg (float) – Optical waveguide width used for ports and routing.

  • L_patch (Any) – Straight patch length at routing interfaces.

  • D_arm (int, optional) – Vertical distance between interferometer arms.

  • L12 (Any, optional) – Optional length between the first and second beam splitter regions.

  • w_heater (float, optional) – Heater width. Use 0 to disable heater drawing.

  • L_ht (Any, optional) – Heater length override.

  • via_h2m (Any, optional) – Heater-to-metal via object or cell.

  • isl (Any, optional) – Isolation trench object or cell.

  • show_pins (bool, optional) – Show Nazca pin stubs in the generated layout.

  • D_port (Any, optional) – Output port pitch override.

  • sharp_patch (bool, optional) – Add cladding patches around sharp geometry features.

  • dual_ht (bool, optional) – Add heaters on both arms.

cell#

Generated nested-straight MZI layout cell.

Type:

nazca.Cell

MZI_NS_ubend#

class mxpic.components.composites.MZI.MZI_NS_ubend(name, BS, xs_wg, w1, w2, L0, Ln, Ls, Ltp, R_bend, w_wg, L_patch, L12=None, w_ht=0, L_ht=0, via_h2m=None, isl=None, show_pins=False, D_port=None, sharp_patch=True, dual_ht=False)#

Bases: object

Nested-straight MZI composite using U-bend arm routing.

Parameters:
  • name (str) – Nazca cell name.

  • BS (Any) – Beam splitter cell or object used at both splitter positions.

  • xs_wg (str) – Optical waveguide cross-section name.

  • w1 (float) – Input/output waveguide width.

  • w2 (float) – Internal arm waveguide width.

  • L0 (Any) – Input/output straight section length.

  • Ln (Any) – Length of the nominal arm section.

  • Ls (Any) – Length of the shifted arm section.

  • Ltp (Any) – Taper length between w1 and w2.

  • R_bend (Any) – Bend radius used by the U-bends.

  • w_wg (float) – Optical waveguide width used for ports and routing.

  • L_patch (Any) – Straight patch length at routing interfaces.

  • L12 (Any, optional) – Optional length between splitter regions.

  • w_ht (float, optional) – Heater width. Use 0 to disable heater drawing.

  • L_ht (int, optional) – Heater length override.

  • via_h2m (Any, optional) – Heater-to-metal via object or cell.

  • isl (Any, optional) – Isolation trench object or cell.

  • show_pins (bool, optional) – Show Nazca pin stubs in the generated layout.

  • D_port (Any, optional) – Output port pitch override.

  • sharp_patch (bool, optional) – Add cladding patches around sharp geometry features.

  • dual_ht (bool, optional) – Add heaters on both arms.

cell#

Generated U-bend MZI layout cell.

Type:

nazca.Cell

MZI_2st_ubend#

class mxpic.components.composites.MZI.MZI_2st_ubend(name, BS1, BS2, BS3, xs_wg, w1, w2, L0, Ln1, Ls1, Ln2, Ls2, Ltp, R_bend, w_wg, L_patch, via_h2m=None, isl=None, L12=None)#

Bases: object

Two-stage U-bend MZI composite with three beam splitters.

Parameters:
  • name (str) – Nazca cell name.

  • BS1 (Any) – Beam splitter cells or objects for the three splitter stages.

  • BS2 (Any) – Beam splitter cells or objects for the three splitter stages.

  • BS3 (Any) – Beam splitter cells or objects for the three splitter stages.

  • xs_wg (str) – Optical waveguide cross-section name.

  • w1 (float) – Input/output waveguide width.

  • w2 (float) – Internal arm waveguide width.

  • L0 (Any) – Input/output straight section length.

  • Ln1 (Any) – Nominal and shifted arm lengths for the first stage.

  • Ls1 (Any) – Nominal and shifted arm lengths for the first stage.

  • Ln2 (Any) – Nominal and shifted arm lengths for the second stage.

  • Ls2 (Any) – Nominal and shifted arm lengths for the second stage.

  • Ltp (Any) – Taper length between w1 and w2.

  • R_bend (Any) – Bend radius used by U-bend routing.

  • w_wg (float) – Optical waveguide width used for ports and routing.

  • L_patch (Any) – Straight patch length at routing interfaces.

  • via_h2m (Any, optional) – Heater-to-metal via object or cell.

  • isl (Any, optional) – Isolation trench object or cell.

  • L12 (Any, optional) – Optional length between beam splitter regions.

cell#

Generated two-stage MZI layout cell.

Type:

nazca.Cell

MZI_Eubend#

class mxpic.components.composites.MZI.MZI_Eubend(name, BS, w_arm, w_wg, L_arm, dL_Amzi, L_patch, xs_wg, Rmax=30, Rmin=10, dL=0.1, w_arm_min=None, show_pins=False, sharp_patch=True)#

Bases: object

Euler U-bend MZI composite for compact asymmetric routing.

Parameters:
  • name (str) – Nazca cell name.

  • BS (Any) – Beam splitter cell or object.

  • w_arm (float) – Internal arm waveguide width.

  • w_wg (float) – Input/output waveguide width.

  • L_arm (Any) – Nominal straight arm length.

  • dL_Amzi (float) – Differential length for asymmetric MZI operation.

  • L_patch (Any) – Straight patch length at routing interfaces.

  • xs_wg (str) – Optical waveguide cross-section name.

  • Rmax (int, optional) – Maximum Euler bend radius.

  • Rmin (int, optional) – Minimum Euler bend radius.

  • dL (float, optional) – Length-search resolution for the Euler compensation.

  • w_arm_min (float, optional) – Minimum arm width used during tapering.

  • show_pins (bool, optional) – Show Nazca pin stubs in the generated layout.

  • sharp_patch (bool, optional) – Add cladding patches around sharp geometry features.

cell#

Generated Euler U-bend MZI layout cell.

Type:

nazca.Cell

MZI_Ubend#

class mxpic.components.composites.MZI.MZI_Ubend(name, BS, L_arm, xs_wg='strip', w_arm=1.0, L_tp=10, R_bend=10, w_wg=0.45, L_patch=0.5, w_ht=0, L_ht=0, via_h2m=None, isl=None, show_pins=False, D_port=None, sharp_patch=True, dual_ht=False)#

Bases: MZI_NS_ubend

Convenience U-bend MZI wrapper with default width handling.

Parameters:
  • name (str) – Nazca cell name.

  • BS (Any) – Beam splitter cell or object.

  • L_arm (Any) – Nominal arm length.

  • xs_wg (str, optional) – Optical waveguide cross-section name.

  • w_arm (float, optional) – Internal arm waveguide width.

  • L_tp (int, optional) – Taper length between bus and arm widths.

  • R_bend (int, optional) – Bend radius used by U-bend routing.

  • w_wg (float, optional) – Input/output waveguide width.

  • L_patch (float, optional) – Straight patch length at routing interfaces.

  • w_ht (float, optional) – Heater width. Use 0 to disable heater drawing.

  • L_ht (int, optional) – Heater length override.

  • via_h2m (Any, optional) – Heater-to-metal via object or cell.

  • isl (Any, optional) – Isolation trench object or cell.

  • show_pins (bool, optional) – Show Nazca pin stubs in the generated layout.

  • D_port (Any, optional) – Output port pitch override.

  • sharp_patch (bool, optional) – Add cladding patches around sharp geometry features.

  • dual_ht (bool, optional) – Add heaters on both arms.

cell#

Generated U-bend MZI layout cell.

Type:

nazca.Cell

MZI_Butterfly#

class mxpic.components.composites.MZI.MZI_Butterfly(name=None, xs_wg='strip', w_wg=0.45, dL_AMZI=0, L_arm=150, L_inner=10, R_bend=10, D_port=None, w_arm=1.0, xs_ht='heater', w_ht=0, Ltp=15, xs_metal='metal', w_metal=10, via_h2m=None, isl=None, outer_isl=True, dual_ht=True, L_patch=0.5, BS=None, BS2=None, sharp_patch=True, show_pins=False)#

Bases: object

Butterfly-style MZI composite with compact folded arms.

Parameters:
  • name (str, optional) – Nazca cell name. If omitted, the generated cell is not instantiated.

  • xs_wg (str, optional) – Optical waveguide cross-section name.

  • w_wg (float, optional) – Input and output waveguide width in microns.

  • dL_AMZI (float, optional) – Differential arm length for asymmetric MZI operation.

  • L_arm (int, optional) – Nominal straight arm length.

  • L_inner (int, optional) – Inner straight section length used by the butterfly fold.

  • R_bend (int, optional) – Bend radius used by internal routing.

  • D_port (Any, optional) – Output port pitch. If omitted, beam splitter pitch is used.

  • w_arm (float, optional) – Internal arm waveguide width.

  • xs_ht (str, optional) – Heater cross-section name.

  • w_ht (float, optional) – Heater width. Use 0 to disable heater drawing.

  • Ltp (int, optional) – Taper length between bus and arm widths.

  • xs_metal (str, optional) – Metal routing cross-section name.

  • w_metal (float, optional) – Metal routing width.

  • via_h2m (Any, optional) – Heater-to-metal via object or cell.

  • isl (Any, optional) – Isolation trench object or cell.

  • outer_isl (bool, optional) – Add outer isolation structures.

  • dual_ht (bool, optional) – Add heaters on both arms.

  • L_patch (float, optional) – Straight patch length at routing interfaces.

  • BS (Any, optional) – First beam splitter cell or object. If omitted, a default DC is used.

  • BS2 (Any, optional) – Second beam splitter cell or object. If omitted, BS is reused.

  • sharp_patch (bool, optional) – Add cladding patches around sharp geometry features.

  • show_pins (bool, optional) – Show Nazca pin stubs in the generated layout.

cell#

Generated butterfly MZI layout cell.

Type:

nazca.Cell

generate_gds(show_pin=False)#
generate_test_gds(dXgc2gc, dYgc2gc, gc, w_wg=0.5, R_bend=10, name=None)#