P
Photizon
AcademyContact

Documentation

MZI Modulator Calculator

Operating reference for the Mach-Zehnder modulator design tool: every input, every plot, every pinned number and where it came from.

Open the MZI Modulator CalculatorLast updated 30 July 2026

Overview

The calculator models a two-arm Mach-Zehnder interferometer with an electro-optic or thermo-optic phase shifter in one or both arms. It computes the full complex-field transfer function of both output ports (bar and cross), the wavelength spectrum, the output phase and chirp, and — where the feature is enabled — the RF modulation bandwidth.

Everything runs in the browser. There is no backend call, no queue and no account requirement for the calculation itself; only CSV export asks you to sign in.

Phase shift is an input, not a result. You supply the phase-shifter efficiency as Vπ·Lπ plus a length, and the tool derives Vπ from it. It does not model the physics of the phase shifter (carrier depletion, heater, Pockels effect) — that is a separate module. The mechanism selector changes the presets, the warnings and the bandwidth readout, not the Δφ(V) law.

Field model

Both outputs are built from the complex field sum, not from the intensity shortcut, so an arbitrary κ₁ ≠ κ₂, asymmetric arm loss and a path imbalance ΔL are all handled exactly:

E_bar = √(κ₁κ₂)·a₁·e^(jφ₁) + √((1−κ₁)(1−κ₂))·a₂·e^(jφ₂)
E_cross = √(κ₁(1−κ₂))·a₁·e^(jφ₁) − √((1−κ₁)κ₂)·a₂·e^(jφ₂)

a₁ and a₂ are the amplitude transmissions of the two arms (waveguide loss over the arm length, coupler excess loss, and the phase-shifter insertion loss on whichever arm carries it). φ₁ and φ₂ are the arm phases: the propagation phase 2π·n_eff·L/λ of that arm, plus the drive term — split as ±Δφ/2 between the two arms in push-pull, applied entirely to the second arm in single-arm drive. The two ports are complementary and the model is energy-conserving when the arms and couplers are lossless.

Inputs

Editing any field switches the Preset selector to Custom. Every input is written to the URL, so a link reproduces the exact design.

Preset & Splitter

InputUnitRangeWhat it does
Preset6 devicesLoads a full parameter set (see Device presets below). Any edit switches to Custom.
Splitter typeIdeal · MMIIdeal exposes κ₁ and κ₂ separately. MMI locks κ₁ = κ₂ = 0.50.
κ₁, κ₂0 … 1Power cross-coupling ratio of the input splitter and output combiner. Disabled while a κ²(λ) model is driving them.
Excess loss per MMIdB≥ 0Wavelength-flat insertion loss, applied once at each of the two couplers (so twice per arm). It is consumed only while Splitter type is MMI — with Ideal selected the field stays editable but changes no output.

Waveguide Arms

InputUnitRangeWhat it does
L armmm≥ 0.01Physical arm length; sets the propagation loss each arm accumulates.
ΔLµmanyPath-length imbalance. ΔL = 0 gives a balanced (flat-spectrum) MZI and FSR = ∞.
neff≥ 1Effective index of the arm waveguide.
ng≥ 1Group index. Sets the FSR and the spectral fringe spacing.
Waveguide lossdB/cm≥ 0Propagation loss applied over each arm length.

Both indices are wavelength-constant in this tool. Need real values for a cross-section? The PIC Waveguide Mode Solver computes neff and ng.

Phase Shifter

InputUnitRangeWhat it does
MechanismCarrier Depletion · Thermo-Optic · PockelsSelects the warning set and the bandwidth panel. A heater gets the thermal readout; the others get the traveling-wave RF panel.
Vπ·LπV·cm≥ 0.01Phase-shifter efficiency figure of merit.
PS lengthmm≥ 0.01Active phase-shifter length. Also the electrode length in the RF model.
PS insertion lossdB≥ 0Loss of the driven arm only — this is what makes a single-arm drive asymmetric.
Vπ = (Vπ·Lπ) / (L_PS / 10)   [V, with L_PS in mm]

Drive & Operation

InputUnitRangeWhat it does
Drive modePush-Pull · Single-ArmPush-pull drives both arms in antiphase: chirp is exactly zero. Single-arm drives one arm: chirp ≈ +1 at quadrature.
Center wavelengthnm≥ 200Operating λ for every single-wavelength metric.
λ min, λ maxnm≥ 1The Spectrum tab sweep window. Presets set λ₀ ± 50 nm.

Device presets

Six presets, each a complete parameter set. Every value is fixed before release and the tool never adjusts one to make a plot look better; the efficiency figures are traced to their published sources immediately below.

Presetλ₀ (nm)Vπ·Lπ (V·cm)L_PS (mm)n_eff / n_gLoss (dB/cm)Mechanism / drive
SOI C-band Depletion15501.532.4 / 4.22.0Carrier depletion, push-pull
SOI O-band Depletion13102.042.5 / 4.32.5Carrier depletion, push-pull
TFLN High-Speed15501.852.14 / 2.250.5Pockels, push-pull
TFLN Standard15503.6102.14 / 2.250.5Pockels, push-pull
Thermo-Optic Switch15502.50.22.4 / 4.22.0Thermo-optic, single-arm
Thermo-Optic (Low-Power)15500.50.22.4 / 4.22.0Thermo-optic, single-arm

All six use an MMI splitter (κ₁ = κ₂ = 0.50). Coupler excess loss is 0.3 dB per MMI on the silicon and thermo-optic presets and 0.2 dB on the two TFLN presets. Both silicon presets carry a 1.2 dB / 1.5 dB phase-shifter insertion loss; the TFLN presets carry none; the heaters carry 0.1 dB.

