You are on page 1of 89

Virtuoso Spectre Transient Noise

Analysis

Product Version: SPECTRE18.1


March 2019
Copyright Statement

© 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.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 2
Virtuoso Spectre Transient Noise Analysis

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

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 3
Virtuoso Spectre Transient Noise Analysis

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.

Noise in Electronic Circuits


Noise in electronic circuits can be defined as any unwanted signals that mask or
interfere with a desired signal. Noise signals can be a function of frequency having both
random amplitude and phase deviations. Consideration of device noise is of significant
importance for a design of high-precision analog and RF circuits. Device noise directly
affects the circuit performance which can be measured in several ways, such as noise
power spectrum, noise figure, phase noise, timing jitter, signal-to-noise ratio, and bit
error rate.

To assess the impact of device noise on circuit behavior, small-signal approximation is


most commonly used in commercial noise analysis tools. It assumes that the circuit has
either a stationary operating point or periodic steady state, and the device noise
contributions in the design are small enough such that the noise does not alter the
operating point or periodic state of interest. Thus, noise analysis becomes a linear
problem, where noise can be separated from signals by means of the superposition
principle. Noise properties of a design can be solved in the frequency domain by
linearizing the circuit equation around the DC operating point (noise analysis) or
periodic steady state (pnoise or hbnoise analysis).

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

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 4
Virtuoso Spectre Transient Noise Analysis

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.

In theory, time-domain noise analysis involves solving stochastic differential equations.


When random sources are added to a circuit, all circuit unknowns become random
variables. The task of circuit simulation becomes solving the probability distributions of
circuit unknowns. Certain simplification should be made to make this approach possible.
For example, all random variables can be assumed to have Gaussian probability
distribution that allows analytic averaging, or the circuit equation can be formulated and
approximated using lower-order distribution moments. Even with these simplifications,
the resulting nonlinear problem is often too complicated to solve; this direct approach
has not found good commercial applications.

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.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 5
Virtuoso Spectre Transient Noise Analysis

Frequency- and Time-Domain Noise Analyses


Transient noise analysis can be applied to any circuit, but in many cases, it is not the
most efficient way to verify noise behavior. If the circuit has stable DC operating point,
like operational amplifiers, LNAs, and filters, the small-signal noise analysis is not only
sufficient but always outperforms transient noise analysis. For a wide class of periodic
circuits, including VCOs, mixers, dividers, phase detectors, charge pumps, and switch-
cap filters, pss analysis followed by pnoise (or hbnoise) analysis provides the same
information as transient noise analysis in less simulation time. However, for many
designs, there is no alternative to transient noise analysis. This includes non-periodic
circuits, like sigma-delta modulators and fractional-N PLLs, as well as periodic circuits
where pss analysis becomes impractical due to the large circuit size, or wide frequency
range, like most PLLs and ADCs. Some periodic circuits require long random bit
sequences for performance testing, which makes them effectively non-periodic. Table 1
summarizes typical circuit designs and the recommended noise analysis approaches.

Circuits Operating Point


Noise Analysis Noise Summary
Analysis
Linear
OP-AMPS
LNAs DC NOISE or SP-NOISE Yes
Filters

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

Table 1. Circuit categories and noise analyses

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

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 6
Virtuoso Spectre Transient Noise Analysis

noise analysis, signal and noise are lumped together, and dynamic range is limited by
numerical tolerances of the transient simulation.

Small-signal noise analysis allows computing individual contributions of every noise


source in the circuit to the output noise probe. Composite noise spectral density is
calculated afterwards as mean-square sum. Small-signal noise analysis must be
repeated to calculate noise at another output. Transient noise calculates random noise
variations for all nodes in the circuit simultaneously. However, equations are nonlinear,
and individual noise contributions cannot be easily separated. To calculate noise
contribution from a device or circuit block, transient noise simulation can be performed
repetitively with noise contribution from certain devices or blocks turned on or off, using
the noiseon or noiseoff option in transient noise analysis.

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.

• Finally, many repetitive simulations need to be performed or the simulation must


span a large number of periodic cycles to draw meaningful statistical characteristics.

The key technology that enables time-domain noise analysis is the ability to properly
inject random device noise at each time step.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 7
Virtuoso Spectre Transient Noise Analysis

Device Noise Models


Device noise models typically have several independent noise sources connected to the
device terminals or internal nodes. Each noise source is characterized by its noise
spectral density, which is a function of bias voltage and/or frequency. The most often
used device noise models are:

• Thermal noise. The constant spectral density of a resistor is:

̅̅̅ 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 = 𝑘
𝑓

In addition, a noise file can be associated to an independent source to model an


arbitrary frequency-dependent noise profile, obtained from measurement or behavioral
modeling:

̅̅̅
𝑛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.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 8
Virtuoso Spectre Transient Noise Analysis

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.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 9
Virtuoso Spectre Transient Noise Analysis

Generating Noise Signals in Time Domain


Based on the device noise model, random time-domain noise signals are generated and
injected into the transient simulation at each time step.

White Noise Signals


In the time domain, a white noise signal 𝑛(𝑡) with bandwidth 𝐹𝑚𝑎𝑥 can be approximated
as:

𝑛(𝑡) = 𝜎 ∙ 𝜂(𝑡, 𝛥𝑡)

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

The power spectrum of 𝑛(𝑡) is a Fourier transform of the auto-correlation function.

̅̅̅
𝑛2 (𝑓) = 2𝜎 2 Δ𝑡 sinc 2 (𝑓Δ𝑡)

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 10
Virtuoso Spectre Transient Noise Analysis

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

Total noise power can be obtained by integrating over the frequency:


∫ ̅̅̅
𝑛2 (𝑓)𝑑𝑓 = ̅̅̅
𝑛2 𝐹𝑚𝑎𝑥
0

The noise signal, its auto-correlation function, and spectral density are shown in Figure
1, 2, and 3, respectively.

𝑛(𝑡)

Δ𝑡

Figure 1. White noise waveform

̅̅̅
𝑛2 (𝑡)
𝜎2

Δ𝑡 𝑡

Figure 2. White noise auto-correlation function

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 11
Virtuoso Spectre Transient Noise Analysis

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.

Figure 4. Plot of the sinc2 function


Learn more at Cadence Support Portal - https://support.cadence.com
© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 12
Virtuoso Spectre Transient Noise Analysis

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.

Frequency-Dependent Noise Signals


