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.
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.
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_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
| Input | Unit | Range | What it does |
|---|---|---|---|
Preset | — | 6 devices | Loads a full parameter set (see Device presets below). Any edit switches to Custom. |
| Splitter type | — | Ideal · MMI | Ideal exposes κ₁ and κ₂ separately. MMI locks κ₁ = κ₂ = 0.50. |
| κ₁, κ₂ | — | 0 … 1 | Power cross-coupling ratio of the input splitter and output combiner. Disabled while a κ²(λ) model is driving them. |
| Excess loss per MMI | dB | ≥ 0 | Wavelength-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
| Input | Unit | Range | What it does |
|---|---|---|---|
| L arm | mm | ≥ 0.01 | Physical arm length; sets the propagation loss each arm accumulates. |
| ΔL | µm | any | Path-length imbalance. ΔL = 0 gives a balanced (flat-spectrum) MZI and FSR = ∞. |
| neff | — | ≥ 1 | Effective index of the arm waveguide. |
| ng | — | ≥ 1 | Group index. Sets the FSR and the spectral fringe spacing. |
| Waveguide loss | dB/cm | ≥ 0 | Propagation 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
| Input | Unit | Range | What it does |
|---|---|---|---|
| Mechanism | — | Carrier Depletion · Thermo-Optic · Pockels | Selects 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.01 | Phase-shifter efficiency figure of merit. |
| PS length | mm | ≥ 0.01 | Active phase-shifter length. Also the electrode length in the RF model. |
| PS insertion loss | dB | ≥ 0 | Loss of the driven arm only — this is what makes a single-arm drive asymmetric. |
Drive & Operation
| Input | Unit | Range | What it does |
|---|---|---|---|
| Drive mode | — | Push-Pull · Single-Arm | Push-pull drives both arms in antiphase: chirp is exactly zero. Single-arm drives one arm: chirp ≈ +1 at quadrature. |
| Center wavelength | nm | ≥ 200 | Operating λ for every single-wavelength metric. |
| λ min, λ max | nm | ≥ 1 | The 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_g | Loss (dB/cm) | Mechanism / drive |
|---|---|---|---|---|---|---|
| SOI C-band Depletion | 1550 | 1.5 | 3 | 2.4 / 4.2 | 2.0 | Carrier depletion, push-pull |
| SOI O-band Depletion | 1310 | 2.0 | 4 | 2.5 / 4.3 | 2.5 | Carrier depletion, push-pull |
| TFLN High-Speed | 1550 | 1.8 | 5 | 2.14 / 2.25 | 0.5 | Pockels, push-pull |
| TFLN Standard | 1550 | 3.6 | 10 | 2.14 / 2.25 | 0.5 | Pockels, push-pull |
| Thermo-Optic Switch | 1550 | 2.5 | 0.2 | 2.4 / 4.2 | 2.0 | Thermo-optic, single-arm |
| Thermo-Optic (Low-Power) | 1550 | 0.5 | 0.2 | 2.4 / 4.2 | 2.0 | Thermo-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
| Preset | n_μ | α_RF (dB/(cm·√GHz)) | Z₀ (Ω) | R_j (Ω·mm) | C_j (pF/mm) | τ_th |
|---|---|---|---|---|---|---|
| SOI C-band | 4.0 | 0.70 | 35 | 16.17 | 0.41 | — |
| SOI O-band | 4.1 | 0.70 | 35 | 16.17 | 0.41 | — |
| TFLN High-Speed | 2.20 | 0.69 | 40 | null | null | — |
| TFLN Standard | 2.20 | 0.69 | 40 | null | null | — |
| Thermo-Optic Switch | — | — | — | — | — | 15 µ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.
Metrics card
Six always-visible numbers, all evaluated at the centre wavelength.
| Metric | Definition | How it is computed |
|---|---|---|
| Vπ (V) | Voltage for a π phase shift | (Vπ·Lπ)/(L_PS/10) |
| Vπ·Lπ (V·cm) | Phase-shifter efficiency | Passed straight through from the input |
| ER (dB) | Extinction ratio of the bar port | Numerically: 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 bias | Centered 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:
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:
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
| Preset | Topology | λ₀ (nm) | s (nm⁻¹) | Valid window | Cross null at ±50 nm |
|---|---|---|---|---|---|
| Ideal (λ-flat) | no model | — | 0 | — | none (flat) |
| 1×2 splitter + 2×2 MMI combiner | single drift | 1550 | +4.0e−4 | λ₀ ± 100 nm | −34.0 dB |
| 1×2 splitter + 2×2 DC combiner | single drift | 1550 | +3.1e−3 | λ₀ ± 50 nm | −16.0 dB |
| Matched MMI pair | matched pair | 1550 | +4.0e−4 | λ₀ ± 100 nm | exact cancellation |
| Matched DC pair | matched pair | 1550 | +3.1e−3 | λ₀ ± 50 nm | exact cancellation (bar −10.2 dB at V = Vπ) |
| O-band 1×2 + 2×2 DC combiner | single drift | 1310 | +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) |
|---|---|---|---|---|
| 0 | 0.5000 | −∞ | 0.5000 | −∞ |
| 5 | 0.5020 | −53.98 | 0.5155 | −36.19 |
| 10 | 0.5040 | −47.96 | 0.5310 | −30.16 |
| 20 | 0.5080 | −41.94 | 0.5620 | −24.12 |
| 25 | 0.5100 | −40.00 | 0.5775 | −22.16 |
| 30 | 0.5120 | −38.42 | 0.5930 | −20.55 |
| 40 | 0.5160 | −35.92 | 0.6240 | −17.99 |
| 50 | 0.5200 | −33.98 | 0.6550 | −15.98 |
| 75 | 0.5300 | −30.45 | 0.7325 | −12.16 |
| 100 | 0.5400 | −27.94 | 0.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)
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
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
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
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.
| Preset | L | Δn | f_VM | f_loss | f_RC | min (upper bound) | cascade (headline) | Limited by |
|---|---|---|---|---|---|---|---|---|
| SOI C-band Depletion | 3 mm | 0.20 | 221.32 | 932.71 | 24.01 | 24.01 | 21.2 GHz | Junction RC |
| SOI O-band Depletion | 4 mm | 0.20 | 165.99 | 524.65 | 24.01 | 24.01 | 20.3 GHz | Junction RC |
| TFLN High-Speed | 5 mm | 0.05 | 531.17 | 345.58 | ∞ | 345.58 | 229.29 GHz → "> 200 GHz" | Mixed: RF loss + velocity |
| TFLN Standard | 10 mm | 0.05 | 265.58 | 86.39 | ∞ | 86.39 | 73.7 GHz | RF 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)
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
- A rectangular NRZ (or PAM4) drive voltage between V_mark and V_space, 32 samples per symbol.
- Band-limit that voltage with the modulator’s complex response: V_f = IFFT{FFT{V}·H(f)}.
- Map the filtered voltage through the static transfer curve: P(t) = P_in·T(V_f).
- Scan every sampling phase and report the metrics at the one that opens the eye widest.
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_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:
| Preset | f₃dB factorized (Bandwidth tab) | f₃dB joint (eye) | difference | max ||H|−|m|| over 10–400 GHz |
|---|---|---|---|---|
| SOI C-band | 21.2089 GHz | 21.2090 GHz | +0.000 % | 0.0008 |
| SOI O-band | 20.3122 GHz | 20.3124 GHz | +0.001 % | 0.0023 |
| TFLN High-Speed | 229.2881 GHz | 230.3084 GHz | +0.445 % | 0.0039 |
| TFLN Standard | 73.6679 GHz | 73.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 GHz | 18.0000 GHz | 12.7279 GHz |
| 25.0 GHz | 25.0000 GHz | 17.6777 GHz |
| 21.2089 GHz | 21.2089 GHz | 14.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:
| Model | closure @ 25 Gb/s | closure @ 50 Gb/s |
|---|---|---|
| true joint H(f) — what the Eye tab does | 0.2358 dB | 0.7908 dB |
| Gaussian, BW = f₃dB, on the drive | 0.1848 dB (−22 %) | 2.9276 dB (+270 %) |
| Gaussian, BW = √2·f₃dB, on the drive | 0.0107 dB (−95 %) | 0.9622 dB (+22 %) |
| Gaussian, BW = f₃dB, on the power | 0.2121 dB | 3.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:
V_pp/V_π = (2/π)·arcsin[(r − 1)/(r + 1)], r = 10^(ER_dB/10)
| ER | V_pp/V_π | ER | V_pp/V_π |
|---|---|---|---|
| 3 dB | 0.215635 | 8 dB | 0.517603 |
| 4 dB | 0.283329 | 10 dB | 0.610036 |
| 5 dB | 0.347759 | 13 dB | 0.719581 |
| 6 dB | 0.408457 | 20 dB | 0.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 electrode | 10 | 25 | 50 | 56 | 100 Gb/s |
|---|---|---|---|---|---|
| f₃dB / B | 2.121 | 0.848 | 0.424 | 0.379 | 0.212 |
| Dynamic ER (dB) | 5.716 | 5.459 | 4.660 | 4.381 | 2.303 |
| Eye closure (dB) | 0.081 | 0.236 | 0.791 | 1.016 | 3.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:
| Preset | Baud | t_s (UI) | closure at t_s | closure at the bit centre | penalty |
|---|---|---|---|---|---|
| SOI C-band | 25 Gb/s | 0.8750 | 0.2358 dB | 0.6088 dB | +0.373 dB |
| SOI C-band | 50 Gb/s | 0.9688 | 0.7908 dB | 3.0847 dB | +2.294 dB |
| TFLN High-Speed | 100 GBd | 0.5312 | 0.5337 dB | 0.5764 dB | +0.043 dB |
| TFLN High-Speed | 200 GBd | 0.5938 | 0.7817 dB | 0.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.
| V_pp/V_π | Optical levels (SOI C-band) | min/max spacing |
|---|---|---|
| 1.0 (full) | 0.000000, 0.143860, 0.431580, 0.575440 | 0.500000 |
| 0.6 | — | 0.809017 |
| 0.4 | 0.118602, 0.227900, 0.347540, 0.456838 | 0.913545 |
| 0.2 | — | 0.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
| Setting | Default | Note |
|---|---|---|
| Format | NRZ | PAM4 available |
| PRBS order / length | 7 / 128 symbols | the signal engine’s existing NRZ default |
| Samples per symbol | 32 | 32 → 64 moves closure by 8×10⁻⁴ dB |
| Baud | 25 Gb/s (SOI), 100 GBd (TFLN) | per preset |
| Bias | quadrature (0.5 V_π) | range −1.5 … +1.5 V_π |
| Noise | off | on requires a receiver bandwidth and a seed |
| Port | bar | P_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
- 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.
| Preset | τ_th | f₃dB | 10–90 % rise |
|---|---|---|---|
| Thermo-Optic Switch (standard SOI heater, 200 µm) | 15 µs (range 10–20) | 10.61033 kHz | 32.95837 µs |
| Thermo-Optic (Low-Power) (suspended membrane, 200 µm) | 150 µs (range 100–200) | 1.061033 kHz | 329.5837 µs |
What the RF model leaves out
- 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.
| File | Rows | Columns |
|---|---|---|
mzi-transfer-*.csv | 601 | voltage_V, delta_phi_rad, T_bar, T_cross, T_bar_dB, T_cross_dB |
mzi-spectrum-*.csv | 601 | wavelength_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-*.csv | 601 | voltage_V, delta_phi_rad, alpha_H, output_phase_bar |
mzi-rf-bandwidth-*.csv | 401 | frequency_GHz, response_dB, m_VM_dB, m_RL_dB, m_RC_dB, Vpi_eff_V |
mzi-thermal-*.csv | 1 | tau_th_us, f_3dB_kHz, rise_time_10_90_us |
mzi-eye-*.csv | 64 (2 UI × 32 samples) | time_ps, trace_0 … trace_N |
mzi-eye-vs-baud-*.csv | 22 | baud_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.
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.
- 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.
- 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.
- 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.
- 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.
- The MMI slope sign is inferred, not sourced.
- 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.
| Key | Meaning |
|---|---|
st | Splitter type (ideal | mmi) |
k1, k2 | κ₁, κ₂ |
sel | Excess loss per MMI (dB) |
l, dl | Arm length (mm), ΔL (µm) |
neff, ng | Effective and group index |
loss | Waveguide loss (dB/cm) |
mech | Phase-shifter mechanism |
vpil, psl, psil | Vπ·Lπ, PS length, PS insertion loss |
drive | push-pull | single-arm |
lam, lmin, lmax | Centre 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, tth | RF electrode: n_μ, α_RF, Z₀, junction on/off, R_j, C_j, τ_th |
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.