Application Note. PLL Jitter Measurements.: Purpose
Application Note. PLL Jitter Measurements.: Purpose
Application Note. PLL Jitter Measurements.: Purpose
Purpose
This application note illustrates how to use the Spectre and SpectreRF simulators within the
Analog Design Environment (ADE) to measure jitter characteristics of the PLL circuits.
Audience
Designers of PLL circuits or their blocks who are interested to use Cadences tools for a noise
and jitter performance verification.
Overview
Phase Lock Loops are widely used in electronics and communication for such timing related
functions as clock generation, clock recovery, demodulation, and clock skew reduction. The
undesired variation of the PLL operation due to internal and external noise sources are hard
to predict and simulate. But it is essential to be able to predict and verify the timing
performance of PLL in the presence of internally and externally generated jitter and phase
noise.
We introduce the step by step methodology of jitter computation for the PLL using voltagedomain behavioral models for its blocks. The major steps of the process are the following:
i. SpectreRF simulation of the individual blocks to measure the jitter and operating
parameters of the models.
ii. Creation or modification of the existing behavioral models of the blocks with the jitter.
iii. Time domain simulation of the original PLL using behavioral models of the blocks.
June 2006
Vin +
Vfb -
Phase/Freq
Detector
(PFD)
Charge
Pump
(CP)
Icp
Low-Pass
Filter
(LPF)
Vcntl
Voltage Control
Oscillator
(VCO)
Output
Voltage
HLP(s)
Vosc
Frequency
divider
(FD)
June 2006
June 2006
The input is the reference 25MHz signal, compared with the feedback from the frequency
divider, both are entering PFD. The RFD sends two sets of pulses using nodes UP and DN,
to speed up and slow down the VCO. Charge pump, receiving those pulses, generates a
current pulse, whose sign and duration will depend on the mismatch at the input of the PFD.
The current will be transformed into a smooth voltage wave at the VCONT node by the loop
filter. VCO will respond to the control and its output, which is expected to stabilize around
250MHz is passed through the frequency divider with the ratio of 10. The outputs from the
ring VCO are taken at 10 different phase offsets from the output that is used in the loop for
the feedback. The PD signal is used to reset the circuit functional blocks at the beginning of
the simulation.
Transient analysis
Setup a tran analysis to run for 12us, using moderate accuracy settings. Use Virtuoso ADE
Outputs menu to save the voltages on the nodes interconnecting PLL blocks and also the
currents at the terminals connected to the Vcont node. Select them directly from schematic
by descending inside the PLL circuit.
June 2006
Also plot the current at the output terminal of the Charge Pump. At the beginning, before PLL
is settled, it is easy to read the value of the output current which will be used in the
behavioral model. In out case it is -55uA, see Figure 5. It could be also confirmed later, while
simulating the block alone.
June 2006
Then plot the inputs of the PFD and zoom in to see the last couple of transitions. Estimate
and record the input slopes of the signals coming into PFD. The simple visual estimate at the
rising edges gives us 100ps. The same observation for the input of the FD in the feedback
produces 150ps.
VCO
VCO testbench
The testbench, Figure 6, has the same DC sources as the original PLL schematic. In
addition, the input control voltage is supplies by a parametrized DC source V3, whose value
id fixed to vcntl. The load is the first inverting stage from the divider and possibly the PLL
output load.
June 2006
Use Direct Plot to plot the tuning curve, Select Harmonic frequency and choose the first
June 2006
Plot the period (i.e. cycle) jitter by using Jc button. Use rms type in seconds and select an
entire frequency range of 10 to 125MHz. Do not modify a Frequency Multiplier - it is only used
when the signal frequency is not the same as the PSS analysis fundamental, which would
happen when there is a frequency division or multiplication in the circuit. The final result is
close to the estimate that we get using the simple white jitter Equation 8 on page 33(see also
[2]):
(1) f sample = 100KHz ;f c = 250MHz ;S
June 2006
FM
(f
sample
) = 90.64 ( dBc Hz )
10
(2) Jc ( kTc ) =
sample 2
1
f
--- S ( f sample ) ------------------- = 528fs
3
2 FM
f
c
The difference is due to the assumption about an infinite bandwidth during the analytical
integration in Equation 6.
*> The limits will be affected by several factors: the bandwidth of the circuit or the system
requirements for the PLL are the obvious ones. There are several assumptions for the jitter
calculation from the phase noise, which assume that one will not include the noise too far from
the modulated carrier frequency. We will exclude the noise outside the f_osc/2 region where
it begins to change up and down around other harmonics.
** >This number might need an adjustment later on, to see if we included enough noise
frequency to cover the bandwidth of the circuit. Typically, one will increase the value until the
noise increase is significant to the desired accuracy. Then, one might reduce the number of
sidebands if the performance is important while the drop in accuracy could be tolerated. In
the current design, and increase to 200 sideband did not produce any significant change in
the results. There seems to be that even the much lesser number will work just fine.
11
Use Direct Plot for PXF analysis to plot the frequency response (transfer function). Plot the
spectrum of the sideband 0. We can measure the 40 dB drop at about 680 MHz, see
Figure 10. Store this number as fmax to use for PFD/CP. Plot the output noise using PNoise
Direct Plot form.
We can get both transfer function and noise in a single PNoise analysis. From PNoise form,
select and plot the Transfer Function. Change the Y-axis to the log format. That will have the
same result as PXF spectrum for 0 sideband. In addition, to add LPF noise into the PDF/CP
model, we use Input Noise option for PNoise and integrate it up to fmax. See Figure 11.
June 2006
12
June 2006
13
PFD
PFD/CP testbench
The testbench, Figure 12, has two input voltage sources that represent the reference and
feedback signals coming into the PFD. Set them to be pulse type. Parametrize the periods,
rise and fall times, the delay time and pulse width. Use 100ps for transition, and reference
signal (25MHz) period for both inputs. The delay is set the same - 5ns - in one simulation. In
the second simulation, we introduce the mismatch of 2ns. in the delay. Power supply and bias
are DC sources - VDD, VCC, PD(set as dc=0), same as in the original PLL design. The load
is a voltage source that is biasing the output consistent with the operating conditions of
250MHz VCO - control voltage of 1.245V.
Setup PSS analysis. 25MHz Beat Frequency. Moderate accuracy settings, small
tstab=0.4u. Setup PNoise analysis with wide frequency range from 10Hz to 1GHz. A few
points per decade is enough, more could be added if needed. Specify output load as a
probe for the Output. Use sources type for the simulation. Run simulation.
June 2006
14
June 2006
15
Open Direct Plot. On PSS form, select Current. Select the current at the terminal of the load.
We confirm that the Imax is 55uA just as in the original PLL transient simulation, see
Figure 13.
PFD/CP Noise Current and input-referred Jitter.
The VCO will be sensitive to the voltage level on the control node, not the timing of its
variation. As a result we are interested in the voltage noise as the node.
Use Direct Plot, PNoise form to plot the Output Noise. On Figure 14, you see the compared
noise curves for no mismatch and for 2ns delay between PFD inputs. The units are current
squared per Hz. Integrated over the total frequency range, the current noise is translated to
the input noise in seconds, using Kdet which is defined as transfer function from relative time
delay on the input of PFD/CP to the output current of the block.
June 2006
16
Open the wave in Calculator tool and implement the following operations to determine the
input referred jitter:
T 1
- --(3) J ee PFD CP = --------K det 2
f max
S ( f ) df,
f min
where the Kdet equal the charge pump current (55uA) and T is the reference signal period
(40ns). The integration is up to the 40dB drop limit that we found in the LPF simulation 680MHz.
The jitter value depends on the operating condition - the noise is larger as the phase
mismatch in inputs is increasing. For no mismatch, the estimate is 10ps while for 2ns
advanced feedback signal, it grows to 16ps. Depending on the situation, we can select the
worst case or the locked (no mismatch) number.
Frequency divider.
The jitter extraction for dividers is based on the notion that the output of the divider will
June 2006
17
Use Direct Plot. Open pnoise jitter form to plot PSD of the time jitter. Jee represents the
June 2006
18
June 2006
19
R e f. O S C
V in
P h a s e /F re q
D e te c to r
(P F D )
C h a rg e
Pum p
(C P )
Ic p
L o w -P a s s
F ilte r
(L P F )
V c n tl
V o lta g e C o n tro l
O s c illa to r
(V C O )
O u tp u t
V o lta g e
V fb
H L P (s )
Vosc
F re q u e n c y
d iv id e r
(F D )
Behavioral models
A small library of the VerilogA models with corresponding symbols was created for this PLL
circuit. The blocks are generic and could be always improved or their functionality augmented
for more accurate representation of the PLL components and to include more noise/jitter
effects.
June 2006
20
VCO
The simple VCO model is presented below. The parameters from the VCO simulation are
Fmin, Fmax, Vmin, Vmax, transition rate tt and the period jitter. The period of the VCO output
signal will be stored in the file in the Matlab format. We set the time to start the output using
a parameter outStart.
Inside the model, the period jitter is converted into the random frequency variations that lead
to the variations in the phase of the output and its transition timing.
analog begin
@(initial_step) begin
seed = -561;
fp = $fopen("periods.m");
fjcc = $fopen("jcc.m");
end
// compute the freq from the input voltage
freq = (V(Vcontrol) - Vmin)*(Fmax - Fmin) / (Vmax - Vmin) + Fmin;
// bound the frequency (this is optional)
if (freq > Fmax) freq = Fmax;
if (freq < Fmin) freq = Fmin;
// add the phase noise
freq = freq/(1 + dT*freq);
// phase is the integral of the freq modulo 2p
phase = 2*`M_PI*idtmod(freq, 0.0, 1.0, -0.5);
// update jitter twice per period
// `M_SQRT2=sqrt(K), K=2 jitter updates/period
@(cross(phase + `M_PI/2, +1, ttol) or cross(phase - `M_PI/2, +1, ttol)) begin
dT = `M_SQRT2*jitter*$dist_normal(seed,0, 1);
n = (phase >= -`M_PI/2) && (phase < `M_PI/2);
if(n == 1) begin
if($abstime >= outStart) begin
curPeriod = $abstime - prev;
diffPeriod = curPeriod - prevPeriod;
June 2006
21
Frequency divider.
The frequency divider model has typical timing parameters as transition times and time delay
from input to the output. The maximum, minimum and threshold voltages are the other set of
parameters. The synchronous edge to edge jitter from the above simulation of FD is used to
generate the random dither at the output.
The model is a counter of the crossing transition in one preset direction (another parameter),
generates random jitter and uses the transition function to generate the continues transitions
at the output when the counter is matching the divider ratio.
June 2006
22
PFD/CP.
The model below represents an example of a simple three state phase-frequency detector.
The amplitude of the output current Iout represent the Imax that was measured in the
simulation for the block. the synchronous gaussian jitter is added to the output and it changes
the shape of the transition during the rise and fall.
@(initial_step) begin
seed = 716;
fdbg = $fopen("PFDCPdebug.txt");
end
@(cross(V(refclk) - Vtrans, dir, ttol)) begin
if (state > -1) state = state -1;
dt = jitter*$dist_normal(seed,0,1);
end
//
//
end
endmodule
June 2006
23
Reference oscillator.
The simple OSC model is presented below. The parameters from the VCO simulation are
Fmin, Fmax, Vmin, Vmax, transition rate tt and the period jitter. The period of the VCO output
signal will be stored in the file in the Matlab format. We set the time to start the output using
a parameter outStart.
Inside the model, the period jitter is converted into the random frequency variations that lead
to the variations in the phase of the output and its transition timing..
Listing 4 OSC model.
//
// VerilogA model for OSC with accumulating jitter.
// Original author: Ken Kundert
//
`include "discipline.h"
`include "constants.h"
module osc( out);
output out;
electrical out;
parameter real freq=1M from (0:inf);
parameter real Vlo=0, Vhi=1;
parameter real tt=0.01/freq from (0:inf);
parameter real jitter=0 from [0:0.1/freq); // period jitter
//
integer n, seed;
real next, dT;
analog begin
@(initial_step) begin
seed = 286;
next = 0.5/freq + $abstime;
end
@(timer(next)) begin
n = !n;
dT = jitter*$dist_normal(seed,0,1);
next = next + 0.5/freq + 0.707*dT;
end
V(out) <+ transition(n ? Vhi : Vlo, 0, tt);
end
endmodule //osc
June 2006
24
fin
fout
Input
Signal
PFD/CP
VCO
LPF
ffbck
FD
1/N
The schematic of the PLL is shown on Figure 19. The PFD and CP are joined in a single
model which symbol view is shown on Figure 20.
June 2006
25
The final testbench is similar to the original PLL testbench, Figure 21. The sources are the
same. The load represents only a single phase output of PLL.
June 2006
26
June 2006
27
Post processing.
The output file that contain the periods of the output signal is processed using MATLAB tool
by MathWorks. The original processing script is written by Ken Kundert in his work [2]. The
period jitter is computed according to the definition[1]. The power spectral density of the
output phase is computed using standard psd function, Listing 5. It uses Welchs method and
it requires to select the number of samples to use for computations. After several experiments
we use a large number of samples to get the stable result, Figure 23.
Listing 5 processing.m
echo off;
nfft=32768;
% should be power of two
winLength=nfft;
overlap=nfft/2;
winNBW=1.5;
% Noise bandwidth given in bins
% Load the data from the file generated by the VCO
load periods.m;
% output estimates of period and jitter
T=mean(periods);
J=std(periods);
maxdT = max(abs(periods-T))/T;
fprintf('T = %.3gs, F = %.3gHz\n',T, 1/T);
fprintf('Jabs = %.3gs, Jrel = %.2g%%\n', J, 100*J/T);
fprintf('max dT = %.2g%%\n', 100*maxdT);
fprintf('periods = %d, nfft = %d\n', length(periods), nfft);
% compute the cumulative phase of each transition
phases=2*pi*cumsum(periods)/T;
June 2006
28
June 2006
29
Results discussion.
The VCO noise is low and the models of the example did not include the flicker noise. Most
of the output results are dominated by the PFD/CP noise. It is shaped by the loop phase noise
transfer function. Most important noise sources which will need to be considered in the future
are the input jitter from reference oscillator, power and substrate noise sources.
The behavioral simulation is slow since the LPF has components that are causing the small
time step. Optimally, they will be replaced by the equivalent simplified models.
fin
Ref. OSC
fout
FD
1/M
PFD/CP
VCO
LPF
ffbck
FD
1/N
Additional runtime improvement will be done by including the frequency divider model into the
oscillators models, Figure 25. This will save time for simulation and simplify the models.
Certain restrictions apply, and additional postprocessing of results will be also needed.
June 2006
30
fin
Ref. OSC
fout
FD
1/M
PFD/CP
VCO
FD
1/N
LPF
ffbck
Conclusions.
We demonstrated the flow that can be used for a time domain simulation of the PLL jitter. The
flow is as generic as the behavioral models could be. It uses latest updated jitter
measurements for autonomous and driven circuits in SpectreRF. Additional upgrades to the
flow will be introduced by using the new sampled small signal analyses. It will also benefit
from the development of the models in the future.
Future development.
External noise sources.
The external uncorrelated stationary noise sources could be currently added to the flow by
using the noisefile feature for external sources or ports. They will be properly modelled by
June 2006
31
Appendix.
Jitter estimate.
a) PM Jitter for driven circuits.
GUI supports the ability to specify the timing event by selecting the value and a direction
of the crossing event for the output signal. PSS will produce results which will contain the
breakpoint for this event, which guarantees the more accurate slew rate and noise
computations for the time of the event (t x ). Using the relation between the simple PM jitter
(rms) in time and time-domain noise at the time of crossing:
(4) Jc =
2var ( n v, t x )
2var ( j PM ) ( tx ) = -----------------------------------d
v ( tx )
dt
where var ( n v, t x ) is the total instant noise, the result of the sampled PNoise analysis for
this particular crossing event. The jitter will be made available in the different metrics and
using different units.
User sets up a regular PSS and PNoise analysis. After Jitter measurement part of the
PNoise form is activated, the user will specify all the details for the events of the interest.
(If jitter histogram is needed, there could be some extra information needed to limit the
amount of the calculations. - Not yet implemented.)
b) Simple FM Jitter for autonomous circuits.
This calculations will be based on results of the phase noise measurements. User will be
June 2006
32
akT c =
ak f c
The period jitter is derived from the noise process PSD as:
(6)
2
Jc
1
( kT c ) = ---------------2- S ( f ) sin2 ( kfT c ) df
( fc )
where f is an offset frequency from the carrier frequency. The phase noise (or one could
also use a ratio of the total voltage noise to the power in the carrier signal, with less
accuracy) is used to calculate the a via the following:
2
(7) S
2af c
( f ) = ----------2
FM
f
User selects the frequency point fsample to measure the phase noise PSD. To assist in
selection the frequency where the slope corresponds to the white FM noise, we provide
the function that plots the -20dB/dec slope. The final expression could be written as:
(8) Jc ( kTc ) =
sample 2
1
f
--- S ( f sample ) -----------------3
2 FM
f
c
June 2006
33
References
[1] Cadence Application Note, Jitter measurements using SpectreRF, 2005.
[2] Ken Kundert,Predicting the Phase Noise and Jitter of PLL-Based Frequency
Synthesizers, The Designers Guide, www.designers-guide.org, 2005
[3] W.A. Gardner, Introduction to Random Processes with Applications to Signals
and Systems, 2nd ed. New York: McGraw Hill, 1989
[4] Cadence Application Note, Oscillator Noise Analyses in SpectreRF.
[5] Cadence Application Note, VCO Design Using SpectreRF, 2004.
June 2006
34