ZiadHatab / multiline-trl-calibration

VNA multiline Thru-Reflect-Line (TRL) calibration
BSD 3-Clause "New" or "Revised" License
8 stars 6 forks source link

question on mTRL #1

Closed IVANYYY closed 2 years ago

IVANYYY commented 2 years ago

Dear Dr. ZiadHatab, I was a bit confused about the de-embedding result of mTRL, where the results are different from simulation results of the transistor. To demonstrate that, I have experiment as follows: DUT1 is a transistor model with 50 micron transmission lines on both side terminals whereas DUT2 is a transistor model without transmission line. I used mTRL to de-embed DUT1 and compare the results with DUT2. The comparisons are illustrated as follow, where there are discrepancies between the results. Additionally, this discrepancies issue between de-embed result and orginal result is not reflected in your example3. Could you please tell me is there anything wrong with my process? You kind reply would be very helpful to me, thank you in advance.

ZiadHatab commented 2 years ago

Hi @IVANYYY

First of all, I'm no Dr., I'm still working on my PhD. Just call me with "@" handle...

Regarding your question, it is difficult to pinpoint the exact problem. I would need additional info.

Nonetheless, here are some possibilities for your issue:

  1. Is your DUT in the middle of the Thru line? Remember, my code calibrate in the middle of the Thru line, regardless its length. If its length is not zero, you need to offset the plane after calibration. My code already has a method for that:

    cal.run_tug() # after running the cal
    cal.shift_plane(-thru_length/2) # shift the cal plane (this will update the cal coefficients)
    cal.apply_cal(dut)
  2. The second possibility is the reference impedance. Remember, mTRL (or any TRL) calibrate to the characteristic impedance of your transmission line (TL). So, let say if your DUT model was generated with 50ohm ref. impedance, then you would need your TL to have exactly 50ohm characteristic impedance to get the same result. This is generally difficult to achieve if you are working with dispersive TL as microstrip lines (their characteristic impedance varies with frequency). If you already have knowledge of your TL impedance (as function of frequency), then you can re-normalize the calibration coefficients using the internal method my script provides:

    cal.run_tug() # after running the cal
    cal.renorm_impedance(Z_new, Z_old) 
    # Z_new is your new impedance, and Z_old is the current impedenace (both you need to provide)
    cal.apply_cal(dut)

Lastly, you asked why example 3 gives clean results. The answer is simple, because my Thru line was set to have zero length, and my DUT is a transmission line of the same type I used in the calibration. There is no need for impedance renormalization. But also, I set everything to have the same ref. impedance.

Anyways, I hope this gets you moving forward...