Release Notes IPKISS Photonics Design Platform 3.5

The IPKISS 3.5 Photonics Design Platform now comes with the "IPKISS AWG Designer" preinstalled (formerly known as "Filter Toolbox: AWG Designer"). In this release, several improvements and changes have been made to make it easier to design Arrayed Waveguide Gratings (AWGs). In addition, new layout operations are introduced that make it easier to build DRC-clean photonic integrated circuits (PICs). Several other improvements are made to the performance and layout correctness (shape cutting for layouts which have holes) and to our CAMFR integration (calculating 1D modes and improved simulation accuracy).


  1. IPKISS AWG Designer
  2. Layout improvements
  3. CAMFR improvements
  4. Full list of improvements and bugfixes

1. IPKISS AWG Designer

The "IPKISS AWG Designer" is the new name for the product formerly known as "Filter Toolbox: AWG Designer".


In this release we have made several changes that make it easier to create AWGs for a variety of technology platforms and to implement various form factors. Documentation is available in the form of an API reference, samples, guides and extensive tutorials.


The workflow for creating AWGs remains the same: the user starts from high-level specifications of the AWG, performs synthesis (specs -> layout parameters), builds the design in layout, then runs simulations to verify the correctness, and finally prepares the AWG for tape-out. This step-by-step process is now made easier and is clearly explained in a tutorial on Luceda Academy.


Note on backward compatibility:

Most of the functionalities should be backward compatible with previous releases, except for the import statement ('filter_tb' is renamed to 'awg_designer'). Slight changes in the generated AWG might be observed due to more accurate CAMFR simulations, which have an impact on the spreading angle into the star coupler.

Some of these improvements could not be made without some changes to the way apertures are drawn and the way AWGs are composed. A porting guide [link] can help you on your way to convert your current AWG projects from IPKISS <= 3.4 to IPKISS 3.5. Should you have any questions don't hesitate to contact us at

2. Layout improvements

Several utility functions have been added that help designers create DRC-clean devices. All layout manipulations that are now available in IPKISS are documented in one place [link], so it is easier to learn what are the possibilities for doing boolean operations, merging shapes, detecting and patching sharp angles, etc.


In addition, we have improved our shape cutting algorithm that works when generating the polygons for shapes that have holes in them (which is not supported by GDS and requires a conversion). The new algorithm is now correct and does not generate new points (which could lead to DRC and/or snapping errors). In addition, it is also significantly faster. Please check [link] for more info.

3. CAMFR improvements

The integration between IPKISS and CAMFR has been improved.

  • There is now a method to calculate the guided modes and to calculate the fields. Given that each IPKISS PDK comes with predefined virtual fabrication, this makes it easy to calculate the modes and fields for your foundry of choice.
    New methods are documented in the device simulation API reference.
  • The discretization of the CAMFR engine has been improved and made more accurate. Rectangular shapes are now represented exactly instead of being discretized. Also the resulted discretized structures are symmetrical if the input was symmetrical. A tutorial has been added to get started with CAMFR simulations in IPKISS.