You can extend the white noise approach to handle more generic frequency-dependent
noise sources by approximating the frequency dependency using a set of step
functions.

First, you divide the frequency range of interest from Fmin to Fmax in octaves (steps).

f 0  Fmax , f k  2  k Fmax , f N  Fmin ,

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 .

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 13
Virtuoso Spectre Transient Noise Analysis

This is graphically illustrated in Figure 5.

n2(f)






fN f2 f1 f0
Fmin Fmax

Figure 5. Power spectral density of pink noise superposed by white noise


sources

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

Figure 6. Update schedule for octaves of a pink noise source

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 14
Virtuoso Spectre Transient Noise Analysis

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.

Random and Bias-Dependent Noise Update


Most nonlinear device models define noise spectral density as a function of both
frequency and terminal voltages.
̅̅̅
𝑛2 (𝑣, 𝑓) = ℎ(𝑣)𝑢(𝑓)

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.

• Random number sequence is initiated with a given noiseseed value.

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.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 15
Virtuoso Spectre Transient Noise Analysis

noiseseed

rand() u(f) h(v(t))

Modulated Transient
White Colored colored source
noise noise noise vector

noisefmax noisefmin

Figure 6a. Transient noise algorithm flowchart

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.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 16
Virtuoso Spectre Transient Noise Analysis

Transient Noise Analysis Use Model


Transient noise analysis is a part of the transient analysis with the following additional
controlling parameters:

Parameter Default Description


Basic Transient Noise Analysis Parameters

This sets the bandwidth of the random noise sources. A non-zero


value turns on transient noise analysis. The maximum time step of
noisefmax (Hz) 0 Hz
the transient analysis is limited to 1/(2×noisefmax). It also strobes
the data to the output at each noise update.

This enables flicker noise and other frequency-dependent noise


sources and sets the lowest desired frequency of noise power
noisefmin (Hz) noisefmax spectral density. The noise power density is assumed constant
below noisefmin. 1/noisefmin cannot exceed the transient analysis
stop time.

Seed (positive integer) for the random number generator. Using an


noiseseed (randomized)
identical seed allows the reproduction of a previous simulation.

Scaling factor to artificially inflate the amount of device noise to


noisescale 1 make it visible above the simulation numerical noise floor. It needs
to be small enough to not alter the normal operation of the circuit.

Turning on/off Noise Contribution on a Block Basis

The list of device and sub-circuit instances to be considered as


noiseon=[…] noisy during simulation. Noise contributions from the rest of the
circuit are all turned off.

The list of device and sub-circuit instances to be considered not


noiseoff=[…] noisy during simulation. Noise contributions from the rest of the
circuit are all turned on.

Turning on/off Noise Contribution at Various Times in the Simulation

Name of the dynamic parameter. Must be used with param_vec,


which specifies the time dependence of the parameter. For
param example, param=isnoisy param_vec=[0ns 0 100ns 1 500ns 0]
turns off noise contribution before 100ns and after 500ns, and
turns on noise contribution within the time window [100ns, 500ns].

param_vec=[…] Vector of time – value pairs for dynamic parameter param.

Table 2. Transient noise analysis parameters

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 17
Virtuoso Spectre Transient Noise Analysis

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.

Figure 7. Transient analysis GUI form

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.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 18
Virtuoso Spectre Transient Noise Analysis

Turning On Transient Noise Analysis


A non-zero noisefmax parameter turns on device noise contribution in the circuit, thus
enabling transient noise analysis. The value of noisefmax determines the bandwidth
for all noise sources, which puts an upper limit on the maximum time step the simulation
can take. The maximum noise frequency should be chosen high enough to capture all
the noise but not so high that the simulation time becomes too long. Below are a few
guidelines on the selection of noisefmax.

• 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.

A proper value of noisefmax should be chosen based on the noise accuracy


requirement at the highest frequency of interest. Referring back to Figure 4 and
considering Table 3, if 1dB accuracy is acceptable at a particular frequency,
noisefmax can be chosen as twice of that frequency. In addition, if a smaller-than-
0.15dB resolution is needed, noisefmax can be chosen as five times of that frequency.

Frequency Accuracy Loss


noisefmax 3.95dB

noisefmax/2 0.91dB

noisefmax/3 0.40dB

noisefmax/4 0.22dB

noisefmax/5 0.14dB

Table 3. Accuracy of noise spectral density vs. noisefmax

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 19
Virtuoso Spectre Transient Noise Analysis

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.

Turning On Flicker Noise


The noisefmin parameter activates frequency-dependent noise sources. By default,
noisefmin is equal to noisefmax, so that only white noise sources are enabled with
uniform spectrum. Below are a few guidelines on the selection of noisefmin.

• 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.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 20
Virtuoso Spectre Transient Noise Analysis

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

Fmin 1/f corner Fmax

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.

Individual Device Noise Contributions


As discussed before, transient noise analysis does not produce a noise summary table,
as there is no separation between signals and noise. This is often viewed as a major
deficiency of the methodology, as a user cannot easily identify the source of a noise
specification violation. On the other hand, transient noise analysis calculates noise
power at every node in the circuit, as opposed to the frequency-domain noise analysis,
which calculates noise for a single output. Comparing the noise at different nodes in the
circuit can give some clue about the location of the worst noise source. In addition to
that, Spectre was first to introduce the noiseon and noiseoff parameters to allow
manual isolation of noise sources. It works as follows:

• 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.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 22
Virtuoso Spectre Transient Noise Analysis

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.

Delayed Activation of Transient Noise


Many circuits have a very long signal ramp up or circuit setup time, before entering the
normal operating state. The user is often not interested in noise during this ramp up or
setup time. For example, phase noise performance of PLLs is measured when PLL is in
lock. Since transient noise analysis is more expensive than regular transient analysis, it
can be much more efficient to run transient noise analysis only after the PLL locks.
Spectre supports a dynamic parameter change feature that can take advantage of this.

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.

trannoise tran … param=isnoisy param_vec=[0 0 tlock 1] …

Post-Processing Using Virtuoso-ViVA


The output of transient noise analysis is either a single waveform (from a single long
simulation run) or a family of waveforms (from multiple but shorter runs). Noises from
various devices cause stochastic (random) fluctuations in currents flowing into a circuit.
These fluctuations are reflected in the output signals and can be observed as small
random variations in signal magnitude and/or timing. Since signals and noises are
mixed together, certain post-processing is needed to extract useful signal-to-noise
measurements. In addition, the simulation numerical noise floor must be identified and
excluded from these measurements.

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.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 23
Virtuoso Spectre Transient Noise Analysis

