The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl
Analog Verification >> Analog Functional Verification >> PNOISE with a VerilogA oscillator
https://designers-guide.org/forum/YaBB.pl?num=1504874538

Message started by Horror Vacui on Sep 8th, 2017, 5:42am

Title: PNOISE with a VerilogA oscillator
Post by Horror Vacui on Sep 8th, 2017, 5:42am

Hi Everyone,

I was about to create a VerilogA model for a VCO, which includes the phase noise as well. I used the model in Listings 1 from http://www.designers-guide.org/Analysis/rf-sim.pdf.

The problem is that there is no noise in pnoise measurement. The pnoise setup is the same as for a transistor level VCO, so it has to be good. On the other hand transient noise simulation shows variance between iterations, which indicates that the verilogA code's phase noise solution works.

So my question is what do I need to do to get a pnoise output?

If you need more information or just want to look at my setup, you find them below:

Code:
analysis('pnoise ?sweeptype "relative"  ?relharmnum "1"  ?start "10"  
           ?stop "1G"  ?maxsideband "7"  ?p "/out"  ?n "/gnd!"  
           ?oprobe ""  ?noisetype "timeaverage"  ?noiseout list("pm")  ?noisetypeUI ""  
           ?osc_version ""  ?osc_accuracy ""  ?ppv ""  )
analysis('pss ?fund "61.25G"  ?harms "7"  ?errpreset "conservative"  
           ?tstab "20p"  ?oscana t  ?p "/out"  ?n "/gnd!"  
           ?oscic "lin"  ?ppv ""  )
run()
output\ noise\:\ \(PM\,\ SSB\,\ dBc\/Hz\) = rfOutputNoise("dBc/Hz" ?result "pnoise_pm" ?noiseConvention "SSB")
plot( output\ noise\:\ \(PM\,\ SSB\,\ dBc\/Hz\) ?expr '( "output noise: (PM, SSB, dBc/Hz)" ) )



Code:
     analog begin
           phase = 2* `M_PI*freq * $abstime;
           phase_noise = flicker_noise(pn,2);
           //f_noise = flicker_noise(pn*corner_1f,3);
           //V(out) <+ ampl*cos(phase + phase_noise + f_noise);
           //V(out) <+ ampl*cos(phase + phase_noise);
           V(out) <+ ampl*cos(phase);
           V(out) <+ phase_noise;
       end

Title: Re: PNOISE with a VerilogA oscillator
Post by cheap_salary on Sep 9th, 2017, 5:26am


Code:
$cds_set_rf_source_info("aho_boke", freq);

electrical n1;

analog begin
  phase = 2* `M_PI*freq * $abstime;
  V(n1) <+ flicker_noise(pn,2);
  phase_noise = V(n1);
  V(out) <+ ampl*cos(phase + phase_noise);
  //V(out) <+ ampl*cos(phase);
  //V(out) <+ phase_noise;
end


You set Autonomous-PSS Analysis.
However it is not appropriate.
You should set Driven-PSS Analysis.

Also see http://www.designers-guide.org/Forum/YaBB.pl?num=1445269490

Title: Re: PNOISE with a VerilogA oscillator
Post by Horror Vacui on Sep 11th, 2017, 8:36am

Thanks cheap_salary! You are right, I have now a source, not an oscillator. Also thanks for the link! I did not had the rfLib in my Library Manager, now I searched it, and added it.

I tried your code, but I got an error for the first line. Since there was a oscillator in rfLib which suits my needs I did not dive into that line or the code in rfLib. I will look into it later.

Title: Re: PNOISE with a VerilogA oscillator
Post by cheap_salary on Sep 11th, 2017, 5:07pm


Horror Vacui wrote on Sep 11th, 2017, 8:36am:
I tried your code, but I got an error for the first line.
Locate "$cds_set_rf_source_info("aho_boke", freq);" inside "analog begin ~ end".

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