How do I characterize a splitter?

702 views
Skip to first unread message

Michael Wollensack METAS

unread,
Aug 7, 2014, 4:41:41 AM8/7/14
to vnat...@googlegroups.com
How do I characterize a splitter using VNA Tools II?

Michael Wollensack METAS

unread,
Aug 7, 2014, 5:01:13 AM8/7/14
to vnat...@googlegroups.com
Hi,

I know three ways to characterize a splitter:
  1. Measure the splitter using a 4-Port VNA. You can do a 3-Port Unknown Thru calibration and you obtain directly all 9 (3 x 3) S-parameters of the splitter. From the S-parameters of the splitter you can compute the equivalent source matches of port 2 and 3.
  2. Measure the splitter using a 2-Port VNA. First perform a 2-Port Unknown Thru calibration using the splitter as unknown thru. Then perform a second tier calibration (measuring all 4 S-parameters) on the third port of the splitter. Decascade the first calibration errror terms from the second calibration error terms and you obtain all 9 (3 x 3) S-parameters of the splitter. From the S-parameters of the splitter you can compute the equivalent source matches of port 2 and 3.
  3. Use the Juroshek method to measure the equivalent source match of a splitter. Connect port 1 and 2 of the splitter to the VNA and perform an One Port calibration on the third port of the splitter. You will obtain the equivalent source match of port 3. Connect port 1 and 3 of the splitter to the VNA and perform an One Port calibration on the second port of the splitter. You will obtain the equivalent source match of port 2.
I will write for each method a post and describe it more in details.

Regards
Michael

Michael Wollensack METAS

unread,
Aug 7, 2014, 5:16:04 AM8/7/14
to
1. Measure the splitter using a 4-Port VNA:

  1. Measure open, short, load at port 1.
  2. Measure open, short, load at port 2.
  3. Measure open, short, load at port 3.
  4. Connect your splitter and measure all 9 S-parameters (ports: 1, 2, 3).
  5. Compute 3-Port Unknown Thru calibration.
  6. Perform error correction. --> You obtain all 9 S-parameters of your splitter.
  7. Compute the equivalent source matches of port 2 and port 3 using the following python script:
import clr
clr.AddReference('System.Windows.Forms')
clr.AddReference('Metas.Vna.Tools')
from System.Threading import Thread
from System.Windows.Forms import MessageBox
from Metas.Vna.Tools import Script
from Metas.Vna.Misc import ThreePortTools
from Metas.UncLib.Core import Complex
from Metas.UncLib.LinProp import UncNumber

s = Script(RootPath)

d = s.LoadSParamData('Splitter.sdatb')
e = SParamTools.EquivalentSourceMatch[UncNumber](d)
s.SaveSParamData('Splitter_EQSM.sdatb', e)