Provenance of the efficiency figures

  • SOI depletion, 1.5–2.0 V·cm — brackets the typical carrier-depletion Vπ·Lπ of ≈ 2 V·cm tabulated in Rahim et al., Adv. Photonics 3, 024003 (2021), Table 2.
  • TFLN High-Speed, 1.8 V·cm — a tight-gap design consistent with the demonstrated 1.3–2.2 V·cm range (Wang et al., Nature 562, 101 (2018): ≈2.2 V·cm; Xu et al., Nat. Commun. 11, 3911 (2020): 1.33 V·cm).
  • TFLN Standard, 3.6 V·cm — a standard-gap value assessed as reasonable in review, not a direct published anchor.
  • Thermo-optic Vπ (125 V and 25 V derived) — a model artifact, not a design target. See the caveats.

Per-preset RF electrode

Presetn_μα_RF (dB/(cm·√GHz))Z₀ (Ω)R_j (Ω·mm)C_j (pF/mm)τ_th
SOI C-band4.00.703516.170.41
SOI O-band4.10.703516.170.41
TFLN High-Speed2.200.6940nullnull
TFLN Standard2.200.6940nullnull
Thermo-Optic Switch15 µs
Thermo-Optic (Low-Power)150 µs

Source impedance Z_s is 50 Ω on every preset by convention. Provenance class per value:

  • C_j = 0.41 pF/mm — measured at 0 V bias (DeRose et al., SAND2012-0713C).
  • R_j = 16.17 Ω·mm — derived from that reference’s measured 24 GHz, 0.5 mm device, whose bandwidth the authors attribute to junction series resistance. τ_RC = 1/(2π·24 GHz) = 6.6315 ps; with C_j = 0.41 pF/mm, R_j = 16.17 Ω·mm. Recomputing from the rounded R_j gives τ_RC = 6.6297 ps and f_RC = 24.0064 GHz, which are the pinned preset values.
  • α_RF = 0.69 — measured on a regular (non-segmented) CPW electrode (Kharel et al., Optica 8, 357 (2021)). α_RF = 0.70 for silicon — transferred from that gold-CPW-on-silicon measurement; it is not a silicon-modulator measurement.
  • Z₀ = 40 Ω TFLN — a measured range, low end selected: the source publishes 39–48 Ω (39 Ω at 5 µm gap, 45 Ω at 7 µm, 48 Ω at 10 µm), not a single value. Z₀ = 35 Ω silicon — transferred: silicon depletion electrodes are more heavily capacitively loaded and therefore lower. It affects Vπ scaling only, never f₃dB.
  • n_μ — a stated design assumption. Velocity-matched designs with a residual |Δn| = 0.2 (silicon) and 0.05 (TFLN). An unloaded silicon slot-line electrode sits at n_μ ≈ 2.3; capacitive loading moves it up to the matched value. Both n_μ and α_RF are user-editable precisely so you can sweep them.
  • τ_th — 15 µs (range 10–20) for a standard SOI heater, 150 µs (range 100–200) for a suspended membrane, from the phase-shifter module preset table.
Device presets do not touch the κ²(λ) splitter model. It is an independent axis (a coupler property), and every device preset ships wavelength-flat κ², including the two TFLN ones: no measurement of TFLN coupler dispersion was available, and TFLN modulators commonly use Y-branch splitters, whose 50/50 ratio is symmetry-locked and does not drift.

Metrics card

Six always-visible numbers, all evaluated at the centre wavelength.

MetricDefinitionHow it is computed
Vπ (V)Voltage for a π phase shift(Vπ·Lπ)/(L_PS/10)
Vπ·Lπ (V·cm)Phase-shifter efficiencyPassed straight through from the input
ER (dB)Extinction ratio of the bar portNumerically: a 10,000-point sweep of Δφ over [0, 2π], 10·log₁₀(T_max/T_min), capped at 60 dB. Displayed as "> 55" above 55 dB.
IL (dB)Insertion loss at the transmission peak−10·log₁₀(T_max) — at the peak, not at quadrature
Chirp (α_H)Henry α-factor at quadrature biasCentered finite difference of output phase against ln(power), step 0.001 rad, clamped to ±100. Push-pull returns exactly 0.
FSR (nm)Free spectral rangeλ²/(n_g·|ΔL|), displayed ∞ when ΔL = 0

ER is computed numerically rather than from a closed form because that is what captures splitter imbalance and differential arm loss compounding: 1 % coupler imbalance puts a 34 dB floor on ER, and 1 dB of differential arm loss puts it at 24.8 dB.

Transfer tab

Bar and cross transmission against drive voltage, swept over ±1.5·Vπ at 601 points. A dashed marker sits at Vπ and the ER value is annotated in the corner.

  • Linear / dB toggle. Linear pins the y-axis to [0, 1]; dB clamps the floor at −60 dB.
  • Bar / Cross toggles each trace.

Both traces are normalized to the sweep peak, so the y-axis reads “Norm. Transmission” and the absolute peak is reported separately as IL. This keeps the shape of the transfer function readable independently of the loss budget.

Spectrum tab

Bar and cross transmission against wavelength over [λ min, λ max] at 601 points, with the FSR annotated when it is finite. Same Linear / dB toggle and the same −60 dB floor convention as the Transfer tab; the Spectrum tab opens in dB because a −30 dB null is invisible on a linear axis.

  • ΔL = 0 with a wavelength-flat splitter gives a flat spectrum. That is correct, not a bug: with balanced arms and constant κ² there is no wavelength dependence in the model at all. Set ΔL > 0 for fringes, or enable a κ²(λ) splitter model for coupler dispersion.
  • Fringe spacing uses n_g, which is what makes the FSR correct. Absolute fringe positions are approximate, because the absolute phase would need n_eff(λ) and both indices are wavelength-constant here.
  • Bias toggle (V = 0 / V = Vπ) appears when a κ²(λ) model is active. It is the only way to see a matched coupler pair’s valley — see the next section.

