Nice onliine calculator https://rf-tools.com/jitter/ Also, in spectre, use results-->print-->noise_summary **************************** In spectre we use harmonic balance to run phase noise. You need to do an "hb" and an "hbnoise" analysis 1. Create a schematic with all dc voltage sources needed in order to get the oscillator going 2. You may need a few caps with "ic" conditions capA (z4p 0) capacitor c=1.0e-15 ic=0.401 capB (z4n 0) capacitor c=1.0e-15 ic=0.399 3. Setup hb and hbnoise ****************************************************** hb : Run_Transient : yes Stop_Time : 50.0e-9 Save_Initial_Transient_Results : yes Number_of_Tones : 1 Fundamental_Frequency : 4.2e9 (just a guess) Number of Harmonics : auto Oversample Factor : 1 Freqdivide_Ratio_Tone1 : 1 Harmonics : Default Accuracy : Conservative Oscillator : check! oscillator_node+ : /zv4p oscillator_node- : /zv4n Calculate_initial_conditions_auto : check! ****************************************************** hbnoise : Sweeptype : relative Relative_harmonic : 1 Output_Freq_Range : Start=1 Stop=100e6 Sweep_Type : Logarithmic Points_per_decade : 10 Output : voltage Positive_Output_Node : /zv4p Negative_Output_Node : /zv4n Do_Noise : check! Noise_Type : time_average PM : check! (Options --> Lorenztian yes / no --> This affects low low freq interpretation) 4. Simulation --> Netlist_and_Run The hb analysis initially finds the estimated oscillation frequency (The Estimated oscillating frequency from Tstab Tran is = 4.5594 GHz) (Notice from spectre during periodic steady state analysis `hb'. Auto harmonic calculation has chosen 10 harmonics.) Now after stability analysis, the hb analysis find ************************************************* Fundamental frequency is 4.56026 GHz. ************************************************* Now the hbnoise analysis starts ******************************************************************* HB Noise Analysis `hbnoise': freq = 4.56026 GHz + (1 Hz -> 100 MHz) ******************************************************************* Opening the PSF file ../psf/hbnoise.pm.pnoise_hbnoise ... The estimated line width of the oscillator is 122.557 kHz. ****************************************************** 5. Now plot the output results Results-->Direct_Plot-->Main_Form (notice that two windows pop up - the viva plotting window, and a small form) First just plot some stuff directly using the Viva window : File-->Open_Results psf (Open) ( /nfsdata/data/projects_carp/projects/g8r1/users/uia73657/jtemp/vcosim/spectre/schematic/psf/ ) Plot the hb_td signals : (using the form I plot power power of all harmonics zv4p = 0.224355 + 0.1672459 + ... ) = 0.3916 (mulitplying by 2 for differencial --> sig_power = 0.7832) (assumed voltage is put into a 1 ohm resistor so power = V^2) Now plot hbnoise_pm : you see out = 50.573e-6 [V/sqrt(Hz)] @ 1.0MHz The power in the carrier is = 0.7124 The power in a 1 Hz band @ 1 MHz = (50.573e-6)^2 Lf(1.0e6) = 10 * log( [(50.573e-6)^2] / [0.7124] ) = -84.44 dBc / Hz No you see this matches plot from the form of hbnoise/Phase_Noise = -84.171 @ 1.0 MHz 6. Now run commandline simulatorOptions options reltol=1e-3 vabstol=1e-6 iabstol=1e-12 temp=27 \ tnom=27 scalem=1.0 scale=1.0 gmin=1e-12 rforce=1 maxnotes=5 maxwarns=5 \ digits=10 cols=80 pivrel=1e-3 sensfile="../psf/sens.output" \ checklimitdest=psf vabsshort=-1 rabsshort=-1 // trA tran stop=20e-9 errpreset=moderate maxstep=2.0e-12 write="spectre.ic" \ // writefinal="spectre.fc" annotate=status maxiters=5 \ // method=gear2 hb ( zv0p zv0n ) hb tstab=50e-9 saveinit=yes autoharms=yes + autosteady=yes oversample=[1] fundfreqs=[(6.0e9)] maxharms=[5] + errpreset=conservative oscic=lin oscmethod=onetier maxstep=2.0e-12 + annotate=status hbN ( zv0p zv0n ) hbnoise sweeptype=relative + relharmvec=[1] start=1 stop=100e6 dec=10 noisetype=timeaverage + noiseout=[pm] annotate=status