4. Full list of improvements and bugfixes


  • The IPKISS AWG Designer module (formerly known as Filter Toolbox - AWG Designer) has been integrated as a part of the IPKISS Photonics Design Platform. Upon installing IPKISS, you can now directly use the awg_designer module without having to install additional packages (it still requires a valid license).


  • Deprecation: legacy Caphe models, deprecated since Ipkiss 3.1.3, are removed. CapheSModelView, CapheTModelView, CapheModelFromSMatrix were removed. Refer to Circuit models: Basics and Circuit models: Advanced for defining simulation models and Circuit models based on S-parameter data for how to create models from existing S-parameter data.
  • Bugfix: In layout view of PlaceAndAutoRoute ‘waveguide_shapes’ and ‘waveguides’ lengths are verified to be the same.
  • Improvement: Improved shape cutting algorithm for turning a Shapely geometry in to an Ipkiss i3.Shape, in both speed and result.
  • New Feature: i3.device_sim.camfr_mode_fields and i3.device_sim.camfr_guided_modes can be used to calculate and debug the neff indices of material stacks.
  • Improvement: i3.merge_elements added for convenient merge of elements on the same layer.
  • Deprecation: ExpandedWaveguide and ExpandedWaveguideTemplate have been deprecated in favor of TaperedWaveguide and TaperedWaveguideTemplate.
  • New Feature: Added i3.TaperedWaveguide and i3.TaperedWaveguideTemplate to Ipkiss.
  • New Feature: i3.device_sim.camfr_compute_stack_neff is added for convenient calculation of a MaterialStack effective index.
  • New Feature: MaterialStack.visualize method can be used to plot the material stack.
  • New Feature: MaterialStack.clip_copy creates a new material stack by limiting or extending the current one.
  • Improvement: i3.device_sim.camfr_stack_expr_for_structure now works with dispersive materials. This requires a mapping of each MaterialStack used in the virtual fabrication to an effective material. This overrides the previous use of the effective_index_epsilon.
  • Improvement: In i3.device_sim.camfr_stack_expr_for_structure rectangular shapes are now represented exactly. In other cases the discretisation is controlled with the discretisation_resolution parameter, while ensuring that the discretised structure respects the structure symmetry.
  • New Feature: Acute angle detection function i3.get_acute_angle_points for layouts.
  • New Feature: Get all the elements in a layout for given layers with i3.get_layer_elements.
  • Improvement: i3.subtract_elements added for convenient subtraction of elements on the same layer.
  • New Feature: i3.get_stub_elements to get the elements that need to be added and subtracted, to remove acute angles in a layout.
  • New Feature: Stub the acute angles of a Layout for given layers with i3.stub_acute_angles.
  • Bugfix: route_to_line gave wrong results in some edge cases.
  • Improvement: i3.IoColumn.add_blocktitle() did not follow hierarchical naming by default, which could sometimes result in name conflicts when combining multiple GDS files. Users can now also give a custom name to the TitleBlock.
  • Bugfix: Creating a new MaterialStackFactory object did not reset class attributes. This could result in problems after using visualize_2d.


  • Improvement: the deprecated Caphe models and CapheModel views were removed from all picazzo components. Please use the CircuitModel view instead.
  • Improvement: WaveguideReflector has a valid circuit model, using a BSpline fit of the effective indices of the waveguides
  • Bugfix: unused coupler_straights property has been removed from RingRectWrappedNotchFilter, RingRectWrapped180DropFilter, RingRectSBendNotchFilter and RingRectSBend180DropFilter


The AWG Designer is integrated as a module inside Ipkiss. Check out the documentation [link].

  • Change: the module filter_tb has been renamed to awg_designer. The API inside filter_tb has been largely unchanged and kept backward compatible, although some patterns are deprecated in favor of a simpler approach to building AWGs. For more information see the Porting Guide.
  • Improvement: camfr_aperture_simulation tries to compute an effective index of each stack automatically.
  • Improvement: material_stack_to_material_map and core_z_window are added as properties of aperture view FieldModelFromCamfr. Former allows providing a desired mapping between MaterialStack``s and a set of ``Material models. Latter gives an optional range over which the automatic computation of the effective indices is performed (see above).
  • Bugfix: multipass simulation in the slab engine was disfunctional (n_o_passes parameter not taken into account).
  • Bugfix: conversion between wavelength and frequency spacings was off for wide wavelength bands
  • Bugfix: FSR specified in wavelength was not taken into account properly in awg_designer.all.get_layout_params_1xM_demux_um(), which was noticeable over wide wavelength bands.
  • Improvement: it is now possible to specify the virtual fabrication process flow to use in awg_designer.slabsim_integration.aperture.OpenAperture.FieldModelFromCamfr.
  • Improvement: awg_designer.sample_designs.awg.demux1xM.awg_1xm.get_apertures_with_dummies() can now be used to generate the list of apertures together with dummy apertures for matching. This can be used to create custom AWG layout algorithms.
  • Bugfix: When specified the R_input parameter is now properly passed to the input star couplers
  • Removed: the delta_wavelength and delta_frequency functions have been removed as approximations during conversion can lead to hard to track design errors.
  • Improvement: generate the list of apertures together with dummy apertures for matching along with their angles with awg_designer.all.get_apertures_angles_with_dummies().
  • Improvement: get the MultiApertures and the individual transformations for the apertures needed to make a StarCoupler with awg_designer.all.get_star_coupler_apertures().
  • New Feature: get the free propagation region contour shape which fits the slab area that can be extended along the aperture circles with awg_designer.all.get_star_coupler_extended_contour(). This method is an improved version of the original get_hull_shape.
  • New Feature: fanout algorithm for routing a selection of ports to a desired place.
  • New Feature: awg_designer.all.ArrayedWaveguideGrating for composing AWG that consist of 2 starcouplers and a waveguide array.
  • New Feature: awg_designer.all.RectangularWaveguideArray for creating a U-Shaped Rectangular Waveguide Array that can be used to compose an AWG with ArrayedWaveguideGrating.
  • New Feature: awg_designer.all.SWaveguideArray for creating a S-Shaped Waveguide Array that can be used to compose an AWG with ArrayedWaveguideGrating.


Starting from our extensive validated component library, we can assist you in the creation and validation of new model libraries