# Porting from Ipkiss 3.3 to Ipkiss 3.4¶

This porting section is mostly relevant for users that maintain an IPKISS PDK that is used inside an EDA tool such as Mentor Graphics L-Edit.

As mentioned in the changelog and known backward incompatibilities, IPKISS.eda has been updated to be compatible with L-Edit from Mentor Graphics versions >= 2019. However, this means you will need to rebuild your libraries / PDKs. This is because the OpenAccess version has been upgraded from 22.43 to 22.50, and also we made significant changes to the integration to improve performance and stability, at the cost of breaking compatibility with PDKs built with IPKISS <= 3.3. From the user point of view, there are little changes, and a PDK created with IPKISS 3.4 that runs on L-Edit >= 2019 will behave almost identical as a PDK created with IPKISS 3.3 that ran on L-Edit <= 2018.

Before rebuilding your PDK, please check out the two sections below on how to update your PDK to be compatible with IPKISS >= 3.4.

Note

Make sure to remove the OpenAccess libraries before rebuilding with IPKISS3.4. Otherwise, existing PCells will not have the new IPKISS3.4 PCell evaluator built in. If after rebuilding and opening your library in L-Edit, you get an error Error in oaPcellCPP: PCellGen definition 'GenPCell' does not exist for platform 'Win32', then you forgot to first remove the library built with previous IPKISS versions.

## PDK Config File¶

We have added a tanner exporter that exports the autoload.tanner file to the openaccess library. This autoload.tanner file loads the IPKISS.eda macros in L-Edit. It is due to this file no longer necessary to start L-Edit through the Luceda Control Center. You can now start L-Edit like any other program as long as the autoload.tanner file is present.

In the config file of the library that you wish to build, you must now add the tanner exporter if you want to use the default autoload.tanner. If you want to make a custom autoload.tanner, you must use the files exporter instead of the tanner exporter to copy it to the right location.

For an example config file, please check the config file specification.

## Routing functions¶

Waveguide routes for use in EDA tools are now defined as functions, and hence need to be rewritten this way. They need to return a (shape, waveguide) tuple. You can use the function generate_waveguide_wrapper (from oatools.waveguides.route_functions import generate_waveguide_wrapper) to convert a waveguide PCell into a function that returns this tuple (it does a simple manhattan route).