Phase & Chirp tab

Dual-axis plot: Δφ (rad) on the left, the Henry chirp parameter α_H on the right, both against drive voltage, with the quadrature point marked.

  • Push-pull returns α_H = 0 exactly. The two arms’ phase excursions cancel in the output phase.
  • Single-arm gives α_H ≈ +1 at quadrature — about 0.87 with the default preset, because the differential phase-shifter insertion loss shifts it. That is physically correct, not a numerical artifact.
  • α_H is clamped to ±100 near the nulls, where ln(power) has zero derivative and the ratio diverges.

κ²(λ) splitter model

A real coupler’s splitting ratio drifts with wavelength. This model makes that drift explicit as a local linear expansion of the power cross-coupling ratio about a centre wavelength:

κ²(λ) = clamp[0,1]( κ²₀ + s·(λ − λ₀) )

with κ²₀ = κ²(λ₀) and the slope s in nm⁻¹. The sidebar displays the slope as “Δκ² per 100 nm” because the raw numbers are small; it is stored per nm. κ² is a power ratio everywhere in this tool — there is no square root anywhere in the chain.

κ²₀ is locked at 0.50 in the UI. Resolution rule: if a model is supplied for a coupler, the engine uses it and ignores that coupler’s scalar κ; if no model is supplied, behaviour is exactly the wavelength-flat path.

The cancellation theorem — read this before reading a flat trace as a bug

For balanced arms (ΔL = 0) with equal arm amplitude transmissions (a₁ = a₂), the cross-port null depth depends only on the difference between the two couplers:

D_cross(λ) [dB] = 20·log₁₀|tan(θ₁ − θ₂)|,   θᵢ = arcsin√(κᵢ²(λ))

Both preconditions are load-bearing, and the second one is reachable in this tool: a single-arm drive with a phase-shifter insertion loss gives a₁ ≠ a₂. Differential arm loss moves the null off λ₀ and can make it deeper or shallower.

So a common drift applied to two identical couplers changes the cross-port spectrum by exactly nothing — at V = 0 the cross-port trace stays exactly at the floor at every λ. That is why the drifting presets are built as a 1×2 splitter (symmetry-locked to 50/50, so it does not drift) followed by a drifting 2×2 combiner. The matched-pair presets are kept deliberately, as the live demonstration of the theorem; their effect shows on the bar port at V = Vπ, which is what the Spectrum tab’s bias toggle is for. Near 50/50 the formula reduces to the very usable D_cross ≈ 20·log₁₀|Δκ²|, good to better than 0.4 dB for |Δκ²| ≤ 0.2.

Presets

PresetTopologyλ₀ (nm)s (nm⁻¹)Valid windowCross null at ±50 nm
Ideal (λ-flat)no model0none (flat)
1×2 splitter + 2×2 MMI combinersingle drift1550+4.0e−4λ₀ ± 100 nm−34.0 dB
1×2 splitter + 2×2 DC combinersingle drift1550+3.1e−3λ₀ ± 50 nm−16.0 dB
Matched MMI pairmatched pair1550+4.0e−4λ₀ ± 100 nmexact cancellation
Matched DC pairmatched pair1550+3.1e−3λ₀ ± 50 nmexact cancellation (bar −10.2 dB at V = Vπ)
O-band 1×2 + 2×2 DC combinersingle drift1310+4.0e−3λ₀ ± 50 nm−13.6 dB
  • MMI slope, s ≤ +4.0 × 10⁻⁴ nm⁻¹ — an upper bound derived from measured SOI MMI data (Doménech et al., arXiv:1405.6025, 2014). The slope sign is inferred, not sourced.
  • DC slope, s = +3.1 × 10⁻³ nm⁻¹ at 1550 nm — from Photizon’s own EIM supermode solver, 500 × 220 nm SOI strips, 200 nm gap. The range is 2.7–3.9 × 10⁻³ for gaps of 150–300 nm: a wider gap means a longer coupler, which means a steeper wavelength dependence.
  • O-band DC slope, s = +4.0 × 10⁻³ nm⁻¹ at 1310 nm — same EIM sweep and geometry (50/50 length 37.59 µm). No O-band MMI data exists, so there is no O-band MMI preset.
  • The pinned DC slope is the EIM value and is about 10 % low against our own full-vectorial FDE solver (+3.46 × 10⁻³ nm⁻¹); it remains inside the quoted 2.7–3.9 × 10⁻³ band, so no preset is invalidated.

Known-answer table: cross-port null vs detuning (κ₁² = 0.50 fixed)

Δλ (nm)MMI κ₂² (s = 4.0e−4)MMI null (dB)DC κ₂² (s = 3.1e−3)DC null (dB)
00.5000−∞0.5000−∞
50.5020−53.980.5155−36.19
100.5040−47.960.5310−30.16
200.5080−41.940.5620−24.12
250.5100−40.000.5775−22.16
300.5120−38.420.5930−20.55
400.5160−35.920.6240−17.99
500.5200−33.980.6550−15.98
750.5300−30.450.7325−12.16
1000.5400−27.940.8100−9.18

These are per-wavelength ratio quantities (T_cross/T_bar). The plot normalizes to the sweep maximum instead, so plotted and tabulated depths are close but not identical even with λ₀ inside the plotted band: at Δλ = 50 nm the DC single-drift preset plots −16.09 dB against the −15.98 dB tabulated here.

Validity and clamping

