Known backwards incompatibilities 3.1.3

Waveguide circuit models

Before IPKISS 3.1.3, waveguide models did not extract the length from the layout except when you explicitly set the default waveguide model to CapheModelFromLayout, for example:

import ipkiss3.all as i3

Using a zero-length by default was not a sensible default. Now we extract the length from the layout. This means that the Python code above can be ommitted in scripts now. For backward compatibility reasons, CapheModelFromLayout and CapheModel will remain to exist, but we recommend using CircuitModel now, which replaces both views. See also the circuit model tutorial to learn more about the new CircuitModel view.


The straight_extension property of ShapeWindowTraceTransition was incorrectly used in previous releases when the trace template types were reversed. This is also the case for the following predefined transitions in picazzo3:

  • WireRibWaveguideTransitionLinear, WireRibWaveguideTransitionFromPortLinear
  • WireRibWireWaveguideTransitionLinear, WireRibWireWaveguideTransitionFromPortLinear
  • WireSocketWaveguideTransitionLinear, WireSocketWaveguideTransitionFromPortLinear
  • ThinnedWireWireWaveguideTransitionLinear, ThinnedWireWireWaveguideTransitionFromPortLinear

In the following example a rib waveguide to wire waveguide transition is created, with and (exaggerated) straight extension set to (1.0, 2.0). WireRibWaveguideTransitionLinear is used and is called with a rib waveguide as the start and a wire waveguide as the end trace template. In ipkiss 3.1.2, the transition would have gotten a 2.0um extension at the start point (rib waveguide) and a 1.0um extension at the end point (strip waveguide), whereas one would expect the reverse. In Ipkiss 3.1.3, the first value of the straight_extension corresponding always to the start point and the second value to the end point of the transition. Designs from before 3.1.3 will therefore render slightly different on 3.1.3 in case straight_extension was used.

import technologies.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 WireRibWaveguideTransitionLinear

wg_start = RibWaveguideTemplate()
wg_start.Layout(core_width=1.0, cladding_width=5.0)

wg_end = WireWaveguideTemplate()

trans = WireRibWaveguideTransitionLinear(name="my_rib_wire_transition",
trans_lo = trans.Layout(start_position=(0.0, 0.0),
                        end_position=(6.0, 0.0),
                        straight_extension=(1, 2))