MMI2x2Tapered
- class picazzo3.filters.mmi.cell.MMI2x2Tapered
MMI with one access waveguide and two output waveguides and with tapers that symmetrically distributed. This is usually useful when the MMI is used as a 2x2 splitter or a crossing.
- Parameters:
- output_trace_template: PCell
Output trace template.
- input_trace_template: PCell
Input trace template.
- mmi_trace_template: PCell and _WaveguideTemplate
Trace template used for the MMI section
- trace_template: ( PCell and _WaveguideTemplate ), *None allowed*
Template for all ports, defaults to TECH.PCELLS.WG.DEFAULT.When set to None, the waveguide templates of the ports will be used.
- transition_database: AutoTransitionDatabase
AutoTransitionDatabase in which the correct transition between the two trace templates can be looked up.
- transitions: List with type restriction, allowed types: <class ‘ipkiss3.pcell.cell.pcell.PCell’>
List of transitions that is used on this MMI. By default Autotracetransition is used on all the transitions
- port_labels: ( List with type restriction, allowed types: <class ‘str’> ), *None allowed*
Labels of the ports to be processed. Set to None to process all ports.
- external_port_names: str
Dictionary for remapping of the port names of the contents to the external ports
- 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:
- mmi_trace: PCell, locked
Trace of the MMI section
- output_trace_templates: List with type restriction, allowed types: <class ‘ipkiss3.pcell.cell.pcell.PCell’>, locked
List of the output trace templates.
- input_trace_templates: List with type restriction, allowed types: <class ‘ipkiss3.pcell.cell.pcell.PCell’>, locked
List of the input trace templates.
- n_outputs: int and number > 0, locked
Number of output channels.
- n_inputs: int and number > 0, locked
Number of input channels.
- trace_templates: List with type restriction, allowed types: <class ‘ipkiss3.pcell.cell.pcell.PCell’>, locked
list of templates to apply to all ports
- contents: PCell, locked
Contains the base MMI without the tapers
Views
- class Layout
- Parameters:
- trace_spacing: float and Real, number and number >= 0
Offset between the traces at the input and the output
- transition_length: ( float and Real, number and number >= 0 ), *None allowed*
Length of the transition. Set to None to take the standard transition length.
- zero_length_if_identical: ( bool, bool_ or int )
uses a zero-length transition if the trace templates are identical
- flatten_transitions: ( bool, bool_ or int )
if true, flattens the transitions one level
- straight_extension: ( Coord2 and number >= 0 ), *None allowed*
Tuple: straight extensions of the transitions. Set to None to take the standard straight extensions
- length: float and number > 0
Length of the MMI
- contents_transformation: GenericNoDistortTransform
transformation to apply to the contents
- flatten_contents: ( bool, bool_ or int )
if True, it will insert the contents as elements in the layout, rather than as an Instance
- 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:
- output_y_positions: list<Real, number>, locked
Positions in the y direction at the output where access waveguides are be added
- input_y_positions: list<Real, number>, locked
Positions in the y direction at the input where ports are be added
- transition_lengths: locked
Examples
import si_fab.all as pdk # noqa: F401 from ipkiss3 import all as i3 from picazzo3.filters.mmi.cell import MMI2x2Tapered from picazzo3.traces.wire_wg.trace import WireWaveguideTemplate mmi_trace_template = WireWaveguideTemplate() mmi_trace_template.Layout(core_width=6.0, cladding_width=10.0) mmi_access_template = WireWaveguideTemplate() mmi_access_template.Layout(core_width=1.0, cladding_width=5.0) MMI = MMI2x2Tapered( mmi_trace_template=mmi_trace_template, input_trace_template=mmi_access_template, output_trace_template=mmi_access_template, trace_template=i3.TECH.PCELLS.WG.DEFAULT, ) layout = MMI.Layout(transition_length=5.0, length=10.0, trace_spacing=2.0) layout.visualize(annotate=True)