• 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.

Most of these functions are demonstrated in the tutorial examples.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 24
Virtuoso Spectre Transient Noise Analysis

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.

Exercise 1. Transient Noise Waveform and Spectrum - noiseseed


This exercise uses one resistor circuit shown in Figure 9. The resistor is driven by two
current sources: 1uA dc source and a sine source with frequency 500MHz and
amplitude 1uA. The resistor model includes both thermal and flicker noise. Model
parameters are rsh=1k kf=10e-15. Resistor instance parameters are l=100u w=1u.
Resistor value is rshl/w = 100 kOhm.

Figure 9. One resistor circuit diagram

You run transient noise analysis, plot output waveforms and spectrum, and show the
effect of the noiseseed parameter.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 25
Virtuoso Spectre Transient Noise Analysis

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):

Transient noise setup


Analysis tran
Stop Time 10u
Accuracy Defaults (errpreset) moderate
Transient Noise
Noise Fmax 10G
Noise Fmin 100k
Noise Seed 1111
Multiple Runs
Number of Runs 3

The netlist for this example is given below:


I0 (0 a) isource dc=1u type=dc
I1 (0 a) isource type=sine ampl=1u freq=500M
R1 (0 a) flickres l=100u w=1u isnoisy=yes
model flickres resistor rsh=1k kf=10e-15

tran tran stop=10u

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:

𝑉𝑎 (𝑡) = 𝑉𝐷𝐶 + 𝑉𝑓 sin(2𝜋𝑓𝑡) = 0.1 + 0.1 ∙ sin(2𝜋 ∙ 500𝑀 ∙ 𝑡)

Power of the signal is mean square.

𝑃 = |𝑉𝑎 (𝑡)|2 = 0.015

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 26
Virtuoso Spectre Transient Noise Analysis

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 10. Transient waveforms

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 27
Virtuoso Spectre Transient Noise Analysis

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.

Figure 11a. Calculator expressions

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.

Figure 11b. Power spectral density of the signal and noise

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 28
Virtuoso Spectre Transient Noise Analysis

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

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 29
Virtuoso Spectre Transient Noise Analysis

Exercise 2. Understanding PSD Function Parameters


You use the same circuit as shown in Figure 9 to demonstrate the effect of the PSD
function parameters on the calculated spectrum.

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

Waveform is uniformly sampled with sampling frequency 𝐹𝑠 .


1 𝑁
𝑡𝑛,𝑚 = 𝐹 (𝑛 + 𝑚 2 ); 𝑡𝑛 = 𝑡𝑛,0
𝑠

DFT time window 𝑇 = 𝑡𝑁 − 𝑡0 is 𝑁 samples long. Total number of samples is:

𝑁(𝑀 + 1)
𝑁𝑠 = = 𝐹𝑠 ∙ (𝑡𝑠𝑡𝑜𝑝 − 𝑡𝑠𝑡𝑎𝑟𝑡 )
2
The PSD function panel is shown below.

Figure 11f. PSD function setup panel

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 30
Virtuoso Spectre Transient Noise Analysis

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.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 31
Virtuoso Spectre Transient Noise Analysis

Figure 11d. PSD of the noisy signal; Different window size

Figure 11e. PSD of the noisy signal; Smooth window

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

Additional considerations for the choice of parameters are:

• 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.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 33
Virtuoso Spectre Transient Noise Analysis

Exercise 3. Transient Noise Vs. Noise - noisefmin and noisefmax


In this exercise, you will verify transient noise analysis results against noise analysis
and show the effect of noisefmax and noisefmin parameters on the noise spectral
density.

To make the noise analysis valid, remove the sine source from the circuit. The new
schematic is now shown in Figure 12.

Figure 12. Simplified circuit for comparison with noise

Set up the following parameters for transient noise and noise analysis in the ADE
analysis setup window:

Transient noise setup

Analysis tran
Stop time 1m
Accuracy Defaults (errpreset) moderate
Transient Noise
Noise Fmax 10G
Noise Fmin 100k
Noise Seed 1111

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 34
Virtuoso Spectre Transient Noise Analysis

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

The netlist for this example is given below:


I0 (net2 0) isource dc=1u type=dc
R1 (net2 0) flickres l=100u w=1u isnoisy=yes
model flickres resistor rsh=1k kf=10e-15
tran tran stop=1m errpreset=moderate noisefmax=10G noisefmin=100k \
noiseseed=1111
noise ( net2 gnd! ) noise start=100k stop=10G annotate=status

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).

To see the effect of noisefmax parameter, set noisefmax=1G, keeping other


parameters the same. Noise cutoff frequency is now at 1GHz, as shown in Figure 14.

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.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 35
Virtuoso Spectre Transient Noise Analysis

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)

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 36
Virtuoso Spectre Transient Noise Analysis

Figure 15. Noise power: Noise vs. transient noise (noisefmin = 10MHz)

Figure 16. Noise power: Noise vs. transient noise

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 37
Virtuoso Spectre Transient Noise Analysis

Exercise 4. Parameter noisescale


By default, noisescale = 1. Change noisescale to 0.01 either in the ADE
transient analysis form or in the netlist.
tran1 tran stop=1m errpreset=moderate noisefmax=10G noisefmin=100k \
noiseseed=1111
tran2 tran stop=1m errpreset=moderate noisefmax=10G noisefmin=100k \
noiseseed=1111 noisescale=0.01

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.

Figure 17. Noise power, with noisescale = 0.01

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 38
Virtuoso Spectre Transient Noise Analysis

Exercise 5. Transient Noise vs. Pnoise


For this exercise, you use a circuit with both dc and sine sources as shown in Figure 7.
The circuit is periodic, which allows running pss and pnoise analysis. Additionally, it is
linear, so that small-signal noise approximation is correct.

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

The netlist for this example is:


I0 (net2 0) isource dc=1u type=dc
I1 (net2 0) isource type=sine ampl=1u freq=500M
R1 (net2 0) flickres l=100u w=1u isnoisy=yes
model flickres resistor rsh=1k kf=10e-15
tran tran stop=1ms noisefmax=10G noisefmin=100k noiseseed=1111
pss pss fund=500M
pnoise ( net2 gnd! ) pnoise start=100k stop=10G dec=100

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 39
Virtuoso Spectre Transient Noise Analysis

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.

