S-Parameters and Touchstone Files: What They Mean and How to Use Them

S-Parameters and Touchstone Files: What They Mean and How to Use Them

A companion to the signal-integrity series. Those posts use S-parameters constantly; this one explains what they actually are. The Smith chart guide covers the other half — how to read reflection graphically.

Every channel model, every connector datasheet, every VNA measurement and every field-solver result arrives as S-parameters, usually in a Touchstone file. They are the lingua franca of high-frequency engineering, and they are also the thing most often used without being understood — which is how a file with the ports in the wrong order, or referenced to the wrong impedance, ends up in a simulation that produces confident nonsense.

A two-port in incident and reflected wavesEvery S-parameter is one wave divided by another, with the far port matched so its incident wave is zero.DUTtwo-port networkPORT 1PORT 2a₁ incidentb₁ reflectedb₂ transmitteda₂ (zero when matched)S₁₁ = b₁ / a₁input reflection — how well port 1 is matchedS₂₁ = b₂ / a₁forward transmission — gain, or insertion lossS₁₂ = b₁ / a₂reverse transmission — isolation, the path that makes amplifiers oscillateS₂₂ = b₂ / a₂output reflection — how well port 2 is matchedthe subscript order is TO, FROMS₂₁ is the wave arriving at port 2 from port 1
A two-port network in terms of incident and reflected waves — what each S-parameter measures

1. Why scattering parameters exist at all

At low frequency you characterise a two-port with Z, Y or H parameters, all of which require open-circuit or short-circuit terminations. At microwave frequencies that breaks down for three reasons:

  1. You cannot make a good open or short. At 20 GHz an “open” is a capacitor and a “short” is an inductor. The termination you think you applied is not the one the device sees.
  2. You cannot measure voltage and current at a plane. The probe becomes part of the circuit, and in a waveguide there is no unique voltage to measure at all.
  3. Active devices oscillate when presented with an open or short. The test destroys the thing being tested.

S-parameters sidestep all three by terminating every port in a matched load — something you can build accurately — and measuring travelling waves instead of terminal quantities.


2. The definition

Every port has an incident wave going in and a reflected wave coming back, normalised so that their squared magnitudes are power:

𝐛=𝐒𝐚\mathbf{b} = \mathbf{S}\,\mathbf{a}

For a two-port, written out:

b1=S11a1+S12a2b2=S21a1+S22a2b_1 = S_{11}a_1 + S_{12}a_2 \qquad b_2 = S_{21}a_1 + S_{22}a_2

Each parameter is defined with the other port matched, so its incident wave is zero:

ParameterDefinitionNameWhat it tells you
S11S_{11}b1/a1b_1/a_1, with a2=0a_2 = 0input reflectionhow well port 1 is matched
S21S_{21}b2/a1b_2/a_1, with a2=0a_2 = 0forward transmissiongain, or insertion loss
S12S_{12}b1/a2b_1/a_2, with a1=0a_1 = 0reverse transmissionisolation, and the feedback path that makes amplifiers oscillate
S22S_{22}b2/a2b_2/a_2, with a1=0a_1 = 0output reflectionhow well port 2 is matched

The subscript order is “to, from”, not “from, to”.S21S_{21} is the wave arriving at port 2 from port 1. Getting this backwards is the single most common beginner error, and it is silent on a symmetric device — which is exactly where you will not notice it.

Reference impedance is part of the data

S-parameters are meaningless without the impedance they are referenced to, almost always 50 Ω, sometimes 75 Ω for video and cable, and occasionally per-port differing values. The same physical device has different S-parameters in a 50 Ω and a 75 Ω system. A Touchstone file states it on its option line; a datasheet plot sometimes does not, and then you have to ask.


3. Reflection, and everything derived from it

For a one-port, S11S_{11}is the reflection coefficient:

Γ=ZL−Z0ZL+Z0\Gamma = \frac{Z_L – Z_0}{Z_L + Z_0}

Worked, in a 50 Ω system:

LoadΓ\Gamma|Γ||\Gamma|Angle
50 Ω (matched)00.0000—
75 Ω+0.20000.20000°
100 Ω+0.33330.33330°
25 Ω−0.33330.3333180°
Short (0 Ω)−11.0000180°
Open (∞)+11.00000°
50 + j50 Ω0.2 + j0.40.447263.4°

Notice that a short and an open both reflect everything — they differ only in phase. That 180° difference is what makes them useful as calibration standards, and it is the whole reason the Smith chart is a polar plot.

From |Γ||\Gamma| everything else follows:

