S-Parameter De-embedding: Remove VNA Fixture Effects
A practical walkthrough of the S-parameter analysis pipeline: viewing raw VNA data, identifying connector response, applying time gating to isolate a PCB trace.
Contents
The Problem: Your VNA Measures the Fixture Too
You just finished measuring a 10 cm microstrip trace on Rogers 4003C, swept it from DC to 10 GHz, and now you're staring at a weird notch in S21 around 7 GHz. Your first instinct might be to blame the fab house. But hold on — where exactly did you calibrate? At the SMA connector reference plane, or right at the edge of the trace itself?
Nine times out of ten, you calibrated at the connectors. Which means those two SMA launches — complete with their via transitions, barrel discontinuities, and whatever impedance mismatch exists at the pad — are still in your measurement. Everything you're seeing in that .s2p file includes the fixture response stacked on top of the actual trace you care about. De-embedding is how you peel that fixture layer off and get down to just the DUT.
The S-Parameter Analysis Pipeline tool chains together four operations you can run on any .s2p file: View, Passivity Check, Time Gate, and De-embed. Let's walk through them in sequence, because skipping ahead usually means backtracking later.
Step 1: View — Know What You Are Looking At
Start by loading your 2-port file from the VNA. Set the pipeline to View mode with these parameters:
| Parameter | Value |
|---|---|
| Reference Impedance | 50 Ω |
| Freq Start | 0 (use file range) |
| Freq Stop | 0 (use file range) |
| Operations | View |
So what tells you the connectors are dominating the measurement? A few red flags:
- Sharp S11 peak below 2 GHz. Classic sign of an SMA launch pad that's too wide to maintain 50 Ω.
- Ripple in S21 with a period matching twice the electrical length of the connector body. That's usually a 50–100 ps round trip.
- Any notch that lines up perfectly with a quarter-wave resonance of the connector pin. Do the math on pin length and you'll often find it sitting right where that dip appears.
Step 2: Passivity Check — Catch Calibration Errors Early
Before you sink time into gating and de-embedding, run a quick Passivity Check. Any passive, lossless 2-port has to satisfy this at every frequency point:
If that sum goes above 1.0 anywhere — even by a tiny amount like 0.01 — your file is non-passive. Something went wrong. The usual suspects:
- VNA calibration drifted. If the board temperature shifted more than 5 °C since you ran the cal, redo it.
- Port impedance mismatch. Maybe you saved the file as 50 Ω but the VNA was actually set to 75 Ω during the sweep.
- Connector moved between sweeps. If you're using a 1-port VNA and physically swapping cables, any movement between port-1 and port-2 measurements can introduce this.
Step 3: Time Gate — Isolate the DUT
Time gating takes your S-parameter data, converts it to the time domain using an inverse FFT, applies a windowed gate around just the DUT response, then converts back to frequency with a forward FFT. What you get is an S-parameter set where the connector responses have been mostly suppressed.
Let's say you're measuring that 10 cm trace with SMA connectors on both ends. Typical gating parameters would be:
- Gate center: set it to the midpoint of the trace's electrical delay. For 10 cm on FR4, that's around 500 ps.
- Gate span: the trace's electrical length plus roughly 100 ps of margin on each side to avoid cutting into the response.
- Window function: Kaiser-Bessel is a solid choice. It reduces time-domain sidelobes at the expense of some frequency resolution, but that's usually a good trade.
- S11 ripple drops significantly. Those reflections from the connectors are now gated out.
- S21 actually rises a bit at high frequency compared to the ungated version. That's because the connectors were adding insertion loss that's now removed.
- That 7 GHz notch you were worried about? It's either gone or much shallower. Turns out it was a connector resonance, not a trace problem.
This is why I always sweep wider than I think I need to. Storage is cheap, and having extra bandwidth in the file gives you options later.
Step 4: De-embed — Apply the Fixture Model
Time gating is useful and fast, but it's fundamentally a broadband approximation. For the highest accuracy, you want a dedicated fixture de-embedding file — a separately measured .s2p of just the SMA connector on a short thru substrate. The pipeline inverts that fixture's S-matrix and cascades it with your DUT measurement:
To create the fixture file, measure a matched thru board. Same substrate, same launch geometry, but with zero trace length between the connectors. Save that as a separate .s2p file. Then load it into the De-embed operation:
| De-embed Input | Value |
|---|---|
| Port 1 fixture file | sma_launch_port1.s2p |
| Port 2 fixture file | sma_launch_port2.s2p |
| Reference impedance | 50 Ω |
Most engineers skip making proper fixture files because it feels like extra work. Then they spend three times as long later trying to figure out whether a measurement artifact is real or not. The fixture file takes maybe twenty minutes to measure and will save you hours of confusion down the road.
Reading the Final Output
With your de-embedded S-parameters finally in hand, there are three numbers that actually matter for most designs:
Insertion loss at your signal bandwidth edge. If you're running 10 Gbps NRZ, check S21 at 5 GHz — that's your Nyquist frequency. Keep it above −3 dB if you want a clean eye diagram. Below that and you'll start fighting ISI in the time domain. Return loss across the band. Below −15 dB (VSWR < 1.4:1) is acceptable for typical PCB traces. Below −20 dB is good. If you're seeing worse than −15 dB in the middle of your signal band, you've got an impedance discontinuity somewhere that's going to cause reflections. Group delay flatness. A group delay that varies steeply with frequency will cause intersymbol interference. The De-embed output includes a group delay plot — look for variations staying below ±20 ps across your signal band. More than that and your eye diagram will start to close, especially if you're running a multi-level signaling scheme like PAM4.Use the S-Parameter Pipeline Tool to run all four operations on your own .s2p files without leaving the browser. It handles the FFTs, matrix inversions, and plotting so you can focus on interpreting the results instead of wrestling with MATLAB scripts.
Related Articles
PDN Impedance: Taming Resonances With Genetic Algorithm
A 1.0 V / 30 A FPGA power rail needs flat impedance from 100 kHz to 1 GHz. Cavity resonances between the power and ground planes create impedance spikes that.
Mar 4, 2026
Signal IntegrityEye Diagram Analysis: Validating 10 Gbps SerDes
A PCB designer routes a 10 Gbps SerDes lane across a 20 cm FR-4 trace with two connectors. Learn how to use S-parameter data and an eye diagram simulation to.
Mar 1, 2026
SignalBER vs SNR: Understanding Digital Communication Performance
Understand the relationship between Bit Error Rate (BER) and Signal-to-Noise Ratio (SNR). Compare BPSK, QPSK, and QAM modulation performance with Eb/N0 curves and worked examples.
Apr 11, 2026