Figure 18. Noise power: Pnoise vs. Transient noise

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 40
Virtuoso Spectre Transient Noise Analysis

Exercise 6. RC Circuit
The circuit consists of 1kΩ resistor and 1pF capacitor.

Figure 25. RC circuit schematic

Below is the netlist for AC and transient noise simulation:

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

The circuit has one node and is described by the equation:

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

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 41
Virtuoso Spectre Transient Noise Analysis

In the limit of infinite 𝐹𝑚𝑎𝑥 :

𝑘𝑇
𝑁=
𝐶
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.

Figure 26. Noise spectral density of RC circuit

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 42
Virtuoso Spectre Transient Noise Analysis

Exercise 7. Switch-Capacitor Circuit


The circuit contains a mosfet switch and a 1pF capacitor. It is driven by a pulse voltage
source with 10ns period, 1ns transition time, 6ns pulse width, and ±3V high and low
values. A BSIM3v3 model with all default model parameters is used. Channel length is
100nm and width is 10µm.

Figure 27. Switch-capacitor circuit schematic

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

ac (1 0) noise start=100 stop=10G dec=5000


pss pss period=10n maxacfreq=100G
pnoise (1 0) pnoise start=100k stop=10G dec=100 pnoisemethod=fullspectrum
tran tran stop=100u noisefmax=100M noiseseed=7
tran1 tran stop=100u noisefmax=500M noiseseed=7
tran2 tran stop=100u noisefmax=5G noiseseed=7
tran3 tran stop=1000u noisefmax=50G noiseseed=7

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

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 43
Virtuoso Spectre Transient Noise Analysis

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.

Figure 27a. Switch-capacitor circuit noise in time domain

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 44
Virtuoso Spectre Transient Noise Analysis

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.

Figure 27b. Switch-capacitor circuit noise spectral density

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.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 45
Virtuoso Spectre Transient Noise 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.

Figure 28. Switch-capacitor circuit transient noise spectral density

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 46
Virtuoso Spectre Transient Noise Analysis

Figure 28a. Noise and signal spectrum separation

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.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 47
Virtuoso Spectre Transient Noise Analysis

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.

Figure 29. Switch-capacitor signal and noise plots

Time-domain and frequency-domain plots were created using the ViVA calculator
expressions listed in Figure 29a.

Figure 29a. ViVA calculator expressions for switch-capacitor example

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 48
Virtuoso Spectre Transient Noise Analysis

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.

Figure 29b. ViVA Eye Diagram Assistant

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 49
Virtuoso Spectre Transient Noise Analysis

Exercise 8. Oscillator Jitter and Phase Noise


Jitter is a timing variation of a rising or falling edge of the waveform. Several commonly
used jitter measures are defined below. Consider almost periodic waveform with
expected nominal period 𝑇, crossing a given threshold 𝑣𝑡ℎ once every cycle at times 𝑡𝑛 ,
starting from arbitrary time t0 = 0.

𝑣𝑡ℎ

t0 = 0 t1 t2 t3 t

Absolute jitter (or edge to reference jitter, or edge jitter) is defined as:

𝐽𝑎 (𝑛) = 𝑡𝑛 − 𝑛𝑇

This definition is implemented in the calculator function abs_jitter(). Crossing times 𝑡𝑛


can be found using the calculator function cross().

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.

K-cycle jitter is defined as:


𝐽𝑐𝐾 (𝑛) = 𝑡𝑛+𝐾 − 𝑡𝑛 − 𝐾𝑇 = 𝐽𝑎 (𝑛 + 𝐾) − 𝐽𝑎 (𝑛)

It is equal to the moving average of period jitter over 𝐾 cycles:


𝐾−1

𝐽𝑐𝐾 (𝑛) = ∑ 𝐽𝑐 (𝑛 + 𝑞)
𝑞=0

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 50
Virtuoso Spectre Transient Noise Analysis

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

𝐽𝑐𝑐𝐾 (𝑛) = (𝑡𝑛+𝐾+1 − 𝑡𝑛+𝐾 ) − (𝑡𝑛+1 − 𝑡𝑛 ) = 𝐽𝑝 (𝑛 + 𝐾) − 𝐽𝑝 (𝑛) = ∑ 𝐽𝑝 (𝑛 + 𝑞)


𝑞=0

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:

1 2𝜋 360 100 106


𝐽𝑥𝑥 [𝑠] = 𝐽𝑥𝑥 [𝑈𝐼] = 𝐽𝑥𝑥 [𝑟𝑎𝑑] = 𝐽𝑥𝑥 [𝑑𝑒𝑔] = 𝐽𝑥𝑥 [%] = 𝐽𝑥𝑥 [𝑝𝑝𝑚]
𝑇 𝑇 𝑇 𝑇 𝑇
Where 𝐽𝑥𝑥 stands for any kind of jitter measure: 𝐽𝑎 , 𝐽𝑐 , 𝐽𝑐𝐾 , 𝐽𝑐𝑐 , etc. Jitter can be plotted
as a function of cycle number, crossing time, or reference clock time:

𝐽𝑥𝑥 (𝑛) = 𝐽𝑥𝑥 (𝑡𝑛 ) = 𝐽𝑥𝑥 (𝑛 ∙ 𝑇)

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

Jitter spectrum is periodic in frequency domain:

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

Power spectral density is defined as:

𝑁𝑇 𝑘 2
𝑝𝑥𝑥 (𝑓) = lim |𝑆𝑥𝑥 ( )| = 𝑇|𝑆𝑥𝑥 (𝑓)|2
𝑁→∞ 2 𝑁𝑇

Total power is an integral of the power spectral density:


1
2𝑇

𝑃𝑥𝑥 = ∫ 𝑝𝑥𝑥 (𝑓)𝑑𝑓


0

For the discrete time Fourier transform, derivative or difference in time domain
corresponds to 2𝑗 sin(𝜋𝑓𝑇) 𝑒 𝑗𝜋𝑓𝑇 multiplier in the frequency domain:

𝑆𝑐 (𝑓) = ∑ (𝐽𝑎 (𝑛 + 1) − 𝐽𝑎 (𝑛))𝑒 −𝑗2𝜋𝑓𝑇𝑛 = 2𝑗 sin(𝜋𝑓𝑇) 𝑒 𝑗𝜋𝑓𝑇 𝑆𝑎 (𝑓)