The first file contains the S-parameters of the splitter. The second file `*_EQSM.sdatb' contains the equivalent coefficients and the transmission tracking of the splitter, where
  • S22 is the equivalent reflection coefficient of splitter output 2.
  • S33 is the equivalent reflection coefficient of splitter output 3.
  • S21 is the transmission tracking (S21 / S31).

Michael Wollensack METAS

unread,
Aug 7, 2014, 5:28:57 AM8/7/14
to vnat...@googlegroups.com
2. Measure the splitter using a 2-Port VNA:
    1. Measure open, short, load at port 1.
    2. Measure open, short, load at port 2.
    1. Connect your splitter (splitter port 1 to VNA port 1 and splitter port 2 to VNA port 2). Measure all 4 S-parameters (ports: 1, 2).
    2. Compute 2-Port Unknown Thru calibration (using your splitter as unknown thru).
    3. Perform error correction.
    4. Measure (all 4 S-parameters) open, short, load at port 3 of the splitter.
    5. Connect your splitter (splitter port 1 to VNA port 1 and splitter port 3 to VNA port 2). Measure all 4 S-parameters (ports: 1, 2).
    6. Measure (all 4 S-parameters) open, short, load at port 2 of the splitter.
    7. Compute the S-parameters and the equivalent source matches with the following script:
    # Michael Wollensack METAS - 22.08.2013

    import clr
    clr.AddReference('System.Windows.Forms')
    clr.AddReference('Metas.Vna.Tools')
    clr.AddReference('Metas.Vna.Data')
    clr.AddReference('Metas.Vna.Database')
    clr.AddReference('Metas.Vna.Optimization')
    clr.AddReference('Metas.UncLib.Core')
    clr.AddReference('Metas.UncLib.LinProp')
    clr.AddReference('Metas.Vna.Misc')
    from System import Array
    from System import Double
    from System.IO import File
    from System.IO import FileInfo
    from System.Threading import Thread
    from System.Windows.Forms import MessageBox
    from Metas.Vna.Tools import Script
    from Metas.Vna.Data import SParamData
    from Metas.Vna.Data import SParamTools
    from Metas.Vna.Database.CalibrationStandards.FileIO import CalibrationStandardXml
    from Metas.Vna.Optimization import OptSParamTools
    from Metas.Vna.Misc import ThreePortTools
    from Metas.UncLib.Core import Complex
    from Metas.UncLib.LinProp import UncNumber

    def LoadCalStdData(name, freqlist):
        fi = FileInfo(s.RootPathDatabase + '\\CalibrationStandards\\' + name + '.calstd')
        fs = File.OpenRead(fi.FullName)
        c = CalibrationStandardXml.LoadCalStd[UncNumber](fs, fi.Directory.FullName)
        c.Init(freqlist)
        d = c.Compute()
        return d

    s = Script(RootPath)

    m1 = s.LoadSParamData('UThru_01_out\CalStandards\Sxx_Splitter_P3_Open(m)_1041_01\Sxx_Splitter_P3_Open(m)_1041_01_02.sdatb');
    m2 = s.LoadSParamData('UThru_01_out\CalStandards\Sxx_Splitter_P3_Short(m)_729_01\Sxx_Splitter_P3_Short(m)_729_01_01.sdatb');
    m3 = s.LoadSParamData('UThru_01_out\CalStandards\Sxx_Splitter_P3_Load(m)_507_01\Sxx_Splitter_P3_Load(m)_507_01_04.sdatb');

    f = m1.Frequency

    s1 = LoadCalStdData('N50\\85054B\\85054B_Open(m)', f)
    s2 = LoadCalStdData('N50\\85054B\\85054B_Short(m)', f)
    s3 = LoadCalStdData('N50\\Loads\\MM006929_Load(m)_507\\MM006929_Load(m)_507_20121031', f)

    d3 = ThreePortTools.ComputeThreePort[UncNumber](m1, m2, m3, s1, s2, s3);

    s.SaveSParamData('Splitter_P3.sdatb', d3)
    d = SParamTools.EquivalentSourceMatch[UncNumber](d3);
    s.SaveSParamData('Splitter_P3_EQSM.sdatb', d)


    m1 = s.LoadSParamData('UThru_01_out\CalStandards\Sxx_Splitter_P2_Open(m)_1041_01\Sxx_Splitter_P2_Open(m)_1041_01_01.sdatb');
    m2 = s.LoadSParamData('UThru_01_out\CalStandards\Sxx_Splitter_P2_Short(m)_729_01\Sxx_Splitter_P2_Short(m)_729_01_03.sdatb');
    m3 = s.LoadSParamData('UThru_01_out\CalStandards\Sxx_Splitter_P2_Load(m)_507_01\Sxx_Splitter_P2_Load(m)_507_01_02.sdatb');

    s1 = LoadCalStdData('N50\\85054B\\85054B_Open(m)', f)
    s2 = LoadCalStdData('N50\\85054B\\85054B_Short(m)', f)
    s3 = LoadCalStdData('N50\\Loads\\MM006929_Load(m)_507\\MM006929_Load(m)_507_20121031', f)

    d2 = ThreePortTools.ComputeThreePort[UncNumber](m1, m2, m3, s1, s2, s3);

    d2.Ports[1] = 3;
    d2.Ports[2] = 2;
    d2 = SParamTools.SubsetIndices[UncNumber](d2, Array[int]((0, 2, 1)));

    s.SaveSParamData('Splitter_P2.sdatb', d2)
    d = SParamTools.EquivalentSourceMatch[UncNumber](d2);
    s.SaveSParamData('Splitter_P2_EQSM.sdatb', d)

    nfreq = d.NFreq;
    for i in range(nfreq):
        d2.Data[i][0][0] = (d2.Data[i][0][0] + d3.Data[i][0][0]) / Complex[UncNumber](2.0)
        d2.Data[i][1][0] = d2.Data[i][1][0]
        d2.Data[i][2][0] = d3.Data[i][2][0]
        d2.Data[i][0][1] = d2.Data[i][0][1]
        d2.Data[i][1][1] = d3.Data[i][1][1]
        d2.Data[i][2][1] = (d2.Data[i][2][1] + d3.Data[i][2][1]) / Complex[UncNumber](2.0)
        d2.Data[i][0][2] = d3.Data[i][0][2]
        d2.Data[i][1][2] = (d2.Data[i][1][2] + d3.Data[i][1][2]) / Complex[UncNumber](2.0)
        d2.Data[i][2][2] = d2.Data[i][2][2]
        
    s.SaveSParamData('Splitter.sdatb', d2)
    d = SParamTools.EquivalentSourceMatch[UncNumber](d2);
    s.SaveSParamData('Splitter_EQSM.sdatb', d)

    Michael Wollensack METAS

    unread,
    Aug 7, 2014, 5:31:13 AM8/7/14
    to vnat...@googlegroups.com
    3. Use the Juroshek method to measure the equivalent source match of a splitter:

    It's not implemented in VNA Tools II V1.3.2. I will post an update when I've implement the method.

    Tuomas Haitto

    unread,
    Aug 8, 2014, 4:05:31 AM8/8/14
    to vnat...@googlegroups.com
    It's just my opinion, but i prefer to do first full 2-port unknown thru calibration using female-female adapter (not DUT splitter) from the calkit. After measurement calibration i want be sure and
    verify that calibration is surely well done before splitter measurement process. When female-female adapter is still on place, i prefer to do verification measurement checking all S-parameters and S12/S21 (nice smooth/linear attenuation curves). This method keep VNA unknown thru measurement calibration and DUT measurements separates...less error posibilites and whole consept is more clearly in mind.      

    przeme...@gmail.com

    unread,
    Dec 15, 2014, 6:16:09 AM12/15/14
    to vnat...@googlegroups.com
    Thank Yoy for describing  2-Port VNA method.

    Kevin Sterling

    unread,
    Mar 26, 2015, 7:09:23 AM3/26/15
    to vnat...@googlegroups.com
    Hello Michael

    In calibration type Juroshek and a two port VNA, what are these measurements: 

    Reflection 1 E
    Reflection 2 E
    Reflection 3 E

    In calibration config with a two port VNA

    Do you have a step by step by step?

    Thanks

    Michael Wollensack METAS

    unread,
    Mar 27, 2015, 8:55:05 AM3/27/15
    to vnat...@googlegroups.com
    Hi Kevin,

    Step by step to measure the equivalent source match of port 3:
    1. Connect port 1 of the splitter to port 1 of the VNA.
    2. Connect port 2 of the splitter to port 2 of the VNA.
    3. Connect a open, short and load to port 3 of the splitter and collect for each all for S-parameters (S11, S21, S12 and S22).
    4. Assign those measurements with their definition in the calibration config tab. (Create a new Juroshek calibration).
    5. The equivalent source match of the splitter is in the error terms of the calibration.
    See as well the attached screen shots.



    Regards
    Michael

    George Krikelas

    unread,
    Dec 10, 2018, 8:09:41 AM12/10/18
    to VNA Tools
    Hi Michael. Regarding the script for measuring the splitter using a 2-port VNA, is it possible to use it when you have a lowband+sliding load combination (.slcfg file)? Obviously not in that format, but is it possible with some manipulation? 

    Michael Wollensack METAS

    unread,
    Dec 19, 2018, 5:11:20 AM12/19/18
    to VNA Tools
    Hi George,

    > Regarding the script for measuring the splitter using a 2-port VNA, is it possible to use it when you have a lowband+sliding load combination (.slcfg file)?

    No but you can use a characterized load.

    Today if you've a 2-port VNA I would recommend the Palmer method, see the following example

    04_Splitter_Palmer_Example_2.4mm(f-f-f)

    and the attached presentation.

    Regards
    Michael
    VnaToolsSplitter2.pdf

    Mr Skinner

    unread,
    Jan 9, 2026, 4:51:53 AM (3 days ago) Jan 9
    to VNA Tools
    Dear Michael,

    I think it is important to provide the criteria for the 3-port DUT under which these methods are applicable.

    It is my understanding that a number of these methods are only applicable if the device is symmetric, i.e., if the two output ports are equal.

    Therefore they would not be valid for characterisation of a range of 3-port devices which have unequal splitting, namely directional couplers. To my knowledge, this point is not specified in the publications from METAS on this topic e.g. J. Hoffmann, M. Wollensack, J. Ruefenacht and M. Zeier, "Comparison of methods for measurement of equivalent source match," 2015 European Microwave Conference (EuMC), Paris, France, 2015, pp. 730-733.

    Please can you clarify?

    Best regards
    James

    Michael Wollensack METAS

    unread,
    Jan 9, 2026, 4:55:29 AM (3 days ago) Jan 9
    to VNA Tools
    Hi,

    some of the methods assume that S31 = S13 and S21 = S12 but none of the methods assume S31 = S13 = S21 = S12.

    Regards
    Michael

    Mr Skinner

    unread,
    Jan 9, 2026, 12:13:03 PM (3 days ago) Jan 9
    to VNA Tools
    Hi Michael,

    Understood, perhaps the output signals do not have to be strictly equal, however as an example, for the case of a 10 dB directional coupler with good isolation, S23 is very small and so the 2-port method results for G (eq 5 in the paper) tend to reduce to S33, which is not the equivalent source match.

    Best regards
    James

    kim jeonghwan

    unread,
    Jan 10, 2026, 1:31:18 AM (2 days ago) Jan 10
    to VNA Tools
    Hi James,

    Even when G_eq tends to reduce to S33 (S23 goes to zero), it is the equivalent source match.

    Regards,

    Jeong Hwan Kim

    p.s. As for using a sliding load to measure the G_ge, it would be possible to use it e.g. above 2 GHz for Type-N case, if a circle fitting scheme can be applied for the measured data. 
    Actually I tried it and got it done long before even though I did not use the VNA tools and its scripts.

    2026년 1월 10일 토요일 AM 2시 13분 3초 UTC+9에 james....@live.com님이 작성:

    Tuomas Haitto

    unread,
    Jan 11, 2026, 1:35:12 PM (23 hours ago) Jan 11
    to VNA Tools
    Hi,

    I want to say my comment to this power splitter characterization in general. We must remember, that power splitters ports are very rarely
    perfectly symmetrical and more common issue especially some HP/Agilent/Keysight 11667A has poor connector repeatability. Even the splitter ports
    would chracterize very acccurately but when splitters using in the real life T&M enviroment when one port might connect various not well matched power sensors, cables etc
    those weakens power sensors balance. Better to think uncertainty of this in larger scale what devices connecting to the power spitter. 

    -Tuomas
    Reply all
    Reply to author
    Forward
    0 new messages