# Release notes IPKISS 3.2.0

The IPKISS 3.2 design platform introduces physical device simulation links to CST Studio Suite and Lumerical FDTD Solutions. It also introduces generation of circuit models based on S-parameter data (simulation or measurement-based). In addition, there’s a series of bugfixes and improvements.

Highlights are shown below:

Upon popular request, we now support device simulation links to CST Studio Suite and Lumerical FDTD Solutions out-of-the-box. All knowledge required to simulate IPKISS PCells (so-called ‘simulation recipes’) can be stored alongside your devices. The simulation results can be imported back into IPKISS. This offers several benefits:

• No translation errors by reconstructing a geometry in different tools.
• Macros can be added to create true reproducible simulations and true automation.

Please check the device simulation tutorial online to get started.

### 2. Model building

We’ve added utilities to add circuit simulation models to your PCells based on S parameter data: touchstone import, B-spline fitting for S parameter data, simple model testing and checks (passivity and reciprocity). Please check the tutorial on building models from S-parameter data. Circuit created with IPKISS can then be simulated with these new models.

# Load s-matrix from touchstone data
smat = i3.circuit_sim.SMatrix1DSweep.from_touchstone(os.path.join('data', 'dircoup.s4p'), unit='um')

# Create a bspline model
bsplinesmodel = i3.circuit_sim.BSplineSModel.from_smatrix(smat, k=3)

### 3. Documentation improvements & new tutorials

• (new feature) tutorials on physical device sim (new feature in IPKISS 3.2)
• (new feature) tutorials on building circuit models based on s-parameter data
• (new features): API refdoc for device sim & circuit sim
• How to set up a python code editor for designing with Luceda PDKs
• Tutorial on boolean operations
• Shape modifiers documented
• New homepage with improved navigation

### 4. Full list of improvements and bugfixes

#### General

• Added the joblib package. Amongst others this package makes it easy to save and load data to file with support for large (numpy) matrices and file compression. See e.g. Saving and loading S-parameter data.

#### IPKISS

• New feature: EM device simulation link with CST Studio Suite and Lumerical FDTD Solutions. Tutorial link: physical device simulation.
• New feature: Layers can now be subtracted from each other (Layer1 - Layer2) to form new generated layers (e.g. for virtual fabrication definition).
• New feature: Support for reading S-parameters from/to Touchstone files (Touchstone version 1). Use i3.circuit_sim.SMatrix1DSweep.from_touchstone.
• New feature: i3.circuit_sim.SMatrix1DSweep now has a passivity and reciprocity check.
• New feature: VFabricationProcessFlow has a new property process_layer_map which can be used to explicitly map process layers to generated mask layers.
• Improvement: The virtual fabrication does not depend on the undocumented ‘ALL’ property of ProcessPurposeLayers. For backwards compatibility reasons, if ‘ALL’ is present it will be used for constructing the process_layer_map property of VFabricationProcessFlow. As a result, it has become easier to write virtual fabrication process definitions which are independent of the TECH tree.
• Improvement: Added support for importing GDSII properties, silently ignoring them. As a result IPKISS now has improved compatibility with GDSII files exported from certain 3rd party tools.
• Improvement: Port labels are now properly visualized when they fall at the edge of the layout.
• Improvement: IPKISS is now able to read and work with GDSII files that contain PCell context from KLayout.
• Improvement: IPKISS can now merge multiple GDS files that have identical PDK cells, these cells are now identified and reused without renaming them with a prefix.
• Bugfix: SizeInfo.expand_to_grid() works again.
• Bugfix: the .visualize() method of a LayoutView now correctly accepts the canvas_size argument when no box argument is specified.
• Bugfix: In ShapeArc: if end_angle < start_angle, and the angle difference is not a multiple of angle_step, the final calculated path did not perfectly cover the full arc. The bugfix results in a slightly different calculation of curves which could cause a small numeric deviation in your designs drawn in a previous version of IPKISS. Please check if your designs still behave correctly.
• Bugfix: ShapeRoundAdiabaticSpline could not cope with straight angles.
• Bugfix: route_to_parallel_line: the maximum s-bend angle (max_s_bend_angle) was never used to route between two parallel lines - a slightly smaller value was erroneously used instead. The bugfix results in a slightly different calculation of routes. Please check if your designs still behave correctly.
• Bugfix: In ElectricalWireTraceTemplate, the width of the wire is no longer hard-coded, it can now be chosen.
• Bugfix: If 2 MaterialStacks have a common base but a different number of layers, they are not considered equal anymore.

#### Ipcore

• Improvement: Documentation generation: correctly identify required/optional/locked properties. They are ordered: first required properties, then optional ones, then locked ones.

#### Luceda Control Center

• Launching of PyCharm uses the default IDE settings. This results in more predictable behavior: PyCharm will behave the same, whether started from the control center, or from another location (start menu/terminal/…). Users will need to set up the IPKISS Python interpreter so PyCharm can find it. Once set up it can be made available for all projects. See setting up a Python editor.

#### IPKISS.eda

• Bugfix: A StringProperty with a RestrictValueList restriction can now correctly be used in IPKISS.eda (OpenAccess and L-Edit).
• Improvement: The L-Edit launch script has been improved, to make it more reliable.

#### Documentation

• New tutorial on physical device simulation with the new Ipkiss 3.2 API.
• New tutorial on circuit model generation from existing S parameter data.
• New guide on boolean operations.
• General cleanup.

#### Layout notes

In this release we fixed two small layout bugs that may affect layout generation:

• ShapeArc
• route_to_parallel_line

Please check the layout changes in 3.2.