𝑛=−∞

𝑆𝑐𝐾 (𝑓) = ∑ (𝐽𝑎 (𝑛 + 𝐾) − 𝐽𝑎 (𝑛))𝑒 −𝑗2𝜋𝑓𝑇𝑛 = 2𝑗 sin(𝜋𝐾𝑓𝑇) 𝑒 𝑗𝜋𝑓𝑇 𝑆𝑎 (𝑓)


𝑛=−∞

Power spectral densities of all types of jitter are related to each other.

𝑝𝑎 (𝑓) = 𝑇|𝑆𝑎 (𝑓)|2


2
𝑝𝑐 (𝑓) = 𝑇|𝑆𝑐 (𝑓)|2 = 𝑇|2𝑗 sin(𝜋𝑓𝑇) 𝑒 𝑗𝜋𝑓𝑇 𝑆𝑎 (𝑓)| = 4 sin2 (𝜋𝑓𝑇)𝑝𝑎 (𝑓)

𝑝𝑐𝑐 (𝑓) = 𝑇|𝐽𝑐𝑐 (𝑓)|2 = 4 sin2 (𝜋𝑓𝑇)𝑝𝑐 (𝑓) = 16 sin4 (𝜋𝑓𝑇)𝑝𝑎 (𝑓)

𝑝𝑐𝐾 (𝑓) = 𝑇|𝐽𝑐𝐾 (𝑓)|2 = 4 sin2 (𝜋𝑓𝑇𝐾)𝑝𝑎 (𝑓)

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.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 52
Virtuoso Spectre Transient Noise Analysis

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 𝐾 = 𝑀.

𝐽𝑐𝐷𝑀 (𝑛) = 𝑡𝑛𝑀+𝑀 − 𝑡𝑛𝑀 − 𝑇𝑀 = 𝐽𝑎 (𝑛𝑀 + 𝑀) − 𝐽𝑎 (𝑛𝑀) = 𝐽𝑐𝑀 (𝑛𝑀)

Jitter spectrum after divider is folded or aliased to lower frequency:


∞ 𝑀−1
𝑚
𝑆𝑎𝐷𝑀 (𝑓) = ∑ 𝐽𝑎 (𝑛𝑀)𝑒 −𝑗2𝜋𝑓𝑇𝑛𝑀 = ∑ 𝑆𝑎 (𝑓 − )
𝑀𝑇
𝑛=−∞ 𝑚=0

Spectral density is also a finite sum over sidebands:


𝑀−1
𝑚
𝑝𝑎𝐷𝑀 (𝑓) = 𝑇|𝑆𝑎𝐷𝑀 (𝑓)|2 = ∑ 𝑝𝑎 (𝑓 − )
𝑀𝑇
𝑚=0
𝑀−1
𝑚
𝑝𝑐𝐷𝑀 (𝑓) = 𝑇|𝑆𝑐𝐷𝑀 (𝑓)|2 = ∑ 𝑝𝑐𝑀 (𝑓 − )
𝑀𝑇
𝑚=0

Total power is not affected.


1 1
2𝑀𝑇 2𝑇

𝑃𝑎𝐷𝑀 = ∫ 𝑝𝑎𝐷𝑀 (𝑓)𝑑𝑓 = ∫ 𝑝𝑎 (𝑓)𝑑𝑓 = 𝑃𝑎


0 0

1 1
2𝑀𝑇 2𝑇

𝑃𝑐𝐷𝑀 = ∫ 𝑝𝑐𝐷𝑀 (𝑓)𝑑𝑓 = ∫ 𝑝𝑐𝑀 (𝑓)𝑑𝑓 = 𝑃𝑐𝑀


0 0

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

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 53
Virtuoso Spectre Transient Noise Analysis

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.

Figure 30. Ring oscillator circuit

model nmos bsimcmg type=n


model pmos bsimcmg type=p

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

This is a free-running oscillator. A pair of pin nodes (a 0) should be specified to use


autonomous time-domain pss or hb analysis. Oscillator frequency is 853.613MHz.
Subsequent pnoise analyses calculate time-average noise spectral density and phase
noise, or spectral density of absolute jitter. The Lorentzian option is used to avoid
unphysical infinite values of time-average noise spectral density near the oscillator
frequency. Phase noise, on the other hand, is supposed to be infinite at zero offset
frequencies, because the phase is not locked. Analyses setup is shown below.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 54
Virtuoso Spectre Transient Noise Analysis

pss ( a 0 ) pss fund=1G saveinit=yes harms=100


pnoise ( a 0 ) pnoise start=1k stop=10G dec=10 lorentzian=yes
pnoisej ( a 0 )pnoise start=1k stop=10G dec=10 noisetype=pmjitter thresholdvalue=0.5
hb ( a 0 ) hb funds=[1G] saveinit=yes maxharms=[100]
pnoise1 ( a 0 ) pnoise start=1k stop=10G dec=10 lorentzian=yes
pnoise1j ( a 0 )pnoise start=1k stop=10G dec=10 noisetype=pmjitter thresholdvalue=0.5
tran tran stop=200u noisefmax=10G noisefmin=1k

The following calculator expressions have been used for post-processing:

Figure 31. Calculator expressions for oscillator jitter

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 55
Virtuoso Spectre Transient Noise Analysis

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.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 56
Virtuoso Spectre Transient Noise Analysis

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)

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 57
Virtuoso Spectre Transient Noise Analysis

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.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 58
Virtuoso Spectre Transient Noise Analysis

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 34. Calculator expressions for time-average power spectral density

Figure 35. Time-average power spectral density near the oscillator frequency

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 59
Virtuoso Spectre Transient Noise Analysis

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

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 60
Virtuoso Spectre Transient Noise Analysis

Exercise 9. Buffer Time-Domain Noise and Jitter


The simple buffer circuit in this example is a chain of four inverters, driven by a pulse
voltage source.
m1a ( b a 0 0 ) nmos
m2a ( b a v v ) pmos
cb (b 0) capacitor c=10f
m1b ( c b 0 0 ) nmos
m2b ( c b v v ) pmos
cc (c 0) capacitor c=10f
m1c ( d c 0 0 ) nmos
m2c ( d c v v ) pmos
cd (d 0) capacitor c=10f
m1d ( e d 0 0 ) nmos
m2d ( e d v v ) pmos
ce (e 0) capacitor c=10f
vin (a 0) vsource val0=0 val1=1 type=pulse period=1n rise=100p width=400p
v1 ( v 0 ) vsource dc=1