Each preset carries a validity window. Inside the DC window the linearization error in κ² is ≤ 0.011 (≤ 0.7 dB in null depth), measured against the exact κ² = sin²(πΔn_eff(λ)L/λ) from the EIM coupler engine: |error| = 0.0108 at 1500 nm, 0.0019 at 1525, 0.0038 at 1575, 0.0111 at 1600, growing to 0.052 at 1450 and 0.022 at 1650. The asymmetry (worse on the short-λ side) is real — θ(λ) has positive curvature.

Outside the window the value is still returned but the plot carries an amber extrapolation warning. κ² is hard-clamped to [0, 1] and the clamp is reported per wavelength, because a real coupler does not saturate at 1 — it turns over sinusoidally. With the DC preset the linear form reaches κ² = 1 at λ₀ + 161 nm, more than 3× outside the validity window, so the clamp should never engage in normal use.

RF bandwidth model

The Bandwidth tab estimates the modulation bandwidth of a traveling-wave electrode from three closed-form mechanisms, all evaluated on one criterion: the electrical (EE) 3-dB point, |m| = 1/√2. Every term is an amplitude response normalized to m(0) = 1.

1 · Velocity mismatch (walk-off)

τ_walk = L·|n_μ − n_g| / c,   m_VM(f) = |sinc(f·τ_walk)|
f₃dB = 0.442946471·c / (L·Δn) = 132.792011 / (L[mm]·Δn)  [GHz]

The walk-off is against the optical group index, not n_eff. For silicon that is the difference between Δn ≈ 0.1 (irrelevant) and Δn ≈ 1.9 unloaded (the binding constraint). Δn = 0 gives m_VM ≡ 1 and f_VM = ∞. Only |Δn| matters — sinc is even, so the tool never displays a signed mismatch.

2 · RF electrode loss

u(f) = α_RF·√(f[GHz])·L[cm] / 8.685889638  [Np],   m_RL(f) = (1 − e^(−u)) / u
f₃dB = ( 6.413450375 / (α_RF·L[cm]) )²  [GHz]

√f is the skin-effect conductor-loss scaling, validated against measured thin-film lithium niobate electrodes: the model predicts −1.774 dB roll-off at 50 GHz for a 20 mm device against 1.8 dB measured, and −0.903 dB against 0.8 dB for 10 mm. Both anchors use that measurement’s own segmented-electrode α_RF = 0.26 dB/(cm·√GHz), not the 0.69 / 0.70 values the presets carry. There is exactly one dB→Np conversion in that expression.

3 · Junction RC

τ_RC = R_j·C_j,   m_RC(f) = 1/√(1 + (2πf·τ_RC)²),   f₃dB = 1/(2π·R_j·C_j)

This pole is independent of electrode length. Per unit length the shifter has capacitance C_j and series resistance R_j, so the total capacitance rises as C_j·L while the total resistance falls as R_j/L — the metal contact runs the full length of the device, so doubling the length puts two identical resistive paths in parallel. With R_j in Ω·mm and C_j in pF/mm, τ_RC comes out in ps with no conversion factor. Null R_j / C_j is the correct state for a Pockels (TFLN) shifter: the modulating element is a lossless dielectric capacitor with no series junction resistance in the modulating path, so there is no pole at all.

Headline: the cascade, not the minimum

|m(f)| = |m_VM(f)| · |m_RL(f)| · |m_RC(f)|

The headline f₃dB is the first frequency where the cascaded product crosses 1/√2, found by walking the log grid for the first crossing and then bisecting the analytic expression (|m| is non-monotonic because of the sinc sidelobes, so a blind bisection can land on a later crossing). The minimum of the three closed forms is reported beside it as an explicit upper bound, because the minimum is never the −3 dB point of anything: it overstates by 13–51 % across the presets.

PresetLΔnf_VMf_lossf_RCmin (upper bound)cascade (headline)Limited by
SOI C-band Depletion3 mm0.20221.32932.7124.0124.0121.2 GHzJunction RC
SOI O-band Depletion4 mm0.20165.99524.6524.0124.0120.3 GHzJunction RC
TFLN High-Speed5 mm0.05531.17345.58345.58229.29 GHz → "> 200 GHz"Mixed: RF loss + velocity
TFLN Standard10 mm0.05265.5886.3986.3973.7 GHzRF electrode loss

All frequencies in GHz. limiting is always the true argmin of the three; a “mixed” badge is added when the runner-up is within a factor 2.0, and the runner-up is named. A “Within 2×” badge marks it in the breakdown table.

Reporting ceiling: 200 GHz. It is both the sweep ceiling and the display ceiling. Above about 110 GHz there is no measured electro-optic data for any of these device classes, so a precise-looking 229.3 GHz would be false precision; the card reads “> 200 GHz” while the result object and the CSV keep the true crossing.

Drive: impedance mismatch and Vπ_eff(f)

m_IM = 2Z₀/(Z₀ + Z_s)  (frequency-flat),   Vπ_eff(f) = Vπ_DC / (m_IM·|m(f)|)

The impedance penalty is frequency-flat, so it cancels out of the normalized response and never moves f₃dB — it only raises the voltage you have to supply. Penalty in dB = −20·log₁₀ m_IM: Z₀ = 45 Ω → 0.470 dB, 35 Ω → 1.686 dB, 30 Ω → 2.499 dB. Validation: for a published 20 mm segmented TFLN modulator with Vπ = 1.3 V at 1 GHz, the model gives Vπ_eff(50 GHz) = 1.5945 V against 1.6 V measured.

Why traveling-wave electrodes exist

An unterminated, electrically short electrode is a lumped capacitor driven through the source resistance, giving f₃dB = 1/(2π·R_drive·C_j·L) — 2.59 GHz for the SOI C-band preset (C_j = 0.41 pF/mm, L = 3 mm, R_s = 50 Ω). The traveling-wave design removes that limit, because each slice of the line sees its own local RC. The tool shows this as a teaching value only. It is never a fourth branch of the minimum: treating a traveling-wave device as lumped would understate it by an order of magnitude.

