Some googling took me to this Keysight application note, Specifying Calibration Standards and Kits for Keysight Vector Network Analyzers, and its terminated transmission-line model for SOL standards (one-port, not two):

From this model and a set of givens, one can arrive at the application note's equation 1.4, shown below:

__A Simplified Model...__Keysight's equation 1.4 is a fairly complex equation. Can we simplify it?

If we

*that we are working at frequencies in which loss is negligible (i.e. α essentially equals 0), and if we assume Zc = Zr (i.e. Γ*

__assume___{1}= 0), then equation 1.4 reduces to:

Γ

_{i}= e^{-2jβl}Γ_{T}Note that β has units of radians/meter and

*l*has units of meters. Therefore β

*l*has units of radians (of delay). And the factor of 2 in the exponent represents, from the perspective of the standard's input, a wave first traveling the distance

*l*down the line, and then its reflection traveling back that same distance, for a total travel-distance of 2

*l*.

But -- the delays of SOL standards are typically defined in terms of time (e.g. picoseconds), not length. How do we convert this equation into one that is a function of time?

First, recognize that β = 2π/λ (where λ is the wavelength, in the transmission-medium, at the frequency of interest -- i.e. λ = c*VF/f, where c is the speed-of-light (m/s), VF is the Velocity Factor (unitless), and f is frequency in cycles-per-second). Thus λ's units are meters/cycle.

Making this substitution for lambda into the equation for beta, we get:

β = 2πf/(c*VF)

Now, note that, if the transmission-medium's relative

*permeability*is 1, then VF = 1/√ε

_{r}, where ε

_{r}is the relative permittivity of the transmission-medium.

We can now rewrite the equation for beta as:

β = (2πf√ε

_{r})/cThus:

β

*l*= (2πf√ε_{r})*l*/cNext, note that the Keysight app note (referenced above) defines "Offset-delay" as:

offset-delay = √ε

