MZIWaveguideArm

class picazzo3.filters.mzi.cell.MZIWaveguideArm

A Mach-Zehnder arm with a given length: routing upward at right-angle

Parameters
trace_template: PCell and _WaveguideTemplate
external_port_names: str

Dictionary for remapping of the port names of the contents to the external ports

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
contents: PCell and _Trace, locked

Views

class Layout
Parameters
combiner_port: OpticalPort

Port interface of the combiner to which the output of this arm is connected

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

Extra length that will be added in the arm

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

Minimum straight length between bends

routing_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)

splitter_port: OpticalPort

Port interface of the splitter to which the input of this arm is connected

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

cover_layers: List with type restriction, allowed types: <class ‘ipkiss.primitives.layer.Layer’>

layers that can be used to generate additional coverage of the trace (e.g. manhattan corners)

output_port: TracePort
trace_template_for_ports: _TraceTemplate.Layout

Trace template to be used for the ports.

core_layer: __Layer__

layer used to define the core of the waveguide

input_port: TracePort
bend_radii: list<number > 0>

Bend radius for every individual bend.

remove_straight_angles: ( bool, bool_, bool or int )

Removes the waypoints with straight angles. Set to False if the algorithm uses waypoint-specific information.

reverse_bends: ( bool, bool_, bool or int )

When set to True, it will generate the bends backwards. This has only effect when the bend algorithm is not symmetric.

reverse_individual_bends: list<( bool, bool_, bool or int )>

When set to True, it will generate the individual bends backwards. This has only effect when the bend algorithm is not symmetric. Should have length equal to the shape for closed shapes, but equal to shape-2 for open shapes.

rounding_algorithms:

Rounding algorithm for every individual bend. Can be circular, spline, … Should have length equal to the shape for closed shapes, but equal to shape-2 for open shapes.

control_shape_layer: __Layer__

layer on which the control shape is drawn

draw_control_shape: ( bool, bool_, bool or int )

draws the control shape on top of the waveguide

contents_transformation: GenericNoDistortTransform
flatten_contents: ( bool, bool_, bool or int )

if True, it will insert the contents as elements in the layout, rather than as an Instance

manhattan: ( bool, 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.

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
shape: locked
center_line_shape: locked

Automatically calculated shape of the center line of the trace

Examples

from technologies import silicon_photonics  # noqa: F401
from ipkiss3 import all as i3
from picazzo3.filters.mzi import MZIWaveguideArm
from picazzo3.traces.wire_wg.trace import WireWaveguideTemplate

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

mziarm = MZIWaveguideArm(name="my_mziarm_1")
layout = mziarm.Layout(
    extra_length=30.0,
    splitter_port=i3.OpticalPort(position=(0.0, 0.0), angle_deg=30.0, trace_template=wg1_t),
    combiner_port=i3.OpticalPort(position=(40.0, 5.0), angle_deg=120.0, trace_template=wg1_t),
)

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