The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl
Design Languages >> Verilog-AMS >> phase noise - jitter relationship
https://designers-guide.org/forum/YaBB.pl?num=1126611641

Message started by svensl on Sep 13th, 2005, 4:40am

Title: phase noise - jitter relationship
Post by svensl on Sep 13th, 2005, 4:40am

Hello All,

I would like to become more familiar with phase noise / jitter in VCOs and thus use the models given for a VCO with jitter from the VerilogAMS section. However, I still have some questions about the validity of these models. Any feedback is greatly appreciated.
From reading Ken’s paper on noise in PLLs I know that the derived equations to related phase noise to jitter are only valid in the absence of 1/f noise. So naturally my first question is:
1.) What happens when 1/f noise is present as it is in real circuits? Are the models still valid then?
2.) When simulating a circuit implementation of a VCO with SpectreRF (pnoise) and finding the noise at a given offset frequency to obtain the value for c, does the phase noise not already include 1/f noise since it is inherent to mosfets?
3.) When wanting to include flicker and thermal noise as well, is it valid to add “flicker_noise(n,2,”wpn”) + flicker_noise(n*fc,3,”fpn”)” to the VerilogA code
“phase = 2*`M_PI*idtmod(freq, 0.0, 1.0, -0.5);”? I am asking since when I do so in VerilogA, it does not change the phase for any values of n and fc. In fact the term “flicker_noise(n,2,”wpn”) + flicker_noise(n*fc,3,”fpn”)” is always zero.

Thanks
Svensl

Title: Re: phase noise - jitter relationship
Post by Ken Kundert on Sep 13th, 2005, 8:50am

1. Flicker noise is problematic in that most jitter metrics are undefined in the presence of flicker noise.
2. You should choose to compute c at a frequency where flicker noise is negligible.
3. The flicker_noise function produces a non-zero onlyl during the small-signal noise analyses. During large signal analyses it always produces zero. So that any way that you have of observing its output will always give zero unless you observe it indirectly by looking at the output of a noise analysis. You can view the contributed noise summary produced by the noise analysis to confirm that it is operating properly.

-Ken

Title: Re: phase noise - jitter relationship
Post by tumeda on Sep 14th, 2005, 4:38am

Dear Ken,
I have a question about the offest frequency selection!
In page 31 of the paper, your suggestion is the offset frequency "detaf"  should be selected as fc<detaf<f0, then the jitter of VCO(form 78,79) should be well calculated.
For different selections of detaf in this region, the value of Jvco should be same, because they present a jitter value for a same VCO circuit. But these values look like some different.  ???


Title: Re: phase noise - jitter relationship
Post by Ken Kundert on Sep 14th, 2005, 9:14am

What is causing the difference?

-Ken

Title: Re: phase noise - jitter relationship
Post by svensl on Sep 14th, 2005, 9:54pm


Ken Kundert wrote on Sep 13th, 2005, 8:50am:
1. Flicker noise is problematic in that most jitter metrics are undefined in the presence of flicker noise.
2. You should choose to compute c at a frequency where flicker noise is negligible.
3. The flicker_noise function produces a non-zero onlyl during the small-signal noise analyses. During large signal analyses it always produces zero. So that any way that you have of observing its output will always give zero unless you observe it indirectly by looking at the output of a noise analysis. You can view the contributed noise summary produced by the noise analysis to confirm that it is operating properly.

-Ken



How then would I include flicker noise in a transient simulation to see its effect in the time domain?

Cheers,

Title: Re: phase noise - jitter relationship
Post by Ken Kundert on Sep 14th, 2005, 10:14pm

You could use Verilog-A to create a large-signal white noise source and then pass the output through a fracpole with a slope of 1/2.

-Ken

Title: Re: phase noise - jitter relationship
Post by svensl on Sep 15th, 2005, 4:29am

Excellent idea, thanks Ken.

Title: Re: phase noise - jitter relationship
Post by svensl on Sep 17th, 2005, 7:14am

I just tried doing a pnoise analysis of the VCO including flicker and white noise as described below.
When plotting the phase_noise button I do not obtain the expected curve with 1/f^2 and 1/f^3 regions. Instead it is just a flat response at some dB value.
What might be the problem?

   freq = f0+Kvco*V(in);
   phase = 2*`M_PI*idtmod(freq, 0.0, 1.0, -0.5);
   phase = phase +  flicker_noise(n,2,"wpn") +                        
   flicker_noise(n*fc,3,"fpn");

