I am trying to model a VCO of 1 GHz frequency with added flicker and white noise. While running the PNOISE I am seeing a spur at 1GHz and 10 GHz frequency also white noise is not visible. Please let me know how to correct the spur and is this the correct way to add noise in VCO in Verilog-A model.
Thank you for your time.
Here is the code:
// VerilogA for verilog_ams_model, vco_question, veriloga`include "constants.vams"`include "disciplines.vams"`define PI 3.14159265358979323846264338327950288419716939937511module vco_question (vin, vout);input vin;output vout;electrical vin, vout;parameter real amp = 1;parameter real center_freq = 1K;parameter real vco_gain = 1K;parameter integer steps_per_period = 32; real phase; real inst_freq; // instanteous frequency real Fl_n;real W_n; analog begin inst_freq = center_freq + vco_gain * V(vin); $bound_step (1.0 / (steps_per_period*inst_freq)); Fl_n = flicker_noise(1e-14,2); W_n = white_noise(8.28e-16); phase = idtmod(inst_freq,0,1); V(vout) <+ amp * sin (2 * `PI * phase); V(vout) <+ W_n + Fl_n ; endendmodule
I am definitely seeing the impact of white noise in your simulated phase noise output. White noise, with a flat spectral density, will appear as a region in a phase noise plot with a slope of -20 dB/decade. I've annotated your plot in Figure 1 to illustrate the region I am referring to where the slope is -20 dB/decade. Please also refer to Figure 2 where I illustrate the four noise common regions of a phase noise plot. The reference for this diagram is also included in Figure 2.
With respect to your comment about the 1 GHz and 10 GHz tones visible, recall that the phase noise essentially represents a folding of the spectral content and essentially represents a demodulated signal. Hence, with the sampled nature of your simulation data, there are frequency components in the result that result from the folding and sampling process. The components of interest are typically below the fundamental VCO rate of 1 GHz in your application. From one pot the Cadence On-line support articles, the following quotation explains my comment in a bit more detail:
"The nonlinear behavior inherent in practical oscillators results in noise folding. Noise mixes with the oscillation signal and its harmonics and get converted up or down in frequency by one or more multiples of the fundamental frequency. Besides the effect noise folding has on the noise level, it also introduces two noteworthy and easily identifiable artifacts.
First, the phase noise present near the oscillation frequency is mixed up and down, resulting in smaller, but still quite noticeable noise peaks at DC and each harmonic.""
I would suggest, however, that you perhaps view the tutorial phase noise simulation Cadence video from its On-line support site at URL:
and the many references such as URL:
However, In looking at your results, the phase noise you are showing appears very high and I a am a bit concerned that, perhaps, your pss and pnoise simulation settings might need to be re-examined. I hope these few comments provide some insight for you!
Thank you for the reply. I am using this setup for PSS ans PNOISE. Please let me know if this is ok.
ddkdd said:am using this setup for PSS ans PNOISE. Please let me know if this is ok.
Without more knowledge about your VC, I can not provide any specific suggestions (as the simulation settings are highly dependent on the VCO type). However, I do see a few items that I might suggest could be responsible for your data.
1. In your pss analysis, you are not running an initial transient analysis to allow your VCO frequency to settle to its steady-state value. This could result in performing a noise analysis on an oscillator waveform that does not truly provide a good estimate of its steady-state waveform and will impact the accuracy of your phase noise result. I would suggest verifying what time length of simulation is required in a conventional transient simulation before running your pss analysis to achieve a VCO frequency that is close to your steady-state frequency and then including that time as a value of "stab" in your pss analysis.
2. It does not appear as if you have specified a value for "errpreset" in your pss analysis. I would suggest choosing "conservative" to assure it starts from numerical noise and provides an accurate estimate of the waveform.
3. I do not know the specifics of your VCO and hence cannot comment on your choice of 7 harmonics as sufficient to capture all the noise folding.
4. In your pnoise GUI, I don't think it is worth setting the maximum analysis frequency to 100 times your fundamental frequency based on my comments with respect to this in my initial response. I might suggest using, for example, your fundamental or a range over which you are interested in doing further analysis based on the specification for your VCO.
As I noted, these are just a few general comments as I do not know the specifics of your VCO design, spectre version, etc...
I hope they are somewhat helpful!
Thank you for the reply. I am using the virtuoso 6.1.8-64b, Spectre 20.10.073 and XCELLIUM 20 versions.
ShawnLogan said:As I noted, these are just a few general comments as I do not know the specifics of your VCO design, spectre version, etc...
The PSS I am running is on the Verilog A model of the VCO that I have posted in my first question.
For step 1, 2 and 4 I have modified the settings.
For step 3 please suggest how much side band I should add.
From my current verilog A model I am not able to see the 1/f^3, 1/f, and white PM nosie. What is the modification I need to do in my verilog code to get that this in the PNOISE plot?
ddkdd said:For step 3 please suggest how much side band I should add.
You need to examine the number of harmonics in your output waveform. This is not evident to me as I don't know your transition times (likely related to your simulation setting since you did not specify a transition time) nor what load impedance you are applying to the VCO. How can I tell, therefore, how many harmonics (nd hence sidebands) are required?
ddkdd said:From my current verilog A model I am not able to see the 1/f^3, 1/f, and white PM nosie. What is the modification I need to do in my verilog code to get that this in the PNOISE plot?
If I take your white noise and flicker noise coefficients from your verilog-a code and plot them, I obtain the results shown in Figure 1. Please note that you are plotting the phase noise starting at 100 Hz but the flat noise component dominates for frequencies over about 3 Hz.