MZIWaveguideArm¶
-
class
picazzo3.filters.mzi.cell.
MZIWaveguideArm
(*args, **kwargs)¶ A Mach-Zehnder arm with a given length: routing upward at right-angle
Parameters: trace_template: PCell and _WaveguideTemplate, optional
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
contents: PCell and _Trace, locked
Views
-
Layout
¶ Parameters: angle_step: float and number > 0, optional
angle step for rounding
combiner_port: OpticalPort, optional
Port interface of the combiner to which the output of this arm is connected
control_shape_layer: __Layer__, optional
layer on which the control shape is drawn
cover_layers: List with type restriction, allowed types: <class ‘ipkiss.primitives.layer.Layer’>, optional
layers that can be used to generate additional coverage of the trace (e.g. manhattan corners)
draw_control_shape: optional
draws the control shape on top of the waveguide
extra_length: float and Real, number and number >= 0, optional
Extra length that will be added in the arm
manhattan: optional
adds rectangular blocks in the bends to avoid as much as possible non-manhattan angles
rounding_algorithm: optional
rounding algorithm used to generate the bends. Can be circular, spline, …
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
min_straight: float and Real, number and number >= 0, optional
Minimum straight length between bends
routing_direction: optional
direction of routing (DIRECTION.NORTH or DIRECTION.SOUTH)
contents_transformation: GenericNoDistortTransform, optional
core_layer: __Layer__, optional
layer used to define the core of the waveguide
bend_radii: list<number > 0>, optional
bend radius for every individual bend
remove_straight_angles: optional
removes the waypoints with straight angles. Set to False if the algorithm uses waypoint-specific information.
reverse_bends: optional
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<>, optional
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: optional
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
input_port: TracePort, optional
output_port: TracePort, optional
trace_template_for_ports: _TraceTemplate.Layout, optional
Trace template to be used for the ports.
flatten_contents: optional
if True, it will insert the contents as elements in the layout, rather than as an Instance
bend_radius: float and number > 0, optional
bend radius for the auto-generated bends
center_line_shape: locked
Automatically calculated shape of the center line of the trace
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
shape: locked
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 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()
-