Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

(Understanding) Problem: Load-Pull in Cadence/Virtuoso

Status
Not open for further replies.

Dr. von Rosenstein

Member level 1
Joined
Feb 22, 2011
Messages
41
Helped
1
Reputation
2
Reaction score
1
Trophy points
1,288
Activity points
1,701
Hi,

if I understand this right, then Load-Pull means, that a load with a tunable impedance is connected to the output of a circuit (for example an amplifier). Then this impedance is varied and the power which is delivered to this load is observed. If this power is at its maximum, the corresponding impedance is the complex conjugated of the output-impedance of the actual circuit (the amplifier). Is this right?

The same method should work to find the input-impedance of a circuit (Source-Pull?).

I read in the "SpectreRf Workshop" PDF about "Power Amplifier Design Using SpectreRf" the chapter about "Load-Pull Measurements". I simulated the example circuit and everything was fine.

My goal is to find the input-impedance of a simple rectifier (the impedance, at which the output-DC-voltage is at its maximum).



This is the analyses form:




And this is the properties form of the port:




The variables:




If I do a normal hb- oder pss-simulation (normal means: no load-pull) the simulation results are as expected.



But with activated load-pull, the port delivers always 0 W (RFIN is in the order of E-171 V).




What am I doing wrong?
I tested this with only an inductor instead of the rectifier. Same result: without load-pull everything is fine, with load-pull everything is zero.

Additional question: Can anyone explain me, why I have to fill in 50 Ohm? At 3 places: Z0 in the analyses form, resistance in the port-properties, r0 in the variables. I thougt, that the impedance is varied. But where are these 50 Ohms used?

Please help me!
Thank you!
Sascha
 
Last edited by a moderator:

If this power is at its maximum,
the corresponding impedance is the complex conjugated of the output-impedance of the actual circuit (the amplifier).
Is this right?
Right.

The same method should work to find the input-impedance of a circuit (Source-Pull?).
Correct.

But with activated load-pull,
the port delivers always 0 W (RFIN is in the order of E-171 V).
What am I doing wrong?
Show me Spectre's netlist.

why I have to fill in 50 Ohm?
At 3 places:
Z0 in the analyses form,
resistance in the port-properties,
r0 in the variables.
If you don't use r0, you don't have to define r0 as design variable.
As far as you do load-pull correctly, resistance in the port-properties will be ignored.
Z0 in the analyses form is actually used in Z0 in load-pull analysis.
 

Hi,

if I understand this right, then Load-Pull means, that a load with a tunable impedance is connected to the output of a circuit (for example an amplifier). Then this impedance is varied and the power which is delivered to this load is observed. If this power is at its maximum, the corresponding impedance is the complex conjugated of the output-impedance of the actual circuit (the amplifier). Is this right?

The same method should work to find the input-impedance of a circuit (Source-Pull?).

I read in the "SpectreRf Workshop" PDF about "Power Amplifier Design Using SpectreRf" the chapter about "Load-Pull Measurements". I simulated the example circuit and everything was fine.

My goal is to find the input-impedance of a simple rectifier (the impedance, at which the output-DC-voltage is at its maximum).

What am I doing wrong?
I tested this with only an inductor instead of the rectifier. Same result: without load-pull everything is fine, with load-pull everything is zero.

Additional question: Can anyone explain me, why I have to fill in 50 Ohm? At 3 places: Z0 in the analyses form, resistance in the port-properties, r0 in the variables. I thougt, that the impedance is varied. But where are these 50 Ohms used?

Please help me!
Thank you!
Sascha

The impedance which you have found by applying Load-Pull technique is NOT the complex conjugate of the output impedance of actual circuit.Optimum impedance is generally pretty different than complex conjugate of the output impedance of the circuit.Load Pull technique is very useful for Power Amplifiers and it's generally measured and simulations are pretty far from the reality due to model inconsistencies,uncertainties and rough model approximations.

I guess you're trying to find Input and Output Impedances under large signal conditions.In order to do this, you may try some simulation techniques such as PSS, HB or LSSP.They will give you a right aspect for your circuit.
 
Show me Spectre's netlist.


Code dot - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// Generated for: spectre
// Generated on: Jul 20 11:10:32 2016
// Design library name: RFworkshop
// Design cell name: EF_example_loadpull
// Design view name: schematic
simulator lang=spectre
global 0
parameters pin=0 fin=1G theta=0 r0=50 mag=316.7m
include "/data/wms_hf_u/ghz_rfid/v2/cadence/TECH/tsmcN90rf//../models/spectre/toplevel.scs" section=tt_lib
include "/homes/lischer/diode.scs"
 