Model-vs-measurement, for calibration: a 0.5 mm velocity- and impedance-matched silicon device measures 24 GHz against 23.54 GHz modelled (ratio 0.98); a 1.5 mm device of the same family measures 14 GHz against 22.63 GHz modelled (1.62, over-predicting). The 20 mm and 10 mm TFLN roll-off figures at 50 GHz agree to 0.99 and 1.13. The length-dependent silicon error is the omitted junction-loading conductance, quantified in the warning below.

Eye tab

The Eye tab turns the transfer curve and the RF response into a data eye. It is an integration, not a new engine: the modulator supplies a device description and the Optical Link Analyzer’s existing signal engine — PRBS generation, FFT filtering, eye extraction — runs the simulation. No eye physics lives in this tool and no modulator physics lives in that one.

The chain

  1. A rectangular NRZ (or PAM4) drive voltage between V_mark and V_space, 32 samples per symbol.
  2. Band-limit that voltage with the modulator’s complex response: V_f = IFFT{FFT{V}·H(f)}.
  3. Map the filtered voltage through the static transfer curve: P(t) = P_in·T(V_f).
  4. Scan every sampling phase and report the metrics at the one that opens the eye widest.
The order matters, and it is not the obvious one. The filter acts on the drive voltage and the transfer curve is applied after it — a Wiener structure (linear filter, then memoryless nonlinearity). Filtering the optical power waveform instead inflates the reported eye closure by 4.8× on the SOI C-band preset at 50 Gb/s (0.886 dB instead of 0.186 dB). All three band-limiting mechanisms — junction RC, electrode conductor loss, velocity walk-off — are electrical or electro-optic and act before the interference at the combiner.

The response the eye uses

The Bandwidth tab plots the factorized product |m_VM|·|m_RL|·|m_RC|, which is what makes its three-way breakdown exact. The eye instead uses the joint complex response, because a filter needs the phase the magnitude plot never had:

H(f) = H_VL(f)·H_RC(f),   H(0) = 1
H_VL(f) = (1 − e^−(u+jθ)) / (u + jθ),   u = α_RF·√f[GHz]·L[cm] / 8.685889638
θ(f) = 2πf·L·|n_μ − n_g| / c,   H_RC(f) = 1 / (1 + j·2πf·τ_RC)

θ uses |n_μ − n_g| and is therefore ≥ 0: a negative θ would be a negative group delay, i.e. an anti-causal response. The two forms agree closely enough that no user-visible contradiction exists between the tabs — the Bandwidth tab’s headline number does not change:

Presetf₃dB factorized (Bandwidth tab)f₃dB joint (eye)differencemax ||H|−|m|| over 10–400 GHz
SOI C-band21.2089 GHz21.2090 GHz+0.000 %0.0008
SOI O-band20.3122 GHz20.3124 GHz+0.001 %0.0023
TFLN High-Speed229.2881 GHz230.3084 GHz+0.445 %0.0039
TFLN Standard73.6679 GHz73.8820 GHz+0.291 %0.0421

Dropping the phase entirely changes eye closure by up to 2.3× and moves the optimal sampling instant by half a symbol, which is why the eye cannot reuse the plotted magnitude.

Bandwidth conventions — the √2 trap

The Optical Link Analyzer’s Tx bandwidth and Rx bandwidth fields build a Gaussian with |H(BW)| = 0.5 on the optical power waveform. That is the optical 3 dB convention, equivalently electrical 6 dB. This tool’s f₃dB is electrical 3 dB (|m| = 1/√2). They are exactly a factor √2 apart:

Optical Link Analyzer bandwidth (optical 3 dB)|H| = 0.5 at|H| = 1/√2 at (electrical 3 dB)
18.0 GHz18.0000 GHz12.7279 GHz
25.0 GHz25.0000 GHz17.6777 GHz
21.2089 GHz21.2089 GHz14.9976 GHz

Setting an Optical Link Analyzer bandwidth field to a modulator’s f₃dB therefore over-filters by 1.414×. The Eye tab does neither substitution: it passes the actual H(f) and ignores the scalar completely. And the scalar is not a good surrogate at any scaling — same preset, same 21.209 GHz, V_pp = 2 V:

Modelclosure @ 25 Gb/sclosure @ 50 Gb/s
true joint H(f) — what the Eye tab does0.2358 dB0.7908 dB
Gaussian, BW = f₃dB, on the drive0.1848 dB (−22 %)2.9276 dB (+270 %)
Gaussian, BW = √2·f₃dB, on the drive0.0107 dB (−95 %)0.9622 dB (+22 %)
Gaussian, BW = f₃dB, on the power0.2121 dB3.1500 dB

A Gaussian under-predicts at low baud (it is flat near DC where the real RC pole already droops) and over-predicts at high baud (it decays as exp(−f²) where the real response decays as 1/f). No single scaling fixes both.

Extinction ratio from the drive swing

The eye’s levels come from V_mark and V_space through T(V), so the extinction ratio is a computed device property, not a number you type. For a balanced push-pull MZI at quadrature it depends on the swing alone — arm losses and insertion loss cancel in the ratio:

ER_dB = 10 log₁₀[(1 + sin δ) / (1 − sin δ)],   δ = πV_pp / (2V_π)
V_pp/V_π = (2/π)·arcsin[(r − 1)/(r + 1)],   r = 10^(ER_dB/10)
ERV_pp/V_πERV_pp/V_π
3 dB0.2156358 dB0.517603
4 dB0.28332910 dB0.610036
5 dB0.34775913 dB0.719581
6 dB0.40845720 dB0.873098