tran tran stop=200u noisefmax=100G noisefmin=1k


pss pss fund=1G harms=100
pnoise ( d 0 ) pnoise start=1k stop=0.5G noisetype=timedomain numberofpoints=200 \
pnoisemethod=fullspectrum

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

Period is inverse of the source frequency: 𝑇 = 1𝑛𝑠, 𝐹 = 1𝐺𝐻𝑧

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

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 61
Virtuoso Spectre Transient Noise Analysis

Noise is cyclostationary. Average transient noise is periodic. It can be calculated from


the sampled noise spectral density from the time-domain pnoise analysis.

𝐹⁄
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 39. ViVA calculator expressions for the buffer circuit

Figure 40. Time-average PSD and phase noise of the buffer circuit

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 63
Virtuoso Spectre Transient Noise Analysis

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

Solving this equation for 𝛼 gives:

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)

Parameter 𝛼 must be adjusted because the derivative of the shifted waveform is


different:

𝑑𝑣𝑠𝑡𝑒𝑝 𝑣1 − 𝑣0
| = ∙ 𝛼 ∙ 𝑐𝑜𝑠(𝛽) ∙ 2𝜋𝑓
𝑑𝑡 𝑡=0 2

1
𝛼=
4𝜋𝑓𝑡𝑟 𝑐𝑜𝑠(𝜋 ∙ (𝑑 − 0.5))

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 65
Virtuoso Spectre Transient Noise Analysis

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.

Figure 42. Clamped sinewave

When frequency is constant, phase is a linear function of time:

𝜑(𝑡) = 𝜑0 + 2𝜋𝑓𝑡

When frequency is not constant, phase is defined as an integral of frequency over time:
𝑡

𝜑(𝑡) = 𝜑0 + 2𝜋 ∫ 𝑓(𝑡)𝑑𝑡
0

In many applications, frequency variation is confined to the relatively narrow band


around the base frequency or carrier frequency or average frequency. It is convenient to
introduce frequency noise or frequency modulation 𝑓𝑛 (𝑡) as a relative variation of the
frequency around the reference frequency 𝑓0 :

𝑓(𝑡) − 𝑓0
𝑓𝑛 (𝑡) =
𝑓0

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 66
Virtuoso Spectre Transient Noise Analysis

Phase equation then becomes:


𝑡

𝜑(𝑡) = 𝜑0 + 2𝜋𝑓0 𝑡 + 2𝜋𝑓0 ∫ 𝑓𝑛 (𝑡)𝑑𝑡


0

The last term is called phase noise or phase modulation.


𝑡

𝜑𝑛 (𝑡) = 2𝜋𝑓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"

module freq_source(fr, duty, p, n, phase);


input fr; // Frequency variation relative to the initial frequency
(relative units)
input duty; // Duty cycle (relative units)
output p, n; // Pulse voltage source (V)
output phase; // Phase variation (rad)
electrical fr, duty, p, n, phase;
parameter real fr0=100M; // Initial frequency (Hz)
parameter real tr=10p; // Rise/fall time (s)
parameter real val0=0; // Output voltage low (V)
parameter real val1=1; // Output voltage high (V)
parameter real delay=0; // Initial phase (cycles)
parameter real gmin=1e-12; // Floating node conductance to ground (S)
analog begin
@(initial_step) begin
I(phase) <+ -delay*`M_TWO_PI*gmin;
end
I(phase) <+ V(phase)*gmin;
I(phase) <+ V(fr)*`M_TWO_PI;

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 67
Virtuoso Spectre Transient Noise Analysis

I(phase) <+ ddt(V(phase)/fr0);


V(p,n) <+ (val1+val0)/2 + (val1-
val0)/2*tanh(0.5/tr/fr0/cos(`M_PI*(V(duty)-0.5))*(sin(`M_PI*(V(duty)-
0.5))+sin(`M_TWO_PI*fr0*$abstime-V(phase)-`M_PI*(V(duty)-0.5))));
end
endmodule

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

vf(0 ft) isource type=dc dc=0


rf(ft 0) resistor r=1k isnoisy=yes
cf(ft 0) capacitor c=1p

vd(0 dt) isource type=dc dc=0.5m


rd(dt 0) resistor r=1k isnoisy=yes
cd(dt 0) capacitor c=1p

noise (phi) noise start=100k stop=100G dec=50


noisef (ft) noise start=100k stop=100G dec=50
noised (dt) noise start=100k stop=100G dec=50
pss pss fund=100M maxacfreq=100G
pnoise (phi) pnoise start=100k stop=100G dec=50 \
pnoisemethod=fullspectrum
pnoisej (p) pnoise start=100k stop=50M dec=50 noisetype=pmjitter thresholdvalue=0.5 \
pnoisemethod=fullspectrum
pnoise1 (p) pnoise start=100k stop=99M dec=50 sweeptype=relative relharmnum=-1 \
pnoisemethod=fullspectrum
pnoise2 (p) pnoise start=100k stop=99M dec=50 sweeptype=relative relharmnum=1 \
pnoisemethod=fullspectrum
pnoise3 (p) pnoise start=100k stop=99M dec=50 sweeptype=relative relharmnum=-3 \
pnoisemethod=fullspectrum
pnoise4 (p) pnoise start=100k stop=100G dec=50 sweeptype=relative relharmnum=3 \
pnoisemethod=fullspectrum
tran tran stop=655.38u noisefmax=50G

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.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 68
Virtuoso Spectre Transient Noise Analysis

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.

Figure 43. Transient noise waveforms

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.

Figure 44. Frequency noise, phase noise, and jitter

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.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 70
Virtuoso Spectre Transient Noise Analysis

Post-processing expressions for the ViVA calculator are listed below.


