RF front-end simulation in Spectre
I am trying to simulate an RF front-end (LNA+VCO+MIXER) in order to get performances such as conversion gain, noise figure, etc.
If I simulate only the LNA+MIXER and use a Vsin to emulate the behavior of the VCO I can perform a PSS+PNOISE+PAC and get all the desired performances.
However, If i use the "real" VCO, which is an autonomous circuit, then the PSS does not work correctly:
- If I simulate the whole front-end and give the fundamental frequency, then it does not get the exact VCO frequency, and I cannot get the performances.
- If I simulate the whole front-end and the PSS is enable for autonomous circuits, then it simulates the entire front-end as an oscillator, and I cannot get the performances.
Can anyone help me with this issue?
Best Regards,
Fabio
Does your real VCO works well in PSS simulations ?
I warn you that the simulation which you intend to do is not an easy task.
Yes, all circuits function perfectly well all by themselves. I guess the performances should be calculated using other analysis, could that be the issue?
It should work.
Show us your situations correctly.
What do you want to mean ?
I mean that the conversion gain is -350dB and the noise figure is 350 dB. Which is clearly impossible since all circuits function as expected separately and the LNA+MIXER gives exactly the expected performances. I attach a figure of the test bench working. The VCO is substituted by a Vsin.
Here are the simulations using the Vsin (working example) and the simulations using the "real" VCO (a proper circuit with elements).
Such attachments figure don't have any useful information at all.
And you showed setting of driven HB-PSS.
Show me Netlist regarding analysis statements and signal sources for autonomous PSS.
// Library name: front_end
// Cell name: frontend
// View name: schematic
E0 (mixout\+ mixout\- net3 net02) vcvs gain=1.0
I44 (net06 net022 net019 net3 net02) MIXER
I15 (net016 net06) LNA
I16 (net019 net022) VCO
V0 (vdd! 0) vsource dc=2.5 type=dc
PORT_RF (net016 0) port r=50 num=1 type=dc freq=frf dbm=prf pacmag=1 \
fundname="frf1"
PORT_IF (mixout\+ mixout\-) port r=10K num=3 type=dc
ic net022=0.5
simulatorOptions options reltol=100e-3 vabstol=1e-6 iabstol=1e-7 temp=27 \
tnom=27 homotopy=all limit=delta scalem=1.0 scale=1.0 \
compatible=spice2 gmin=1e-12 rforce=1 maxnotes=5 maxwarns=5 digits=5 \
cols=80 pivrel=1e-3 sensfile="../psf/sens.output" checklimitdest=psf \
enable_pre_ver=yes ignorezerovar=yes
pss ( net022 net019 ) pss flexbalance=yes oversamplefactor=2
+ fund=2.53G harms=4 errpreset=conservative tstab=50n saveinit=yes
+ oscic=lin oscmethod=onetier maxstep=0.01n ic=all
+ tstabmethod=gear2only relref=allglobal annotate=status
pac pac relharmnum=1 start=2.45G stop=2.49G annotate=status
pnoise pnoise sweeptype=absolute start=1M stop=10M
+ oprobe=PORT_IF iprobe=PORT_RF refsideband=1 separatenoise=yes
+ annotate=status
Harmonic numbers, 4 are too few.
I recommend it more than 15.
Show me simulation logfile.
What message is there?