// Library name: RFworkshop
// Cell name: EF_example_loadpull
// View name: schematic
C4 (net2 RFIN) capacitor c=10p
C5 (RFOUT 0) capacitor c=10p
D5 (net2 RFOUT 0) sbd_rf w=4u l=2u nf=1 m=1
D4 (0 net2 0) sbd_rf w=4u l=2u nf=1 m=1
PORT1 (RFIN 0) port r=50 num=1 type=sine freq=fin dbm=pin fundname="RF"
simulatorOptions options reltol=1e-3 vabstol=1e-6 iabstol=1e-12 temp=27 \
    tnom=27 scalem=1.0 scale=1.0 gmin=1e-12 rforce=1 maxnotes=5 maxwarns=5 \
    digits=5 cols=80 pivrel=1e-3 sensfile="../psf/sens.output" \
    checklimitdest=psf 
lphb  loadpull  inst=PORT1  rho=mag  rhostart=0  rhostop=990m
+     rhostep=110m  phi=theta  phistart=-180  phistop=160  phistep=20
+     z0=50  {
  hb  hb  autoharms=yes  autotstab=yes  oversample=[1]
+   fundfreqs=[(1G)]  maxharms=[5]  errpreset=conservative  annotate=status
 
}
 
modelParameter info what=models where=rawfile
element info what=inst where=rawfile
outputParameter info what=output where=rawfile
designParamVals info what=parameters where=rawfile
primitives info what=primitives where=rawfile
subckts info what=subckts  where=rawfile
save PORT1:p RFIN RFOUT 
saveOptions options save=allpub currents=all



If you don't use r0, you don't have to define r0 as design variable.

The r0 variable was defined in the SpectreRf Workshop Example. It is indeed unnecessary.

Z0 in the analyses form is actually used in Z0 in load-pull analysis.

This I don't understand. Where is this Z0 needed during the load-pull simulation? Is it maybe only needed as scaling factor for the smith-charts?



The impedance which you have found by applying Load-Pull technique is NOT the complex conjugate of the output impedance of actual circuit.Optimum impedance is generally pretty different than complex conjugate of the output impedance of the circuit.Load Pull technique is very useful for Power Amplifiers and it's generally measured and simulations are pretty far from the reality due to model inconsistencies,uncertainties and rough model approximations.

I guess you're trying to find Input and Output Impedances under large signal conditions.In order to do this, you may try some simulation techniques such as PSS, HB or LSSP.They will give you a right aspect for your circuit.

I have to design a rectifier which acts as power source for a RFID-Transponder. The circuit in the picture in my first post was a simplification. Until now I used pss-simulations and different calculations to determine the impedance of the rectifier. For example Ohm's law:

harmonic(((-1 * vh('pss "/port0_plus")) / ih('pss "/PORT0/PLUS")) 1)

Or I used the magnitudes and phases of the input voltage and current:

complex(((ymax(vtime('pss "/port0_plus")) / ymax((-1 * itime('pss "/PORT0/PLUS")))) * cos((harmonic((phaseRad(vh('pss "/port0_plus")) - phaseRad(ih('pss "/PORT0/PLUS"))) 1) + pi))) ((ymax(vtime('pss "/port0_plus")) / ymax((-1 * itime('pss "/PORT0/PLUS")))) * sin((harmonic((phaseRad(vh('pss "/port0_plus")) - phaseRad(ih('pss "/PORT0/PLUS"))) 1) + pi))))

The impedance value is needed to design an antenna for the RFID-Transponder. But I think, that a impedance matched system is not optimal. A larger R in the antenna results in a larger voltage amplitude, which is better for the diodes. I want to test, if this leads to an higher DC-Voltage at the output of the rectifier. I tried to use a simple variable sweep to run pss-simulations with different R-values. But many of these simulations didn't run because of converge problems. Therefore I thought, that the load-pull-method is better to simulate the rectifier with different impedances in the port (which acts as an equivalent for the antenna).
I hope you understand what I am trying to say (sorry for my bad english)!

- - - Updated - - -

I have an additional question:
In the "SpectreRf Workshop" PDF about "Power Amplifier Design Using SpectreRf", in the chapter about "Load-Pull Measurements" they simulated this circuit:



[from https: // stra . to /ap/9QlOaYtv/s/ b0fb15d06cd893ac5a9e392cd8fe5e12/ example.jpg[/IMG]

In the Analyses-Form, PORT2 is the used Load Instance.

But in the Properties-Form of PORT2, "dc" is choosen as "Source Type". Why?
PORT1 is "sine". That means, that RFIN is a sine-signal and therefore RFOUT is also a sine-signal.
Why is PORT2 not "sine" as "Source Type"?

I am confused!
 
Last edited by a moderator:

The impedance which you have found by applying Load-Pull technique is NOT the complex conjugate of the output impedance of actual circuit.
Optimum impedance is generally pretty different than complex conjugate of the output impedance of the circuit.
Wrong.
How do you measure an output impedance ?

S22 of LSSP or S22 of VNA(Vector Network Analyzer) at large signal drive level can never be appropriate for actual operation, since these are evaluated by reverse direction driving.

There is no direct method to measure output impedance at forward driving condition.

LoadPull is actually used for estimating output impedance even in actual measurement using actual instruments.

I guess you're trying to find Input and Output Impedances under large signal conditions.
In order to do this, you may try some simulation techniques such as PSS, HB or LSSP.
They will give you a right aspect for your circuit.
Can you understand a definition of S22 in LSSP ?

This can never be appropriate for actual operation, since it is evaluated by reverse direction driving.

PSS is a generic name which means both HB and Shooting-Newton.
And LSSP is no more than PSS.
LoadPull simulation is also PSS.

Load Pull technique is very useful for Power Amplifiers and it's generally measured and simulations are pretty far from the reality due to model inconsistencies,uncertainties and rough model approximations.
Can you understand LoadPull Simulation ?
It is no more than PSS such as HB or Shooting-Newton.
So such issues are true for any simulation techniques.

Important point is a driving direction.
LSSP is a reverse driving.
On the other hand, LoadPull is a forward driving direction.

BTW, S22 of PSS/PSP in Cadence Spectre give small siganl S22 at forward large signal driving.
 
OK, I understood why LoadPull is the better method to determine the output impedance than simulating or measuring Large Signal S22. But what about my problem regarding the simulation of the input impedance? Why is RFIN (nearly) 0 V?

And why is a DC-type PORT used at the output in the Spectre example?
 

This I don't understand.
Where is this Z0 needed during the load-pull simulation?
Is it maybe only needed as scaling factor for the smith-charts?
No.
Z=Z0*(1+Gamma)/(1-Gamma), Here Z can be Zload or Zsource
Gamma=rho(Z)*exp[j*phi(Z)]

So Z0 is needed to determine Z.

Notations in GUI of Cadence ADE are improper or wrong.
rho(Z) and phi(Z) should be corrected to rho(Gamma) and phi(Gamma).

In the Analyses-Form, PORT2 is the used Load Instance.
But in the Properties-Form of PORT2, "dc" is choosen as "Source Type".
Why?
It is because PORT2 is load.
Driving direction of Loadpull is forward not reverse.

PORT1 is "sine".
That means, that RFIN is a sine-signal
Right.

and therefore RFOUT is also a sine-signal.
Wrong.

Why is PORT2 not "sine" as "Source Type"?
It is because PORT2 is load.
Driving direction of Loadpull is forward not reverse.

My goal is to find [color]the input-impedance of a simple rectifier[/color] (the impedance, at which the output-DC-voltage is at its maximum).
Your previous goal is different from the following.
Therefore I thought, that the load-pull-method is better to simulate the rectifier with different impedances in the port (which acts as an equivalent for the antenna).
You should do SourcePull Simulation.

The same method should work to find the input-impedance of a circuit (Source-Pull?).
Correct.
Sorry, this is wrong.
Source-Pull determines output-impedance of driving source signal.

And why is a DC-type PORT used at the output in the Spectre example?
If you would like to sweep load impedance, you have to set "type=dc" for "analogLib/port".
Code:
PORT2 (RFout 0) port num=2 type=dc
lphb  loadpull  inst=PORT2
+  rho=mag  rhostart=0  rhostop=990m  rhostep=110m
+  phi=theta  phistart=-180  phistop=160  phistep=20
+  z0=50  {
  hb  hb  autoharms=yes  autotstab=yes  oversample=[1]
+   fundfreqs=[(1G)]  maxharms=[5]
+   errpreset=conservative  annotate=status
}

If you would like to sweep source impedance, you have to set "type=sine" for "analogLib/port".
Code:
PORT1 (RFin 0) port r=50 num=1 type=sine freq=fin dbm=pin fundname="RF"
lphb  loadpull  inst=PORT1
+  rho=mag  rhostart=0  rhostop=990m  rhostep=110m
+  phi=theta  phistart=-180  phistop=160  phistep=20
+  z0=50  {
  hb  hb  autoharms=yes  autotstab=yes  oversample=[1]
+   fundfreqs=[(1G)]  maxharms=[5]
+   errpreset=conservative  annotate=status
}

However driving direction is forward for both cases.
 

What version of Cadence Spectre do you use ?

If I do a normal hb- oder pss-simulation (normal means: no load-pull)
the simulation results are as expected.
But with activated load-pull,
the port delivers always 0 W (RFIN is in the order of E-171 V).
But what about my problem regarding the simulation of the input impedance?
Why is RFIN (nearly) 0 V?
It seems that Cadence Spectre always treats "port with type=dc" regardless of actual "type" if it is specified in Loadpull setting.
So Cadence Spectre can not Source-Pull if you use "port with type=sine".

As workaround, try to invoke combination of "portAdapter" and "port with r=50 type=sine".
Here "port with r=50 type=sine" is required to set driving signal source.
 

Attachments

  • 160723-185454.png
    160723-185454.png
    165.2 KB · Views: 207
Last edited:

As workaround, try to invoke combination of "portAdapter" and "port with r=50 type=sine".
Here "port with r=50 type=sine" is required to set driving signal source.

I am going crazy! I tried this and I see a sinus-signal at the net between the Port and the PortAdapter and at the net between the PortAdapter and the circuit. Good! BUT: I there is no sweep! It is always the same sinus-signal! For all rho(Gamma) and phi(Gamma)! It only depends on the values for rho(Gamma) and phi(Gamma) which I set at "Global Variables"! Yes, I have selected the PortAdapter as "Load Instance" in the Choosing Analyses form!

No.
Z=Z0*(1+Gamma)/(1-Gamma), Here Z can be Zload or Zsource
Gamma=rho(Z)*exp[j*phi(Z)]

So Z0 is needed to determine Z.

OK, that was what I mean with "scaling factor". If I want to measure the real circuit using a 75 Ohm System, than I should type 75 into the "Choosing Analyses" form so that I can compare the simulation results with the measurements. Right?

Quote Originally Posted by Dr. von Rosenstein View Post
My goal is to find [color]the input-impedance of a simple rectifier[/color] (the impedance, at which the output-DC-voltage is at its maximum).

Your previous goal is different from the following.

Quote Originally Posted by Dr. von Rosenstein View Post
Therefore I thought, that the load-pull-method is better to simulate the rectifier with different impedances in the port (which acts as an equivalent for the antenna).


Well, maybe I used the wrong words.
There is an antenna which receives a CW-Signal. This antenna is connected to the rectifier and this rectifier delivers a DC-Voltage at its output.
Until now we simulated (and measured) the input impedance of the rectifier. With the complex conjugated of this impedance, the antenna was designed. But I think, that the DC-Voltage would be higher, if we use an impedance with a higher real-value. Therefore I would like to do a SourcePull-Simulation with a sweep over an area around the input impedance. And than I look at the achieved DC-Voltage-Values to find the "optimal" impedance. Sorry for my bad english, I hope it is clear now.

Quote Originally Posted by pancho_hideboo View Post
Quote Originally Posted by Dr. von Rosenstein View Post
The same method should work to find the input-impedance of a circuit (Source-Pull?).
Correct.

Sorry, this is wrong.
Source-Pull determines output-impedance of driving source signal.

This I don’t understand. SourcePull varies the impedance (of the power-source) which is seen by the input of the circuit. Right? If one looks at the power which is delivered to the circuit, one can find a maximum of that power. I thought, that the corresponding impedance-value which leads to that power-maximum, should be the input-impedance of the circuit. Is this wrong?

Quote Originally Posted by Dr. von Rosenstein View Post
In the Analyses-Form, PORT2 is the used Load Instance.
But in the Properties-Form of PORT2, "dc" is choosen as "Source Type".
Why?

It is because PORT2 is load.
Driving direction of Loadpull is forward not reverse.

The input signal of the Spectre Example has a frequency of 1 GHz. So, the output signal has also a frequency of 1 GHz plus some harmonics. I thought, that to do a LoadPull-Simulation, one has to vary the impedance/Gamma at the frequency, one is interested in. Therefore a sin-type Port is needed, because dc-type can only dc. That I thought and that is the reason why I am confused.
 

I am going crazy!
.....................................
Yes, I have selected the PortAdapter
as "Load Instance" in the Choosing Analyses form!
I can not understand what you want to mean at all.

OK, that was what I mean with "scaling factor".
No.
It is a reflection coefficient.

If I want to measure the real circuit using a 75 Ohm System, than I should type 75 into the "Choosing Analyses" form so that I can compare the simulation results with the measurements. Right?
Right.

SourcePull varies the impedance (of the power-source) which is seen by the input of the circuit.
Right?
Right.

If one looks at the power which is delivered to the circuit, one can find a maximum of that power.
I thought, that the corresponding impedance-value which leads to that power-maximum,
should be the input-impedance of the circuit.
Is this wrong?
Zin should be equal to complex_conjugate(Zsource).

The input signal of the Spectre Example has a frequency of 1 GHz.
So, the output signal has also a frequency of 1 GHz plus some harmonics.
Right.

I thought, that to do a LoadPull-Simulation, one has to vary the impedance/Gamma at the frequency, one is interested in.
Right.

Therefore a sin-type Port is needed, because dc-type can only dc.
Wrong.

That I thought and that is the reason why I am confused.
Simply you can not understand spectre primitive "port" at all.

"port of type=dc" is no more than "resistor".

On the other hand, "port of type=sine" is equivalent to combination of "vsource of type=sine" and "resistor".
 
Last edited:

Quote Originally Posted by Dr. von Rosenstein View Post
I am going crazy!
.....................................
Yes, I have selected the PortAdapter
as "Load Instance" in the Choosing Analyses form!

I can not understand what you want to mean at all.

I wanted to say, that I have not forgotten to set the PortAdapter as "Load instance" in the "Choosing Analyses" form. Until yesterday, PORT1 was the Load Instance in this form, now it is the PortAdapter.

Quote Originally Posted by Dr. von Rosenstein View Post
OK, that was what I mean with "scaling factor".

No.
It is a reflection coefficient.

Z0 is a reflection coefficient?

Quote Originally Posted by Dr. von Rosenstein View Post
If one looks at the power which is delivered to the circuit, one can find a maximum of that power.
I thought, that the corresponding impedance-value which leads to that power-maximum,
should be the input-impedance of the circuit.
Is this wrong?

Zin should be equal to complex_conjugate(Zsource).

Which Zsource? Zsource is swept during LoadPull! Do you mean the Zsource-Value, at which the maximum power is delivered from the source to the circuit? If yes, than this is exactly, what I tried to say yesterday.

Simply you can not understand spectre primitive "port" at all.

Yes, this is true! Since 3 years I am searching for an detailed documentation of that device. There are still some things that I haven't understood. But step by step I understand more and more. Thanks to you!



 

Until yesterday,
PORT1 was the Load Instance in this form, now it is the PortAdapter.
Do you mean you can now resolve the following issue ?
But with activated load-pull,
the port delivers always 0 W (RFIN is in the order of E-171 V).

Z0 is a reflection coefficient?
No.
Z0 is a reference impedance value.

Do you mean the Zsource-Value, at which the maximum power is delivered from the source to the circuit?
Yes.
 

Do you mean you can now resolve the following issue ?

With PORT1 as "Load Instance" I had the problem with "the port delivers always 0 W (RFIN is in the order of E-171 V)." With PortAdapter this problem is solved!

On Monday I wrote:

I am going crazy! I tried this and I see a sinus-signal at the net between the Port and the PortAdapter and at the net between the PortAdapter and the circuit. Good! BUT: I there is no sweep! It is always the same sinus-signal! For all rho(Gamma) and phi(Gamma)! It only depends on the values for rho(Gamma) and phi(Gamma) which I set at "Global Variables"! Yes, I have selected the PortAdapter as "Load Instance" in the Choosing Analyses form!

I don't know what I did wrong on Monday, but today everything seems alright. But there is another strange thing: It seems as if the orientation of the PortAdapter doesn't matter! I simulated these two circuits:

Schaltung1.jpg

Schaltung2.jpg

And that are the results:

Graphen1.jpg

Graphen2.jpg

Both orientations leads to the same results! Can you explain this? What would you say is the right orientation for the use of the PortAdapter as SourcePull-Device? The pin on the side with the green arrow is named "out" and the pin on the side with the wort "Port" is named portPin. But the direction of the green arrow is is irritating!

If I compare RFIN with RFIN2 at mag=0, then I would expect, that both are the same. Because mag=0 means, that there is no reflection and this means, that both pins of the PortAdapter are at the same impedance (50 Ohm). Right? But RFIN has an Amplitude of about 524 mV and RFIN2 of about 466 mV! Do you have an idea why?

Another thing I don't understand is (maybe this is a very dumb question): Why is RFIN dependend on mag and theta? In the PORT1 properties "Amplitude 1 (dBm)" is 0. Resistance is 50 Ohm. And the load which is presented to the Port by the PortAdapter is also 50 Ohm. In other words: The power is always the same and the load is always the same. Why is the Signal not always the same?
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top