MZIWithCells

class picazzo3.filters.mzi.cell.MZIWithCells

An MZI which contains another cell in one or both arms.

Parameters:
arm2_contents_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 contents ports in arm2. Default = (‘in’, ‘out’)

arm1_contents_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 contents ports in arm1. Default = (‘in’, ‘out’)

arm2_contents: ( PCell ), *None allowed*

Cell to place in the NORTH arm. Use None when only a waveguide is required.

arm1_contents: ( PCell ), *None allowed*

Cell to place in the SOUTH arm. Use None when only a waveguide is required.

auto_transition: ( bool, bool_ or int )

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

trace_template: PCell and _WaveguideTemplate
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

Examples

import si_fab.all as pdk  # noqa: F401
from picazzo3.filters.mzi import MZIWithCells
from picazzo3.wg.dircoup import BendDirectionalCoupler
from picazzo3.filters.ring import RingRectNotchFilter

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

ring = RingRectNotchFilter(name="my_ring_8")

mzi = MZIWithCells(
    name="my_mzi_cells_1",
    splitter=split,
    combiner=split,
    arm1_contents=ring,
    arm1_contents_port_names=["in", "out"],
)
layout = mzi.Layout(extra_length=-50.0)

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

Views

class Layout
Parameters:
arm2_contents_length: ( float and Real, number and number >= 0 ), *None allowed*

Specify manually the physical length of the content in the North arm. If None, it will be calculated by the arms from the distance between the ports.

arm1_contents_length: ( float and Real, number and number >= 0 ), *None allowed*

Specify manually the physical length of the content in the South arm. If None, it will be calculated by the arms from the distance between the ports.

arm2_contents_transformation: GenericNoDistortTransform

transformation of the contents in the North arm

arm1_contents_transformation: GenericNoDistortTransform

transformation of the contents in the South arm

extra_length: float

if positive, the lower (south) arm is longer, if negative, the upper (north) arm

flatten_contents: ( 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

arm2_direction: List with value restriction, allowed values: [C2(0.000000, 1.000000), C2(0.000000, -1.000000)]

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

arm1_direction: List with value restriction, allowed values: [C2(0.000000, 1.000000), C2(0.000000, -1.000000)]

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

combiner_transformation: GenericNoDistortTransform

Transformation of the Combiner.

splitter_transformation: GenericNoDistortTransform

Transformation of the Splitter.

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

manhattan: ( bool, bool_ or int )

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

angle_step: float and number > 0

Angle step for rounding.

rounding_algorithm:

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

bend_radius: float and number > 0

Bend radius for the auto-generated bends.

Other Parameters:
child_transformations: locked