Mach-Zehnder Interferometers

Mach-Zehnder interferometers (MZI) are one of the simplest two-path interferometers to implement on a chip. They consist of a splitter, two delay lines, and a combiner coupler. In their simplcity, they are the basis for many more complex components.

The PICAZZO MZI classes provide a parametric framework to define both very simple and very advanced MZIs. The couplers for splitter and combiner can be supplied by the user, using MMIs, directional couplers, or just Y-Splitters. The arms can be simple delay lines, or contain seperate components, such as ring resonators or electro-optic phase shifters.

The hierarchy of an MZI is illustrated below:

The basic hierarchy of PICAZZO MZI components.

Because the splitter and combiner can be manually, the user can set these ports by specifying the labels of the splitter and combiner ports that need to connect to arm1 and arm2, respectively, using the properties splitter_port_names and combiner_port_names (The default follow the patterns in1, out1, …). Likewise, the ports of the arms that are to be connected to the splitter and combiner are supplied in arm1_port_names and arm2_port_names).

Two basic MZI classes are provided: one with simple delay lines, and one where each arm is a container with a user-defined cell.


Generic MZI, taking a splitter, combiner and two _MziArm objects.


A MZI with two simple waveguide arms.


An MZI which contains another cell in one or both arms.

The individual arms can also be define manually


A Mach-Zehnder arm with a given length: routing upward at right-angle


A Mach-Zehnder arm which contains another cell and connects it to the splitter and combiner port