MZI

class picazzo3.filters.mzi.cell.MZI

Generic MZI, taking a splitter, combiner and two _MziArm objects. You have to specify the transformations yourself.

Parameters:
arm2_port_names: String that contains only alphanumeric characters from the ASCII set or contains _$. ASCII set is extended on PY3. and length == 2

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

arm1_port_names: String that contains only alphanumeric characters from the ASCII set or contains _$. ASCII set is extended on PY3. and length == 2

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

combiner_port_names: String that contains only alphanumeric characters from the ASCII set or contains _$. ASCII set is extended on PY3. and length == 2

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

splitter_port_names: String that contains only alphanumeric characters from the ASCII set or contains _$. ASCII set is extended on PY3. and length == 2

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

combiner: PCell

The combiner of the MZI

splitter: PCell

The splitter of the MZI

arm2: PCell and MZIArm

The North arm of the MZI

arm1: PCell and MZIArm

The South arm of the MZI

external_port_names: str

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: String that contains only ISO/IEC 8859-1 (extended ASCII py3) or pure ASCII (py2) characters

The unique name of the pcell

Other Parameters:
links: locked
child_cells: locked

Views

class Layout
Parameters:
combiner_transformation: GenericNoDistortTransform
splitter_transformation: GenericNoDistortTransform
flyline_width: float and number > 0

line width of the flylines

flyline_layer: ( __Layer__ ), *None allowed*

layer to draw flylines of physically unconnected links

netlist_view: NetlistView

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

view_name: String that contains only alphanumeric characters from the ASCII set or contains _$. ASCII set is extended on PY3.

The name of the view

Other Parameters:
child_transformations: locked

Examples

import si_fab.all as pdk  # noqa: F401
from picazzo3.filters.mzi import MZI, MZIWaveguideArm
from picazzo3.wg.splitters import WgY90Splitter
from picazzo3.traces.wire_wg.trace import WireWaveguideTemplate
from ipkiss3 import all as i3

wg1_t = WireWaveguideTemplate(name="my_wire_template_3")
wg1_t.Layout(core_width=0.5)

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

comb_t = i3.HMirror() + i3.Translation((100.0, 0.0))

mziarm1 = MZIWaveguideArm(name="my_mzi_example_arm1")
mziarm1.Layout(
    extra_length=30.0,
    routing_direction=i3.DIRECTION.SOUTH,
    splitter_port=split_layout.ports["arm1"],
    combiner_port=split_layout.ports["arm1"].transform_copy(comb_t),
)

mziarm2 = MZIWaveguideArm(name="my_mzi_example_arm2")
mziarm2.Layout(
    splitter_port=split_layout.ports["arm2"],
    combiner_port=split_layout.ports["arm2"].transform_copy(comb_t),
)

mzi = MZI(
    name="my_mzi_example",
    splitter=split,
    combiner=split,
    arm1=mziarm1,
    arm2=mziarm2,
    splitter_port_names=["arm1", "arm2"],
    combiner_port_names=["arm1", "arm2"],
)
layout = mzi.Layout(combiner_transformation=comb_t)

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