Reconfigurable waveguide layout
Posted on July 5, 2015
Photonics layout involves a propensity of curves such as curved waveguides, circles, ellipses, spiral delay lines, S-bends, and so forth. In addition there are plenty of other things that are non-standard in the IC world but pervasive in the photonics world — another example is unusual arrays (such as hexagonal arrays of holes in a photonic crystal, where the diameter may be changing from hole to hole).
Photonics layout is challenging because it is fundamentally different to IC layout, yet we must use IC layout tools. Dissatisfied with the tools I found out there, I coded up a set of tools (on top of Matthias Köfferlein’s excellent KLayout program) to make photonics layout not suck.
The tools are available with instructions here.
One of these tools enables dynamically reconfigurable curved waveguide routing. The user draws a waveguide (snapped to start and end points). The waveguide can be an “inverse” waveguide (i.e. one with positive photoresist mask) consisting of up to three layers. The appropriately-curved waveguide path is calculated and — here’s the cool part — if the waveguide is modified (say, it is stretched if the start or end point move) then the waveguide curve is recalculated and drawn automatically with no effort on the part of the user.
This is a functionality I hadn’t seen anywhere before and may seem trivial but is a huge time-saver — this tool alone cuts my layout time by 25%.
To demonstrate, here is a mess of waveguides. I can’t imagine trying to do this all with a PCell for each bend. Furthermore I can’t imagine having to re-do it when one component changes. This layout however was generated by the user drawing something as simple as a wire. And if some part changes, the paths are recalculated in real-time. (See the second image, where I have dragged some of the waveguides around.)