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,
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
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.
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_end = WireWaveguideTemplate()
trans = WireRibWaveguideTransitionLinear(name="my_rib_wire_transition",
trans_lo = trans.Layout(start_position=(0.0, 0.0),