Where the drive swing is measured

The V_pp input is source-referred by default: what you type is the driver’s open-circuit swing, and the electrode sees m_IM = 2Z₀/(Z₀ + Z_s) of it — the same frequency-flat penalty the Bandwidth tab already applies to Vπ_eff, so the two panels cannot silently disagree. On the SOI presets (Z₀ = 35 Ω into 50 Ω) m_IM = 0.8235, so a nominal 2.000 V source lands 1.6471 V on the electrode and the static extinction ratio is 4.710 dB rather than 5.857 dB. Switch the toggle to Electrode to type the voltage the junction actually sees.

The default swing is driver-limited, not full swing: 2.0 V on the silicon presets and 1.5 V on the TFLN ones. Full swing reports an infinite extinction ratio and only 0.19 dB of closure at 50 Gb/s on a 21 GHz part, which teaches the wrong lesson; the Full swing button is there when you want it.

Level compression, and why ER is the headline

The MZI transfer is stationary at both rails: dT/dV = 0 at the peak and at the null. A band-limited drive that falls short of the rails therefore produces an optical level much closer to the rail than the drive is to its own. Measured on SOI C-band at 50 Gb/s, full swing: the filtered drive spans 0.041519 → 4.955566 V against 0 → 5 V rails — a 0.830 % shortfall in voltage — yet the optical high level falls only from 0.575440 to 0.575342, 0.017 %.

So at full swing the vertical eye barely closes (0.0195 dB at 25 Gb/s, 0.1862 dB at 50). What actually degrades is the extinction ratio: 26.6 dB at 25 Gb/s, 16.8 dB at 50, 6.2 dB at 100. That is why the tab leads with dynamic ER and treats closure as secondary — a tool that led with closure would make a 21 GHz modulator look untroubled at 50 Gb/s.

SOI C-band, V_pp = 2.000 V at the electrode10255056100 Gb/s
f₃dB / B2.1210.8480.4240.3790.212
Dynamic ER (dB)5.7165.4594.6604.3812.303
Eye closure (dB)0.0810.2360.7911.0163.564

Dynamic ER crosses 3 dB at B = 84.4 Gb/s for SOI C-band (3.98× f₃dB); 80.1 Gb/s for SOI O-band, 446 GBd for TFLN Standard and 800 GBd for TFLN High-Speed. No standards conformance is claimed by these numbers — 3 dB is a round number, not a spec limit, and this model omits receiver equalization entirely.

The sampling instant

Metrics are taken at the scanned optimal sampling phase, not at the bit centre, and the displayed eye is centred on the same instant. The causal response carries real group delay — τ_RC = 6.630 ps for both silicon presets, a third of a bit at 50 Gb/s — so centre sampling would report phantom closure:

PresetBaudt_s (UI)closure at t_sclosure at the bit centrepenalty
SOI C-band25 Gb/s0.87500.2358 dB0.6088 dB+0.373 dB
SOI C-band50 Gb/s0.96880.7908 dB3.0847 dB+2.294 dB
TFLN High-Speed100 GBd0.53120.5337 dB0.5764 dB+0.043 dB
TFLN High-Speed200 GBd0.59380.7817 dB0.8168 dB+0.035 dB

PAM4 level compression

PAM4 uses a linear electrical drive: four evenly spaced drive levels between V_space and V_mark, which the MZI nonlinearity maps to unevenly spaced optical levels. That compression is the reason real PAM4 transmitters pre-distort, so it is shown rather than hidden.

Δ_outer / Δ_inner = [sin δ − sin(δ/3)] / [2 sin(δ/3)],   δ = πV_pp / (2V_π)
V_pp/V_πOptical levels (SOI C-band)min/max spacing
1.0 (full)0.000000, 0.143860, 0.431580, 0.5754400.500000
0.60.809017
0.40.118602, 0.227900, 0.347540, 0.4568380.913545
0.20.978148

The full-swing 0.500000 is exact and device-independent: the levels are (1 + cos Δφ)/2 at Δφ = 0, π/3, 2π/3, π → 1, 0.75, 0.25, 0 → spacings 0.25, 0.5, 0.25.

Defaults and what is not shown

SettingDefaultNote
FormatNRZPAM4 available
PRBS order / length7 / 128 symbolsthe signal engine’s existing NRZ default
Samples per symbol3232 → 64 moves closure by 8×10⁻⁴ dB
Baud25 Gb/s (SOI), 100 GBd (TFLN)per preset
Biasquadrature (0.5 V_π)range −1.5 … +1.5 V_π
Noiseoffon requires a receiver bandwidth and a seed
PortbarP_in = 1 mW, no fibre

TDECQ is not reported here. The signal engine’s TDECQ reference filter is a 4th-order Butterworth, not the Bessel-Thomson that IEEE 802.3 Cl. 123.8.5 specifies, so no standards-conformance figure may be presented from it until that filter is replaced.

Noise is off by default and, when enabled, is seeded: the same seed reproduces the same eye exactly. Without a seed no eye metric would be reproducible run to run — at 0 dBm the mean mark level wanders by 0.27 % between runs, which is larger than every effect this model resolves.

Eye caveats in full

