The hardware primer for the photonic link module of deck 01 (arXiv:2608.21536): light as a carrier that a photodiode sees only as power; the Mach–Zehnder modulator and its three bias points, and why quadrature suits unsigned bits; the textbook IQ modulator; holding a bias with dither and lock-in; direct against coherent detection with a local oscillator and a balanced pair; one input vector followed through the whole chain as constellations; the DFT's PAM5 and 3×3 alphabet and its packing into PAM4; calibration, where input phase errors distort and output errors rotate; the transimpedance amplifier, the noise budget and lane skew; and what a simulator needs from all of it. Every concept has a figure, and every mechanism an animation driven by a tested model.
The hardware of a photonic link module (arXiv:2608.21536, Kundu et al.), from the bits the host sends to the bits it gets back. FOptInf 01 introduced the module; this deck explains each part of its signal chain, with the signal drawn as a constellation at every stage. Click a block to jump to its slide.
The module's signal chain, as its paper describes it (the PAM4 clipping is this deck's reading, slide 12). Highlighted: the two optical stages that compute (the modulators write the data onto light; the optical Fourier transform mixes the four lanes). Everything after them reads the result out.
Labels used on every slide: paper stated in arXiv:2608.21536; patent stated in a patent the paper cites; textbook standard physics or a published paper; derived arithmetic shown on the slide; inference this deck's reading, not stated by any source; illustrative a parameter chosen for the model, not measured. Numbers come from analysis/link_hw/results.md.
Light at 1550 nm is a carrier at about 193 THz. Its field E(t) = A·cos(2πft + φ) has an amplitude A, which can be negative, and a phase φ, exactly like an RF carrier. No electronics can follow 193 THz: a photodiode's current is proportional to the power |E|², averaged over many cycles. textbook
Top: a field whose amplitude flips from +A to −A halfway (the carrier drawn absurdly slowly, a few cycles where light has billions). Bottom: what a photodiode reports, the power averaged over the carrier cycles, A², the same on both halves. The sign, and with it any phase, is gone.
| Optics | RF and electronics equivalent |
|---|---|
| Laser | Carrier oscillator |
| Photodiode | Square-law (power, or envelope) detector |
| Mach–Zehnder modulator | Balanced modulator: a differential pair or Gilbert cell |
| Bias point of a modulator | DC operating point of an amplifier or mixer |
| Coherent receiver with a local oscillator (LO) | Mixer with an LO; homodyne = zero IF |
| Balanced photodiode pair | Single-balanced mixer (rejects LO feedthrough and LO amplitude noise) |
Concepts used here, and where they are explained. Each links to a glossary entry: this series glossary, or the glossaries of LLM Inference Simulators, FHE Accelerator Simulators and the Simulation Engineering Toolkit for concepts those series already explain.
Phase is easy to change in silicon; amplitude is not. A voltage across a pn junction in the waveguide moves free carriers and shifts the refractive index (plasma dispersion: tens of GHz, but weak); a heater does the same through the thermo-optic effect (strong, but microseconds). A phase change alone is invisible to a photodiode. An interferometer makes it visible: split the light into two arms, shift their phases, and recombine, so the fields add. textbook
Each arm carries half the input field (a phasor of length ½). Push-pull drive turns the arms equally and oppositely (+Δφ/2, −Δφ/2), so their sum (accent) always lies on the real axis: amplitude without phase wobble (no chirp), passing through zero and changing sign. Tick the box to drive one arm only: the sum then swings off the axis. Model: mzmArms.
The power transfer curve is a raised cosine. As with a transistor, you choose a DC operating point (the bias, set by a slow phase shifter inside the arms) and the data swings either side of it. Three bias points matter. textbook
Left: power (solid) and field (dashed) against the arm phase difference; the shaded band is the drive swing about the current bias, its ends the '1' and '0' levels. Right: the two levels on the complex field plane, the circle being the maximum field. Step through peak, quadrature and null; drag the slider to change the swing. Model: biasPoint.
| Bias | Δφ | Field '1' | Field '0' | Field step | Power '1' | Power '0' | Power step |
|---|---|---|---|---|---|---|---|
| peak | 0 | 0.941 | 0.941 | 0.000 | 0.885 | 0.885 | 0.000 |
| quadrature | π/2 | 0.905 | 0.426 | 0.479 | 0.819 | 0.181 | 0.637 |
| null | π | 0.339 | -0.339 | 0.677 | 0.115 | 0.115 | 0.000 |
Source: results.md, section “Drive ±0.22 Vπ”
At ±0.22 Vπ the field step is 0.677 at null against 0.479 at quadrature (of the maximum field): the field is steepest at null, the power at quadrature.
In optics, “quadrature” names two different things. Ask which one is meant.
Left: a modulator biased at quadrature, the half-power point, its two arms 90° apart (slide 03). Right: I/Q quadrature, two carrier components 90° apart in phase, as in an IQ modulator (slide 05) or a 90° optical hybrid (slide 08).
Every coherent long-haul transceiver writes its data with an IQ modulator: two MZMs, each biased at null so it is a signed, carrier-free modulator, combined 90° apart so the output is one complex field E = I + jQ. textbook (Seimetz, High-Order Modulation for Optical Fiber Transmission, 2009; Kikuchi, J. Lightwave Technol. 34, 2016)
Left: the IQ modulator. Right: its QPSK constellation, one point per symbol (real part across, imaginary part up); noise spreads each point into a cloud, and the receiver picks the nearest point. A photodiode sees only the squared distance from the origin (the dashed circle: all four QPSK points look the same). A homodyne receiver sees the projection onto its LO axis (dashed amber).
At quadrature each lane's field is E0 + d·x, with x a bit (0 or 1): a constant carrier E0 (the '0' level) plus a data step d. The optical Fourier transform is linear, and the DFT of a constant lands only in bin k = 0. derived
Top: the four lane fields (√µW), carrier part (grey) and data part (teal). Bottom: the four outputs Y = DFT(x)/2 (the transform is unitary, so it scales by ½), real parts teal and imaginary parts amber, with the carrier's share hatched. The carrier adds 2E0 = 5.62 √µW to output 1 (130.0 µA of detector current) and nothing to outputs 2–4. Model: chainModel with the illustrative parameters of slide 09.
The patent's word is quadrature (slide 04) patent; the reasons in the right-hand box are this deck's, not the patent's.
Bias points drift with temperature and ageing, so a slow loop holds them. What the loop can measure depends on where it is holding. textbook
Top left: the transfer curve, the bias (dot) and the dither's excursion either side. Top right: the monitor power over two dither periods (the dither is 0.1 rad, exaggerated in the drawing). Bottom: the three error signals against bias phase, from a numerical lock-in (dither, checked against its Bessel-function form in the tests). The 1st harmonic is drawn ×10 and the 2nd ×200; dots are the recorded values in results.md.
| Bias phase | Avg power − ½ | 1st harmonic | 2nd harmonic |
|---|---|---|---|
| 0π | +0.4988 | +0.0000 | +0.00125 |
| 0.25π | +0.3527 | -0.0353 | +0.00088 |
| 0.5π | +0.0000 | -0.0499 | +0.00000 |
| 0.75π | -0.3527 | -0.0353 | -0.00088 |
| 1π | -0.4988 | +0.0000 | -0.00125 |
| 1.25π | -0.3527 | +0.0353 | -0.00088 |
| 1.5π | +0.0000 | +0.0499 | +0.00000 |
| 1.75π | +0.3527 | +0.0353 | +0.00088 |
| 2π | +0.4988 | +0.0000 | +0.00125 |
Source: results.md, section “3. Holding the bias”
Direct detection is one photodiode measuring power: enough for intensity data, blind to sign and phase. Coherent detection mixes the signal Es with a local oscillator (LO) of the same frequency in a 2×2 coupler and subtracts the two photodiode currents (a balanced pair): textbook
Left: output 2's nine possible fields (õW, slide 10), the dashed circle being what direct detection can tell apart (only |E|). The LO phase sets the axis (amber); each point's projection on it is what the balanced pair reports. Right: the projected levels as currents (slide 09's scale), and for the highlighted point the two photodiodes' currents: each carries the large common term R(Ps+PLO)/2, which the subtraction removes. Model: balancedPair, chainModel.
The module: one of the laser's seven channels becomes the LO, through a slow MZI “to control both phase and intensity”, split four ways with a phase shifter each; each copy is mixed with one transform output, and “All coherent homodyne detection techniques used in the PIC use balanced PDs.” paper Self-homodyne, in the terms above. derived
One input vector, followed from the FPGA's transmitter to the decoded answer, with the signal drawn as a constellation at every stage. Choose any of the 16 inputs; tick the box to see the illustrative uncalibrated phases. The stages follow the paper and patents; the numbers are illustrative (parameters in section 1 of results.md). illustrative
Top: where the signal is. Below: its constellation at that stage. Faint points: all 16 inputs; bright: the chosen one; dashed: the axis each detector's LO projects onto; dotted (from stage 5): decision thresholds. Model: chainModel, pam4Symbols, decode, the port of link_hw.py.
The worked example, input [1, 0, 1, 1]:
| Stage | What the signal is | Worked example |
|---|---|---|
| 0 · FPGA transmitter | Four binary NRZ lanes at 14 GBaud | bits 1, 0, 1, 1 |
| 1 · Driver | Linear amplification to ±1.50 V (illustrative Vπ 6.8 V, so ±0.22 Vπ) | +1.50 V, −1.50 V, +1.50 V, +1.50 V |
| 2 · MZM at quadrature | Field 0.905 ('1') or 0.426 ('0') of the maximum; power 82% or 18% | lane maximum 43.6 µW; fields 5.97, 2.81, 5.97, 5.97 √µW; carrier E₀ = 2.81, step d = 3.16 |
| 3 · Per-lane phase shifters | Set by calibration so the lanes arrive in phase | uncalibrated: lanes turned by 0°, 25°, -15°, 10° (illustrative) |
| 4 · Optical Fourier transform | Y = DFT(x) / 2, x = E₀ + d·bits | DFT(bits) = [3, j, 1, −j]; Y = [10.36, 1.58j, 1.58, −1.58j] √µW |
| 5 · Balanced homodyne | i = 2·R·E_LO × projection; E_LO = 17.78 √µW, so 23.1 µA per √µW | currents 239.6, 0.0, 36.6, -36.6 µA |
| 6 · TIA and offset removal | 1,000 Ω; output 1's carrier offset 130.0 µA removed | 239.6, 0.0, 36.6, -36.6 mV; output 1 after offset 109.7 mV; levels 3, 0, 1, -1 |
| 7 · PAM4 into the FPGA | Outputs 1 and 3 clip their top level | symbols 3, 1, 3, 0 |
| 8 · FPGA decode | Rebuild X, inverse DFT | X = [3, j, 1, −j]; bits [1, 0, 1, 1] |
Source: results.md, section “4. Constellations through the chain”
The transform computes a 4-point DFT, Xk = Σn xn·(−j)kn, whose only weights are 1, −j, −1 and j. With bits for inputs, the outputs take a small, fixed set of values: the module's output alphabet. derived
Step through all 16 inputs (dft4Int). Each panel is one output on the complex plane; points already visited stay. Outputs 1 and 3 fill five levels on the real axis; outputs 2 and 4 fill 3×3 grids that are mirror images (complex conjugates) of each other for every input.
| Output | Values taken | Distinct |
|---|---|---|
| 1 | real, 0, 1, 2, 3, 4 | 5 |
| 2 | complex, −1 − j, −1, −1 + j, −j, 0, j, 1 − j, 1, 1 + j | 9 |
| 3 | real, −2, −1, 0, 1, 2 | 5 |
| 4 | complex, −1 − j, −1, −1 + j, −j, 0, j, 1 − j, 1, 1 + j | 9 |
Source: results.md, section “5. The DFT alphabet”
Every optical path has its own phase, set by fabrication and temperature. Phase errors before the transform and after it do different damage, which is why calibration fixes them in a fixed order. Toggle either kind and step through the calibration.
Left: output 2's constellation for all 16 inputs (dots) against the calibrated grid (rings). An output error rotates it rigidly; an input error distorts it (the transform computes with the wrong weights). Right: the levels each detector reads, in level steps, with decision thresholds (dotted); a wrong decision is drawn as a cross in the warning colour. Phase errors 0°/25°/−15°/10° (input) and 20°/−30°/15°/35° (output) are illustrative. Model: detectedLevels, decide.
| Phase errors present | Wrong decisions (of 64) | Largest error (steps) | Passes |
|---|---|---|---|
| both (uncalibrated) | 32 | 1.00 | no |
| input path only | 8 | 0.71 | no |
| output/LO path only | 8 | 0.75 | no |
| none (calibrated) | 0 | 0.00 | yes |
Source: results.md, section “7. Calibration”
patent The start-up calibration of WO2025168828A1 (a patent cited by the paper), with the stream paused and known input vectors applied: set the modulators to quadrature; set the system's reference phase with one input switched on; set the LO amplitude to maximum; sweep each LO phase “from 0 to pi radian” until each output matches a DFT lookup table; sweep each input's phase “from 0 to 2pi radian” until all outputs match the truth table; then cycle all 16 vectors with small tweaks.
“The transmitted data to the module is restricted to binary (NRZ) levels. This is to compress the photonic computed result to PAM4”, and the results return on the QSFP56 port's receive lanes. paper But outputs 1 and 3 have five levels (slide 10), and PAM4 has four.
Saturation packing, as drawn here: the top level of outputs 1 and 3 is clipped onto the one below it (warning colour). inference This deck's mapping is illustrative; the patents' own level coding differs (for example, raw levels offset per channel so one receiver design serves all four).
| Input | X (DFT of the bits) | PAM4 symbols | Decoded |
|---|---|---|---|
| 0000 | 0, 0, 0, 0 | 0121 | 0000 |
| 1000 | 1, 1, 1, 1 | 1231 | 1000 |
| 0100 | 1, −j, −1, j | 1112 | 0100 |
| 1100 | 2, 1 − j, 0, 1 + j | 2222 | 1100 |
| 0010 | 1, −1, 1, −1 | 1031 | 0010 |
| 1010 | 2, 0, 2, 0 | 2131 | 1010 |
| 0110 | 2, −1 − j, 0, −1 + j | 2022 | 0110 |
| 1110 | 3, −j, 1, j | 3132 | 1110 |
| 0001 | 1, j, −1, −j | 1110 | 0001 |
| 1001 | 2, 1 + j, 0, 1 − j | 2220 | 1001 |
| 0101 | 2, 0, −2, 0 | 2101 | 0101 |
| 1101 | 3, 1, −1, 1 | 3211 | 1101 |
| 0011 | 2, −1 + j, 0, −1 − j | 2020 | 0011 |
| 1011 | 3, j, 1, −j | 3130 | 1011 |
| 0111 | 3, −1, −1, −1 | 3011 | 0111 |
| 1111 | 4, 0, 0, 0 | 3121 | 1111 |
Source: results.md, section “6. Packing into PAM4”
16 distinct symbol patterns for 16 inputs; every input decodes back to itself. Parity alone settles every clipped case but 2; there the inverse DFT rules out the impossible candidate.
“The PDs in the PIC are packaged with Single Layer Capacitors (SLCs) and bonded with a TIA die.” paper A transimpedance amplifier (TIA) turns the balanced pair's difference current into a voltage. The SLCs give the photodiode bias an AC ground right at the diode, and a bare TIA die bonded beside the chip keeps the input capacitance and the bond-wire inductance small. inference
Left: a shunt-feedback TIA on a series balanced pair, with a variable-gain stage and a slow DC-offset loop (a typical linear-TIA architecture; the module's internal blocks are not reported). Right: the transimpedance limit RT ≤ A·fA/(2π·CT·f3dB²) (Säckinger, 2017) for three input capacitances, with an illustrative 1 THz gain-bandwidth; dotted at 0.6 × 14 and 0.6 × 56 GBaud. Model: tiaLimit.
| C_T | R_T max at 8.4 GHz (14 GBaud) | R_T max at 33.6 GHz (56 GBaud) | Ratio |
|---|---|---|---|
| 80 fF | 28,195 Ω | 1,762 Ω | 16× |
| 150 fF | 15,037 Ω | 940 Ω | 16× |
| 300 fF | 7,519 Ω | 470 Ω | 16× |
Source: results.md, section “9. The transimpedance limit”
A five-level signal through a linear TIA (levels kept) and a limiting TIA (levels crushed onto its rails). Illustrative transfer curves.
Is there enough signal-to-noise? Three noise currents compete with the balanced pair's signal: the TIA's own noise (flat), shot noise (grows as √PLO, like the signal) and the LO's intensity noise left after imperfect balance (grows as PLO). A decision fails when noise crosses half a level step, so the figure of merit is Q = (step/2)/σ; Q ≈ 4.9 gives about 10−6 errors per decision. textbook
Left: signal (peak, output 3's full swing) and rms noise currents against LO power per detector pair. Right: Q per level step for outputs 1 and 3 (output 1 carries more power, so more shot noise), with the requirement Q = 4.9 (dotted) and the illustrative −5 dBm operating point (dot). Responsivity 0.65 A/W from a foundry Ge photodiode (Hu et al., Photonics Research 11, 2023); TIA noise 10 pA/√Hz, RIN, CMRR and signal power are illustrative; 7 GHz noise bandwidth (Nyquist at 14 GBaud). Model: homodyneTerms, qPerStep.
| Term | Current |
|---|---|
| Peak signal (output 3's full swing, two steps) | 73.10 µA |
| TIA noise (rms) | 0.84 µA |
| Shot noise (rms) | 0.69 µA |
| LO RIN after CMRR (rms) | 0.05 µA |
| Total noise (rms) | 1.09 µA |
Source: results.md, section “8. Noise budget”
| Output | Q per step | Margin over Q = 4.9 | Range to handle |
|---|---|---|---|
| 1 | 15.6 | 10.1 dB | 130 to 276 µA (7.6 steps) |
| 3 | 16.8 | 10.7 dB | -73 to 73 µA (±2 steps) |
Source: results.md, section “Margins”
| Noise bandwidth | TIA noise (rms) | Total noise (rms) | Q, output 3 | Margin over Q = 4.9 |
|---|---|---|---|---|
| 7 GHz | 0.84 µA | 1.09 µA | 16.8 | 10.7 dB |
| 20 GHz | 1.41 µA | 1.84 µA | 10.0 | 6.2 dB |
| 35 GHz | 1.87 µA | 2.43 µA | 7.5 | 3.7 dB |
Source: results.md, section “Noise bandwidth”
In an ordinary four-lane link each lane has its own clock and data recovery, and lanes are deskewed digitally after decisions. Here the four lanes are added optically before any decision: near its edges a late lane still carries its previous bit, so the sum is partly the wrong answer and the eye closes. derived
Left: the summed signal (output 1 of the transform, unit weights) over two unit intervals, 160 traces, four PRBS15 lanes through a Gaussian channel, lane 1 late by the step's skew. Right: the worst inner-eye opening (in level steps, at the best sampling time) against skew, recorded in results.md; the dot is the live model. Model: filtered, eyeOpening.
| Skew (UI) | ps at 14 GBaud | ps at 56 GBaud | Opening (BW 0.75 × baud) | Opening (BW 0.5 × baud) |
|---|---|---|---|---|
| 0 | 0.0 | 0.0 | 0.978 | 0.728 |
| 0.0625 | 4.5 | 1.1 | 0.975 | 0.715 |
| 0.125 | 8.9 | 2.2 | 0.964 | 0.685 |
| 0.1875 | 13.4 | 3.3 | 0.946 | 0.639 |
| 0.25 | 17.9 | 4.5 | 0.917 | 0.575 |
| 0.3125 | 22.3 | 5.6 | 0.874 | 0.493 |
| 0.375 | 26.8 | 6.7 | 0.813 | 0.396 |
| 0.4375 | 31.3 | 7.8 | 0.729 | 0.282 |
| 0.5 | 35.7 | 8.9 | 0.618 | 0.150 |
Source: results.md, section “10. Skew”
| Source of skew | Rule of thumb | Fix |
|---|---|---|
| FPGA transmitter lanes | Lanes may start with arbitrary phase unless they share a clock and are phase-aligned | Common reference clock, transmit phase alignment, per-lane fine delay |
| PCB traces | ≈ 6–7 ps per mm of stripline (√εr ≈ 1.9–2.0 over c) | Length-match the pairs to well under 1 mm |
| On-chip optical paths | ≈ 13 ps per mm of mismatch (group index ≈ 4 in a silicon wire) | Path-matched layout: the paper's “phase balanced PIC” paper |
| Driver channels, bond wires | A few ps | Equal bond lengths; calibrate out |
At 14 GBaud a tenth of a unit interval is 7 ps; at 56 GBaud, which the module's drivers and TIAs support paper, it is 1.8 ps, which makes skew a first-order layout constraint for a faster chip. derived
Each hardware effect on the previous slides becomes a term in a system model. A simulator of a link like this one is a chain of small, testable models, each with parameters that can be measured on the bench.
The chain as a simulator sees it: one block per physical stage, each with the parameters that move its output.
| Hardware parameter | Model term | Slide |
|---|---|---|
| Drive swing, Vπ | The two field levels f0, f1 = cos((Δφ ± πV/Vπ)/2): the carrier E0 and step d | 02, 03 |
| Bias drift | A shift of Δφ: changes E0 and d, so output 1's offset and every step | 07 |
| Input-path phases | A complex weight per lane before the transform: distorts the constellation | 11 |
| Output and LO phases | A rotation of each output before projection: mixes real and imaginary parts | 08, 11 |
| LO power, responsivity | Signal gain 2R√PLO; shot noise | 08, 14 |
| Photodiode imbalance, CMRR | Residual DC and LO intensity noise | 14 |
| TIA noise density and bandwidth | Additive Gaussian noise, σ growing as √B (and faster from the amplifier's voltage noise) | 13, 14 |
| TIA gain mode, compression, DC-offset corner | Level scaling, outer-level compression, baseline wander | 13 |
| Lane skew, channel bandwidth | Inter-symbol interference in the optical sum | 15 |
| Saturation and coding | The map from levels to PAM4 symbols and back | 12 |
| Thermal drift, calibration interval | Slow phase random walk, reset by the calibration state machine | 11 |
Every model on these slides is in analysis/link_hw/link_hw.py, first-order and labelled; a real simulator would add each block's measured transfer function. The system-level questions a link like this raises are the subject of the Compute in Transit series.
The deck in one line.
The module: Kundu et al., “Programmable Compute-in-Transit using Integrated Photonics”, arXiv:2608.21536. Patents cited by the paper: WO2025168828A1 (calibration and stabilisation), WO2025168827A1 (dense data packing to PAM4), GB2616426A (optical encoders, balanced homodyne detection), EP4677399A1 (the optical Fourier transform device). Textbook and literature: Kikuchi 2016 and Seimetz 2009 (coherent detection and modulation), Säckinger 2017 (TIAs), Hu et al. 2023 (photodiode responsivity), Félix Rosa et al. 2017 (silicon MZM VπL), Harris et al. 2014 (thermo-optic phase shifters). Numbers: analysis/link_hw/results.md.
Where the module fits: FOptInf 01, the case study and its slab lens; what it could compute on in LLM training and inference traffic: Compute in Transit 01.