Example of a Mach-Zehnder Lattice filter


In this example, we construct a PCell for a Mach-Zehnder Lattice filter which lays out its own stages based on a few parameters supplied by the user.

This is an advanced example for which sufficient experience with Ipkiss is a prerequisite.

Layout of a MZI Lattice filter

Fig. 72 Layout of a MZI Lattice Filter

Transmission of MZI Lattice filter

Fig. 73 Simulated transmission characteristics a MZI Lattice Filter


  1. how to define a basic pcell with layout and compact model view
  2. how to define a complex pcell generating its own variable number of subcells, with layout, netlist and compact model view
  3. how to override a RoundedWaveguide (provided by Ipkiss) to create a new type of waveguide calculating its own properties
  4. how to setup and run a frequency domain simulation with Caphe
  5. how to plot the resulting transmission characteristics using matplotlib

Files (see: samples/ipkiss3/samples/mzi_lattice)

There are four files contained in this sample.

  • arm.py : this file contains the self-contained PCell definition of a MZI lattice arm waveguide
  • dc.py : this file contains the self-contained PCell definition of a directional coupler
  • mzilattice.py : this file contains the PCell definition of a Mach-Zehnder Lattice
  • execute.py : this is the file that is executed by python. It instantiates a disk and shows it.

How to run this example

To run the example, run ‘execute.py’.


In this examples we built up a Mach-Zehnder Lattice filter from the ground up.