RL=−20log⁡10|Γ|VSWR=1+|Γ|1−|Γ|ML=−10log⁡10(1−|Γ|2)\mathrm{RL} = -20\log_{10}|\Gamma| \qquad \mathrm{VSWR} = \frac{1+|\Gamma|}{1-|\Gamma|} \qquad \mathrm{ML} = -10\log_{10}\!\left(1 – |\Gamma|^{2}\right)

|Γ||\Gamma|Return lossVSWRPower reflectedMismatch loss
0.01040.0 dB1.0200.01%0.000 dB
0.03230.0 dB1.0650.10%0.004 dB
0.10020.0 dB1.2221.00%0.044 dB
0.20014.0 dB1.5004.00%0.177 dB
0.3339.5 dB2.00011.11%0.511 dB
0.5006.0 dB3.00025.00%1.249 dB

Return loss is quoted as a positive number by convention, and larger is better — 40 dB is an excellent match, 6 dB is a bad one. You will also see it written as a negative S11S_{11} in dB, which means the same thing with the opposite sign. Both conventions are in daily use and the only defence is to look at whether the number gets bigger or smaller as the match improves.

Mismatch loss is the useful one and the least quoted. It is the power you fail to deliver because of reflection. Read the table: even a mediocre 14 dB return loss only costs you 0.18 dB of delivered power. That is why chasing return loss past a point is often wasted effort — the reflected energy matters far more for what it does elsewhere (re-reflections, resonances, crosstalk into neighbours) than for the power it removes.


4. Transmission

IL=−20log⁡10|S21|\mathrm{IL} = -20\log_{10}|S_{21}|

|S21||S_{21}|Insertion lossPower through
1.0000 dB100%
0.8911 dB79.4%
0.7083 dB50.1%
0.5006 dB25.0%
0.31610 dB10.0%
0.10020 dB1.0%

For an amplifier |S21|>1|S_{21}| > 1 and the same quantity is gain. For anything passive it is loss, and |S21|≤1|S_{21}| \le 1 always.


5. More than two ports

An NN-port has an N×NN \times N matrix, so the data grows quadratically:

PortsFileMatrixComplex numbers per frequency
1.s1p1×11
2.s2p2×24
4.s4p4×416
12.s12p12×12144
32.s32p32×321024

A 32-port file at 10,000 frequency points holds about 20 million numbers. This is why full-board extractions get unwieldy, and why port count is a design decision in itself.

Port numbering is the most expensive convention in the field

There is no universal standard for how ports on a differential structure are numbered. Two conventions dominate:

  • 1-2 / 3-4 — port 1 and 2 are the two ends of the first single-ended line, 3 and 4 the second.
  • 1-3 / 2-4 — ports 1 and 2 are the two lines at the near end, 3 and 4 at the far end.

Both are common. Both produce a valid-looking file. Feeding one into a tool expecting the other silently swaps a through-path for a crosstalk path, and the result looks like a badly designed structure rather than a mis-wired file. Always check the port map, and sanity-check by plotting: S21S_{21} should look like a through path, not like a coupling curve.

Mixed-mode S-parameters

For a differential pair, single-ended parameters are not what you want. The four-port matrix is transformed into modal quantities:

[SDDSDCSCDSCC]\begin{bmatrix} S_{DD} & S_{DC} \\ S_{CD} & S_{CC} \end{bmatrix}

  • SDD21S_{DD21} — differential in, differential out: the real insertion loss of the pair.
  • SCC21S_{CC21} — common-mode transmission.
  • SCD21S_{CD21} — mode conversion: differential in, common out. This is the one that causes EMC failures, and it is zero for a perfectly symmetric structure. It is never zero.
  • SDC21S_{DC21} — common in, differential out: how external common-mode noise gets into your signal.

The mode-conversion terms are the whole reason to look at mixed-mode data. A pair can have excellent SDD21S_{DD21} and still radiate, and only SCDS_{CD} shows it.


6. The Touchstone file

A plain-text format, originally from EEsof, now standardised as IEEE Std 370‘s companion and maintained as Touchstone 2.0 by the IBIS Open Forum.

! A 2-port file: comments start with an exclamation mark
# GHz S MA R 50
!freq      |S11|   /_S11   |S21|   /_S21   |S12|   /_S12   |S22|   /_S22
0.0        0.0100  0.00    0.9990  0.00    0.9990  0.00    0.0100  0.00
1.0        0.0316 -45.00   0.9487 -36.00   0.9487 -36.00   0.0316 -45.00
10.0       0.1000 -90.00   0.7080 -180.0   0.7080 -180.0   0.1000 -90.00

The option line

The line beginning # sets how every number is to be read:

FieldOptionsMeaning
Frequency unitHzkHzMHzGHzwhat the first column is in
ParameterSYZHGalmost always S
FormatMADBRImagnitude-angle, dB-angle, real-imaginary
Rne.g. R 50the reference impedance

All three formats describe the same number. One value, three spellings:

FormatWritten asMeaning
MA0.316228 -45.0000magnitude 0.3162, angle −45°
DB-10.000000 -45.0000−10 dB, angle −45°
RI0.223607 -0.223607real and imaginary parts

Angles are always in degrees, never radians — including in RI files, where there are no angles at all. And in DB format the magnitude is 20log⁡10|S|20\log_{10}|S|, not 10log⁡1010\log_{10}: these are wave amplitudes, not powers.

The two-port ordering trap

This is the one that costs real time. In Touchstone 1.0, a two-port file lists its four values in the order:

S11S21S12S22S_{11}\quad S_{21}\quad S_{12}\quad S_{22}

That is column-major — S21S_{21} comes second. But for three ports and above, the data is row-major: S11S12S13S_{11}\ S_{12}\ S_{13}, then S21S22S23S_{21}\ S_{22}\ S_{23}, and so on.

So the two-port case is the exception, and a parser written for the general case gets S12S_{12} and S21S_{21} backwards on every two-port file it reads. On a reciprocal passive structure S12=S21S_{12} = S_{21} and nothing appears wrong — until the file describes an amplifier or an isolator, where the two differ by 30 dB and the error is enormous. Touchstone 2.0 fixes this with an explicit [Two-Port Data Order] keyword; 1.0 files remain overwhelmingly common.

Other things that bite

  • No blank-line or ordering guarantees. Frequencies should ascend; not all writers comply.
  • Noise data may follow the S-parameter block in a two-port file, with a different column layout entirely. A naive parser reads it as more S-data.
  • Version 2.0 adds [Version], [Number of Ports], [Reference] for per-port impedances, and [Network Data] — worth preferring when a tool will write it.
  • Frequency spacing sets the time-domain window if you convert to an impulse or step response. The window is 1/Δf1/\Delta f and the resolution is 1/(span)1/(\text{span}):
SpacingPointsSpanTime windowResolution
50 MHz20010 GHz20 ns100 ps
10 MHz100010 GHz100 ns100 ps
1 MHz1000010 GHz1000 ns100 ps

Too coarse a spacing wraps the impulse response around the window, and the wrapped energy looks exactly like a reflection that is not there.


7. The checks every file should pass

Run these on everything, including vendor models. Especially vendor models.

Passivity. A passive structure cannot emit more energy than it absorbs. For a two-port, at every frequency:

|S11|2+|S21|2≤1|S_{11}|^{2} + |S_{21}|^{2} \le 1

Case|S11|2+|S21|2|S_{11}|^2 + |S_{21}|^2Verdict
Ideal thru1.000lossless, the boundary
Good match, low loss0.9998passive
Lossy component0.500passive — half the energy absorbed
|S11|=0.5,|S21|=0.95|S_{11}|=0.5,\ |S_{21}|=0.951.153impossible

The general form is that the eigenvalues of I−SHSI – S^{H}S must be non-negative. Measured data violates this slightly almost always, from noise; large violations mean a broken model.

Reciprocity. For any passive structure without ferrites or active devices, Sij=SjiS_{ij} = S_{ji}. Violation means either a non-reciprocal device — or a mis-wired file.

Causality. The response cannot precede the stimulus. This shows up as a magnitude and phase that are not Hilbert-transform pairs, and its practical symptom is a time-domain step response that starts before time zero. Non-causal data usually means a missing DC point or a non-physical material model.

DC behaviour. Extrapolation to 0 Hz must be physical. Many tools need a real DC point and will invent one badly if it is absent.

A monotonic-ish insertion loss with no unexplained nulls. A null means a resonator — a via stub, a cavity, a bad termination — and it is either real and important, or an artefact.


8. What you actually do with them

  • Cascade. Convert to T-parameters, multiply, convert back — that is how a die, package, connector, cable and board become one channel. The reference planes must match at every junction, and mismatched planes are the most common cascading error.
  • Simulate. Convolve with a driver and receiver model to get a time-domain eye.
  • De-embed. Remove a fixture’s contribution to see the device alone — TRL, or 2x-thru per IEEE 370.
  • Design. Amplifier gain, stability and noise all come straight from the S-matrix, as in part three of the series.
  • Correlate. Overlay measured against simulated. A model you have never compared to a measurement is a hypothesis.

Where we fit

We characterise and model the passive structures that these files describe — connectors, launches, via transitions, cables and board channels — in Ansys HFSS and SIwave, and correlate them against VNA measurements. When a vendor’s file does not match the bench, working out which one is wrong is a large part of the job.