I choose a c value of 82e-21, f0=1.1Ghz, and thus n=0.2 according eq. 29 in your paper "predicting noise in plls".

Here is how I configure the analysis.
pss  (out  0)  pss  fund=6e6  harms=3  errpreset=moderate tstab=120n  annotate=status
pnoise  (out  0)  pnoise  sweeptype=relative  relharmnum=1 start=1  stop=10M  log=100  maxsideband=15  annotate=status

Thanks,
svensl

Title: Re: phase noise - jitter relationship
Post by Ken Kundert on Sep 17th, 2005, 8:56am

You have given too little of the model for me to be able to help you. However, if you have my Verilog-AMS book, you might want to take a look at section 3.3 in appendix A (page 247-248). It talks briefly about modeling phase in Verilog-A.

-Ken

Title: Re: phase noise - jitter relationship
Post by svensl on Sep 18th, 2005, 12:29am

Ken,
I had a look at the section in your book and modified my code as given below. However, I still obtain only a flat phase noise response. The model is as follows:

`include "disciplines.vams"
`include "constants.vams"
module sdvcoct (out, in);
input in; voltage in;                  
output out; voltage out;            
parameter real f0=1e6;
parameter real Kvco=50e5;
real freq, phase;
parameter real period=2.56e6;
parameter real n =0.2 from [0:inf);      
parameter real fc = 1e6  from [0:inf);  
analog begin
   freq = f0+Kvco*V(in);
   phase = 2*`M_PI*idtmod(freq, 0.0, 1.0, -0.5);
   V(out) <+ sin(phase) + flicker_noise(n,2,"wpn") +    
   flicker_noise(n*fc,3,"fpn");
end
endmodule

The VCO gain is set to 50e5 and the freq. to 1e6. The control voltage is set by a dc source (1V).
I choose a PSS analysis first with beat freq. 6e6, no. of harmonics 3, accuracy moderate, tstab 120n, check the oscillator button, choose vout and gnd! for the output node.
The pnoise analysis has sweeptype relative (harmonic 1), freq. range 1 to 10M, scale logarithmic with 100 steps, max. sidebands 15, and the pos. output node being out and the negative being gnd!.
When plotting I choose the main form, choose pnoise, and then the phase noise button.
Any ideas what might be wrong?
Cheers

Title: Re: phase noise - jitter relationship
Post by Ken Kundert on Sep 18th, 2005, 5:42pm

The model you are using should produce noise with a -3 and then a -2 slope on a log-log graph, but it is simply additive noise, not phase noise. Why it is not doing that must have something to do with the warning message that indicates that the results will be inaccurate. I don't know why you are getting that message.

-Ken

Title: Re: phase noise - jitter relationship
Post by svensl on Sep 18th, 2005, 11:19pm

Ken,

There is a warning saying that:
The Floquet eigenspace computed by Virtuoso(R) Spectre(R) PSS analysis appears  to be inaccurate. PNOISE computations may be inaccurate. Consider re-running the simulation with smaller reltol and `method=gear2only'.
I tried changing the settings for reltol and method but without any change. I saved the netlist to strip it down to:
simulator lang=spectre
global 0
ahdl_include "/home/sven/cadence/AHDL_CODE/VCO/veriloga/veriloga.va"
parameters crtl=1
V0 (net2 0) vsource dc=crtl pacmag=1 type=dc
I0 (out net2) sdvcoct
pss  (out  0)  pss  fund=1e6  harms=3  errpreset=conservative tstab=120n  reltol=1e-8 maxstep=1e-8 method=gear2only
pnoise  (out 0)  pnoise  sweeptype=absolute  start=1 stop=10M  log=500  maxsideband=15
saveOptions options save=allpub

