MZIContainerArm¶
-
class
picazzo3.filters.mzi.cell.
MZIContainerArm
(*args, **kwargs)¶ A Mach-Zehnder arm which contains another cell and connects it to the splitter and combiner port
Parameters: auto_transition: optional
if True, Automatic transitions will be added to the contents if the trace templates are not matched
port_labels: List with type restriction, allowed types: <type ‘str’> and length == 2, optional
Names of the two ports to be processed
trace_template: optional
Template for all ports. If None, the waveguide templates of the ports will be used
contents: PCell, optional
the contents of the container: the child cell
external_port_names: optional
Dictionary for remapping of the port names of the contents to the external ports
cell_instances: _PCellInstanceDict, optional
name: optional
The unique name of the pcell
trace_templates: List with type restriction, allowed types: <class ‘ipkiss3.pcell.cell.pcell.PCell’>, locked
list of templates to apply to all ports
waveguides: List with type restriction, allowed types: <class ‘ipkiss3.pcell.cell.pcell.PCell’>, locked
Views
-
Layout
¶ Parameters: angle_step: float and number > 0, optional
angle step for rounding
contents_length: float and Real, number and number >= 0, optional
The physical length of the optical path of the content. If not set manually, it will default to the distance between the content ports used.
extra_length: float and Real, number and number >= 0, optional
Extra length that will be added in the arm
flatten_contents: optional
if True, it will insert the contents as elements in the layout, rather than as an Instance
horizontal_contents_offset: float, optional
Horizontal offset (from the center of the MZI Arm) of the transformed content
manhattan: optional
adds rectangular blocks in the bends to avoid as much as possible non-manhattan angles
min_straight: float and Real, number and number >= 0, optional
Minimum straight length between bends
rounding_algorithm: optional
rounding algorithm used to generate the bends. Can be circular, spline, …
routing_direction: optional
direction of routing (DIRECTION.NORTH or DIRECTION.SOUTH)
splitter_port: OpticalPort, optional
Port interface of the splitter to which the input of this arm is connected
view_name: str, optional
The name of the view
combiner_port: OpticalPort, optional
Port interface of the combiner to which the output of this arm is connected
routes: optional
routes along which the waveguides will be generated
contents_transformation: GenericNoDistortTransform, optional
bend_radius: float and number > 0, optional
bend radius for the auto-generated bends
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
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 MZIContainerArm from picazzo3.filters.ring import RingRect180DropFilter import ipkiss3.all as i3 ring = RingRect180DropFilter(name="my_ring_in_the_mzi_arm1") ring.Layout(bend_radius=10.0) mziarm = MZIContainerArm(name="my_mzi_container_arm", contents=ring, port_labels=["in1", "out1"]) layout = mziarm.Layout(extra_length=30.0, splitter_port=i3.OpticalPort(position=(0.0, 0.0), angle_deg=30.0), combiner_port=i3.OpticalPort(position=(60.0, 5.0), angle_deg=120.0), contents_transformation=i3.Rotation(rotation=30.0) ) layout.visualize()
from technologies import silicon_photonics from picazzo3.filters.mzi import MZIContainerArm from picazzo3.filters.ring import RingRect180DropFilter import ipkiss3.all as i3 ring = RingRect180DropFilter(name="my_ring_in_the_mzi_arm2") ring.Layout(bend_radius=10.0) mziarm = MZIContainerArm(name="my_mzi_container_arm2", contents=ring, port_labels=["out2", "out1"]) layout = mziarm.Layout(extra_length=30.0, splitter_port=i3.OpticalPort(position=(0.0, 0.0), angle_deg=30.0), combiner_port=i3.OpticalPort(position=(80.0, 5.0), angle_deg=120.0), contents_transformation=i3.Rotation(rotation=30.0), routing_direction=i3.DIRECTION.SOUTH ) layout.visualize()
from technologies import silicon_photonics from picazzo3.filters.mzi import MZIContainerArm from picazzo3.filters.ring import RingRect180DropFilter import ipkiss3.all as i3 ring = RingRect180DropFilter(name="my_ring_in_the_mzi_arm3") ring.Layout(bend_radius=10.0) mziarm = MZIContainerArm(name="my_mzi_container_arm3", contents=ring, port_labels=["in1", "out1"] ) layout = mziarm.Layout(extra_length=0.0, splitter_port=i3.OpticalPort(position=(0.0, 0.0), angle_deg=30.0), combiner_port=i3.OpticalPort(position=(30.0, 5.0), angle_deg=120.0), contents_transformation=i3.Rotation(rotation=30.0), ) layout.visualize()
-