An Arrayed Waveguide Grating. Used for filtering light (mux/demux). This device is used a lot in telecommunication and biosensing. Luceda has a separate product ‘Filter Toolbox’, which allows a user to create AWGs based on high-level specifications and generate both the physical layout and simulation models.
The circuit simulator that included in IPKISS. It is capable of simulating passive and active photonic circuits based on the description of a schematic and a description of the model of each basic circuit element.
Python has object-oriented programming features. In this context, IPKISS uses classes to keep related things together. In IPKISS, a PCell is implemented as a Python class.
Circuit Model
An approximate model of an (electro-)optical device which describes its behavior. This description can be used to run fast circuit simulations. Also called a behavioral model or compact model (which usually refers to a behavioral model in which physical parameters such as length and width can be tuned). This is explained in circuit model representation.
A subpart of your circuit/design, your design is composed of several components. In IPKISS (and many other EDA-tools) component is equivalent to ‘PCell’.
A textual file format, stands for “comma separated values”. Can be loaded with Numpy, or loaded with MS Excel.
Design rule checking: a thorough check of the design against design rules which are usually defined by the foundry, and which help guarantee the designed layout will be manufacturable. Examples are minimum width, minimum spacing and overlap rules, avoiding acute angles and so on.
Eigen Mode Expansion (and propagation). A physical simulation methodology to solve Maxwell’s equations. Typically limited to structures in which light propagates mainly in one direction but can be fast while sufficiently accurate.
Finite Difference Time Domain. A physical simulation methodology to solve Maxwell’s equations. Accurate (limited by grid size and material models) and generic (e.g. all-angle) but memory and time consuming.
Layout database file format for exchange of mask layout information. Originally developed by the Calma company for its ‘Graphic Data Sytem’. Although it has limits in scaling for large and complex masksets, and a new format ‘OASIS’ has been developed, GDSII still remains as the de-facto standard for exchange between designers and foundries.
Inheritance is used in object-oriented to indicate that a object of a certain class is a specialisation of its parent-class.
List Comprehension
List Comprehensions in Python provide a concise way to create lists. Example: [2 * x for x in range(10)].
Material Stack
A stack of layers of different materials and heights, representing one possible cross-section resulting from a planar IC fabrication process.
A Python toolbox for plotting.
Mach-Zehnder Interferometer. A photonic circuit used to filter light. See also Mach-Zehnder Interferometers.
Parametric Cell. In IPKISS, the term used for a device or circuit with parameters, at any level of the hierarchy. Defined by a Python Class in IPKISS.
Process Design Kit: foundries provide Process Design Kits (PDKs). They are the interface between the design software and a foundry. They usually contain documentation on the foundry process, technology rules and settings, design rules, a library of devices, additional utilities and functions which are specific to the foundry, and so on. PDKs are a key component in the design cycle.
Process Flow
To add process information from a foundry into the PDK, you can define a process flow. This process flow definition will describe how layout elements on layers can be turned into a three dimensional representation. Check our documentation for details.
A programming language which is easy to learn, and allows to create both simple and complex programs. IPKISS is largely written in Python. Python is a scripting language, which means the Python Interpreter runs a script file (with the .py file extension). It offers similar functionality as Matlab.
Python Community
The name of the group of people that work together on the Python programming language and its large number of modules
Python Interpreter
The location of the Python executable which is used to ‘read’ / ‘interprete’ your scripts. You can have multiple versions of Python installed on your computer. When you install Luceda, a new Python Interpreter is added on your computer. The default installation location on Windows is C:\luceda\ipkiss_xyz\python\envs\ipkiss3\python.exe, where xyz is the ipkiss version number. On Linux, the environment is by default installed under your local anaconda environment. For example /home/username/miniconda2/envs/ipkiss3/bin/python.
Python Module
A group of related functionalities implemented in the Python programming language. Software developers and scientists can use modules to share their work with others. Many modules exist, one example is the numpy module which provides linear algebra functionality. Another example is the scipy which provides general purpose functionality for mathematics, science and engineering.

An environment variable used by python to discover python modules and packages. When you create your own package ( can be a PDK ), you’ll have to make sure that it’s added to the PYTHONPATH before it can be used.

on windows you can set the PYTHONPATH from a command prompt with the following command:

setx PYTHONPATH=C:\my\custom\module;%PYTHONPATH%

on linux you can add the following line to your .bashrc file:

export PYTHONPATH=/my/custom/module:$PYTHONPATH
Scatter Matrix
The behavior of a passive optical device can be described by its scatter matrix (S-matrix, S-parameters). Please check scatter matrix for more information.
Within IPKISS, a hierarchical tree of settings which describe a fabrication technology. Provides default values for many IPKISS functions and PCell properties. The root of this tree is the TECH object. Each PDK defines a technology.
A textual fileformat to store the S-parameters of a component for a given frequency sweep. These S-parameters can come from a simulation or a measurement. IPKISS has functionality to import touchstone files.
Unit Tests
Some code that verifies (tests) that a unit of functionality works as expected. Using unit tests is a great way to manage and improve the quality of your modules.
Describes interfaces of your circuit and the connectivity between its components, in IPKISS you’ll define the netlist of your PCell within the _generate_netlist of the NetlistView of your PCell.