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