If you have a Touchstone file you do not trust, or a channel that will not close, that is the conversation we like having.


Glossary

a, b waves — Normalised incident and reflected travelling waves, defined so that |a|2|a|^2 and |b|2|b|^2 are powers in watts. Everything else here is a ratio of these. The normalisation is why S-parameters compose cleanly through a cascade while impedance parameters do not.

Causality — The response cannot precede the stimulus. It sounds like philosophy and is a practical data check: causal data satisfies the Kramers–Kronig relations linking magnitude and phase, and a file that violates them produces a time-domain step that starts moving before the edge arrives. Simulators either refuse such a file or quietly “fix” it, and the fix changes your answer.

De-embedding — Removing a fixture’s contribution so the numbers describe the device rather than the launch, the connector and the trace that got you there. At multi-gigahertz the fixture is often worse than the DUT, so the de-embedding is not a refinement — it is the measurement. Common methods: TRL, 2x-thru (AFR/IEEE 370), and port extension for phase only.

Insertion loss — −20log⁡10|S21|-20\log_{10}|S_{21}|; how much fails to get through. Note it lumps together what was absorbed and what was reflected, which is why a filter’s stopband shows enormous insertion loss while dissipating almost nothing — it is sending the energy back, not eating it.

Mismatch loss — The portion of insertion loss caused purely by reflection, −10log⁡10(1−|Γ|2)-10\log_{10}(1-|\Gamma|^2). Worth separating from dissipative loss because they behave differently in a cascade: dissipated power is gone, reflected power re-reflects and produces ripple. VSWR 2:1 is only 0.51 dB of mismatch loss, which is why chasing return loss past about 15 dB rarely pays.

Mixed-mode S-parameters — The differential/common-mode recasting of a four-port into four 2×2 blocks: SDDS_{DD} (differential through and reflected), SCCS_{CC} (common-mode), and the cross blocks SCDS_{CD} and SDCS_{DC}. A differential pair’s real behaviour lives in SDD21S_{DD21} and SDD11S_{DD11}; the single-ended four-port describes the same device in a basis nobody designs in.

Mode conversion (SCD21S_{CD21}) — Differential energy becoming common-mode through asymmetry — unequal trace lengths, a via on one side only, a connector pin-out that breaks symmetry. Common-mode current radiates where differential does not, so this is the usual root cause of a differential pair failing EMC, and it is invisible in a SDD21S_{DD21} plot that looks fine.

Passivity — A passive network cannot emit more energy than it absorbs; formally, the singular values of the S-matrix are all ≤1\le 1 at every frequency. A passivity violation in a model is an extrapolation artefact or a bad fit, and it makes a transient simulation grow without bound — the classic “my SerDes sim exploded” cause.

Reciprocity — Sij=SjiS_{ij} = S_{ji}. True of any network built from ordinary materials, and deliberately broken by magnetically biased ferrites — which is the entire basis of the isolator and circulator. If a passive measurement comes back non-reciprocal, suspect the calibration before the physics.

Reference impedance — The system impedance the parameters are defined against, usually 50 Ω. It is part of the data, not a detail: the same device has different S-parameters at 50 Ω and at 100 Ω differential, and re-normalising between them is a real calculation. A Touchstone file that omits it, or whose header disagrees with the measurement, is silently wrong.

Return loss — −20log⁡10|Γ|-20\log_{10}|\Gamma|, quoted as a positive number, where bigger is better. Often confused with its own negation: a datasheet showing “−15 dB return loss” means |S11|=−15|S_{11}| = -15 dB, which is 15 dB of return loss. Both conventions are in circulation; read the axis.

Touchstone — The .sNp text format S-parameters are exchanged in, where N is the port count. The header line carries the frequency unit, the parameter type, the format (dB/angle, magnitude/angle, real/imaginary) and the reference impedance. Version 2.0 adds a port-order and mixed-mode description that v1 files leave to a filename convention and hope.

VSWR — (1+|Γ|)/(1−|Γ|)(1+|\Gamma|)/(1-|\Gamma|), the standing-wave ratio on the line. The same information as return loss in a scale that runs from 1 to infinity instead of infinity to zero. It survives because a VSWR meter measures it directly, and because power-handling and ruggedness specifications are written in it.


Further reading — reference books

Book links below are Amazon affiliate links: if you buy through one we earn a small commission at no extra cost to you. It does not influence what is recommended — the same books were on this list before the links were.


Have a Touchstone file you do not trust, or a channel that will not close? That’s what we do. Reach us at circuit-design.space.

circuit-design.space · +1-971-357-1400 · anovickis@circuit-design.space