Small-signal response on a large-signal drive. The eye is built by band-limiting the drive voltage with the modulator’s small-signal frequency response and then passing it through the static transfer curve. That separation is an approximation: it assumes the electrode behaves the same way at every point of the voltage swing. The junction capacitance in particular varies across the swing, and this model uses a single value.
Silicon results are optimistic. This eye inherits the bandwidth model’s known one-sided error: it omits junction-loading conductance loss, the dominant silicon electrode loss above about 10 GHz. Measured against a published 1.5 mm device the bandwidth model reads 22.6 GHz where 14 GHz was measured, so silicon eyes here are optimistic by roughly 1.5 to 2 times in bandwidth. Read them as an upper bound.
No chirp, no chirp-dispersion interaction. Chirp is reported but not simulated. The eye is computed for an unchirped field, so it does not show the pulse distortion a chirped transmitter picks up over dispersive fibre. For the push-pull presets this costs nothing, because push-pull drive is chirp-free by construction (α_H = 0). For single-arm drive over dispersive fibre it matters and is not modelled.
Operating realism. The bias point is held perfectly. Real modulators drift with temperature and ageing and need a feedback loop to stay at quadrature. Fabrication tolerances on the splitters and arm lengths are also not modelled.
  • Pattern length. The default pattern is PRBS-7 over 128 symbols. That is enough for a representative eye but not for a standards-conformant measurement, which uses PRBS-13 or longer. Longer patterns close the eye by a further ~0.02 dB.
  • The driver is ideal. The drive waveform is a perfect rectangular voltage with zero rise time and no bandwidth of its own. A real driver amplifier adds its own roll-off and its own jitter, both of which would close the eye further.
  • No electrode reflections. The electrode is treated as matched at its far end. Reflections from an imperfect termination would add ripple to the response with a period of c/(2 n_μ L), which is not modelled.
  • Receiver model. Noise is shot plus thermal plus dark current for a PIN photodiode. Avalanche photodiode excess noise is not modelled, so an APD receiver’s eye is optimistic.
  • Response used for the eye. The eye uses the exact complex electro-optic response, including its phase. The Bandwidth tab plots the product of the three mechanisms’ magnitudes, which is what makes the three-way breakdown exact. The two agree in bandwidth to better than 0.5 % (0.000 % for the silicon presets) and in amplitude to better than 0.05 across the plotted range.
  • Thermo-optic has no eye. A thermal phase shifter responds at kilohertz. There is no data eye to show; see the Bandwidth tab’s thermal response instead. The Eye tab is not offered for a thermo-optic mechanism.
  • Perfect clock recovery. Metrics are reported at the sampling instant that opens the eye widest, which assumes ideal clock recovery. A real receiver locks near the crossing midpoint and does slightly worse.

Thermal response

With a thermo-optic mechanism selected, the traveling-wave panel is not rendered. A heater is a thermal low-pass, not a transmission line: velocity mismatch, electrode conductor loss, impedance matching and junction RC are all meaningless for it, so no GHz-scale number is reported at all.

f₃dB = 1/(2π·τ_th),   t_rise(10–90 %) = ln(9)·τ_th = 2.1972·τ_th
Presetτ_thf₃dB10–90 % rise
Thermo-Optic Switch (standard SOI heater, 200 µm)15 µs (range 10–20)10.61033 kHz32.95837 µs
Thermo-Optic (Low-Power) (suspended membrane, 200 µm)150 µs (range 100–200)1.061033 kHz329.5837 µs
Single-pole thermal model. Measured heaters show 5–50 µs for standard SOI structures and a slower second pole from the cladding, so the real response has a tail this model does not reproduce.

What the RF model leaves out

First-order RF model. This estimates the modulation bandwidth from three closed-form mechanisms (velocity mismatch, electrode conductor loss, junction RC). It does not solve the electrode electromagnetics. For silicon it omits junction-loading conductance loss, which grows with electrode length: against a published 1.5 mm velocity-matched silicon device the model reads 22.6 GHz where 14 GHz was measured, so treat silicon results as an upper bound, optimistic by roughly 1.5–2× at these lengths. Accurate electrode design needs full-wave EM (HFSS, CST, openEMS) plus TCAD for the junction.
  • Impedance mismatch is modelled as a frequency-flat drive penalty with a matched termination. Reflections from a mismatched termination produce ripple in the response with period c/(2·n_μ·L); that ripple is not modelled.
  • α_RF uses the √f skin-effect scaling. Validated against measured thin-film lithium niobate electrodes to better than 0.1 dB. Substrate/dielectric loss (∝ f) and radiation are not included.
  • n_μ is assumed frequency-independent. Real loaded electrodes disperse; expect ~10 % error below 50 GHz for silicon.
  • The junction RC is a single pole at 1/(2πR_jC_j) and is independent of electrode length by construction (the series resistance falls as 1/L exactly as the capacitance rises with L).
  • Bias dependence is not modelled. C_j falls with reverse bias, so a real device’s bandwidth rises with bias (measured: 14.7 GHz at 0 V → 21.4 GHz at 3 V for a foundry silicon MZM). Our C_j is a single 0-V value.
  • Two parameters are design assumptions, not measurements: the residual velocity mismatch |Δn| (0.2 silicon, 0.05 TFLN) and the electrode conductor loss transferred from a gold-CPW-on-silicon measurement. Both are editable.
  • Single polarization, no packaging. Wirebond/pad parasitics, connector loss and driver bandwidth are outside the model and dominate real system bandwidth above ~100 GHz.

Two further data gaps stand: there is no O-band-specific junction R/C, so the O-band preset reuses the C-band junction; and no silicon-modulator electrode conductor-loss measurement was obtainable in open access. Neither is patched by inflating α_RF — junction loading has a completely different frequency shape (rising as f² below the junction cutoff and saturating above it) and hiding it inside a √f coefficient would be wrong in a way that is hard to see.

CSV columns

The CSV button exports the active tab’s data. Export requires a free account.

