MZIWaveguides
- class picazzo3.filters.mzi.cell.MZIWaveguides
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_ 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
- 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:
- arm2: PCell, locked
- arm1: PCell, locked
- links: locked
- child_cells: locked
Views
- class Layout
- Parameters:
- delay_length: float
if positive, the upper arms is longer, if negative, the lower 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
Examples
import si_fab.all as pdk # noqa: F401 from picazzo3.filters.mzi import MZIWaveguides from picazzo3.wg.splitters import WgY90Splitter, WgY180Combiner split = WgY90Splitter(name="my_splitter_5") split.Layout() comb = WgY180Combiner(name="my_combiner_5") 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)
import si_fab.all as pdk # noqa: F401 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)