MZIWaveguides¶
-
class
picazzo3.filters.mzi.cell.
MZIWaveguides
(*args, **kwargs)¶ 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: optional
if True, splitter and combiner are transitioned to the correct waveguide template
trace_template: PCell and _WaveguideTemplate, optional
arm1_port_names: length == 2, optional
port names for the south arm ports connected to splitter and combiner. Default = (‘in’, ‘out’)
arm2_port_names: length == 2, optional
port names for the north arm ports connected to splitter and combiner. Default = (‘in’, ‘out’)
combiner: PCell, optional
The combiner of the MZI
combiner_port_names: length == 2, optional
port names for the combiner ports to the arms. Default = (‘in1’, ‘in2’)
splitter: PCell, optional
The splitter of the MZI
splitter_port_names: length == 2, optional
port names for the splitter ports to the arms. Default = (‘out1’, ‘out2’)
external_port_names: optional
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
cell_instances: _PCellInstanceDict, optional
name: optional
The unique name of the pcell
arm1: PCell, locked
arm2: PCell, locked
child_cells: locked
links: locked
Views
-
Layout
¶ Parameters: angle_step: float and number > 0, optional
angle step for rounding
delay_length: float, optional
if positive, the upper arms is longer, if negative, the lower arm
manhattan: optional
adds rectangular blocks in the bends to avoid as much as possible non-manhattan angles
view_name: str, optional
The name of the view
arm1_direction: optional
direction of routing (DIRECTION.NORTH or DIRECTION.SOUTH)
arm2_direction: optional
direction of routing (DIRECTION.NORTH or DIRECTION.SOUTH)
min_straight: float and Real, number and number >= 0, optional
Minimum straight length between two bends
combiner_transformation: GenericNoDistortTransform, optional
splitter_transformation: GenericNoDistortTransform, optional
flyline_layer: optional
layer to draw flylines of physically unconnected links
flyline_width: float and number > 0, optional
line width of the flylines
netlist_view: NetlistView, optional
Netlist view in the same cell on which this Layout is based. Normally no need to manually override.
bend_radius: float and number > 0, optional
bend radius for the auto-generated bends
rounding_algorithm: optional
rounding algorithm used to generate the bends. Can be circular, spline, …
grid: float and number > 0, locked
design grid. Extracted by default from TECH.METRICS.GRID
grids_per_unit: locked
Number of grid cells per design unit
units_per_grid: locked
Ratio of grid cell and design unit
child_transformations: locked
unit: float and number > 0, locked
design unit. Extracted by default from TECH.METRICS.UNIT
Examples
from technologies import silicon_photonics from picazzo3.filters.mzi import MZIWaveguides from picazzo3.wg.splitters import WgY90Splitter, WgY180Combiner from ipkiss3 import all as i3 split = WgY90Splitter(name="my_splitter_5") split_layout = split.Layout() comb = WgY180Combiner(name="my_combiner_5") comb_layout = 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()
from technologies import silicon_photonics 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()
-