WireRibWaveguideTransitionFromPortLinear

class picazzo3.traces.rib_wg.WireRibWaveguideTransitionFromPortLinear(*args, **kwargs)

Transition from/to wire (deep etched) to/from rib (shallow etched) waveguides.

You can provide a start_port and end_trace_template.

Parameters:

start_port: _PortInterface, optional

the port on which to extract trace template, position and angle

end_trace_template: PCell and _TraceTemplate and WireWaveguideTemplate, RibWaveguideTemplate, optional

modified_start_wg_template: PCell and _TraceTemplate, optional

Modified start waveguide template (using the end_trace_template, but with the dimensions of the start_trace_template)

start_trace_template: PCell and _TraceTemplate and WireWaveguideTemplate, RibWaveguideTemplate, optional

wire_only_wg_template: PCell and _TraceTemplate, optional

cell_instances: _PCellInstanceDict, optional

name: optional

The unique name of the pcell

reverse_templates: locked

When True, treat start_trace_template as end_trace_template and vice versa. To use the correct templates, use the _{start/stop}_trace_template properties. This should not be set manually, but calculated by the transition itself.

Views

Layout
Parameters:

grids_per_unit: optional

Number of grid cells per design unit

straight_extension: Coord2, optional

tuple: straight extension at start and end of transition

units_per_grid: optional

Ratio of grid cell and design unit

view_name: str, optional

The name of the view

wire_end_width: float and Real, number and number >= 0, optional

width of the wire core at its end point.

wire_only_length: optional

Length of transition where shallow part is built up.

length: float and Real, number and number >= 0, optional

length of the transition

end_position: Coord2, optional

end position of the transition

start_position: Coord2, optional

start position of the transition

grid: float and number > 0, optional

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

unit: float and number > 0, optional

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

Examples

"""This example shows how to append a transition onto a component.
The component has a port, which is associated with a
WireWaveguideTemplate, and we want to taper to a RibWaveguideTemplate.
"""
from technologies import silicon_photonics

from ipkiss3 import all as i3
from picazzo3.traces.wire_wg import WireWaveguideTemplate
from picazzo3.traces.rib_wg import RibWaveguideTemplate
from picazzo3.traces.rib_wg import WireRibWaveguideTransitionFromPortLinear

wg_start = WireWaveguideTemplate()
wg_start.Layout(core_width=0.45,
                cladding_width=0.45 + 2 * i3.TECH.WG.TRENCH_WIDTH)

wg_end = RibWaveguideTemplate()
wg_end.Layout(core_width=0.9,
              cladding_width=0.9 + 2 * i3.TECH.WG.TRENCH_WIDTH)

wg_wireonly = WireWaveguideTemplate()
wg_wireonly.Layout(core_width=3.0,
                   cladding_width=3.0 + 2*i3.TECH.WG.TRENCH_WIDTH)

class P(i3.PCell):
    out_trace_template = i3.TraceTemplateProperty()
    class Layout(i3.LayoutView):
        def _generate_ports(self, ports):
            return i3.OpticalPort(name="out",
                                  position=(3.0, 3.0),
                                  angle=10.0,
                                  trace_template=wg_start)

p = P(out_trace_template=wg_start)
p.Layout()

t = WireRibWaveguideTransitionFromPortLinear(start_port=(p, "out"), end_trace_template=wg_end,
                                             wire_only_wg_template=wg_wireonly)

t_lay = t.Layout(length=15.0,
                 straight_extension=(0.0, 0.2),
                 wire_only_length=5.0)

t_lay.visualize()
../../../../_images/picazzo3-traces-rib_wg-WireRibWaveguideTransitionFromPortLinear-1.png