AutoTransitionPorts

class picazzo3.container.transition_ports.AutoTransitionPorts(*args, **kwargs)

Pcell containing another PCell with transitions on all (labeled) ports, using AutoTraceTransitionFromPort. The target trace template is defined in trace_template.

Parameters:

trace_template: optional

Template for all ports. If None, the waveguide templates of the ports will be used

transition_database: AutoTransitionDatabase, optional

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’>, optional

Transitions (of type WaveguideTransitionFromPort) attached the the ports given in port_labels. Should be in the same order as port_labels.

port_labels: optional

Labels of the ports to be processed. Set to None to process all ports.

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

Examples

Tapering ports to a wider width:

from technologies import silicon_photonics
from ipkiss3 import all as i3
from picazzo3.filters.ring import RingRect180DropFilter
from picazzo3.traces.wire_wg import WireWaveguideTemplate
my_ring = RingRect180DropFilter()
my_ring.Layout()
from picazzo3.container.transition_ports import AutoTransitionPorts
wire_t = WireWaveguideTemplate()
wire_t.Layout(core_width=0.7, cladding_width=0.7 + 2 * 2.0)
my_ring_tapered_auto = AutoTransitionPorts(contents = my_ring,
                                           port_labels = ["W0", "W1", "E0"],
                                           trace_template = wire_t)
my_ring_tapered_auto_layout = my_ring_tapered_auto.Layout()
my_ring_tapered_auto_layout.visualize()
../../../../_images/picazzo3-container-transition_ports-AutoTransitionPorts-1.png

Views

Layout
Parameters:

straight_extension: optional

Tuple: straight extensions of the transitions. Set to None to take the standard straight extensions

view_name: str, optional

The name of the view

transition_length: optional

Length of the transition. Set to None to take the standard transition length.

zero_length_if_identical: optional

uses a zero-length transition if the trace templates are identical

contents_transformation: GenericNoDistortTransform, optional

flatten_contents: optional

if True, it will insert the contents as elements in the layout, rather than as an Instance

grids_per_unit: locked

Number of grid cells per design unit

units_per_grid: locked

Ratio of grid cell and design unit

transition_lengths: locked

grid: float and number > 0, locked

design grid. Extracted by default from TECH.METRICS.GRID

unit: float and number > 0, locked

design unit. Extracted by default from TECH.METRICS.UNIT