Porting from Ipkiss 3.4 to Ipkiss 3.5
Replacing ExpandedWaveguide by TaperedWaveguide
As mentioned in the changelog, i3.TaperedWaveguide
has been added to the product.
The TaperedWaveguide
will fully replace the ExpandedWaveguide
.
TaperedWaveguide is more flexible, and will also yield a valid result in situations where ExpandedWaveguide failed.
You can refactor your code to use TaperedWaveguide
by replacing i3.ExpandedWaveguide by i3.TaperedWaveguide.
TaperedWaveguide expects two trace_templates, where straight_trace_template points to the straight sections and trace_template points to the start, end and bend sections. They are both required properties.
- Example:
from technologies import silicon_photonics import ipkiss3.all as i3 from picazzo3.traces.wire_wg import WireWaveguideTemplate wg_tmpl = WireWaveguideTemplate() wg_tmpl.Layout(core_width=0.45) wg_tt = i3.ExpandedWaveguideTemplate(trace_template=wg_tmpl) wg_tt.Layout(bend_radius=5.0, taper_length=10.0, expanded_width=1.6) wg = i3.ExpandedWaveguide(trace_template=wg_tt) lay = wg.Layout(shape=[(0, 0), (30, 0), (30, 30)]) lay.visualize() lay.visualize_2d()
This now becomes:
from technologies import silicon_photonics import ipkiss3.all as i3 from picazzo3.traces.wire_wg import WireWaveguideTemplate wg_tmpl = WireWaveguideTemplate() wg_tmpl.Layout(core_width=0.45) wg_tmpl_wide = WireWaveguideTemplate() wg_tmpl_wide.Layout(core_width=1.6) wg = i3.TaperedWaveguide(trace_template=wg_tmpl, straight_trace_template=wg_tmpl_wide) lay = wg.Layout(shape=[(0, 0), (30, 0), (30, 30)], bend_radius=5.0, taper_length=10.0) lay.visualize() lay.visualize_2d()
You can also define a TaperedWaveguideTemplate, see the example in the sample gallery: Spiral with Tapered Waveguides and Spline Bends.
IPKISS AWG Designer
Since the IPKISS 3.5.0 release, the IPKISS AWG Designer (previously known as Filter Toolbox - AWG Designer) is part of the ‘IPKISS Photonics Design Platform’. The AWG Designer benefits from many improvements, changes are documented in the main changelog. But this also means that some small changes need to be made to the user code.
For more information about backwards incompatibilities in IPKISS 3.5.0 see Known backwards incompatibilities 3.5.0.
The following will explain how to migrate from Filter Toolbox 1.2 to IPKISS AWG Designer 3.5.
Import statement
Because of the name change, the name of the module has also been changed from filter_tb to awg_designer.
Instead of importing the module with import filter_tb.all as filters
, we now import via import awg_designer.all as awg
.
Apertures
Some older aperture classes are now legacy classes and we recommend to refrain from using them in the future. These legacy classes are:
awg_designer.slabsim_integration.legacy_aperture.OpenAperture
awg_designer.slabsim_integration.legacy_aperture.OpenTransitionAperture
awg_designer.slabsim_integration.legacy_aperture.OpenWireWgAperture
awg_designer.slabsim_integration.legacy_aperture.OpenRibWgAperture
awg_designer.slabsim_integration.legacy_aperture.OpenMMIAperture
awg_designer.slabsim_integration.legacy_aperture.MultiAperture
The aperture class that should be used is awg_designer.all.SingleAperture
.
Star Couplers
Multiple functions were introduced to help compose star couplers. The steps to create a star coupler are now:
Add dummy apertures (
awg_designer.all.get_apertures_angles_with_dummies()
)Generate the aperture mounting, positioning the apertures in a Rowland or confocal configuration (
awg_designer.all.get_star_coupler_apertures()
)Generate a contour drawing for the free propagation region (
awg_designer.all.get_star_coupler_extended_contour()
)Compose the star coupler and inspect.
The multi-apertures needed to create a star coupler are calculated with awg_designer.all.get_star_coupler_apertures()
given the lists of single apertures.
The function also returns their transformations (the input side will be mirrored compared to the array side).
The last function (awg_designer.all.get_star_coupler_extended_contour()
) is an improved version of the default function (get_hull_shape) to calculate the free propagation region contour shape which fits the slab area.
Arrayed Waveguide Gratings
A new class awg_designer.all.ArrayedWaveguideGrating
for composing an AWG that consist of 2 star couplers and a waveguide array was introduced.
The waveguide array can be made with, for instance, the new awg_designer.all.RectangularWaveguideArray
or the new awg_designer.all.SWaveguideArray
.
The old ArrayedWaveguideGrating
is renamed to LegacyArrayedWaveguideGrating
.
The RectangularAWG
and RectangularExpandedAWG
inherit from LegacyArrayedWaveguideGrating
.
If in the past you created your own AWG classes that inherit from the original ArrayedWaveguideGrating
, you need
to change this inheritance and inherit from awg_designer.all.LegacyArrayedWaveguideGrating
.
More information on the use of the new ArrayedWaveguideGrating
class:
Check out the tutorial on Luceda Academy.
Check out the AWG samples in the sample gallery that use the new
ArrayedWaveguideGrating
.
CAMFR engine
Improvements in the CAMFR engine will affect the calculations of the aperture field profiles, for more information see Known backwards incompatibilities 3.5.0.
PDKs
PDKs will be supported on the latest AWG Designer.
Other
IPKISS 3.5 introduces a number of utilities to do post-layout manipulations, making it easier to make your designs DRC clean. See Layout operations.