Authors: Martin Fiers, Pieter Dumon, Antonio Ribeiro, Wim Bogaerts
We present IPKISS: an open source framework for designing, simulating and ultimately characterizing photonic integrated circuits. Photonic Integrated Circuits, or "optical chips" are increasingly becoming an industrially relevant technology. Already in use in long-haul optical communication systems, the rise of silicon photonics makes optical chips an attractive technology for short interconnects (data centers, boards, ...) and sensor systems (biosensors, spectroscopy, readout systems...). One of the key bottlenecks is the limitations in the photonic circuit design. On one hand, optical simulations are possible in dedicated tools, but they have trouble scaling up to very large circuits. On the other hand there is a large ecosystem of electronic design automation (EDA) tools that support complex circuit design and simulation, but lacks photonic capabilities. The IPKISS framework is constructed around principles similar to those of EDA tools: Circuit building blocks can be defined in a parametric way and different representations ("views") can be added at load-time or dynamically using mixins. The entire framework is written in Python and builds heavily on Numpy for geometric manipulations, and Matplotlib and Mayavi2 for visualization. The user interfaces with the framework through Python scripts; there is no dedicated graphical user interface. We consider this as a benefit rather than a drawback: given the emerging paradigms in photonic circuit design, a graphical user interface would be restrictive rather than enabling. To streamline the user process, the IPKISS framework provides its own "little language" to reduce the amount of user-written code. Descriptors are used to define component parameters in a manner not unlike Traits, documentation and tests can be automated with little user intervention. In line with good practices in EDA design, the framework separates generic concepts from technology-specific data: it is easy to generate libraries of photonic components where the default parameters are loaded at runtime from a Tree-like construct with technology information (e.g. default dimensions, material models, ...) A component can be organized hierarchically (with subcomponents) and define its internal interconnectivity ("netlists") and behavioural model. This can be exported to a schematic circuit representation that can be simulated in a high-level circuit simulator. One example is Caphe, also developed in the photonics research group, that can simulate large photonic circuits (but also many other physical problems) both in the time domain and the frequency domain. On the other side of the spectrum, it is also possible to simulate components on a very physical level: From the layout we can run a virtual fabrication process to extract a 3D material distribution of the component that can be used in an electromagnetic solver. For this purpose, we have interfaced IPKISS with MIT's FDTD solver Meep. The combination of these simulation tools allows the user to extract a component model from a physical simulation, and use that model in a higher-level circuit simulation, without additional work from the user. The framework takes photonic integrated circuits beyond the design phase: Based on the same framework we built a tool set for controlling optical and electrical instrumentation. For this, we wrapped the PyVISA library into a comprehensive class library that allows us to automate complex measurement procedures, include full-automatic alignment of optical fibers and characterization of entire wafers of photonic chips, including data analysis with fitting algorithms in SciPy. A sizable portion of the IPKISS framework, including a photonic component library, has recently been released as open source under GPLv2.