ft_noise = dB20(getData("out" ?result "noisef-noise"))
ft_tran_psd = dB10(psd(v("ft" ?result "tran-tran") 0.02u 655.38u 2**22 ?windowName
"Hanning" ?windowSize 2**16))
phi_noise = dB20(getData("out" ?result "noise-noise"))
phi_pnoise = dB20(getData("out" ?result "pnoise-pnoise"))
phi_tran_psd = dB10(psd(v("phi" ?result "tran-tran") 0.02u 655.38u 2**22 ?windowName
"Hanning" ?windowSize 2**16))
phi_noise_check = ft_noise+dB20(100M/xval(ft_noise))
p_slope = ymax(deriv(v("p" ?result "pss-td.pss")))
p_pnoise_pmjitter = dB20(getData("out" ?result "pnoisej-
pmjitter.pnoise")/p_slope*twoPi*100M)
p_tran_PN_falling = PN(v("p" ?result "tran-tran") "falling" 0.5 ?Tnom nil ?windowName
"Hanning" ?windowSize 2**10)
p_tran_PN_rising = PN(v("p" ?result "tran-tran") "rising" 0.5 ?Tnom nil ?windowName
"Hanning" ?windowSize 2**10)
p_mag = mag(value(dft(v("p" ?result "pss-td.pss") 0 10n 2**10 "Rectangular" 1
"default" 1.0) 100M))/2
p_pnoise_u1s = dB20(getData("out" ?result "pnoise2-pnoise")/p_mag)
p_pnoise_l3s = lshift(flip(dB20(getData("out" ?result "pnoise3-pnoise")/p_mag)) -
200M)
p_pnoise_u3s = lshift(dB20(getData("out" ?result "pnoise3-pnoise")/p_mag) -200M)
p_tran_psd = lshift(dB10(psd(v("p" ?result "tran-tran") 0.02u 655.38u 2**26
?windowName "Hanning" ?windowSize 2**20))-dB20(p_mag) 100M)

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.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 71
Virtuoso Spectre Transient Noise Analysis

Exercise 11. Delay Jitter


Delay jitter or variance of the delay measurement can be calculated as a sum of the
jitter at the trigger and target edges, if they are not correlated.

𝐽𝑑𝑒𝑙𝑎𝑦 = √𝐽𝑡𝑎𝑟𝑔𝑒𝑡 2 + 𝐽𝑡𝑟𝑖𝑔𝑔𝑒𝑟 2

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:

𝐽𝑑𝑒𝑙𝑎𝑦 = √𝐽𝑡𝑎𝑟𝑔𝑒𝑡 2 + 𝐽𝑡𝑟𝑖𝑔𝑔𝑒𝑟 2 + 𝐽𝑐𝑜𝑟𝑟

The correlation term 𝐽𝑐𝑜𝑟𝑟 can be positive or negative.

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

vf(0 ft) isource type=dc dc=0


rf(ft 0) resistor r=1k isnoisy=yes
cf(ft 0) capacitor c=1p

vd(0 dt) isource type=dc dc=0.5m


rd(dt 0) resistor r=1k isnoisy=yes
cd(dt 0) capacitor c=1p

pss pss fund=100M maxacfreq=100G


pnoisem (p) pnoise start=100k stop=50M dec=50 noisetype=sampled measurement=[j1 j2 j3]
\
pnoisemethod=fullspectrum
j1 jitterevent measure=cross targetdir=rise targetthresh=0.5 target=[p 0]
j2 jitterevent measure=cross targetdir=fall targetthresh=0.5 target=[p 0]
j3 jitterevent measure=delay triggerdir=rise triggerthresh=0.5 trigger=[p 0] \
targetdir=fall targetthresh=0.5
target=[p 0]
tran tran stop=655.38u noisefmax=50G

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.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 72
Virtuoso Spectre Transient Noise Analysis

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 45. Pss waveforms

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:

𝐽𝑑𝑒𝑙𝑎𝑦 = √𝐽𝑓𝑎𝑙𝑙𝑖𝑛𝑔 2 − 𝐽𝑟𝑖𝑠𝑖𝑛𝑔 2

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 73
Virtuoso Spectre Transient Noise Analysis

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

Post-processing expressions for the ViVA calculator are listed below.


p_slope = -value(deriv(v("p" ?result "pss-td.pss")) 5e-9)
j1_rising =value(getData("out" ?result "pnoisemMj1-sample.pnoise") "jittereventtime"
1e-8)/p_slope")
j2_falling = value(getData("out" ?result "pnoisemMj2-sample.pnoise") "jittereventtime"
5e-9)/p_slope")
j3_delay = getData("out" ?result "pnoisemMj3-sample.pnoise")
j2_minus_j1 = sqrt(j2_falling**2-j1_rising**2)")
tran_delay = delay(?wf1 v("p" ?result "tran-tran"), ?value1 0.5, ?edge1 "rising",
?nth1 1, ?td1 0.0, ?tol1 nil, ?wf2 v("p" ?result "tran-tran"), ?value2 0.5, ?edge2
"falling", ?nth2 1, ?tol2 nil, ?td2 nil , ?stop nil, ?period1 1 ?period2 1 ?multiple
t ?xName "trigger" )")
psd_tr_delay = sqrt(psd(tran_delay 0.02u 327.70u 2**15 ?windowName "Rectangular"
?smooth 1 ?windowSize 2**10 ?detrending "None" ?cohGain 1 ))

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.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 74
Virtuoso Spectre Transient Noise Analysis

Exercise 12. Dynamic Comparator Metastability Analysis


Comparator is an example of the circuit with very high gain. Noise or a very small
variation in the input signal can cause a large change in the output. It seems that small-
signal noise approximation and frequency-domain noise analysis cannot be used for a
comparator, and transient noise analysis is the only option.

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.

𝑉𝑜𝑢𝑡 = 𝑉(𝑜𝑝) − 𝑉(𝑜𝑚)

Figure 47. Comparator schematic

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 75
Virtuoso Spectre Transient Noise Analysis

Circuit netlist and transient noise analysis setup is listed below:


model nch bsimcmg type=n
model pch bsimcmg type=p

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

vclk ( clk 0 ) vsource type=pulse val0=0 val1=1 period=0.5n rise=0.02n width=0.23n


vip ( ip 0 ) vsource dc=0.5+0.5*Vin
vim ( im 0 ) vsource dc=0.5-0.5*Vin

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).

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 76
Virtuoso Spectre Transient Noise Analysis

Average output value is calculated by counting positive and negative pulses 𝑛+ and 𝑛− :
𝑛+ − 𝑛−
̅̅̅̅̅
𝑉𝑜𝑢𝑡 =
𝑛+ + 𝑛−

It is zero when input is zero, because 𝑛+ = 𝑛− . It approaches +1 or -1, when input


voltage is large positive or negative. Probability of error is zero for large input and 0.5
for zero input:
̅̅̅̅̅
1 − |𝑉 𝑜𝑢𝑡 |
𝑃𝑒𝑟𝑟𝑜𝑟 =
2

Figure 48. Transient noise output

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 77
Virtuoso Spectre Transient Noise Analysis

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𝜋

then average output is error function:

𝑉𝑖𝑛
̅̅̅̅̅
𝑉𝑜𝑢𝑡 = 𝑒𝑟𝑓 ( )
𝜎√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

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 78
Virtuoso Spectre Transient Noise Analysis

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𝑚𝑉.

Figure 49. Input referred noise of the comparator

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:

P_err = 0.5*(1 - abs(vout_avg))


IRN = erf_inv(vou_avg)/sqrt(2)*value(v(“ip”)-v(“im”) 0)
sigma = average(IRN)

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 79
Virtuoso Spectre Transient Noise Analysis

ViVA expressions for the regression lines are:


vin_regr = artListToWaveform( `(-10m -10m) (10m 10m))
vout_regr = erf(sample(vin_regr -10m 10m “linear” 0.2m )/sigma/sqrt(2))
IRN_regr = sigma +0*vin_regr
P_regr = 0.5*(1 - abs(vout_regr))

Comparator behavior in transient and pss analysis is deterministic. If input is positive,


no matter how small, the output is high. For a negative input, the output waveform is the
same but with opposite sign, because the circuit is completely symmetric. The following
pss analysis setup is used:

op options reltol=1e-7 vabstol=1e-8


sweep sweep param=Vin start=1n stop=10m dec=1 {
pss pss period=0.5n maxstep=1p
}

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𝑝𝑠.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 80
Virtuoso Spectre Transient Noise Analysis

The following calculator expressions are used:


vout_pss = v("op" ?result "sweep_pss_td-sweep")-v("om" ?result "sweep_pss_td-sweep")
tau = clip(1/deriv(ln(abs(vout_pss))) 30p 150p )

Figure 50. Comparator pss waveforms

Since the output waveform is exponential, delay time 𝑡𝑑 at the threshold crossing time 𝑡𝑐
is a logarithmic function of the input voltage:

𝑉𝑜𝑢𝑡 (𝑡𝑐 ) = 𝑉𝑡ℎ

𝑉𝑡ℎ
𝑡𝑑 = 𝑡𝑐 − 𝑡0 = 𝜏 ∙ 𝑙𝑛 ( )
𝑉𝑖𝑛

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 81
Virtuoso Spectre Transient Noise Analysis

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).

Figure 51. Comparator delay vs. input voltage

ViVA expressions for the delay plot:


Del_pss = delay(?wf1 v("clk" ?result "sweep_pss_td-sweep"), ?value1 0.5, ?edge1
"rising", ?wf2 v("op" ?result "sweep_pss_td-sweep")-v("om" ?result "sweep_pss_td-
sweep"), ?value2 0.5, ?edge2 "rising" )

Del_tran_noise = average(delay(?wf1 v("clk" ?result "sweep_tran-sweep"), ?value1 0.5,


?edge1 "rising", ?wf2 abs(v("op" ?result "sweep_tran-sweep")-v("om" ?result
"sweep_tran-sweep")), ?value2 0.5, ?edge2 "rising", ?multiple t ))

When output voltage is increasing exponentially, voltage variation or time-domain noise


is also exponentially increasing with the same time constant 𝜏.
𝑡−𝑡0
𝜎𝑡𝑑 (𝑡) = 𝜎 ∙ 𝑒 𝜏

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 82
Virtuoso Spectre Transient Noise Analysis

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:

𝑉𝑖𝑛
𝜎 = 𝜎𝑡𝑑 (𝑡)
𝑉𝑜𝑢𝑡 (𝑡)

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 83
Virtuoso Spectre Transient Noise Analysis

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.

Figure 52. Comparator output and time-domain pnoise waveforms

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𝑚𝑉.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 84
Virtuoso Spectre Transient Noise Analysis

Exercise 13. Probability Distribution of Noise Power Spectral Density


Discrete Fourier transform 𝑋𝑘 of a random noise signal 𝑥𝑛 is a complex random variable,
equal to the sum of N random variables scaled by a complex exponential factor:
𝑁 𝑁 𝑁
1 2𝜋𝑘𝑛 1 2𝜋𝑘𝑛 𝑗 2𝜋𝑘𝑛
𝑋𝑘 = ∑ 𝑥𝑛 𝑒 𝑗 𝑁 = ∑ 𝑥𝑛 𝑐𝑜𝑠 + ∑ 𝑥𝑛 𝑠𝑖𝑛
𝑁 𝑁 𝑁 𝑁 𝑁
𝑛=1 𝑛=1 𝑛=1

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.

Phase of 𝑋𝑘 is uniformly distributed from 0 to 2𝜋. Magnitude |𝑋𝑘 | has Rayleigh


distribution with mode 𝜎:

𝑥 − 𝑥 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

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 85
Virtuoso Spectre Transient Noise Analysis

that it has the maximum of 1 at 0dB power. Figure 54 shows the same distribution with
logarithmic scale on both axes.

Figure 53. Erlang distribution, log scale

Figure 54. Erlang distribution, log/log scale


Learn more at Cadence Support Portal - https://support.cadence.com
© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 86
Virtuoso Spectre Transient Noise Analysis

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.

Figure 55. Histogram of the PSD of the noise signal

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

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 87
Virtuoso Spectre Transient Noise Analysis

Waveform was generated with the following transient simulation netlist:


ahdl_include "uniform.va"
r (1 0) resistor r=1k
in (1 0) uniform ampl=100n/sqrt(100G) fmax=100G seed=111
tran tran stop=100u

The experiment agrees with theoretical analysis of statistical error. The width of the
distribution at 0.05 level is listed in Table 4.

Number of simulations Spectral density error interval


or time windows at 95% level
1 24.9dB

2 16.3dB

4 11.1dB

8 7.7dB

16 5.4dB

32 3.8dB

64 2.7dB

128 1.9dB

Table 4. Statistical error in noise power spectral density

To achieve ±1dB accuracy in noise power calculation, about 100 data points are
required at each frequency.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 88
Virtuoso Spectre Transient Noise Analysis

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.

Learn more at Cadence Support Portal - https://support.cadence.com


© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 89

You might also like