The optical Fourier transform
A passive mesh of couplers and phase shifters computes a 4-point DFT of four optical fields in a single pass of light.
What this stage does
The optical Fourier transform (OFT) is a passive interferometer: four waveguides in, four out, and in between only couplers and phase shifters. Light entering it is mixed so that each output carries one bin of the 4-point discrete Fourier transform of the four input fields. There is no clock and no arithmetic: the transform happens in the time light takes to cross a few millimetres of chip.
The factor ½ keeps the mesh lossless (it is unitary: the power in equals the power out). The −j between the stages is the transform’s one non-trivial twiddle factor, and it is set by a heater.
How it’s modelled
The ideal OFT is the matrix ½·DFT. For calibration studies the simulator builds it as a two-stage butterfly mesh of tunable Mach–Zehnder couplers and phase shifters, each with a heater error; at zero error the mesh is exactly ½·DFT, and it stays unitary for any heater setting (both are tested). The real layout is not published, so this topology is an illustrative stand-in. Random fabrication error is modelled as U = ½·DFT·exp(j·s·H) with H a random Hermitian matrix and scale s (default 0 illustrative).
Below, pick one of the mesh’s heaters and give it an error. The model recomputes all 16 inputs’ outputs and, after re-measuring the carrier pedestal as calibration would, the worst level error over every input and output.
What we found
A level error of half a step is where decisions start to fail. With an input-phase error on one lane the worst level error is 0.1736 steps at 10° and 0.5 steps at 30°; at the default LO power the word error stays below 1 × 10⁻⁶ up to 21.24°. That is a comfortable tolerance: a heater only has to hold its phase to within some tens of degrees.
Uncorrected fabrication error matters more. At scale s = 0.01 the worst level error over eight random draws is 0.07178 steps; at s = 0.05 it reaches 0.367 steps and the worst draw’s word error 2.558 × 10⁻⁷; at s = 0.1 even the median draw fails, at 0.05914. The mesh has to be calibrated, which is what its heaters are for (chapter 6).
Data table
| phase error (deg) | input lane 1 | input lane 2 | LO output 1 | LO output 2 | LO output 3 | LO all outputs |
|---|---|---|---|---|---|---|
| 0 | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ |
| 1 | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ |
| 2 | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ |
| 3 | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ |
| 4 | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ |
| 5 | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ |
| 6 | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ |
| 7 | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ |
| 8 | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ |
| 9 | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ |
| 10 | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ |
| 11 | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ |
| 12 | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1.997 × 10⁻²⁰ |
| 13 | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 1 × 10⁻²⁰ | 4.577 × 10⁻¹⁸ | 1 × 10⁻²⁰ | 9.154 × 10⁻¹⁸ |
| 14 | 1.388 × 10⁻¹⁸ | 1.388 × 10⁻¹⁸ | 1 × 10⁻²⁰ | 1.38 × 10⁻¹⁵ | 1 × 10⁻²⁰ | 2.76 × 10⁻¹⁵ |
| 15 | 1.681 × 10⁻¹⁶ | 1.681 × 10⁻¹⁶ | 1 × 10⁻²⁰ | 2.694 × 10⁻¹³ | 1 × 10⁻²⁰ | 5.387 × 10⁻¹³ |
| 16 | 1.455 × 10⁻¹⁴ | 1.455 × 10⁻¹⁴ | 1 × 10⁻²⁰ | 3.35 × 10⁻¹¹ | 1 × 10⁻²⁰ | 6.701 × 10⁻¹¹ |
| 17 | 9.032 × 10⁻¹³ | 9.032 × 10⁻¹³ | 1 × 10⁻²⁰ | 2.618 × 10⁻⁹ | 1 × 10⁻²⁰ | 5.236 × 10⁻⁹ |
| 18 | 4.039 × 10⁻¹¹ | 4.039 × 10⁻¹¹ | 1 × 10⁻²⁰ | 1.268 × 10⁻⁷ | 1 × 10⁻²⁰ | 2.537 × 10⁻⁷ |
| 19 | 1.307 × 10⁻⁹ | 1.307 × 10⁻⁹ | 1 × 10⁻²⁰ | 3.768 × 10⁻⁶ | 1 × 10⁻²⁰ | 7.535 × 10⁻⁶ |
| 20 | 3.08 × 10⁻⁸ | 3.08 × 10⁻⁸ | 1 × 10⁻²⁰ | 6.803 × 10⁻⁵ | 1 × 10⁻²⁰ | 0.000136 |
| 21 | 5.31 × 10⁻⁷ | 5.31 × 10⁻⁷ | 1 × 10⁻²⁰ | 0.0007432 | 1 × 10⁻²⁰ | 0.001482 |
| 22 | 6.748 × 10⁻⁶ | 6.748 × 10⁻⁶ | 6.949 × 10⁻²⁰ | 0.00492 | 1 × 10⁻²⁰ | 0.009647 |
| 23 | 6.366 × 10⁻⁵ | 6.366 × 10⁻⁵ | 1.716 × 10⁻¹⁷ | 0.01999 | 1 × 10⁻²⁰ | 0.0368 |
| 24 | 0.0004496 | 0.0004496 | 3.504 × 10⁻¹⁵ | 0.05146 | 1 × 10⁻²⁰ | 0.08192 |
| 25 | 0.0024 | 0.0024 | 5.618 × 10⁻¹³ | 0.08961 | 1 × 10⁻²⁰ | 0.1167 |
| 26 | 0.009788 | 0.009788 | 6.703 × 10⁻¹¹ | 0.1183 | 1 × 10⁻²⁰ | 0.1337 |
| 27 | 0.03091 | 0.03091 | 5.639 × 10⁻⁹ | 0.1382 | 1 × 10⁻²⁰ | 0.1558 |
| 28 | 0.07674 | 0.07674 | 3.169 × 10⁻⁷ | 0.1631 | 2.346 × 10⁻²⁰ | 0.2016 |
| 29 | 0.1528 | 0.1528 | 1.128 × 10⁻⁵ | 0.2013 | 2.949 × 10⁻¹⁸ | 0.2777 |
| 30 | 0.25 | 0.25 | 0.0002416 | 0.25 | 3.144 × 10⁻¹⁶ | 0.3751 |
Data table
| phase error (deg) | input lane 1 | input lane 2 | LO output 1 | LO output 2 | LO output 3 | LO all outputs |
|---|---|---|---|---|---|---|
| 0 | 8.882 × 10⁻¹⁶ | 8.882 × 10⁻¹⁶ | 8.882 × 10⁻¹⁶ | 8.882 × 10⁻¹⁶ | 8.882 × 10⁻¹⁶ | 8.882 × 10⁻¹⁶ |
| 1 | 0.01745 | 0.01745 | 0.0006092 | 0.0176 | 0.0003046 | 0.0176 |
| 2 | 0.0349 | 0.0349 | 0.002437 | 0.03551 | 0.001218 | 0.03551 |
| 3 | 0.05234 | 0.05234 | 0.005482 | 0.05371 | 0.002741 | 0.05371 |
| 4 | 0.06976 | 0.06976 | 0.009744 | 0.07219 | 0.004872 | 0.07219 |
| 5 | 0.08716 | 0.08716 | 0.01522 | 0.09096 | 0.007611 | 0.09096 |
| 6 | 0.1045 | 0.1045 | 0.02191 | 0.11 | 0.01096 | 0.11 |
| 7 | 0.1219 | 0.1219 | 0.02982 | 0.1293 | 0.01491 | 0.1293 |
| 8 | 0.1392 | 0.1392 | 0.03893 | 0.1489 | 0.01946 | 0.1489 |
| 9 | 0.1564 | 0.1564 | 0.04925 | 0.1687 | 0.02462 | 0.1687 |
| 10 | 0.1736 | 0.1736 | 0.06077 | 0.1888 | 0.03038 | 0.1888 |
| 11 | 0.1908 | 0.1908 | 0.07349 | 0.2092 | 0.03675 | 0.2092 |
| 12 | 0.2079 | 0.2079 | 0.08741 | 0.2298 | 0.0437 | 0.2298 |
| 13 | 0.225 | 0.225 | 0.1025 | 0.2506 | 0.05126 | 0.2506 |
| 14 | 0.2419 | 0.2419 | 0.1188 | 0.2716 | 0.05941 | 0.2716 |
| 15 | 0.2588 | 0.2588 | 0.1363 | 0.2929 | 0.06815 | 0.2929 |
| 16 | 0.2756 | 0.2756 | 0.155 | 0.3144 | 0.07748 | 0.3144 |
| 17 | 0.2924 | 0.2924 | 0.1748 | 0.3361 | 0.08739 | 0.3361 |
| 18 | 0.309 | 0.309 | 0.1958 | 0.358 | 0.09789 | 0.358 |
| 19 | 0.3256 | 0.3256 | 0.2179 | 0.38 | 0.109 | 0.38 |
| 20 | 0.342 | 0.342 | 0.2412 | 0.4023 | 0.1206 | 0.4023 |
| 21 | 0.3584 | 0.3584 | 0.2657 | 0.4248 | 0.1328 | 0.4248 |
| 22 | 0.3746 | 0.3746 | 0.2913 | 0.4474 | 0.1456 | 0.4474 |
| 23 | 0.3907 | 0.3907 | 0.318 | 0.4702 | 0.159 | 0.4702 |
| 24 | 0.4067 | 0.4067 | 0.3458 | 0.4932 | 0.1729 | 0.4932 |
| 25 | 0.4226 | 0.4226 | 0.3748 | 0.5163 | 0.1874 | 0.5163 |
| 26 | 0.4384 | 0.4384 | 0.4048 | 0.5396 | 0.2024 | 0.5396 |
| 27 | 0.454 | 0.454 | 0.436 | 0.563 | 0.218 | 0.563 |
| 28 | 0.4695 | 0.4695 | 0.4682 | 0.5865 | 0.2341 | 0.5865 |
| 29 | 0.4848 | 0.4848 | 0.5015 | 0.6102 | 0.2508 | 0.6102 |
| 30 | 0.5 | 0.5 | 0.5359 | 0.634 | 0.2679 | 0.634 |
What would need measured data
The model knows the OFT only as a matrix. A measured version would need the chip’s actual 4×4 transfer matrix (amplitudes and phases, for instance from a swept-input characterisation), how each heater moves it including thermal cross-talk between neighbouring heaters, the insertion loss and its wavelength dependence, and how the matrix drifts with temperature. Any of these can replace the ideal unitary in the simulator without touching the layers above it.