But still no change in the output. I then switched from Spectre Version 5.1.0 05/24/2004 to Version 5.0.0 09/23/2003 and it works!
I still get the same warning, but the result is as expected. I did not change anything in the netlist or the veriloga model. Just a change in the Version. Why do I keep getting wrong results with the newer version of spectre? Please see also
http://www.designers-guide.org/Forum/?board=circuit;action=display;num=1123917954
I still have not solved that problem as well.

Any thoughts?
Thanks so much for any feedback.

Title: Re: phase noise - jitter relationship
Post by svensl on Sep 18th, 2005, 11:44pm

I asked a friend who has access to version 5.1.0 06/14/2005 to test the netlist there and it works fine there. So what's the difference to 5.1.0 05/24/2004?

Title: Re: phase noise - jitter relationship
Post by Andrew Beckett on Sep 19th, 2005, 8:56pm

From doing a quick search, it may have been due to this PCR (I'm not certain):

   PCR: 713247
 Title: white_noise does not work with integer argument

The second argument to your flicker_noise function is an integer (try making it a real by adding ".0" onto the end?) and that might be confusing the compiler. Anyway, it was fixed in an ISR soon after the CD version was released. The same bug was in IC5033 too. Sometimes bugs creep in, of course...

Try using IC5141 USR2 - or using the latest MMSIM60 simulator release (put MMSIM60 at the beginning of your path, in conjunction with IC5141 USR2, to get the latest version of spectre). If you use MMSIM60 you have access to a transient noise analysis too (with the usual warnings about the fact that these analyses are best for qualitative analysis of noise behaviour rather than quantatitive analysis, well, unless you run with the noise bandwidth set high enough and run the simulation for a very long time).

Regards,

Andrew.

Title: Re: phase noise - jitter relationship
Post by svensl on Sep 19th, 2005, 11:11pm

Andrew,

Avoiding integer numbers as given below the model works fine now. Thanks for the tip.
V(out) <+ sin(phase) + flicker_noise(n,2.0,"wpn") +    
   flicker_noise(n*fc,3.0,"fpn");

sven

Title: Re: phase noise - jitter relationship
Post by svensl on Sep 21st, 2005, 5:22am

I finally got around to have a look at Ken's matlab code for predicting noise in Plls. In cadence I simulated the phase noise for the given Hartley oscillator (fout=1.14GHz) and extracted the corner frequency and n value as descirbed in Kens paper. I then calculated the jitter and used this value to simulate a noisy vco in open loop using VerilogA. I recorded each output period and used the matlab code to plot the psd of the noise. I was hoping to obtain approx. the same plot as for the noise of the Hartley oscillator (20dB region). While the matlab plot has the expected 20db per decade slope, the frequency of the plot starts at 10e6 and goes to 10e9 for nfft=1024. This does not make sense. The plot should be located at lower frequencies, should it not? When I use the matlab PSD plot to exctract the n value from the 20dB region, it should be approx. the same as for the Hartley oscillator.

Am I missing something here?  
Regards,
Sven

Title: Re: phase noise - jitter relationship
Post by svensl on Oct 9th, 2005, 11:41pm

What I was trying to solve is why the n-value is not approx. the same when using
a) the Hartley osc. in cadence to find n and and then comparing it to
b) using the obtained jitter value and use it in VerilogA and Kens Matlab code to obtain the n-value.

Thanks for any hints.
Svensl

The Designer's Guide Community Forum » Powered by YaBB 2.2.2!
YaBB © 2000-2008. All Rights Reserved.