• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC Design
  3. pnoise jitter and pnoise time average discrepency: what...

Stats

  • Locked Locked
  • Replies 12
  • Subscribers 126
  • Views 23743
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

pnoise jitter and pnoise time average discrepency: what is the problem?

skylink
skylink over 5 years ago

Hi everyone,
I try to get the jitter from a clock generator, but I also need the phase noise curve for other reasons:
- When I simulate my circuit with the pnoise/jitter method, I get a RMS Jitter in a given bandwidth of 594.386fs (Jee>RMS).
- And when I simulate with the pnoise/time average method, by calculating my Jitter from the Phase Noise curve, I get 269.2fs.

Assuming that the pnoise>PM>Phase Noise plot is the IEEE definition, say Single-Sideband-to-Carrier Ratio, so-called L(df), "L-script of df",
I compute the RMS jitter as follows in my calculator:
[1 / sqrt(2)*pi*f0] * sqrt{ INTEGRAL[ L(df).df ] }

Of course, here L(df) is converted in linear, L(df)=10^LdBc(df)/10

In your opinion what do I miss??

Thanks a lot in advance for your help!

  • Cancel
Parents
  • ShawnLogan
    ShawnLogan over 5 years ago

    Dear syklink,

    skylink said:
    Assuming that the pnoise>PM>Phase Noise plot is the IEEE definition, say Single-Sideband-to-Carrier Ratio, so-called L(df), "L-script of df",
    I compute the RMS jitter as follows in my calculator:
    [1 / sqrt(2)*pi*f0] * sqrt{ INTEGRAL[ L(df).df ] }

    If you refer to the IEEE definition, your computation appears to be correct as L(f) is defined as the one-sided frequency expression. Hence, given the linear integration of L(f) "Integral" over a frequency range, the pseudo-code for the resulting rms jitter expressed in picoseconds at a reference frequency of target_freq_GHz is:

    (1000/target_freq_GHz)*pow(2*(Integral),0.5)/(2*pi)

    However, it is not clear what limits you used in your pnoise analysis nor the value of your target_freq_GHz. I am wondering if you have extended the maximum frequency limit of your pnoise analysis beyond the frequency of target_freq_GHz/2. If so, there will be aliasing that could inflate the value of Jee beyond what is expected.

    1. What are your pnoise frequency limits?

    2. What is your value of target_freq_GHz?

    These might provide insight on the discrepancy you are observing skylink.

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • skylink
    skylink over 5 years ago in reply to ShawnLogan

    Hi Shawn and once again thank you for your feedback!

    1. pnoise frequency "limits": not sure to understand but I simulate between the offset frequencies 104kHz to 3.12GHz, and compute my integration between 104kHz and 1.04GHz.

    2. My clock is at f0=2.08GHz

    You can find attached the screenshots of respectively my pnoise/time average settings, and the formulas I use in ADE-XL to extract the "wrong" RMS jitter value of 269.2fs (compared to pnoise/jitter analysis value = 594.4fs.)

    Hope this could help...

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • skylink
    skylink over 5 years ago in reply to ShawnLogan

    Hi Shawn and once again thank you for your feedback!

    1. pnoise frequency "limits": not sure to understand but I simulate between the offset frequencies 104kHz to 3.12GHz, and compute my integration between 104kHz and 1.04GHz.

    2. My clock is at f0=2.08GHz

    You can find attached the screenshots of respectively my pnoise/time average settings, and the formulas I use in ADE-XL to extract the "wrong" RMS jitter value of 269.2fs (compared to pnoise/jitter analysis value = 594.4fs.)

    Hope this could help...

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • skylink
    skylink over 5 years ago in reply to skylink

    it is better with the attachments :-)

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ShawnLogan
    ShawnLogan over 5 years ago in reply to skylink

    Dear skyline,

    I noticed you are using the pn() function in your expression "PhaseNoise_LdBc". That is not the function I use to compute SSB L(f) following a pnoise analysis. The function I believe you should use is:

    rfOutputNoise("dBc/Hz" ?result "pnoise" ?noiseConvention "SSB")

    This will assure that your phase noise curve is expressed in "dBc/Hz" and conforms to the L(f) IEEE definition. Have you tried using that function? The definition of the pn() function, from the ocean reference manual, follows. This function is used in a transient analysis. As a result, I'm thinking your expression for the integrated phase noise is not quite what you want.

    Shawn

    PN

    PN( 
    o_waveform 
    t_crossType 
    n_threshold 1.0 
    [ ?windowName t_windowName ] [ ?smooth x_smooth ] [ ?windowsize x_windowsize ] [ ?detrending t_detrending ] [ ?cohGain f_cohGain ] ) => o_waveform / nil

    Description

    Calculates the transient phase noise of the input waveforms in decibels (dBc/Hz). Phase noise is defined as the power spectral density of the absolute jitter of an input waveform.

    Arguments

    o_waveform

    Waveform object representing simulation results that can be displayed as a series of points on a grid. (A waveform object identifier looks like this: srrWave:XXXXX.)

    ?crossType t_crossType

    The points at which the curves of the waveform intersect with the threshold. While intersecting, the curve may be either rising or falling.

    Valid values: rising and falling, respectively.

    Default crossType is rising.

    ?windowName t_windowName

    The window type.Valid values: ’Blackman, ’Cosine2, ’Cosine4, ’ExtCosBell, ’HalfCycleSine, ’HalfCycleSine3 or ’HalfCycleSine6, ’Hamming, ’Hanning, ’Kaiser, ’Parzen, ’Rectangular, ’Triangular, or ’Nuttall.

    Default value: ’Rectangular

    ?smooth x_smooth

    The Kaiser window smoothing parameter. The 0 value requests no smoothing.Valid values: 0 <= x_smooth <= 15.

    Default value: 1

    ?windowsize x_windowsize

    The number of frequency domain points to use in the Fourier analysis. A larger window size results in an expectation operation over fewer samples, which leads to larger variations in the power spectral density. A small window size can smear out sharp steps in the power spectral density that might really be present.

    Default value: 256

    ?detrending t_detrending

    The detrending mode to use.Valid values: ’None, ’mean, ’Linear

    Default value: ’Mean

    ?cohGain f_cohGain

    A scaling parameter. A non-zero value scales the power spectral density by 1/(f_cohGain).Valid values: none, default, magnitude, dB20, or dB10

    Default value: db20

    Value Returned

    o_waveform

    The power spectral density waveform returned when the command is successful.

    nil

    Returns nil when the command fails.

    Example

    PN(v("net9") "rising" 1.0 ?windowName "Rectangular" ?smooth 1 ?windowSize 256 ?detrending "Mean" ?cohGain (10**(/20)) )

    Returns the Phase Noise waveform, net9, for the window type rectangular at threshold value 1.0.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • skylink
    skylink over 5 years ago in reply to ShawnLogan

    Thanks Shwawn,

    Actually the rfOutputNoise and pn functions give me exactly the same waveform, as a result I still get the same "wrong" jitter result of 269.2fs ...

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • skylink
    skylink over 5 years ago in reply to skylink

      see, same result...

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • skylink
    skylink over 5 years ago in reply to skylink

    I have noticed that the Jee waveform given by the "jitter" analysis is not the same as the "Jee" I have computed with the "time average" function; I think this is a first hint, see:

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • skylink
    skylink over 5 years ago in reply to skylink

    Could it be my "jitter" settings that are incorrect (pessimistic)? I am using a "Vdd/2" threshold in that case

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information