A range of predefined waveguide trace templates are available in picazzo:


In order to build transitions between different trace templates, we use waveguide transitions, also called tapers. Most transitions are built to taper towards a wire waveguide template. Below is a list of available transitions:

If often occurs that you want to taper from a port of a given component towards another waveguide template, with a given taper length. In this case, it’s more convenient to use the matching TransitionFromPort class. Below is a list of such tapers:

Transition circuit models

Currently, there are two circuit models: CircuitModel and SimpleCircuitModel. The weight_factor property (between 0 and 1) averages all circuit properties of two waveguide templates and uses these values for the transition model. For example:

import si_fab.all as pdk
from ipkiss3 import all as i3
from picazzo3.traces.wire_wg import WireWaveguideTemplate
from picazzo3.traces.rib_wg import RibWaveguideTemplate, WireRibWaveguideTransitionLinear

wire = WireWaveguideTemplate()

rib = RibWaveguideTemplate()

transition = WireRibWaveguideTransitionLinear(start_trace_template=wire,
cm = transition.SimpleCircuitModel(weight_factor=0.5, length=10.0)

print("n_eff of the transition: {n_eff}".format(n_eff=cm.n_eff))

This will print an effective index of 2.95.

If you use SimpleCapheModelFromLayout, you do not have to specify a length. Rather, after providing the start_position and end_position to the Layout of the transition, the length will be calculated automatically.