_{r}*l*/ c (Keysight's equation 1.5)Substituting this into our equation for β

*l,*we get:

β

*l*= 2πf*(offset-delay)_{i}, expressed in terms of β

*l,*becomes (when expressed in terms of frequency and offset-delay):

Γ

_{i}= e^{-2j(2πf)*(offset_delay)}Γ_{T}So now we can calculate Γ

_{i }in terms of frequency, the specified offset-delay, and Γ

_{T}.

But what is Γ

_{T}?

For an Open standard:

Γ

_{T}= (Zopen - Zr)/(Zopen + Zr)
Zopen = -j/(2πf*(C0 + C1*f + C2*f

^{2}+ C3*f^{3}))Similarly, for a Short standard:

Γ

_{T}= (Zshort - Zr)/(Zshort + Zr)
Zshort = j2πf*(L0 + L1*f + L2*f

^{2}+ L3*f^{3})__An example:__

Let's look at the cal kit definitions for the Keysight's 85033D/E 3.5mm standards (per Keysight PNA 85033DE -- note that values for all the standards can be found here: Keysight Cal Kit Page).

For their Open Standard (male or female):

C0 = 49.433e-15

C1 = -310.13e-27

C2 = 23.168e-36

C3 = -0.15966e-45

Delay_Open = 29.2e-12

Loss_Open = 2.2E9

Offset_Zo_Open = 50

And for their Short Standard (male or female):

L0 = 2.077e-12

L1 = -108.5e-24

L2 = 2.171e-33

L3 = -0.01e-42

Delay_Short = 31.8e-12

Loss_Short = 2.36e9

Offset_Zo_Short = 50

f = 900e6; % Frequency

divisor = (2 * pi * f * (C0 + C1 * f + C2 * f^2 + C3 * f^3))

Zop = -1i / divisor

gammaOpen = ((Zop/50) - 1) / ((Zop/50) + 1)

delayedOpenGamma = gammaOpen * exp(-1i * 2 * 2 * pi * f * Delay_Open)

mag_delayedOpenGamma = abs(delayedOpenGamma)

ang_delayedOpenGamma = angle(delayedOpenGamma)*180/pi

Zsh = 1i * (2 * pi * f * (L0 + L1 * f + L2 * f^2 + L3 * f^3))

gammaShort = ((Zsh/50) - 1) / ((Zsh/50) + 1)

delayedShortGamma = gammaShort * exp(-1i * 2 * 2 * pi * f * Delay_Short)

mag_delayedShortGamma = abs(delayedShortGamma)

ang_delayedShortGamma = angle(delayedShortGamma)*180/pi

divisor = (2 * pi * f * (C0 + C1 * f + C2 * f^2 + C3 * f^3))

Zop = -1i / divisor

gammaOpen = ((Zop/50) - 1) / ((Zop/50) + 1)

delayedOpenGamma = gammaOpen * exp(-1i * 2 * 2 * pi * f * Delay_Open)

mag_delayedOpenGamma = abs(delayedOpenGamma)

ang_delayedOpenGamma = angle(delayedOpenGamma)*180/pi

Zsh = 1i * (2 * pi * f * (L0 + L1 * f + L2 * f^2 + L3 * f^3))

gammaShort = ((Zsh/50) - 1) / ((Zsh/50) + 1)

delayedShortGamma = gammaShort * exp(-1i * 2 * 2 * pi * f * Delay_Short)

mag_delayedShortGamma = abs(delayedShortGamma)

ang_delayedShortGamma = angle(delayedShortGamma)*180/pi

The results are:

Gamma(open), without delay compensation:

= 0.9996 - j0.0278

(magnitude = 1.0, angle = -1.5931 degrees)

Gamma(open), with delay compensation:

= 0.9366 - j0.3504

(magnitude = 1.0, angle = -20.5147 degrees)

If I now force C1, C2, and C3 to be zero and leave C0 unchanged, Gamma(open) is:

= 0.9365 - j0.3506

(magnitude = 1.0, angle = -20.5231 degrees)

Gamma(short), without delay compensation:

= -1.0000 + j0.0004

(magnitude = 1.0, angle = 179.9743 degrees)

Gamma(short), with delay compensation:

= -0.9359 + j0.3524

(magnitude = 1.0, angle = 159.3679 degrees)

If I now force L1, L2, and L3 to be zero and leave L0 unchanged, Gamma(short) is:

= -0.9359 + j0.3524

(magnitude = 1.0, angle = 159.3667 degrees)

And if all four L-terms are set to 0, Gamma(short) is:

= -0.9360 + j0.3519

(magnitude = 1.0, angle = 159.3936 degrees)

Several conclusions can be made from the above calculations (run at 900 MHz):

- Offset Delay (e.g. the values Delay_Short and Delay_Open, above) has the greatest impact on the standards' compensated Gamma, compared to the effect of the terms C0-C3 or L0-L3.
- In fact, the total impact of
*all*of the L-coefficients (L0-L3, combined) is insignificant -- their total effect is a clockwise-rotation of Gamma on the Smith Chart of only about 0.03 degrees. - Of C0-C3, C0 has the most effect at 900 MHz. In the example above, if C1-C3 are forced to zero but C0 left at its original value, the difference in the angle of Gamma is less than 0.01 degrees, compared to Gamma calculated with the original non-zero values of C1-C3.

**Note: The results above assume my simplified terminated transmission line model is valid at 900 MHz,. Let's verify...**

__The Effect of Loss and Offset Zo on Gamma:__I'll use the published values of Loss and Offset Zo, along with the appropriate equations in Keysight's document, to verify my assumption that, for the NanoVNA's maximum operating frequency of 900 MHz, the spec'd Loss and Offset Zo values have (in my opinion) an insignificant impact on the compensated Open and Short Gammas.

In the image below I have summarized the important equations forming a "complete" terminated transmission-line model of an Open or Short standard, from the Keysight paper, referenced above:

And here's my Matlab code for calculating gamma for both my simplified model and for Keysight's complete model, per the equations in the image, above:

zr = 50; % reference impedance

f = 900e6; % frequency

% *****************************

% Calculations for the Open Standard

% *****************************

% First, calculate the Short's Gamma assuming

% no Loss and Offset_Zo = 50 ohms.

divisor = (2 * pi * f * (C0 + C1 * f + C2 * f^2 + C3 * f^3));

Zop = -1i / divisor;

GammaOpen = ((Zop/50) - 1) / ((Zop/50) + 1);

abs(GammaOpen);

angle(GammaOpen)*180/pi;

delayedOpenGamma = GammaOpen * exp(-1i * 2 * 2 * pi * f * Delay_Open);

mag_delayedOpenGamma = abs(delayedOpenGamma);

ang_delayedOpenGamma = angle(delayedOpenGamma)*180/pi;

% Now, let's repeat the calculation for the Open's Gamma,

% but now assuming loss and specified Offset_Zo

% per equation 1.10 in Keysight's "Specifying Calibration Standards

% and kits for Keysight Vector Network Analyzers".

al_op = ((Loss_Open*Delay_Open)/(2*Offset_Zo_Open))*sqrt(f/1e9);

Bl_op = 2*pi*f*Delay_Open + al_op;

zc_open = Offset_Zo_Open + (1-1i)*(Loss_Open/(4*pi*f))*sqrt(f/1e9);

% From the givens of eq. 1.1:

gammaEl_op = al_op + 1i*Bl_op;

% Next, calculate a common exponential term...

e2gammaEl_op = exp(-2*gammaEl_op);

% Now, calculate Gamma-sub-1 and Gamma-sub-i

% (the latter equation 1.4 in Keysight doc)

Gamma_1_op = (zc_open-zr)/(zc_open+zr);

Open_Gamma_i = (Gamma_1_op*(1-e2gammaEl_op-Gamma_1_op*GammaOpen)+(e2gammaEl_op*GammaOpen)) / ...

(1-Gamma_1_op*(e2gammaEl_op*Gamma_1_op + GammaOpen*(1-e2gammaEl_op)));

full_open_rho = abs(Open_Gamma_i);

full_open_theta = angle(Open_Gamma_i)*180/pi;

% *****************************

% Repeat for the Short Standard

% *****************************

% First, calculate the Short's Gamma assuming

% no Loss and Offset_Zo = 50 ohms.

Zsh = 1i * (2 * pi * f * (L0 + L1 * f + L2 * f^2 + L3 * f^3));

GammaShort = ((Zsh/50) - 1) / ((Zsh/50) + 1);

abs(GammaShort);

angle(GammaShort)*180/pi;

delayedShortGamma = GammaShort * exp(-1i * 2 * 2 * pi * f * Delay_Short);

mag_delayedShortGamma = abs(delayedShortGamma);

ang_delayedShortGamma = angle(delayedShortGamma)*180/pi;

% Now, let's repeat the calculation for the Short's Gamma,

% but now assuming loss and specified Offset_Zo

% per equation 1.10 in Keysight's "Specifying Calibration Standards

% and kits for Keysight Vector Network Analyzers".

al_sh = ((Loss_Short*Delay_Short)/(2*Offset_Zo_Short))*sqrt(f/1e9);

Bl_sh = 2*pi*f*Delay_Short + al_sh;

zc_short = Offset_Zo_Short + (1-1i)*(Loss_Short/(4*pi*f))*sqrt(f/1e9);

% From the givens of eq. 1.1:

gammaEl_sh = al_sh + 1i*Bl_sh;

% Next, calculate a common exponential term...

e2gammaEl_sh = exp(-2*gammaEl_sh);

\% Now, calculate Gamma-sub-1 and Gamma-sub-i

% (the latter equation 1.4 in Keysight doc)

Gamma_1_sh = (zc_short-zr)/(zc_short+zr);

Short_Gamma_i = (Gamma_1_sh*(1-e2gammaEl_sh-Gamma_1_sh*GammaShort)+(e2gammaEl_sh*GammaShort)) / ...

(1-Gamma_1_sh*(e2gammaEl_sh*Gamma_1_sh + GammaShort*(1-e2gammaEl_sh)));

full_short_rho = abs(Short_Gamma_i);

full_short_theta = angle(Short_Gamma_i)*180/pi;

f = 900e6; % frequency

% *****************************

% Calculations for the Open Standard

% *****************************

% First, calculate the Short's Gamma assuming

% no Loss and Offset_Zo = 50 ohms.

divisor = (2 * pi * f * (C0 + C1 * f + C2 * f^2 + C3 * f^3));

Zop = -1i / divisor;

GammaOpen = ((Zop/50) - 1) / ((Zop/50) + 1);

abs(GammaOpen);

angle(GammaOpen)*180/pi;

delayedOpenGamma = GammaOpen * exp(-1i * 2 * 2 * pi * f * Delay_Open);

mag_delayedOpenGamma = abs(delayedOpenGamma);

ang_delayedOpenGamma = angle(delayedOpenGamma)*180/pi;

% Now, let's repeat the calculation for the Open's Gamma,

% but now assuming loss and specified Offset_Zo

% per equation 1.10 in Keysight's "Specifying Calibration Standards

% and kits for Keysight Vector Network Analyzers".

al_op = ((Loss_Open*Delay_Open)/(2*Offset_Zo_Open))*sqrt(f/1e9);

Bl_op = 2*pi*f*Delay_Open + al_op;

zc_open = Offset_Zo_Open + (1-1i)*(Loss_Open/(4*pi*f))*sqrt(f/1e9);

% From the givens of eq. 1.1:

gammaEl_op = al_op + 1i*Bl_op;

% Next, calculate a common exponential term...

e2gammaEl_op = exp(-2*gammaEl_op);

% Now, calculate Gamma-sub-1 and Gamma-sub-i

% (the latter equation 1.4 in Keysight doc)

Gamma_1_op = (zc_open-zr)/(zc_open+zr);

Open_Gamma_i = (Gamma_1_op*(1-e2gammaEl_op-Gamma_1_op*GammaOpen)+(e2gammaEl_op*GammaOpen)) / ...

(1-Gamma_1_op*(e2gammaEl_op*Gamma_1_op + GammaOpen*(1-e2gammaEl_op)));

full_open_rho = abs(Open_Gamma_i);

full_open_theta = angle(Open_Gamma_i)*180/pi;

% *****************************

% Repeat for the Short Standard

% *****************************

% First, calculate the Short's Gamma assuming

% no Loss and Offset_Zo = 50 ohms.

Zsh = 1i * (2 * pi * f * (L0 + L1 * f + L2 * f^2 + L3 * f^3));

GammaShort = ((Zsh/50) - 1) / ((Zsh/50) + 1);

abs(GammaShort);

angle(GammaShort)*180/pi;

delayedShortGamma = GammaShort * exp(-1i * 2 * 2 * pi * f * Delay_Short);

mag_delayedShortGamma = abs(delayedShortGamma);

ang_delayedShortGamma = angle(delayedShortGamma)*180/pi;

% Now, let's repeat the calculation for the Short's Gamma,

% but now assuming loss and specified Offset_Zo

% per equation 1.10 in Keysight's "Specifying Calibration Standards

% and kits for Keysight Vector Network Analyzers".

al_sh = ((Loss_Short*Delay_Short)/(2*Offset_Zo_Short))*sqrt(f/1e9);

Bl_sh = 2*pi*f*Delay_Short + al_sh;

zc_short = Offset_Zo_Short + (1-1i)*(Loss_Short/(4*pi*f))*sqrt(f/1e9);

% From the givens of eq. 1.1:

gammaEl_sh = al_sh + 1i*Bl_sh;

% Next, calculate a common exponential term...

e2gammaEl_sh = exp(-2*gammaEl_sh);

\% Now, calculate Gamma-sub-1 and Gamma-sub-i

% (the latter equation 1.4 in Keysight doc)

Gamma_1_sh = (zc_short-zr)/(zc_short+zr);

Short_Gamma_i = (Gamma_1_sh*(1-e2gammaEl_sh-Gamma_1_sh*GammaShort)+(e2gammaEl_sh*GammaShort)) / ...

(1-Gamma_1_sh*(e2gammaEl_sh*Gamma_1_sh + GammaShort*(1-e2gammaEl_sh)));

full_short_rho = abs(Short_Gamma_i);

full_short_theta = angle(Short_Gamma_i)*180/pi;

__Examples.__

Here are the Matlab results for various cal-kit standards:

Notes:

1. The "Simple" model uses C0-C3 and L0-L3, but not (offset) Loss nor (offset) Zo (i.e. α essentially equals 0). Also, Zc is assumed to equal Zr (refer to Keysight equations).

2. The "Very Simplified" model is the "Simple" model, but now with C1-C3 and all the L terms zeroed-out.

3. The "Keysight" Model is the "full" model I've created using the equations in their app note.

4.The very last "cal kit" represents the NanoVNA's compensation, as cleaned by looking at its firmware (note that I set Loss to 0 ohms/S to force α to be 0).

__Conclusion:__

In the above results, the worst case Gamma differences between the "Full" and "Very Simplified" models, calculated at 900 MHz, are:

- rho (magnitude): Less than 0.003
- theta (degrees): Less than 0.2 degrees.

*insignificant.*

__Other Notes:__Similar equations can be found at these URL's:

Effect of Loss on VNA Calibration Standards, Raul Monsalve

One Port Direct/Reverse Method for Characterizing VNA Calibration Standards, Raul Monsalve, et al. (see Appendix at end of paper).

Calibration values for all the Keysight standards can be found here: Keysight Cal Kit Page

__Standard Caveat:__As always, I might have made a mistake in my equations, assumptions, drawings, or interpretations. If you see anything you believe to be in error or if anything is confusing, please feel free to contact me or comment below.

And so I should add -- this information is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.