I have two questions regarding the phase noise simulation results (PSS + Pnoise) for ring oscillators:
(1) How much the precision of the initial oscillation frequency is important in estimating phase noise ?
(2) The results that I get for the phase noise seems a bit high. I feel there is a shift up in all the frequencies. In very low frequencies (close to carrier) the phase noise is largely positive. Comparing with the analysis presented in [Abidi, JSSC 2006] the phase noise sounds very high. Does someone has any idea that what could be wrong?
The ring oscillator designed to oscillate at 2.4 GHz using CML gates with a tail bias current of about 200 uA.
Thanks in advance for your help.
What version of the simulator are you using? Have you tried turning on "lorentzian" on the pnoise options form?
In reply to Andrew Beckett:
In reply to Ayrin:
In reply to realf:
Coming back to the issue of phase noise simulation for a ring oscillator, I have seen again the two following issues:
(1) for a differential ring oscillator, the simulated phase noise at 1 MHz offset is just very high (about 0 dBC/sq.Hz). I don't think this is correct. Here I introduce /voutp and /voutn as the outputs of the oscillator in the pnoise simulation table.
(2) when I redo the simulation and introduce the outputs in the pnoise simulation table as: /voutp and /gnd!, then the simulated phase noise goes done by about 100 dB ! Now this one sounds to me like a very good number, much better than the expected !
Do you have any suggestion for a reliable simulations ?
Customer Support Director - Analog/Mixed-Signal/RF AEs
Cadence Design Systems, Inc.
Still not enough info to go on. Can you contact customer support instead so you can provide all the necessary information to understand what you're doing? Did you use a more recent version of the simulator? (I'm a bit surprised lorenzian wasn't there with MMSIM72, so something sounds a bit strange in your setup; maybe it was a very early MMSIM72 version - I can't quite remember when it was introduced).
Either way, I'm not sure if that's what your problem is.
Thanks for your reply!
The version of the tool I am using is: IC6.1.5 and for MMSIM it is 7.2.
I set no special option: PSS (shoting method) pluse PNOISE. The oscillator is a ring oscillator with CMOS inverter type of delay elements. To make it differential, there is a weak cross-coupled between each two differential nodes.
As I mentioned, the phase noise improves by about 100 dB when I set the output in PNOISE simulation /voutp and /gnd!. If I select the output as /voutp and /voutn, the reported phase noise is very bad.
In reply to Tawna:
Thanks for your support. Here is the option section of my setup:
analysis('pss ?fund "1.5e9" ?harms "20" ?errpreset "conservative" ?oscana t ?p "/xp<1>" ?n "/gnd!" ?ppv "" )analysis('pnoise ?sweeptype "relative" ?relharmnum "1" ?start "1e3" ?stop "1e7" ?dec "11" ?maxsideband "40" ?p "/xp<1>" ?n "/gnd!" ?oprobe "" ?iprobe "" ?refsideband "" )
option( ?categ 'turboOpts 'uniMode "APS" )
In reply to smlogan:
There are a number of things which are incorrect in your reply, Shawn.
First of all, it always uses the initial transient as a starting point for the shooting interval (the analysis was set up to use shooting because that's the default), regardless of whether you specify tstab. With an oscillator it uses a small number of cycles of the estimated frequency (4, from memory) for this initial transient which is usually not enough for the oscillation to have built up significantly.
Note that for the Shooting Newton method the initial transient does not need to be fully settled - the algorithm can find the settled steady state itself. However, generally you need to be close to the settled response - ideally past any non-linear startup behaviour.
Setting maxstep is not necessary for accuracy - because maxstep is controlled during the shooting interval to be (depending on errpreset and other settings) 5 points per period of maxacfreq, which is set to 4 times the highest harmonic requested, or 40 if fewer than 10 harmonics are requested (so at least 200 points per period, more if higher harmonics are requested). However, this does not apply to the tstab part of the simulation - there is often benefit in setting maxstep to ensure that the oscillator can build up oscillation more quickly - if there are too few points, the oscillation simulation may take a longer time to start. The lack of a driving signal in the circuit tends to result in increased numerical error and limiting the maxstep helps to mitigate that (without going into too much detail as to why).
If the circuit is a more linear oscillator (or high Q) such as a LC tank or crystal oscillator, you may want to try setting the oscic=lin option for the simulation. This can help speed up the starting of the oscillator.
So overall the advice to use maxstep was a good idea, but for the wrong reasons...
A couple of things - ADE (and OCEAN) forces you to set errpreset (to make you consciously think about it with PSS), but if running a spectre netlist it defaults to liberal, and even with liberal you'll get maxstep set to 1/50th of the period (during the shooting interval). See "spectre -h pss" in the sections on errpreset in the descriptive part after the parameter listing for more details. This will happen even if I don't specify the number of harmonics or even set it to 0...
Even with tstab set, it does seem to set maxstep automatically to 25 points per period in during the tstab (I didn't do an exhaustive test - only with a driven circuit), so I think the need to set maxstep is much less necessary now - but still may be beneficial to aid startup of the oscillator.
Hello Smlogan and Andrew,
Thank you very much for your replies and hints. I will try again with the new settings and will report the results. However in general it seems to me very strange that the results are so much better when I select only one of the two outputs of the differential ring oscillator as the ouptut node in the pnoise simulation. Compared to the case that I select the differential outputs in the pnoise analysis, the difference is very large.