FileRowsColumns
mzi-transfer-*.csv601voltage_V, delta_phi_rad, T_bar, T_cross, T_bar_dB, T_cross_dB
mzi-spectrum-*.csv601wavelength_nm, T_bar, T_cross, T_bar_dB, T_cross_dB — plus kappa2_1, kappa2_2, clamped, extrapolated when a κ²(λ) model is driving the sweep
mzi-chirp-*.csv601voltage_V, delta_phi_rad, alpha_H, output_phase_bar
mzi-rf-bandwidth-*.csv401frequency_GHz, response_dB, m_VM_dB, m_RL_dB, m_RC_dB, Vpi_eff_V
mzi-thermal-*.csv1tau_th_us, f_3dB_kHz, rise_time_10_90_us
mzi-eye-*.csv64 (2 UI × 32 samples)time_ps, trace_0 … trace_N
mzi-eye-vs-baud-*.csv22baud_GBaud, ER_dyn_dB, closure_dB

Transmission columns are normalized to the sweep peak, matching the plot; the dB columns carry the same −60 dB floor. The RF sweep is logarithmically spaced up to the 200 GHz ceiling, and Vpi_eff_V keeps its true (uncapped) value even where the plot caps it for readability.

Caveats in full

Phase-shift model

Voltage-linear phase-shift model. For carrier-depletion Si, real Δφ(V) is nonlinear (depletion width ∝ √V). Vπ assumes linearized efficiency at operating bias.

Thermo-optic phase shifters are characterized by heater power (P_π), not voltage. The Vπ shown is a model artifact — use P_π from your heater design instead.

Wavelength dependence

n_eff and n_g are wavelength-constant. Only κ² can be made dispersive, via the κ²(λ) model. With that model off, a balanced MZI spectrum is flat.

  1. The linear κ²(λ) form is a local expansion around λ₀. It is not valid across the full 1260–1650 nm span of the wavelength input; the validity window is enforced and warned about.
  2. Coupler excess loss is wavelength-flat in this model. Real MMI and DC excess loss rises at band edges, which is the dominant source of bar-port droop, so the κ²(λ) mechanism alone under-predicts droop by roughly 10× (MMI −0.002 dB, DC −0.108 dB at ±50 nm). Do not compensate by inflating the slope.
  3. Coupler phase errors are not modelled. A real coupler’s cross/through phase relation also drifts with λ. The engine’s real-orthogonal coupler matrix has a fixed phase relation. For a balanced MZI this is a second-order effect; for cascaded interferometers it is not.
  4. Higher-order MMI modes, radiation and back-reflection are outside the analytical tier. Broadband response uses an approximate wavelength-dependent splitting model; accurate broadband design needs full-vectorial coupler simulation.
  5. The MMI slope sign is inferred, not sourced.
  6. No O-band MMI data exists, so there is no O-band MMI preset.

The fabrication-mismatch offset δ — a fixed κ²₀ offset between the two couplers, and the legitimate lever for a shallower valley — is not exposed; κ²₀ is locked at 0.50.

Scope

  • Single polarization. No bias drift, temperature or fabrication-tolerance modelling.
  • No eye diagram, and no S-matrix export for a circuit-level tool yet. The live Δn_eff(λ) handoff from the PIC Waveguide Mode Solver is not wired: the model accepts a supermode payload, but nothing produces one yet.
  • Desktop-first layout.

URL parameters

The full design state lives in the query string, so any configuration can be shared or bookmarked as a link.

KeyMeaning
stSplitter type (ideal | mmi)
k1, k2κ₁, κ₂
selExcess loss per MMI (dB)
l, dlArm length (mm), ΔL (µm)
neff, ngEffective and group index
lossWaveguide loss (dB/cm)
mechPhase-shifter mechanism
vpil, psl, psilVπ·Lπ, PS length, PS insertion loss
drivepush-pull | single-arm
lam, lmin, lmaxCentre wavelength and the spectrum sweep window
sm, smt, sml, sms, smw, sbκ²(λ) model: preset id, topology, λ₀, slope, validity half-width, Spectrum bias
nmu, arf, z0, rjn, rj, cj, tthRF electrode: n_μ, α_RF, Z₀, junction on/off, R_j, C_j, τ_th
The Eye tab has no URL keys. Its operating point (drive swing, symbol rate, bias, format, noise) is in-page state only, so a shared link or a saved design carries exactly the parameters above and nothing else. Reopening a link puts the Eye tab back at the preset defaults.

Sources

  • G. T. Reed et al., “Silicon optical modulators”, Nature Photonics 4, 518 (2010).
  • C. Wang et al., Nature 562, 101 (2018) — thin-film lithium niobate modulator, ≈2.2 V·cm.
  • M. Xu et al., Nature Communications 11, 3911 (2020) — TFLN, 1.33 V·cm.
  • J. D. Doménech, J. S. Fandiño, B. Gargallo, P. Muñoz, arXiv:1405.6025 (2014) — measured SOI MMI imbalance; source of the MMI slope bound.
  • C. T. DeRose et al., SAND2012-0713C — segmented silicon modulator; measured C_j = 0.41 pF/mm and the 24 GHz, 0.5 mm calibration device behind R_j.
  • P. Kharel et al., Optica 8, 357 (2021) — measured TFLN electrode loss (0.69 / 0.26) and impedance (39–48 Ω); the α_RF and Vπ(f) validations. A later erratum exists (Optica 8, 1218 (2021)) and has not been read.
  • A. Rahim et al., Advanced Photonics 3, 024003 (2021) — the three-mechanism bandwidth decomposition.
  • M. Hamouda et al., Photonics 12, 1079 (2025) — junction RC by TCAD; cross-check only, not the preset source.
  • Photizon EIM supermode solver — the DC κ²(λ) slopes (500 × 220 nm SOI, 200 nm gap).

Every model on this page is derived in full before it is implemented and then held to a fixed set of numerical test anchors, which run on every release; the measurements and published results those anchors are built on are the references listed above.