Spectre Transientnoise
Spectre Transientnoise
Spectre Transientnoise
Analysis
© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Cadence and the Cadence logo are
registered trademarks of Cadence Design Systems, Inc. All others are the property of their respective
holders.
Contents
Introduction .................................................................................................................. 4
Purpose ....................................................................................................................... 4
Noise in Electronic Circuits .......................................................................................... 4
Frequency- and Time-Domain Noise Analyses ........................................................... 6
Device Noise Models ............................................................................................... 8
Generating Noise Signals in Time Domain ................................................................ 10
White Noise Signals ............................................................................................... 10
Frequency-Dependent Noise Signals..................................................................... 13
Random and Bias-Dependent Noise Update ......................................................... 15
Transient Noise Analysis Use Model ......................................................................... 17
Turning On Transient Noise Analysis ..................................................................... 19
Turning On Flicker Noise ....................................................................................... 20
Statistical Error ....................................................................................................... 21
Noise Scaling ......................................................................................................... 22
Individual Device Noise Contributions .................................................................... 22
Delayed Activation of Transient Noise ................................................................... 23
Post-Processing Using Virtuoso-ViVA ................................................................. 23
Tutorial....................................................................................................................... 25
Exercise 1. Transient Noise Waveform and Spectrum - noiseseed ....................... 25
Exercise 2. Understanding PSD Function Parameters ........................................... 30
Exercise 3. Transient Noise Vs. Noise - noisefmin and noisefmax ........................ 34
Exercise 4. Parameter noisescale .......................................................................... 38
Exercise 5. Transient Noise vs. Pnoise .................................................................. 39
Exercise 6. RC Circuit ............................................................................................ 41
Exercise 7. Switch-Capacitor Circuit ...................................................................... 43
Exercise 8. Oscillator Jitter and Phase Noise ........................................................ 50
Exercise 9. Buffer Time-Domain Noise and Jitter................................................... 61
Exercise 10. Clock Source with Variable Frequency and Duty Cycle..................... 65
Exercise 11. Delay Jitter ........................................................................................ 72
Exercise 12. Dynamic Comparator Metastability Analysis ..................................... 75
Exercise 13. Probability Distribution of Noise Power Spectral Density ................... 85
Support ...................................................................................................................... 89
Feedback ................................................................................................................... 89
Introduction
Virtuoso Spectre was one of the first SPICE simulation tools that provided design-
proven transient noise analysis capability, technically referred to as direct time-domain
noise analysis. This application note is an update from a similar documentation
published in 2005 for Spectre users.
Purpose
This document discusses the theoretical background of Spectre and APS transient
noise analysis, its implementation and implications, and the latest use model together
with many useful simulation time-saving and circuit-diagnostic features. Most
importantly, this application note provides a very detailed tutorial example with the
Virtuoso ADE environment, a few periodic steady-state circuits to show the
correlation with small-signal noise analysis (noise) and periodic steady-state noise
analysis (pnoise), and the use of transient noise analysis on its main application -
nonlinear and non-periodic data converter designs.
Although it is widely adopted in various design practices, the approach has certain
limitations. Many high-performance circuits rely on random dithering and noise shaping
to avoid spurs and shift the noise out of the signal frequency band. These circuits are
not periodic, even if all inputs are constant or periodic, and the noise at high frequencies
can be larger than the low-frequency signal. Some circuits are just too large or require
too many harmonics for pss or hb analysis to be practical, while transient and transient
noise analyses can still be applied. Furthermore, transient noise analysis can be used to
verify the validity of the small-signal approximation assumed in pnoise and hbnoise.
The real practical method to solve time-domain noise analysis equations is the Monte
Carlo approach. It is implemented in Virtuoso Spectre. At each time step of transient
analysis, device noise models are evaluated to generate random noise currents that are
further injected into transient analysis. Simulation time step is often forced to be
uniformly smaller to cover the noise bandwidth, which is typically larger than circuit
bandwidth. In addition, many repetitive simulations need to be performed, or the
simulation must span a large number of periodic cycles, to draw meaningful statistical
characteristics and achieve a desirable frequency resolution. Compared to small-signal
noise analysis methods, transient noise analysis is a rather time-consuming approach.
The necessity of direct noise analysis in time domain has been recognized by various
researchers and commercial EDA companies. The key differences between various
suggested approaches involve how to accurately model noise sources in the time
domain, how to integrate them effectively into transient analysis and how fast the
simulation turnaround time is. Over the years, after Spectre first released its transient
noise analysis capability, numerous customers have tested it and validated its accuracy
with silicon measurement. With the recent release of Spectre-APS performance
technologies, transient noise analysis can often be completed in hours, instead of days
or weeks as it used to take. It is becoming an increasingly important tool to assist the
designs of nonlinear and non-periodic circuits, such as Σ-Δ data converters, fractional-N
PLLs, and Ser-Des signal links.
Nonlinear Periodic
VCOs, Oscillators
PSS or HB PNOISE or HBNOISE Yes
Mixers
Nonlinear Nonperiodic
Sigma-Delta ADCs
Fract-N and Int-N PLLs
TRAN TRAN-NOISE No
Rx and Tx chains
Ser-des and PHYs
Small-signal noise assumption is valid for most applications and has been widely
adopted in IC design practices. In contrast to nonlinear transient noise analysis, pnoise,
hbnoise, noise, and sp-noise analysis equations are linear. It allows separating small
noise from large signal, dramatically increasing noise evaluation accuracy. In transient
noise analysis, signal and noise are lumped together, and dynamic range is limited by
numerical tolerances of the transient simulation.
To show the limitation of small-signal analysis, consider ADC which would typically have
several threshold detectors. When the analog input of threshold detector is close to the
threshold voltage, a small variation of the input due to the thermal noise can cause a
state transition at the output - a large voltage change. Another example is fractional-N
PLL circuit, where random dithering in the VCO control signal is used to maintain a non-
integer ratio between the output clock and reference clock frequencies to avoid spurs in
the output spectral density. While both the input and output of the circuit are periodic,
the circuit does not have periodic or quasi-periodic steady state due to the random
dithering of the control signal.
Transient noise analysis is the solution to these challenges. The simulation is performed
like a regular transient analysis, with all noise sources in the circuit injecting random
noise signals into the simulation at each time step. Understandably, this is a
computationally expensive approach for several reasons:
• At each step of transient analysis, the device noise models need to be evaluated to
account for the bias dependence of noise spectral density for each individual noise
source. This is the noise evaluation cost.
• Random noise sources need to be frequently updated to reflect the noise bandwidth,
which is typically larger than the circuit bandwidth. Thus, simulation time step
becomes smaller, with the maximum time step limited by the highest noise
frequency.
The key technology that enables time-domain noise analysis is the ability to properly
inject random device noise at each time step.
̅̅̅ 4𝑘𝑇
𝑛2 =
𝑅
• Shot noise. The constant spectral density of shot noise is bias dependent.
̅̅̅
𝑛2 = 2𝑞 ∙ 𝐼(𝑣),
• Flicker noise. The spectral density of flicker noise is both bias and frequency
dependent.
̅̅̅ 𝐼(𝑣)
𝑛2 = 𝑘
𝑓
̅̅̅
𝑛2 = ̅̅̅
𝑛2 (𝑓)
Thermal noise and shot noise are both considered white noise processes, which implies
that their spectral density is flat with frequency and the noise is not self-correlated. The
frequency-dependent flicker noise is also referenced as pink or colored noise in many
literatures. When noise source is embedded in a circuit, the circuit transfer function can
modify noise spectral density, adding more color to the output noise. It is important to
note that in physical circuits, the transfer function from any noise source to any node
has finite bandwidth. All physical signals – node voltages or branch currents – have a
spectrum with finite bandwidth as well. Therefore, it is sufficient to model only band-
limited noise sources. There is no need to generate ideal noise signals with infinite
bandwidth, which would be impossible anyway, because of infinite noise power.
Actual device models have much more complicated noise equations with far more
parameters. The Verilog-A language provides special functions: white_noise() to define
frequency-independent white noise source and flicker_noise() for the frequency-
dependent flicker noise.
All these device noise models are supported in Spectre’s transient noise analysis with
only the following restriction - for an independent source, the spectral density function
given in the noise file should be flat or decreasing with frequency. In addition, custom-
designed device noise code using Spectre CMI interface and Verilog-A modules can be
directly used by transient noise analysis for time-domain noise modeling, as in the case
of small-signal noise analysis or periodic steady-state noise analysis. There is no
special device code needed to enable transient noise analysis.
In the above formula, 𝜂(𝑡, 𝛥𝑡) is a random number with Gaussian probability distribution
(zero mean and unity standard deviation), updated with time interval 𝛥𝑡. The noise-
signal amplitude and update-time interval are:
1
𝜎 = √̅̅̅
𝑛2 ∙ 𝐹𝑚𝑎𝑥 𝛥𝑡 =
2𝐹𝑚𝑎𝑥
Here, ̅̅̅
𝑛2 is the constant power spectral density of an ideal white noise source.
The auto-correlation function for this random signal can be found directly by integration
over time:
𝑇
̅̅̅ 1 𝑡
𝑛2 (𝑡) = lim ∫ 𝑛(𝜏)𝑛(𝑡 + 𝜏)𝑑𝜏 = 𝜎 2 Λ ( )
𝑇→∞ 𝑇 Δ𝑡
0
In the above formula, Λ is a triangular pulse function of width Δ𝑡. To evaluate this
integral, you use the following properties of the random signal:
𝑇
1
lim ∫ 𝑛(𝜏)𝑛(𝜏)𝑑𝜏 = 𝜎 2
𝑇→∞ 𝑇
0
𝑇
1
lim ∫ 𝑛(𝜏)𝑛(Δ𝑡 + 𝜏)𝑑𝜏 = 0
𝑇→∞ 𝑇
0
̅̅̅
𝑛2 (𝑓) = 2𝜎 2 Δ𝑡 sinc 2 (𝑓Δ𝑡)
At zero frequency, the spectral density of 𝑛(𝑡) is equal to that of the ideal white noise
source.
̅̅̅
𝑛2 (0) = 2𝜎 2 Δ𝑡 sinc 2 (0) = ̅̅̅
𝑛2
∫ ̅̅̅
𝑛2 (𝑓)𝑑𝑓 = ̅̅̅
𝑛2 𝐹𝑚𝑎𝑥
0
The noise signal, its auto-correlation function, and spectral density are shown in Figure
1, 2, and 3, respectively.
𝑛(𝑡)
Δ𝑡
̅̅̅
𝑛2 (𝑡)
𝜎2
Δ𝑡 𝑡
log ̅̅̅
𝑛2 (𝑓)
𝐹𝑚𝑎𝑥 log 𝑓
Figure 3. White noise spectral density
The filled rectangle in Figure 3 indicates the spectral density function of ideal white
noise source with band limit 𝐹𝑚𝑎𝑥 . The actual spectral density of the noise source
follows the shape of the sinc2 function, as shown in Figure 4. At low frequencies, it is
very close to the ideal step, but for frequencies close to 𝐹𝑚𝑎𝑥 , there is a significant
deviation. At a frequency equal to 𝐹𝑚𝑎𝑥 , the spectral density is 3.95dB lower than the
ideal step. The deviation is quickly decreasing with frequency. The error is 0.91dB at
𝐹𝑚𝑎𝑥 /2 and 0.15dB at 𝐹𝑚𝑎𝑥 /5, as seen in Figure 4. Although the spectral density of the
generated noise signal at high frequencies is slightly different from the ideal step, the
total noise power is the same.
The random noise signal shown in Figure 1 has a discontinuity at every time when the
random number is updated. It would cause convergence problems in Newton iterations
when the noise power is significant. In order to improve convergence, you apply linear
interpolation for noise signals between random number updates.
First, you divide the frequency range of interest from Fmin to Fmax in octaves (steps).
Then, you create independent (uncorrelated) white noise sources, one for each octave.
The total noise is the sum of individual octave noise sources:
1
n(t ) k t , ,
k 2 fk
Here, Fmax is the noise bandwidth. The amplitudes of octave noise sources are
computed in a way to match the frequency-dependent noise spectral density given in
the device model.
k n ( f ) n ( f ) 2 f
2
k
2
k 1 k .
n2(f)
fN f2 f1 f0
Fmin Fmax
The computational effort required to generate a noise source with arbitrary spectral
density is only twice of that for the single white noise source. Figure 6 shows the update
times for octave noise sources. As you can see, the update time interval doubles for
each consecutive octave.
t
f0
f1
f2
f3
f4
The only assumption made in this modeling approach is that the noise spectral density
is a monotonic function, decreasing over frequency. All physical device noise models
satisfy this condition.
This bias dependency ℎ(𝑣) must be reflected in the noise signal amplitude. It requires
noise update - evaluation of noise equations - at every time step in the transient
analysis. The flowchart in Figure 6a illustrates the transient noise simulation algorithm.
White noise signals with noisefmax bandwidth are generated for each device, as
described in Section 3.1.
• White noise signals are “filtered” to produce the desired spectral shape 𝑢(𝑓), as
described in Section 3.2. Note that both colored and white noise signals are
assigned new random values at regular time interval Δ𝑡.
• At every time step, noise signals are modulated with the bias-dependent part of the
noise equation ℎ(𝑣(𝑡)). When bias voltages are rapidly changing, the simulator may
have to take multiple smaller time steps between two regular random noise updates.
In this case, the noise sources are linearly interpolated before the bias-dependent
factor is applied.
• Modulated colored noise signals act as additional piecewise linear independent
sources. They are added to the source vector of the transient analysis equations. No
other changes are needed in the transient simulation algorithm.
noiseseed
Modulated Transient
White Colored colored source
noise noise noise vector
noisefmax noisefmin
Thus, all transient waveforms have a noise component added. As opposed to the
frequency-domain noise analyses, there is no need to specify an output probe or node
because noise is calculated for every node. Noise bandwidth 𝐹𝑚𝑎𝑥 limits the maximum
time step ∆𝑡 the simulation can take. This could potentially cause significant simulation
slowdown when the noise bandwidth is set too high.
All these parameters can be specified either directly in the netlist on the transient
analysis statement or through the transient analysis form in Virtuoso-ADE, as shown
in Figure 7.
The Virtuoso-ADE GUI allows setting up multiple transient noise runs with different
noiseseed values to run repetitive statistical runs. The statistical accuracy of “m”
transient noise runs is equivalent to that of a single transient noise run with a stop time
multiplied by “m”. The Spectre command-line option +mp=n allows you to run multiple
simulations in parallel on the same host or distribute them over the compute farm.
• A large noisefmax setting forces smaller time steps and slows down the
simulation. The noise power at very high frequencies will be suppressed by the
circuit. Therefore, there is no need to set noisefmax above the circuit bandwidth.
The bandwidth here means the largest bandwidth of a transfer function from any
noise source to any node in the circuit.
• It is not helpful to reduce noisefmax below the clock frequency, as time steps will
never jump over regular transient analysis time steps.
noisefmax/2 0.91dB
noisefmax/3 0.40dB
noisefmax/4 0.22dB
noisefmax/5 0.14dB
Frequency conversion effects should be considered when choosing the value for the
noisefmax parameter. This is illustrated by the switch-capacitor circuit example
(Exercise 6). The lowest acceptable value of noisefmax is determined by the highest
signal harmonic frequency, which can contribute to the noise frequency conversion
(demodulation).
Sometimes, it is not obvious which noisefmax value would give the best trade-off
between simulation performance and noise accuracy. It is recommended to run
reference transient analysis without noise (noisefmax = 0) and note the largest and
the smallest time step values. Then, take the inverse of the largest time step as the
lower estimate for noisefmax. In the clocked circuit, this would be about four times the
clock frequency, because there must be at least several time steps within the clock
cycle. Run transient noise simulation that has enough points to be useful, but not so
many that the simulation time is excessive, and measure the noise. Now, at least
double noisefmax and run again. Compare the measurements. If the result did not
change significantly, the original value was high enough and might be reduced. If it did
change, raise noisefmax again until the result stabilizes. Any transient noise
measurement (spectral density, delay variance, jitter) converge to its accurate value
when noisefmax is sufficiently large. Choose the smallest value of noisefmax that
gives stable results.
• Noisefmin should be set below the flicker noise corner frequency to visualize
flicker noise at lower frequencies. At higher frequencies, flicker noises are typically
overwhelmed by white noise.
• The value of noisefmin is related to transient analysis stop time. If low frequency
flicker noise is important, the transient stop time should allow for a sufficiently large
enough time window to achieve DFT frequency resolution up to noisefmin. In
other words, simulation stop time should be more than 1/noisefmin.
Figure 8 shows a typical device noise spectrum, where the red line shows the spectrum
of actual noise signal generated in transient noise analysis.
It is safe to set noisefmin to an extremely small value, for example 1Hz, and run
transient noise analysis long enough to include the desired low-frequency noise effect.
n2(f)
1/f noise
white noise
Figure 8. Typical device noise spectrum with thermal and flicker noise
Statistical Error
The noiseseed parameter allows the user to specify a fixed seed for the random
number generator, thus enabling the user to repeat an exact transient noise analysis. If
unspecified, the default seed is randomized every time when a simulation is performed.
The transient noise analysis is based on the Monte Carlo method. The result of any
transient noise measurement is a random number, which depends on the noiseseed
value to a certain extent. Therefore, it is always advised to repeat the transient noise
simulation multiple times with different noiseseed in order to get an estimate of
statistical error.
When deciding how many statistical samples are needed, consider the standard error of
the mean formula, which states that statistical error is in inverse proportion to the
square root of the number of samples. For example, the average over 400 samples has
1 1
a relative error of = 5% or 10 log (1 + ) = 0.2dB. The number of samples
√400 √400
depend on the measurement and simulation setup. It could be the number of runs, or
the number of cycles in a single run, or a combination of both. Note that in many
practical cases, this is only a rough estimate of the actual statistical error. Statistical
error is a random function of frequency. It is evident in any frequency-domain plot of
transient noise results.
Learn more at Cadence Support Portal - https://support.cadence.com
© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 21
Virtuoso Spectre Transient Noise Analysis
Noise Scaling
The noisescale parameter defines a linear scale factor applied to all the noise
sources. It can be helpful in two situations.
• When the physical device noise is very small compared to the signals, it requires a
much larger dynamic range in the transient analysis that is often achieved by further
tightening simulation tolerance, resulting in a slow simulation. Noisescale can be
used to scale up the noise contribution to relieve the stress on simulation resolution.
The user can scale back the amount of noise when post-processing the results. Be
cautious that there is a limit on how high the scaling can be for the results to be
valid.
• On the opposite, noisescale parameter can also be used to scale down physical
noise contribution to find out where the simulation numerical noise floor is.
Transient noise simulation results, with up or down scaling of the noise, are valid only if
the small-signal approximation is applicable to the noise and the circuit response to
noise is linear. The small-signal approximation can be validated for most circuits by
comparing the transient noise results to the frequency-domain analysis – noise or
pnoise/hbnoise.
• When a list of device and sub-circuit instances are given to the noiseon parameter,
the device noise contributions from these instances are turned on, while the
contributions from the rest of the circuit are turned off.
• Similarly, when a list of device and sub-circuit instances are given to the noiseoff
parameter, device noise contributions from these instances are turned off, while the
contributions from the rest of the circuit are turned on.
• Noiseon and noiseoff parameters cannot be used together due to their exclusive
nature.
The same effect of disabling certain noise sources can be achieved by setting the
instance parameter isnoisy = no for device or sub-circuit instances. This, however,
requires netlist editing.
For example, let the PLL lock time be tlock. In this case, the following transient noise
analysis combination turns on transient noise analysis at tlock.
Virtuoso-ViVA waveform viewer and calculator provide the following functions for the
transient noise measurements and post-processing of output waveforms.
• The noise spectrum in the given time window can be calculated as a discrete Fourier
transform using the dft() function.
• The power spectral density psd() function allows the measurement of the average
noise spectrum over multiple time windows and over multiple transient noise runs.
Signal peaks, harmonic distortion peaks, and spurs can be identified in the spectrum
to calculate the signal-to-noise and distortion ratios.
• The Spectrum Assistant allows the calculation of SINAD, SFDR, ENOB, and SNHR
measures of the signal-to-noise ratio.
• Total noise can be then calculated as an integral using the integ() function over a
particular frequency range.
• Noise and signal can be separated in the time domain by subtracting a reference
transient waveform from the transient noise waveform.
• The standard deviation or total noise power can be calculated using the stddev()
function on the difference waveform.
• For the case of periodic waveform, the functions pavg() and pstddev() calculate the
average waveform over one cycle and standard deviation, due to the noise. This is
another way to separate the signal from the noise in the time domain.
• The absolute jitter plot for the oscillator output is calculated by the abs_jitter()
function.
• The derivative deriv(abs_jitter()) gives a period jitter plot and a second derivative –
cycle-to-cycle jitter plot.
• The functions freq(), freq_jitter(), and period_jitter() are all derived from
abs_jitter().
• The functions stddev(), rms(), and average() can be applied to a jitter plot to get
total jitter, or average value.
• The Fourier transform dft() or power spectral density psd() can be also applied to
analyze a frequency content of timing jitter.
• The PN() function calculates the power spectral density of absolute jitter, or phase
noise.
• The rms_jitter() function integrates phase noise within a given frequency band.
• For more advanced jitter measurements, multi-occurrence delay() and cross()
functions can be used.
• An eye diagram plot is produced by the Eye Diagram Assistant. It can also calculate
horizontal and vertical eye opening.
• A histogram of a random signal or expression can be calculated using the
histogram2D() function, which allows analyzing the probability distribution function
and allows separation of the random Gaussian noise from deterministic jitter.
Tutorial
This section presents several exercises to show the effect of transient noise analysis
parameters, post-processing capabilities, and to compare transient noise analysis
results to noise and pnoise.
You run transient noise analysis, plot output waveforms and spectrum, and show the
effect of the noiseseed parameter.
To run transient noise analysis, you have to specify the transient noise options. You can
do this through the ADE GUI, or by directly editing the netlist. Specify the following
transient noise options in the ADE Analysis Setup window (Figure 7):
parameters It=1111
sweep sweep param=It start=1111 stop=1113 step=1 {
tran_noise tran stop=10u noisefmax=10G noisefmin=100k noiseseed=It
}
The first transient analysis without noise is added for the reference. The second
transient analysis is within the parameter sweep. It is repeated three times with a new
noiseseed value.
𝑙
Value of the resistor is 𝑅 = 𝑟𝑠ℎ ∙ 𝑤 = 100𝑘Ω. Transient node voltage is the sum of DC
and sine wave:
Noise is the difference between the noisy signal and reference. Noise power is:
2
𝑃𝑛𝑜𝑖𝑠𝑒 = |𝑉𝑎 𝑛𝑜𝑖𝑠𝑦 (𝑡) − 𝑉𝑎 (𝑡)|
Transient analysis output waveforms are shown in Figure10. The red line (a_t) is the
output of the reference transient analysis – ideal sine wave with DC offset. The green,
yellow, and blue lines (a_t_noisy) are transient noise waveforms with three different
seed values. Noise magnitude is in the range of mV, between 1 and 10mV on average.
Figure 11a is a snapshot of the ViVA calculator expression editor. P_t and a_t are
signal power and wave form. P_t_noisy and a_t_noisy refer to the noisy signal power
and waveforms. Note that the output of the sweep analysis is a family of three
waveforms and the power expression includes two averages – one over time and the
other over noiseseed. P_f and P_f_noise are power spectral density of signal and
noise. In the P_f_noise expression, the additional pavg function call calculates the
average spectrum over three noiseseed values. Window size parameter is 10 times
smaller, in order to reduce statistical error in the random noise spectrum.
Signal spectrum – the red line in Figures 11b and 11c – has a peak at 500MHz, as
expected. Numerical noise floor is about 300dB, corresponding to the dynamic range of
the double precision number.
Noise spectral density is a random function with the mean value decreasing as 1/f. Part
of the flicker noise is up-converted to the signal frequency, creating 1/f sidebands on
both sides of the signal peak. Since the circuit is linear, there is no signal distortion and
no power in higher harmonics.
Noise floor is at about -140dB or 0.1uV/sqrt(Hz). Integrating noise spectral density over
full frequency range gives the total noise power P_f_noise_total. It is equal to the mean
square of the time-domain noise signal P_t_noise.
Figure 11c. Power spectral density of the signal and noise – log scale
PSD is using FFT algorithm to calculate spectral density. Time-domain waveform 𝑣(𝑡) is
first sampled with uniform time step. Then, it is divided into 𝑀 overlapping segments of
length 𝑇, having 𝑁 samples each. Window function multiplier 𝑤𝑛 is applied, and FFT is
calculated for each segment. Finally, power density is calculated and averaged over the
𝑀 segments.
𝑀−1 𝑁−1 2
1
𝑃(𝑓𝑘 ) = ∑ 𝑇 |∑ 𝑤(𝑡𝑛 )𝑣(𝑡𝑛,𝑚 )𝑒 −𝑖2𝜋𝑓𝑘𝑡𝑛 |
𝑀
𝑚=0 𝑛=0
𝑁(𝑀 + 1)
𝑁𝑠 = = 𝐹𝑠 ∙ (𝑡𝑠𝑡𝑜𝑝 − 𝑡𝑠𝑡𝑎𝑟𝑡 )
2
The PSD function panel is shown below.
In this example, transient simulation starts at time zero and stop time is 10us, signal
frequency – 500MHz. Total number of cycles is 10u*500M = 5000. With sampling
frequency of say 20GHz, there are 20G/500M = 40 samples per cycle and 40/2 = 20
harmonics of the signal frequency. Total number of samples available for the PSD
calculation is 5000*40 = 200,000. That sets the first three PSD function parameters:
From = 0, To = 10u, and Number of Samples = 200,000.
The largest possible DFT window size is 200,000 samples, or 5000 cycles. In this case,
only one DFT will be performed for the whole 10us time window. That gives the best
possible frequency resolution of 1/10u = 100kHz and the worst statistical error in the
spectrum. Reducing the window size allows you to calculate DFT multiple times for the
consecutive overlapping windows and average out some of the statistical error. This
comes at the cost of the frequency resolution.
Figure 11d demonstrates the trade-off between the random statistical error and
frequency resolution. PSD was calculated with decreasing size of the DFT window: red
– Window Size = 5000*40 samples, yellow – 500*40, green – 50*40, blue – 5*40.
Frequency resolution, or the peak width, is increasing by factor 10 on each step: red –
100kHz, yellow – 1MHz, green – 10MHz, blue – 100MHz. At the same time, peak value
is decreasing by factor 10: red – 73.04dB, yellow – 83.04, green - 93.04, blue –
103.04dB. The power of the signal is equal to the area under the peak and does not
change. The shortest window yields the smallest statistical error, but the worst
frequency resolution.
Note that in all four cases, the window includes an integer number of cycles. So, the first
and last time points have the same voltage. If this periodic boundary condition is not
satisfied, the end-point discontinuity will introduce significant error in the spectrum. A
smooth time-domain window function removes the discontinuity and improves accuracy.
Green line in Figure 11e demonstrates the wrong choice of the Window Size = 2010
samples or 2010/40 = 50.25 cycles – not an integer. Hanning window significantly
improves the spectrum accuracy – yellow line. Still, the correct window size is
somewhat better – blue line. Hanning window multiplier in time domain is equivalent to
the convolution with the window spectrum in frequency domain. Thus, the line width is
30MHz or three samples, which is three times larger than with rectangular window. The
smooth window trades off frequency resolution for the better dynamic range or less
error.
The remaining three parameters of the PSD function are not commonly used.
Detrending Mode – linear or mean – can improve the spectrum accuracy when the
waveform has clear trend. Coherent Gain – magnitude, dB10 or dB20 – selects the
units for an additional Coherent Gain Factor.
Learn more at Cadence Support Portal - https://support.cadence.com
© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 32
Virtuoso Spectre Transient Noise Analysis
Note that the window gain factor, which compensates for the power loss due to the
smooth window application, is already included by default. The window function is
normalized to the unit power, so that:
𝑁−1
2
∑(𝑤(𝑡𝑛 )) = 𝑁
𝑛=0
• From: Power and power spectral density are well defined for periodic, stationary,
and cyclostationary signals. Power of a general non-stationary and non-periodic
signal changes with time. Increase the value of the “from” parameter to skip the
initial part of the waveform, where the signal has not yet settled to the steady
state.
• To: Check if there is waveform data available up to the “to” time. Increase the
transient analysis “stop” time, if necessary. There is no need to run transient
analysis beyond “stop = to” because the rest of the waveform is not used in PSD
calculation. Increase the “to” parameter to collect more data and to reduce
random variation in the spectrum.
• Number of Samples: This parameter defines the sampling frequency and the
range of the spectrum. Increase the number of samples to include all significant
harmonics and to avoid aliasing effect in DFT.
• Window Size: Frequency resolution is the inverse of the window size. Increase
the window size to obtain spectrum at a lower frequency.
• Window Type: Use smooth window when rectangular does not work. All
common window functions are supported.
To make the noise analysis valid, remove the sine source from the circuit. The new
schematic is now shown in Figure 12.
Set up the following parameters for transient noise and noise analysis in the ADE
analysis setup window:
Analysis tran
Stop time 1m
Accuracy Defaults (errpreset) moderate
Transient Noise
Noise Fmax 10G
Noise Fmin 100k
Noise Seed 1111
Noise setup
Analysis noise
Sweep Variable Frequency
Sweep Range start 100k, stop 10G
Output Noise voltage
Positive Output Node net2
Negative Output Node gnd!
Input Noise none
Transient noise output power spectral density (Red line) and noise output (Blue line)
comparison is shown in Figure 13. Transient noise and noise are matched very well.
Flicker noise corner frequency is seen at about 1GHz. There is a cutoff in transient
noise spectrum at 10GHz, consistent with the noisefmax setting. Transient noise
spectrum is about 4dB lower than noise curve at 10GHz, as expected from the theory
(See Figure 4).
Now, change noisefmin to 10MHz. Noise spectral density is shown in Figure 15. It
becomes flat below 10MHz, and then follows noise spectrum up to the noise band width
of 10GHz.
Figure 16 shows all three results together to demonstrate noisefmax and noisefmin
effects.
Figure 13. Noise power: Noise vs. transient noise (noisefmax = 10GHz)
Figure 14. Noise power: Noise vs. transient noise (noisefmax = 1GHz)
Figure 15. Noise power: Noise vs. transient noise (noisefmin = 10MHz)
Noise power is shown in Figure 17. Setting noisescale = 0.01 reduces noise power
10,000 times or -40dB. It has no effect on the shape of noise power spectrum.
Pss and pnoise parameters for the ADE analysis form are shown in the table below.
Pss setup
Analysis pss
Engine shooting
Beat Frequency 500M
Output harmonics
Number of harmonics 9
Pnoise setup
Analysis pnoise
PSS Beat Frequency (Hz) 500M
Output Frequency Sweep Range(Hz) start 100k, stop 10G
Sweep type Logarithmic
Points Per Decade 100
Output voltage
Positive Output Node net2
Negative Output Node gnd!
Input Source none
Output spectral density is shown in Figure 18. The red line shows transient noise, while
the blue line shows pnoise. Agreement is very good. The peak value at 500MHz does
not match because transient noise power spectral density includes both noise and
signal, while pnoise analysis includes only noise.
Exercise 6. RC Circuit
The circuit consists of 1kΩ resistor and 1pF capacitor.
r1 (1 0) resistor r=1k
c1 (1 0) capacitor c=1p
ac (1 0) noise start=100 stop=100G dec=5000
tran tran stop=100u noisefmax=10G noiseseed=7
1
𝑉 ∙ ( + 𝑗𝜔𝐶) = 𝐼
𝑅
The only noise source is resistor thermal noise with spectral density:
4𝑘𝑇
|𝐼𝑛 |2 =
𝑅
Output noise spectral density:
4𝑘𝑇 𝑅2 4𝑘𝑇𝑅
|𝑉𝑛 |2 = ( )=
𝑅 1 + (2𝜋𝑓𝑅𝐶)2 𝑓 2
1+( )
𝑓𝑐
Total noise can be calculated as an integral over the frequency band of interest:
𝐹𝑚𝑎𝑥
𝑘𝑇 2
𝑁 = ∫ |𝑉𝑛 |2 𝑑𝑓 = ∙ tan−1(2𝜋𝐹𝑚𝑎𝑥 𝑅𝐶)
𝐶 𝜋
0
𝑘𝑇
𝑁=
𝐶
Transient noise and noise analyses results are shown in Figure 26. At low frequencies,
noise spectral density is flat and is equal to:
|𝑉𝑛 |2 = 4𝑘𝑇𝑅
1
At high frequencies, beyond the corner frequency 𝑓𝑐 = 2𝜋𝑅𝐶 , noise spectral density
decreases with the slope of 20dB per decade. The value of noisefmax parameter in
transient noise is set to 10GHz. Therefore, transient noise spectral density deviates from
the accurate noise around that frequency.
The netlist for this example includes noise, pss, pnoise, and transient noise analyses.
The maxacfreq parameter is set in pss analysis to cover the frequency range of pnoise
analysis sweep. The fullspectrum option is used in pnoise analysis. Transient noise
analysis is repeated with different values of noisefmax.
m1 (1 2 0 0) nmos w=10u l=0.1u
model nmos bsim3v3 type=n
c1 (1 0) capacitor c=1p
vg (2 0) vsource type=pulse val0=3 val1=-3 period=10n rise=1n width=6n
When the pulse source is high, mosfet is open and circuit behavior is similar to that of
an RC circuit. When the source is low, mosfet is off and the circuit holds the last value
of the voltage, before the mosfet was turned off. The resulting noise can be seen as a
sum of contributions from the “track” and “hold” phases. This is illustrated in Figure 27a.
Clock signal (pink) is the voltage at the gate of the mosfet. Noisy signal (yellow) is the
voltage across the capacitor. It is a combination of periodic large signal and random
thermal noise generated in the mosfet channel. Noise (green) is the difference between
transient noise and reference transient waveforms. Mask signal (red) is equal to one
during hold phase and zero in track phase. It is used to separate track and hold noise
contributions. Hold noise (blue) is the product of noise and mask signals. Track noise
(pink) is noise multiplied by (1 – mask). So, the sum of track and hold noise signals is
equal to the total noise.
Noise spectral density is also a sum of the track phase and hold phase noise. It is
shown in Figure 27b. Green, yellow, and red lines are PSD of track noise, hold noise,
and total noise, respectively. In the hold phase, noise spectral density is proportional to
sinc 2 (𝑓 ∙ 𝑡ℎ ), where 𝑡ℎ is the duration of the hold phase or duty cycle of the input clock.
In the track phase, spectral density resembles that of the RC circuit.
PSD of the capacitor voltage signal is shown in Figure 28. As expected, it is a sum of
periodic signal and random noise. Signal peaks are seen at 100MHz and higher
harmonics. Noise power depends on the noisefmax parameter. It has to be set above
1/RC corner frequency in order to get accurate noise output, in agreement with full
spectrum pnoise analysis.
Figure 28a shows that PSD of the noise differs from PSD of the noisy signal only at
harmonic frequencies. Note that the statistical error here is much lower than in Figure
28 because transient stop time was increased from 100us to 1ms.
The circuit illustrates the worst case of noise frequency conversion effect. The signal
(yellow trace in Figure 27a) is a square pulse. Signal spectrum contains a large number
of harmonics. Harmonic peaks have significant values up to n = 50, or 5GHz, which is
consistent with the circuit bandwidth estimate. Track and hold converts all noise power
generated within 5GHz bandwidth to the frequencies below 100MHz. Therefore,
noisefmax=5GHz, or 50 times clock frequency is required for transient noise accuracy.
Signal and noise can be separated in the time domain by using the pavg() and
pstddev() calculator functions. These functions calculate signal and noise within one
cycle by taking the average over multiple cycles. For optimal performance, the
waveform should be sampled before averaging.
The resulting signal and noise waveforms are shown in Figure 29. As you can see,
average noise is not the same during “sample” and “hold” phases, and it is different
from the sqrt(kT/C) value, which should be observed in case of the ideal switch.
Time-domain and frequency-domain plots were created using the ViVA calculator
expressions listed in Figure 29a.
Transient noise simulation results can be also visualized using the ViVA Eye Diagram
Assistant (Figure 29b). The eye diagram picture is consistent with the signal average
and variance shown in Figure 29a.
𝑣𝑡ℎ
t0 = 0 t1 t2 t3 t
Absolute jitter (or edge to reference jitter, or edge jitter) is defined as:
𝐽𝑎 (𝑛) = 𝑡𝑛 − 𝑛𝑇
Period jitter (or one-cycle jitter) is a variation of the oscillation period with respect to the
nominal, or average period 𝑇:
𝑑
𝐽𝑐 (𝑛) = 𝑡𝑛+1 − 𝑡𝑛 − 𝑇 = 𝐽𝑎 (𝑛 + 1) − 𝐽𝑎 (𝑛) = 𝐽 (𝑛)
𝑑𝑛 𝑎
It can be calculated using the delay() function, or as a derivative of absolute jitter
deriv(abs_jitter()), or directly using the period_jitter() function.
𝐽𝑐𝐾 (𝑛) = ∑ 𝐽𝑐 (𝑛 + 𝑞)
𝑞=0
Cycle-to-cycle jitter is a variation of the period with respect to the previous cycle:
𝑑
𝐽𝑐𝑐 (𝑛) = (𝑡𝑛+2 − 𝑡𝑛+1 ) − (𝑡𝑛+1 − 𝑡𝑛 ) = 𝐽𝑝 (𝑛 + 1) − 𝐽𝑝 (𝑛) = 𝐽 (𝑛)
𝑑𝑛 𝑝
K-long-cycle-to-cycle jitter is a cycle-to-cycle jitter averaged over K cycles:
𝐾−1
Jitter can be expressed in time units – seconds, or in phase units – degrees, radians, or
in cycles (unit intervals), or in relative units – ppm, %. Conversion factors are:
Jitter spectrum 𝑆𝑥𝑥 is discrete time Fourier transform of time-domain jitter 𝐽𝑥𝑥 , which is
the same as DFT (discrete Fourier transform) in the limit of a large number of samples:
𝑁−1 𝑁−1
𝑘 1 𝑛𝑘 𝑘 𝑛𝑘
𝑆𝑥𝑥 ( ) = ∑ 𝐽𝑥𝑥 (𝑛𝑇)𝑒 −𝑗2𝜋 𝑁 𝐽𝑥𝑥 (𝑛𝑇) = ∑ 𝑆𝑥𝑥 ( ) 𝑒 𝑗2𝜋 𝑁
𝑁𝑇 𝑁 𝑁𝑇
𝑛=0 𝑘=0
1 𝑘
𝑁 →∞, → 𝑑𝑓, =𝑓,
𝑁𝑇 𝑁𝑇
1
∞ 𝑇
𝑆𝑥𝑥 (𝑓) = ∑ 𝐽𝑥𝑥 (𝑛)𝑒 −𝑗2𝜋𝑓𝑇𝑛 𝐽𝑥𝑥 (𝑛) = 𝑇 ∫ 𝑆𝑥𝑥 (𝑓)𝑒 𝑗2𝜋𝑓𝑇𝑛 𝑑𝑓
𝑛=−∞ 0
1
𝑆𝑥𝑥 (𝑓 − ) = 𝑆𝑥𝑥 (𝑓)
𝑇
RMS jitter or total power can be calculated in the time domain or frequency domain:
𝑁−1 𝑁−1
1 𝑘 2
𝑃𝑥𝑥 = lim ∑ 𝐽𝑥𝑥 (𝑛𝑇)2 = lim ∑ |𝑆𝑥𝑥 ( )|
𝑁→∞ 𝑁 𝑁→∞ 𝑁𝑇
𝑛=0 𝑘=0
Learn more at Cadence Support Portal - https://support.cadence.com
© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 51
Virtuoso Spectre Transient Noise Analysis
𝑁𝑇 𝑘 2
𝑝𝑥𝑥 (𝑓) = lim |𝑆𝑥𝑥 ( )| = 𝑇|𝑆𝑥𝑥 (𝑓)|2
𝑁→∞ 2 𝑁𝑇
For the discrete time Fourier transform, derivative or difference in time domain
corresponds to 2𝑗 sin(𝜋𝑓𝑇) 𝑒 𝑗𝜋𝑓𝑇 multiplier in the frequency domain:
∞
Power spectral densities of all types of jitter are related to each other.
𝑝𝑐𝑐 (𝑓) = 𝑇|𝐽𝑐𝑐 (𝑓)|2 = 4 sin2 (𝜋𝑓𝑇)𝑝𝑐 (𝑓) = 16 sin4 (𝜋𝑓𝑇)𝑝𝑎 (𝑓)
These formulas are especially useful for autonomous oscillator circuits, when phase is
not locked and absolute jitter is infinite. It is still possible to define spectral density of the
absolute jitter:
𝑝𝑐 (𝑓)
𝑝𝑎 (𝑓) =
4 sin2 (𝜋𝑓𝑇)
When period jitter is white noise process, then at low frequencies, 𝑝𝑐 (𝑓) is constant and
1 1
𝑝𝑎 (𝑓) is proportional to 2. When flicker noise contribution is significant, 𝑝𝑐 (𝑓)~
𝑓 𝑓
1
and 𝑝𝑎 (𝑓)~ 𝑓3. In both cases, 𝑝𝑎 (𝑓) is infinite at low frequencies and total absolute jitter
is infinite.
Time-domain jitter after ideal frequency divider with divide ratio 𝑀 is the same as before
the divider:
Note that the sampling frequency after the divider is 𝑀 times smaller. Period jitter after
the divider is equal to the K-cycle jitter with K equal to the divider ratio 𝐾 = 𝑀.
1 1
2𝑀𝑇 2𝑇
Phase noise is the spectral density of absolute jitter in phase units as a function of the
reference clock time:
2𝜋 𝑘 𝑁
𝑝𝑎 (𝑓) = 𝑃𝑆𝐷 { 𝑇 𝐽𝑎 (𝑛 ∙ 𝑇)}, where 𝑓 = 𝑁𝑇 , 𝑘 = 0,1, … 2
The test circuit is a ring oscillator with five invertor stages. The default bsimcmg model
is used for n and p mosfets. Each invertor stage has an additional 10fF capacitor load,
which can be used to adjust the oscillator frequency. Power supply is 1V DC. The circuit
schematic and netlist are shown below in Figure 30.
m1a ( b a 0 0 ) nmos
m2a ( b a v v ) pmos
ca (a 0) capacitor c=10f
m1b ( c b 0 0 ) nmos
m2b ( c b v v ) pmos
cb (b 0) capacitor c=10f
m1c ( d c 0 0 ) nmos
m2c ( d c v v ) pmos
cc (c 0) capacitor c=10f
m1d ( e d 0 0 ) nmos
m2d ( e d v v ) pmos
cd (d 0) capacitor c=10f
m1e ( a e 0 0 ) nmos
m2e ( a e v v ) pmos
ce (e 0) capacitor c=10f
v1 ( v 0 ) vsource dc=1
The time-domain pss waveform is stored as the vt_pss variable. The oscillator
frequency f0_pss is calculated as an inverse of the period, or the last time point in
vt_pss. Then, threshold crossing times and signal derivatives for the rising and falling
edges are calculated. The output spectrum of pnoise/pmjitter analysis is converted from
Volts to seconds using the derivative factors ddt_rising and ddt_falling. Absolute jitter
spectra at the rising and falling edges are exactly the same (Ja_rising = Ja_falling), as
expected from the theory. Further calculations are performed only for the rising edge. A
differentiation factor is applied to the absolute jitter to obtain the period jitter Jc_raw.
Then, log-log interpolation is performed to make the plot smoother. The K-cycle jitter
Jc10 is calculated using another differentiation factor.
Transient noise output waveform is stored as vt_tran variable. Absolute jitter time-
domain waveform Ja_time and its power spectrum Ja_tran is calculated using the
abs_jitter() and PN() functions, respectively. Average frequency is calculated using the
average() and freq() functions. Period jitter is calculated using the period_jitter()
function. X-axis units are converted from cycles to seconds using the waveVsWave()
function. Then, spectral density is calculated using the psd() function. Similar
calculations are performed for K-cycle jitter and jitter after divider. The more general
delay() function is used.
Time-domain jitter plots are shown in Figure 32. Since this is an autonomous oscillator
and phase is not locked, absolute jitter (blue) is not stationary. Period jitter is stationary.
Amplitude of 10-cycle jitter is about √10 times larger than period jitter.
Power spectral density plots are shown in Figure 33. Smooth curves are pnoise –
pmjitter results. Nosy curves are from transient noise analysis. Noise in spectra is due
to the statistical error. It can be reduced by increasing the number of samples. Phase
noise plots from pnoise and transient noise analyses are in good agreement.
Figure 32. Time-domain plots of absolute jitter, period jitter, and K-cycle jitter
(K=10)
Figure 33. Power spectral density of absolute jitter (phase noise), period jitter, K-
cycle jitter (K=10), and jitter after divide by M=10
Time-average spectral density is shown in Figure 35. Units are Voltage power:
dB10(V2/Hz). Frequency axis is relative to the oscillator frequency. Calculator
expressions are shown in Figure 34. PSD of transient noise signal is shifted to the left
by f0_tran to match pnoise analysis output. Pnoise PSD is finite at low frequencies
because the Lorentzian option is used.
Time-average PSD is proportional to the phase noise for the frequency offset exceeding
oscillator line width. The ratio between PSD of absolute jitter and time-average PSD for
the most part is 184.28dB = dB20(𝜋𝐹𝐴), where 𝐴 = 610.36mV is the magnitude of the
fundamental peak in pss solution and 𝐹 = 853.613MHz is the oscillator frequency. This
scale factor accounts for the unit conversion from s2/Hz in jitter PSD plot to V2/Hz in
time-average PSD. It confirms that for the ring oscillator, the AM component of the noise
is negligible and time-average PSD is mostly PM noise.
Figure 35. Time-average power spectral density near the oscillator frequency
In order to increase the frequency resolution and to reduce the statistical error, you
repeat the transient noise simulation multiple times with longer stop time, as shown in
the setup below.
parameters s=1
sweep sweep param=s start=127 step=1 stop=254 {
tran tran stop=317u noisefmax=10G noisefmin=1k lteratio=10 noiseseed=s
}
The more accurate transient noise simulation shown in Figure 36 reveals that the
oscillator line has a Gaussian shape with an effective width of 55 kHz. Equation for the
Gaussian is shown in Figure 34. Two parameters – line width and peak height – have
been adjusted to match transient noise spectrum.
Figure 36. Time-average power spectral density near the oscillator frequency
The output of the circuit repeats the input pulse with some delay and distortion. The red
line in Figure 38 is the pss waveform for the node d. It is perfectly periodic by definition.
The transient noise waveform is not periodic because random noise values are not
repeated. But the average value of noise is zero; therefore, the waveform average over
large number of cycles has no noise and is periodic.
𝑁
1
𝑉𝑎𝑣𝑔 (𝑡) = ∑ 𝑉(𝑡 + 𝑛𝑇) ≈ 𝑉𝑝𝑠𝑠 (𝑡)
𝑁
𝑛=0
The yellow line in Figure 38 is the average transient noise waveform, and it is almost
identical to the pss waveform. It confirms that in this circuit, noise does not affect the
operating point and small-signal noise approximation is valid.
Average noise can be calculated as a standard deviation from the average waveform.
𝑁
1 2
𝑉𝑛𝑜𝑖𝑠𝑒 (𝑡) = √ ∑ (𝑉(𝑡 + 𝑛𝑇) − 𝑉𝑎𝑣𝑔 (𝑡))
𝑁
𝑛=0
𝐹⁄
2
2
𝑉𝑛𝑜𝑖𝑠𝑒 (𝑡) = √ ∫ (𝑉𝑜𝑢𝑡 (𝑡, 𝑓)) 𝑑𝑓
𝐹𝑚𝑖𝑛
Average noise waveforms are compared in Figure 38 – green – pnoise, blue – transient
noise.
Figure 38. Output waveform and time-domain noise of the buffer circuit
Calculator expressions for the time-domain noise are given in Figure 39. Average signal
and average noise in transient noise analysis is calculated using the pavg and pstddev
functions. Both these functions require waveform period 𝑇 = 1𝑛𝑠 as an input parameter.
𝑇
Transient noise waveform is sampled with 100 points per cycle: 𝑇𝑠 = 100 = 10𝑝𝑠. So, the
time points are repeated periodically. Pss waveform is plotted directly. Time-domain
pnoise output spectral density is integrated over the frequency range up to the half of
𝐹
the fundamental frequency 2 = 500𝑀𝐻𝑧. Expressions for the time-average PSD and
Learn more at Cadence Support Portal - https://support.cadence.com
© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 62
Virtuoso Spectre Transient Noise Analysis
phase noise (jitter) spectrum are similar to the ring oscillator example. Frequency-
domain plots are shown in Figure 40.
Figure 40. Time-average PSD and phase noise of the buffer circuit
There is good agreement between transient noise and small-signal pnoise results.
Phase noise and power spectral density slope is 10dB per decade at low frequencies,
which is typical for the flicker noise in a driven circuit. Above the flicker noise corner
frequency of about 20MHz, both curves are flat. Flicker noise is modulated and
converted up to the upper and lower sidebands of the fundamental frequency and
harmonics. Additional pnoise analyses setup is listed below:
pnoise ( d 0 ) pnoise start=1k stop=10G pnoisemethod=fullspectrum
pnoisep1 ( d 0 ) pnoise start=1k stop=0.5G sweeptype=relative relharmnum=1 \
pnoisemethod=fullspectrum
pnoisen1 ( d 0 ) pnoise start=1k stop=0.5G sweeptype=relative relharmnum=-1 \
pnoisemethod=fullspectrum
pnoisep2 ( d 0 ) pnoise start=1k stop=0.5G sweeptype=relative relharmnum=2 \
pnoisemethod=fullspectrum
pnoisen2 ( d 0 ) pnoise start=1k stop=0.5G sweeptype=relative relharmnum=-2 \
pnoisemethod=fullspectrum
pnoisep3 ( d 0 ) pnoise start=1k stop=7G sweeptype=relative relharmnum=3 \
pnoisemethod=fullspectrum
pnoisen3 ( d 0 ) pnoise start=1k stop=0.5G sweeptype=relative relharmnum=-3 \
pnoisemethod=fullspectrum
pnoisej ( d 0 ) pnoise start=1k stop=0.5G dec=10 noisetype=pmjitter \
thresholdvalue=0.5 \
pnoisemethod=fullspectrum
Absolute jitter and period jitter in time domain are shown in Figure 41. Both are
stationary.
Figure 41. Absolute jitter and period jitter of the buffer circuit
Learn more at Cadence Support Portal - https://support.cadence.com
© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 64
Virtuoso Spectre Transient Noise Analysis
Exercise 10. Clock Source with Variable Frequency and Duty Cycle
One way to generate pulse waveform is to clamp the sine wave of the same frequency
with some step function. For example:
𝑣1 + 𝑣0 𝑣1 − 𝑣0
𝑣𝑠𝑡𝑒𝑝 (𝑡) = + ∙ 𝑡𝑎𝑛ℎ(𝛼 ∙ 𝑠𝑖𝑛(2𝜋𝑓𝑡))
2 2
Parameters 𝑣0 and 𝑣1 are low and high values of the pulse waveform, 𝑓 is the
frequency, and 𝛼 defines the slew rate or transition time of the pulse.
𝑣1 − 𝑣0 𝑑𝑣𝑠𝑡𝑒𝑝 𝑣1 − 𝑣0
= | = ∙ 𝛼 ∙ 2𝜋𝑓
𝑡𝑟 𝑑𝑡 𝑡=0 2
1
𝛼=
4𝜋𝑓𝑡𝑟
Duty cycle of the pulse can be adjusted by shifting the sine wave horizontally by 𝛽 and
vertically by 𝑠𝑖𝑛(𝛽):
𝑣1 + 𝑣0 𝑣1 − 𝑣0
𝑣𝑠𝑡𝑒𝑝 (𝑡) = + ∙ 𝑡𝑎𝑛ℎ (𝛼 ∙ (𝑠𝑖𝑛(2𝜋𝑓𝑡 − 𝛽) + 𝑠𝑖𝑛(𝛽)))
2 2
Parameter 𝛽 is related to the duty cycle 𝑑:
𝛽 = 𝜋 ∙ (𝑑 − 0.5)
𝑑𝑣𝑠𝑡𝑒𝑝 𝑣1 − 𝑣0
| = ∙ 𝛼 ∙ 𝑐𝑜𝑠(𝛽) ∙ 2𝜋𝑓
𝑑𝑡 𝑡=0 2
1
𝛼=
4𝜋𝑓𝑡𝑟 𝑐𝑜𝑠(𝜋 ∙ (𝑑 − 0.5))
The red line in Figure 42 is a sinewave. The yellow line is the sinewave shifted to the
𝜋
right by 𝛽 = 6 and up by 𝑠𝑖𝑛(𝛽) = 0.5. The green line is clamped shifted sinewave –
pulse. The timing of the falling edge of the pulse is proportional to the shift 𝛽, while the
rising edge is not affected.
𝜑(𝑡) = 𝜑0 + 2𝜋𝑓𝑡
When frequency is not constant, phase is defined as an integral of frequency over time:
𝑡
𝜑(𝑡) = 𝜑0 + 2𝜋 ∫ 𝑓(𝑡)𝑑𝑡
0
𝑓(𝑡) − 𝑓0
𝑓𝑛 (𝑡) =
𝑓0
Or:
𝑑 𝜑𝑛 (𝑡)
2𝜋𝑓𝑛 (𝑡) =
𝑑𝑡 𝑓0
The VerilogA code for the pulse source module is listed below. Two electrical input
nodes “fr” and “duty” represent relative frequency 𝑓𝑛 and duty cycle 𝑑. Phase equation is
1
implemented as a voltage-controlled current source with 2𝜋 gain driving a 𝑓 capacitor.
0
The voltage on the output phase node is equal to the phase variation in radians. A large
resistor is added from the phase node to ground to avoid floating node condition in DC
analysis. The initial condition across the capacitor defines the initial phase 𝜑0 . Other
input parameters are reference frequency 𝑓0 , rise time 𝑡𝑟 , fall time 𝑡𝑓 , and low and high
values of the pulse voltage 𝑣0 and 𝑣1 .
`include "discipline.h"
`include "constants.h"
Test circuit and analyses setup is listed below. Input terminals “ft” and “dt” of the
VerilogA source are driven by RC circuits with a 1kOhm resistor and a 1pF capacitor.
ahdl_include "freq_source_pss.va"
vp(ft dt p 0 phi) freq_source f0=100M delay=0 tr=100p
Random variation of the frequency and duty cycle is equal to the thermal white noise of
the resistor with 1GHz bandwidth. Deterministic variation is defined by independent
current sources and is zero for the frequency and 0.5 for the duty cycle.
Transient noise waveforms are shown in Figure 43. Blue – p – pulse output; yellow – ft
– frequency input; red – phi – phase output; green – dt – duty cycle input.
The outputs of the noise and pnoise are compared to the transient noise in Figure 44.
The blue lines “ft_noise” and “ft_tran_psd” are noise spectral density at the frequency
1
input node “ft”. As expected, the spectrum is flat up to the corner frequency 2𝜋𝑅𝐶 =
1
160𝑀𝐻𝑧, and then decreases as 𝑓2. Noise and transient noise results are the same.
The red lines show the noise spectral density for the output phase node “phi”. Noise and
pnoise outputs “phi_noise” and “phi_pnoise” are the same because at the phi node,
voltage is constant and noise is stationary. Since the frequency is the derivative of the
phase, frequency noise spectrum “ft_noise” differs from the phase noise “phi_noise” by
𝑓 2
the factor ( 𝑓0 ) . The transient noise result “phi_tran_psd” agrees with the frequency-
domain noise analyses.
The green and yellow lines show the phase noise or jitter spectrum measured at the
𝑓
falling and rising edges of the pulse output “p”. The spectrum ends at 20 = 50𝑀ℎ𝑧
because timing jitter is a discrete time signal, which can be measured only once per
Learn more at Cadence Support Portal - https://support.cadence.com
© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 69
Virtuoso Spectre Transient Noise Analysis
cycle. There is more jitter on the falling edge because the duty cycle input affects only
the falling edge timing and the duty cycle noise source contributes only to the falling
edge jitter, as opposed to the frequency noise source, which contributes equal amount
of jitter to the rising and falling edges. At low frequencies, duty cycle noise contribution
is much smaller than frequency noise and jitter is the same for the rising and falling
edges.
The cyan lines are time-average noise spectral density at the pulse output node “p”,
relative to the signal magnitude. The frequency scale for these plots is relative to the
fundamental frequency 𝑓0 = 100𝑀ℎ𝑧. So, the peak at 200MHz corresponds to the third
harmonic. Upper and lower sidebands are symmetric because there is no amplitude
modulation. Even harmonics are absent because the pulse is symmetric and have equal
rise and fall times.
This example illustrates that the phase noise at low frequency offset, in the “near-
carrier” region, is the same at all times and for all nodes in the circuit. This is because
1
frequency noise contribution is proportional to 𝑓2 and always dominates at low
frequencies. At larger frequency offsets, other noise contributions become important
and might change the phase noise.
Note that the circuit behaves as a free-running oscillator. Frequency is stationary, but
the phase is not locked. Phase variation will increase indefinitely with time. Yet, pss
analysis is set up for the driven circuit. Additional equation for the frequency, which
would be added in the autonomous pss, is not needed here because frequency and
phase variables are explicitly defined in the VerilogA model.
Most of the circuits have memory; so, the timing of the target edge depends on the
history of the state transitions in the circuit. Noise at the target edge is correlated to the
trigger edge, and delay jitter formula has an additional term:
Duty cycle is the delay from the rising edge of the clock signal to the falling edge,
divided by the clock period. You use the pulse source and test circuit from the previous
exercise to demonstrate the clock duty cycle jitter measurement.
ahdl_include "freq_source_pss.va"
vp(ft dt p 0 phi) freq_source f0=100M delay=0 tr=100p
Pnoise analysis pnoisem will perform three jitter measurements j1, j2, and j3, as
specified by the measurement parameter. Corresponding jitterevent probes are added
to the circuit. Probes j1 and j2 will measure the jitter at the rising and falling edge
crossings correspondingly. Probe j3 has trigger and target edge crossings specified. It
will measure the delay jitter. Transient noise analysis setup is the same for all
measurements.
Figure 45 shows the pss waveform for the output node p (red) and its derivative
(yellow). Markers show the crossing times and slope for the rising and falling edges of
the waveform.
Figure 46 shows the jitter spectrum calculated by pnoise analysis for three probes: j1 –
rising edge (red), j2 – falling edge (yellow), and j3 – delay jitter (green). In this very
simple case, it is easy to figure out the correlation term and calculate delay jitter from
the rising and falling edge jitter measurements. The frequency noise source contributes
equal amount of noise to the rising and falling edges. These two contributions are fully
correlated and cancel each other in the delay jitter spectrum. Duty cycle jitter
contributes only to the falling edge, and this is the only noise contribution left in the
delay jitter. Therefore, delay jitter is equal to the difference between falling and rising
edges:
The calculated difference is also shown in Figure 46. It is the same as pnoise delay jitter
output. The noisy green line in Figure 46 is delay jitter calculated from the transient
noise waveform using the delay() and psd() functions of the ViVA calculator.
Figure 46. Rising and falling edge jitter; Duty cycle jitter
Pnoise output for the rising and falling edge jitter is in units of V/sqrt(Hz). It must be
divided by the waveform slope at the crossing point to convert to s/sqrt(Hz). Delay jitter
output is in s/sqrt(Hz) – no conversion needed. Transient noise post-processing is done
in two steps. Multi-occurrence delay function is used to calculate the time-domain delay
waveform tran_delay, which has one delay value per clock cycle. Delay jitter spectrum
psd_tr_delay is power spectral density of that waveform.
Circuit schematic is shown in Figure 47. When the clock signal clk is low, the circuit is
disabled and outputs “op” and “om” are tied to power supply vdd. When the clock
switches to high, tail mosfet m1 opens and current starts flowing through the differential
pair m2, m3. The input voltage difference is:
This input voltage difference is amplified at the output, and eventually, the differential
output reaches its steady state, which is either +1 or -1 V.
m1 ( c clk 0 0 ) nch
m2 ( p ip c 0 ) nch
m3 ( m im c 0 ) nch
m4 ( om op p 0 ) nch
m5 ( op om m 0 ) nch
m6 ( om op vdd vdd ) pch
m7 ( op om vdd vdd ) pch
m8 ( om clk vdd vdd ) pch
m9 ( op clk vdd vdd ) pch
m10 ( p clk vdd vdd ) pch
m11 ( m clk vdd vdd ) pch
vdd ( vdd 0 ) vsource dc=1
parameters Vin=10u
sweep sweep param=Vin start=-7m stop=7m step=0.2m {
tran tran stop=2u noisefmax=500G noiseseed=1+(Vin+7m)/0.2m
}
Differential input voltage 𝑉𝑖𝑛 is a sweep variable. Extremely large noisefmax value –
500GHz – is required for this almost ideal circuit. A more realistic circuit would have
much smaller noise bandwidth. Noise seed value is incremented by 1 on each sweep
iteration. Transient analysis duration is 2us or 4000 clock cycles.
The transient noise waveform of the differential output signal is shown in Figure 48. It
has one pulse on every clock cycle. Polarity of the pulse depends on the input value.
When input is positive and relatively large, 𝑉𝑖𝑛 = 7𝑚𝑉, output has a positive pulse at
every clock cycle and errors or negative pulses are rare (red line). When input is close
to zero, output is random (yellow line).
Average output value is calculated by counting positive and negative pulses 𝑛+ and 𝑛− :
𝑛+ − 𝑛−
̅̅̅̅̅
𝑉𝑜𝑢𝑡 =
𝑛+ + 𝑛−
To introduce input referred noise, consider an ideal noiseless comparator which has the
noise source at the input, with probability distribution 𝑝(𝑣) and standard deviation 𝜎.
Constant input voltage shifts noise distribution by 𝑉𝑖𝑛 . Average output can be calculated
by integrating the input voltage distribution:
∞ 0 𝑉𝑖𝑛
̅̅̅̅̅
𝑉𝑜𝑢𝑡 = ∫ 𝑝(𝑣 − 𝑉𝑖𝑛 )𝑑𝑣 − ∫ 𝑝(𝑣 − 𝑉𝑖𝑛 )𝑑𝑣 = ∫ 𝑝(𝑣)𝑑𝑣
0 −∞ −𝑉𝑖𝑛
This integral evaluates to 1 when 𝑉𝑖𝑛 ≫ 𝜎 and −1 when 𝑉𝑖𝑛 ≪ −𝜎. If noise distribution is
Gaussian:
1 𝑣2
−
𝑝(𝑣) = 𝑒 2𝜎2
𝜎√2𝜋
𝑉𝑖𝑛
̅̅̅̅̅
𝑉𝑜𝑢𝑡 = 𝑒𝑟𝑓 ( )
𝜎√2
Input referred noise (IRN) of the comparator is defined as a value of the equivalent input
noise source, which produces the same probability of error at the output of the ideal
noiseless comparator. It can be found by fitting the ̅̅̅̅̅
𝑉𝑜𝑢𝑡 (𝑉𝑖𝑛 ) curve to the 𝑒𝑟𝑓 function,
or by solving this equation for 𝜎:
𝑉𝑖𝑛
𝜎= ̅̅̅̅̅
𝑒𝑟𝑓 −1 (𝑉𝑜𝑢𝑡 )
√2
Figure 49 shows average output, input referred noise, and error probability. Red dots
are calculated from transient noise waveform. Yellow regression lines correspond to the
IRN value 𝜎 = 4.4𝑚𝑉.
Transient noise waveforms are sampled at the end of the duty cycle, converted to
integer, and averaged using the following ViVA calculator expression:
vout_avg = average(int(sample( v(“op”)-v(“om”) 0.25n 1999.75n “linear” 0.5n )*1.5))
This waveform is then used to calculate the probability of error and IRN:
When input is close to zero, comparator spends a significant time in the metastable
state, where transient and pss waveforms are very sensitive to numerical errors. Very
tight tolerance settings are needed for the case when Vin=1n. For larger input voltages
in the uV and mV range, regular moderate or conservative settings are sufficient to get
accurate waveforms.
Figure 50 shows the differential output waveform 𝑉𝑜𝑢𝑡 for the range of positive input
values from 𝑉𝑖𝑛 = 1𝑛𝑉 (pink) to 10𝑚𝑉 (purple). The circuit behavior over the pss cycle
goes through several distinct phases: amplification – from the rising clock edge to about
40ps; latch regeneration – from 40ps until the output reaches 0.5V; saturation – until the
end of the clock duty cycle; and reset – from the falling clock edge to the next rising
edge.
Switching to logarithmic scale for Y-axis (middle pane of Figure 50) shows that
waveforms in regeneration phase are exponential and proportional to the input voltage.
𝑡−𝑡0
𝑉𝑜𝑢𝑡 (𝑡) = 𝑉𝑖𝑛 𝑒 𝜏
Regeneration time constant or life time of the metastable state can be calculated using
logarithmic derivative:
1
𝜏=
𝑑
𝑙𝑛(𝑉𝑜𝑢𝑡 )
𝑑𝑡
This expression is plotted in the bottom pane of Figure 50. Flat portion of the plot gives
the estimate for the time constant 𝜏 = 4.4𝑝𝑠.
Since the output waveform is exponential, delay time 𝑡𝑑 at the threshold crossing time 𝑡𝑐
is a logarithmic function of the input voltage:
𝑉𝑡ℎ
𝑡𝑑 = 𝑡𝑐 − 𝑡0 = 𝜏 ∙ 𝑙𝑛 ( )
𝑉𝑖𝑛
Pss analysis predicts that comparator delay is increasing when input voltage
approaches zero, as shown in Figure 51, red line. Transient noise analysis shows that
delay saturates and remains constant when input voltage is below the input referred
noise value (yellow line).
This is confirmed by time-domain sampled pnoise analysis with the following setup:
pnoise (op om) pnoise noisetype=timedomain start=1G stop=1G pnoisemethod=fullspectrum \
numberofpoints=10 noisetimepoints=[ 25p 26p 27p 28p 29p \
30p 31p 32p 33p 34p 35p 36p 37p 38p 39p \
40p 41p 42p 43p 44p 45p 46p 47p 48p 49p 50p 51p 52p 53p 54p 55p 56p 57p 58p 59p \
60p 61p 62p 63p 64p 65p 66p 67p 68p 69p 70p 71p 72p 73p 74p 75p 76p 77p 78p 79p \
80p 81p 82p 83p 84p 85p 86p 87p 88p 89p 90p 91p 92p 93p 94p 95p 96p 97p 98p 99p \
100p 101p 102p 103p 104p 105p 106p 107p 108p 109p \
110p 111p 112p 113p 114p 115p 116p 117p 118p 119p \
120p 121p 122p 123p 124p 125p 126p 127p 128p 129p \
130p 131p 132p 133p 134p 135p 136p 137p 138p 139p 140p]
A large number of noise time points are added for better time resolution. Calculator
expressions for time-domain noise post-processing are listed below:
Noise = value(getData("out" ?result "pnoise-timedomain.pnoise") 1G )
Vout = v("op" ?result "pss-td.pss" )-v("om" ?result "pss-td.pss" )
IRN = sample( Noise*sqrt(1G)*Vin/Vout 25p 150p "linear" 1p)
Figure 52 in the top pane shows pss output waveforms. It is the same plot as in Figure
50. The middle pane is sampled time-domain pnoise output spectral density at the half
of the clock frequency. It is exponentially increasing. In this case, noise is white; so,
total noise is equal to the noise spectral density multiplied by the end frequency.
Input referred noise 𝜎 can be found by normalizing the pnoise output with the
comparator gain, defined as a ratio of the output to input voltage:
𝑉𝑖𝑛
𝜎 = 𝜎𝑡𝑑 (𝑡)
𝑉𝑜𝑢𝑡 (𝑡)
This expression is plotted in the bottom pane of Figure 52. It is indeed constant when
the comparator is in the regeneration phase, within the time interval where waveforms
are exponential. Input referred noise value 𝜎 = 4.4𝑚𝑉 is the same as that calculated
from transient noise simulation. Small-signal noise approximation is valid for a
comparator in the regeneration phase, and pnoise analysis can be used instead of
transient noise to calculate IRN.
Comparator output waveform has exponential region only when the input voltage is
smaller than input referred noise: 𝑉𝑖𝑛 < 𝜎. Otherwise, the comparator output goes from
amplification phase directly to saturation, skipping the regeneration phase. When 𝑉𝑖𝑛 =
10𝑚𝑉 (purple line in Figure 52), both output voltage 𝑉𝑜𝑢𝑡 (𝑡) and noise 𝜎𝑡𝑑 (𝑡) do not
show exponential behavior and there is no flat region in the IRN plot. When input is
below 10𝑚𝑉, regeneration starts at about 40𝑝𝑠. Saturation phase starts when output
reaches the threshold of 0.1𝑉. For correct IRN measurement, noise sampling time or
threshold should be set within those limits. For example, if 𝑉𝑖𝑛 = 1𝑚𝑉, set the sampling
time of time-domain pnoise between 40𝑝𝑠 and 50𝑝𝑠, or set the threshold voltage of
pmjitter pnoise between 10𝑚𝑉 and 100𝑚𝑉.
According to the central limit theorem, if N is sufficiently large, 𝑅𝑒𝑋𝑘 and 𝐼𝑚𝑋𝑘 have
normal distribution.
1 𝑥2
−
𝑝(𝑥) = 𝑒 2𝜎2
√2𝜋𝜎 2
Distribution variance 𝜎 2 depends on frequency index 𝑘 and is equal to the noise power.
𝑥 − 𝑥 22
𝑝(𝑥) = 2 𝑒 2𝜎
𝜎
4−𝜋
Rayleigh distribution has large variance: 2 𝜎 2 . It is close to the noise power 𝜎 2 . For
more accurate estimate, noise power spectrum must be statistically averaged. Average
can be taken over m transient noise simulations with different noise seed, or over m
time windows within the same transient noise simulation. Then, the average power
spectral density has Erlang distribution:
𝑚 𝑚𝑥 𝑚−1 −𝑚𝑥2
𝑝(𝑥) = ( ) 𝑒 𝜎
𝜎 2 (𝑚 − 1)! 𝜎 2
For large m, it approaches normal distribution. Noise power is typically measured in dB.
The distribution can be converted to the log scale by the following variable substitution:
𝑥
𝑥 → 𝜎 2 1010
𝑙𝑛10 𝑥
𝑑𝑥 → 𝜎 2 1010 𝑑𝑥
10 𝑥 𝑥
(𝑚 − 𝑒)𝑚 𝑙𝑛10 𝑚(𝑙𝑛(1010 )+1−1010 )
𝑝(𝑥) = 𝑒
(𝑚 − 1)! 10
Figure 53 shows Erlang distribution for several 𝑚 values from 1 to 128. Logarithmic
scale is used for the power. The distribution is normalization to the maximal value, so
that it has the maximum of 1 at 0dB power. Figure 54 shows the same distribution with
logarithmic scale on both axes.
Figure 55 shows actual histograms of the power spectral density of the transient noise
waveform. Random noise signal has white spectrum with 100GHz bandwidth and -80dB
power. PSD is averaged over 1 to 128 consecutive time windows.
The following ViVA expressions were used for Figures 53 and 55:
E1 = 128
E2 = 10**(sample(artListToWaveform(`((-20 -20) (10 10))) -20 10 "linear" 1m)/10)
Erlang = exp(E1*ln(E2)+E1*(1.0-E2)))
E3 = histogram2D(dB10(psd(v("1" ?result "tran-tran") 0 100u 20000000 ?windowName
"Rectangular" ?windowSize 20000000/E1 )*100G) 5000)
Tran_noise = E3/ymax(E3)
Uniform white noise source was modeled using the following VerilogA code:
`include "discipline.h"
`include "constants.h"
module uniform(vp, vn);
inout vp, vn;
electrical vp, vn;
parameter integer seed = 1; // seed for the random sequence
parameter real ampl = 1; // noise amplitude A/sqrt(Hz)
parameter real fmax = 1; // noise bandwidth
real noise;
analog begin
@(timer(0, 0.5/fmax))
noise = ampl*$rdist_uniform( seed, -sqrt(3), sqrt(3))*sqrt(fmax);
I(vp, vn) <+ noise;
end
endmodule
The experiment agrees with theoretical analysis of statistical error. The width of the
distribution at 0.05 level is listed in Table 4.
2 16.3dB
4 11.1dB
8 7.7dB
16 5.4dB
32 3.8dB
64 2.7dB
128 1.9dB
To achieve ±1dB accuracy in noise power calculation, about 100 data points are
required at each frequency.
Support
Cadence Support Portal provides access to support resources, including an extensive
knowledge base, access to software updates for Cadence products, and the ability to
interact with Cadence Customer Support. Visit https://support.cadence.com.
Feedback
Email comments, questions, and suggestions to content_feedback@cadence.com.