MZIWaveguides

class picazzo3.filters.mzi.cell.MZIWaveguides(*args, **kwargs)

A MZI with two simple waveguide arms. The splitter and combiner are safely spaced, but this can be manually optimized. The difference in length between the delay lines can be set in the layout.

Parameters:

auto_transition: ( bool, bool_, bool or int )

if True, splitter and combiner are transitioned to the correct waveguide template

trace_template: PCell and _WaveguideTemplate

arm1_port_names: length == 2

port names for the south arm ports connected to splitter and combiner. Default = (‘in’, ‘out’)

arm2_port_names: length == 2

port names for the north arm ports connected to splitter and combiner. Default = (‘in’, ‘out’)

combiner: PCell

The combiner of the MZI

combiner_port_names: length == 2

port names for the combiner ports to the arms. Default = (‘in1’, ‘in2’)

splitter: PCell

The splitter of the MZI

splitter_port_names: length == 2

port names for the splitter ports to the arms. Default = (‘out1’, ‘out2’)

external_port_names:

Map of the free instance terms/ports to the names of external terms/ports.Format is a dict {‘inst:term’ : ‘new_term_name’}.If a term/port is not listed, the format instname_portname will be used

name:

The unique name of the pcell

Other Parameters:
 

arm1: PCell, locked

arm2: PCell, locked

child_cells: locked

links: locked

Views

Layout
Parameters:

angle_step: float and number > 0

Angle step for rounding.

delay_length: float

if positive, the upper arms is longer, if negative, the lower arm

manhattan: ( bool, bool_, bool or int )

Adds rectangular blocks in the bends to avoid as much as possible non-manhattan angles.

view_name: str and ( Alphanumeric string or Contains _$ )

The name of the view

arm1_direction:

direction of routing (DIRECTION.NORTH or DIRECTION.SOUTH)

arm2_direction:

direction of routing (DIRECTION.NORTH or DIRECTION.SOUTH)

flatten_contents: ( bool, bool_, bool or int )

allows for enabling/disabling the flattening of the splitter and combiner, default is True

min_straight: float and Real, number and number >= 0

Minimum straight length between two bends

combiner_transformation: GenericNoDistortTransform

splitter_transformation: GenericNoDistortTransform

flyline_layer: ( __Layer__ ), *None allowed*

layer to draw flylines of physically unconnected links

flyline_width: float and number > 0

line width of the flylines

netlist_view: NetlistView

Netlist view in the same cell on which this Layout is based. Normally no need to manually override.

bend_radius: float and number > 0

Bend radius for the auto-generated bends.

rounding_algorithm:

Rounding algorithm used to generate the bends. Can be circular, spline, ….

Other Parameters:
 

child_transformations: locked

Examples

from technologies import silicon_photonics
from picazzo3.filters.mzi import MZIWaveguides
from picazzo3.wg.splitters import WgY90Splitter, WgY180Combiner
from ipkiss3 import all as i3

split = WgY90Splitter(name="my_splitter_5")
split_layout = split.Layout()

comb = WgY180Combiner(name="my_combiner_5")
comb_layout = comb.Layout()

mzi = MZIWaveguides(name="my_mzi_waveguides_1",
                    splitter=split,
                    combiner=comb,
                    splitter_port_names=['arm1','arm2'],
                    combiner_port_names=['arm1','arm2'])
layout = mzi.Layout(delay_length=100.0)

layout.visualize(annotate=True)
../../../../_images/picazzo3-filters-mzi-cell-MZIWaveguides-1.png
from technologies import silicon_photonics
from picazzo3.filters.mzi import MZIWaveguides
from picazzo3.wg.dircoup import BendDirectionalCoupler
from ipkiss3 import all as i3

split = BendDirectionalCoupler(name="my_splitter_6")
split.Layout(bend_angle=30.0)

mzi = MZIWaveguides(name="my_mzi_waveguides_2",
                    splitter=split,
                    combiner=split)
layout = mzi.Layout(delay_length=-50.0,
           splitter_transformation=i3.Rotation(rotation=90.0),
           combiner_transformation=i3.Rotation(rotation=-90.0) + i3.Translation((25.0, 0.0)),
           arm1_direction=i3.DIRECTION.NORTH)

layout.visualize(annotate=True)
../../../../_images/picazzo3-filters-mzi-cell-MZIWaveguides-2.png