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