• 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. Noise Results from Transient Noise Simulation and Noise...

Stats

  • Replies 6
  • Subscribers 128
  • Views 501
  • Members are here 0

Noise Results from Transient Noise Simulation and Noise Simulation

Kenny Lu
Kenny Lu 15 days ago

Dear all,

     I am analyzing the noise performance of a simple RC circuit in the 20-20kHz band.

     I have used two different methods in order to compare the differences.

     Method 1 (With .noise simulation):

     Integrated noise power at Vo (20-20kHz) = 331.2 fV^2. 

     Expression used: integ((getData("out" ?result "noise")**2) 20 20000 " ")

    Method 2 (With Transient Noise Simulation + FFT):

    SNR (20-20kHz) = -6.371 dB,  Signal Power = 1.179 pV^2,  Integrated noise power at Vo (20-20kHz) = 5.113pV^2

    SNR: spectrumMeasurement(VT("/VO") t 305.17578121E-9 1.00030517578125E-3 32768 20 20000 0 "Rectangular" 0.0 0 1 "snr")

   

    I see that there is a discrepancy in the integrated noise power between the two methods (highlithed in red).

    I suspect that this is due to the FFT (white noise from fs/2 ~ inf is folded back into 0 ~ fs/2).

 

   Could you please suggest me a method to align these two results?  Should I add a low-pass filter here?

Thank you very much

Kenny

  • Cancel
  • Sign in to reply
Parents
  • henker
    henker 7 days ago

    Method 1 can be checked by theory:
    Mean square noise voltage of a resistor is
    VRMS^2 = 4 * k * T * R * dF

    The RC filter can be neglegted here, because the RC bandwidth is larger than the applied integration range.
    So, assuming you used nominal temperature of 27°C:

    VRMS^2 = 4 * k * T * R * dF
    = 4 * 1.3806504e-23 * 300.15 * 1k * (20k-20)
    = 3.311903e-13
    = 331.1903 fV^2


    For method 2, I could not reproduce your results.

    First, it is unclear how you did setup the transient noise.
    e.g. for low frequency of 20Hz, the simulation time would need to be at least 50ms, so one period that low frequency noise component can exist (you operate only on up to 1ms), e.g. see the parameters in the Fourier Analysis Settings of the Transient Noise. There is also a helpful PSD summary.


    Second, I cannot reenact the signal power, it is magnitudes larger than expected (maybe miscalculation?) and you did not show how it was obtained.

    As the example has only noise and no actual signal, the use of spectrumMeasurement with a fictive signal and snr is rather digressive. It is IMHO much more intuitive to calculate the power spectrum density (e.g. see 'psd' function in documentation or use the Viva Menu: Measurements > Spectrum), and integrate over the required frequency band, e.g.:

    integ(psd(VT("/VO") 0.05 0.85 32000 ?windowName "Rectangular" ?windowSize 2000) 20 20000 " ") => 323.0588f

    You can even plot the psd and try to make sense from the spectrum. Here only white noise exists, thus a constant PSD is expected; if the RC filter would interfere, you'd see a decay after the RC bandwidth, etc.


    If the signal contains nothing but noise in the specified frequency band and no further spectral processing is required, than calculating the variance of the signal is more efficient:

    stddev(clip(VT("/VO") 0.05 0.85))**2 => 323.279f

    Since both calculations work on a specific realization of a stochastic/pseudo-random process, there are still (small) differences to the theory. These may also vary from realization to realization (e.g. different random seeds).

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • Cancel
  • Kenny Lu
    Kenny Lu 6 days ago in reply to henker

    Dear henker,

         Thank you very much for your reply. I sincerely appreciate it.

         For method 2 (I provide a new set of results here.)

         This is the setup for my transient noise:

                       transient stop time ~= 1ms.     Noise fmax = 50GHz.      noise seed = 1.

         

         For the signal power, this was how I obtained the result:

         sigpower (from spectrumMeasurement): -117.879 dB  --> 10^(-117.879/20) = 1.2766 uVp.

         P_sig = A^2 / 2 = (1.2766u)^2 / 2 = 815 fV^2.

         P_noise = P_sig / (10^(SNR/10)) = 4.211 pV^2.

        This was how I calculated P_noise in the original post. The results are different from the original post because I don't have the original data anymore. I simply rerun the simulation.

        I have tried your simulation settings and got the same result as yours:

        Transient Stop Time = 850m.   Noise fmax = 20kHz.      Noise seed = 1.

        integ(psd(VT("/VO") 0.05 0.85 32000 ?windowName "Rectangular" ?windowSize 2000) 20 20000 " ") = 323.1 fV^2 

        

         Transient Stop Time = 850m.   Noise fmax = 200kHz.      Noise seed = 1.

         integ(psd(VT("/VO") 0.05 0.85 32000 ?windowName "Rectangular" ?windowSize 2000) 20 20000 " ") = 3.206 pV^2

         I have a number of questions I would like to ask. Could you please help me clarify a few?

         1. If I would only like to analyze noise in the audio band (20Hz ~ 20kHz), can I simply set noise fmax to slightly higher than 20 kHz?  I understand that the higher the noise fmax, the higher the frequencies of noise I can see.   Extending from this, does that mean I will need to set the transient stop time to 50ms if I want to see low frequency noise at 20 Hz?

          i.e.    Transient Stop Time = 50ms (for noise=20Hz).    Noise fmax = 40kHz (for noise up to 40kHz. Taken slightly higher than 20kHz for margin).

         2. How do you choose the window size for psd?  Should I choose it to be the same as no. of samples?  In the example you have shown above, you have chosen window size = no. of sample / 16.

        3. Why is it the with noise fmax = 200kHz, the integrated psd result is around x10 higher than 323.1 fV^2?

    Thank you very much

    Kenny

          

         

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • Kenny Lu
    Kenny Lu 6 days ago in reply to henker

    Dear henker,

         Thank you very much for your reply. I sincerely appreciate it.

         For method 2 (I provide a new set of results here.)

         This is the setup for my transient noise:

                       transient stop time ~= 1ms.     Noise fmax = 50GHz.      noise seed = 1.

         

         For the signal power, this was how I obtained the result:

         sigpower (from spectrumMeasurement): -117.879 dB  --> 10^(-117.879/20) = 1.2766 uVp.

         P_sig = A^2 / 2 = (1.2766u)^2 / 2 = 815 fV^2.

         P_noise = P_sig / (10^(SNR/10)) = 4.211 pV^2.

        This was how I calculated P_noise in the original post. The results are different from the original post because I don't have the original data anymore. I simply rerun the simulation.

        I have tried your simulation settings and got the same result as yours:

        Transient Stop Time = 850m.   Noise fmax = 20kHz.      Noise seed = 1.

        integ(psd(VT("/VO") 0.05 0.85 32000 ?windowName "Rectangular" ?windowSize 2000) 20 20000 " ") = 323.1 fV^2 

        

         Transient Stop Time = 850m.   Noise fmax = 200kHz.      Noise seed = 1.

         integ(psd(VT("/VO") 0.05 0.85 32000 ?windowName "Rectangular" ?windowSize 2000) 20 20000 " ") = 3.206 pV^2

         I have a number of questions I would like to ask. Could you please help me clarify a few?

         1. If I would only like to analyze noise in the audio band (20Hz ~ 20kHz), can I simply set noise fmax to slightly higher than 20 kHz?  I understand that the higher the noise fmax, the higher the frequencies of noise I can see.   Extending from this, does that mean I will need to set the transient stop time to 50ms if I want to see low frequency noise at 20 Hz?

          i.e.    Transient Stop Time = 50ms (for noise=20Hz).    Noise fmax = 40kHz (for noise up to 40kHz. Taken slightly higher than 20kHz for margin).

         2. How do you choose the window size for psd?  Should I choose it to be the same as no. of samples?  In the example you have shown above, you have chosen window size = no. of sample / 16.

        3. Why is it the with noise fmax = 200kHz, the integrated psd result is around x10 higher than 323.1 fV^2?

    Thank you very much

    Kenny

          

         

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Children
  • henker
    henker 5 days ago in reply to Kenny Lu

    1.
    Yes, for a lower limit of analysis frequency at 20Hz, you need a at least 50ms Tstop. More would be better for averaging, as this will smooth the PSD, but it depends if you can afford the computation and on the required accuracy esp. at low frequencies. Note that also all analysis would happens only at multiples of 20Hz, if you need a finer frequency grid, you need an even larger Tstop.
    When using the transient noise options in the setup form, check the "PSD Min Frequency", then the form will calculate the minimum stop time for you. Also have a look in the Cadence Help, all the fields are actually explained.

    The noise Fmax would require more considerations; but as short summary:

    If the system filters high frequencies and there is no reasonable noise in the last decade of the PSD, or you can live with some error in the last decade, than generate the noise in the same band that you want to analyze and have the PSD same as the noise.
    e.g. 20kHz signal -> 20kHz noise -> 20kHz PSD

    If you analyze a region where the system does not filter the higher frequencies and/or you expect considerable noise power in the last decade of the region of interest, then generate noise one decade higher than the highest frequency. This prevents that noise bandwidth filter/PSD sampling affect the noise in the actual signal band. ("slightly higher" in terms of frequency analysis translates to "one decade"). Have PSD Max Frequency same as the noise bandwidth.
    20kHz signal -> 200kHz noise -> 200kHz PSD

    If you additionally want to see the behaviour of the noise bandwidth filter (that is builtin in the noise generation), then have the PSD one decade higher than the noise.
    20kHz signal -> 200kHz noise -> 2MHz PSD


    2.
    See the PSD Summary in the Fourier Analysis Settings (there is a checkbox in the transient noise setup). Just take these values to the analysis.


    3.
    The bandwidth of the noise is 200kHz, but the PSD is still 20kHz (with sampling at 40kHz), so everything above 20Khz is folded down into the 20kHz band, resulting in aliasing.
    IMHO it does not make any sense to have the Noise Fmax larger than PSD Max Frequency, as this inherently violates the Nyquist sampling theorem. With that you're just asking for trouble.

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
  • Kenny Lu
    Kenny Lu 2 days ago in reply to henker

    Dear henker,

         Thank you very much for your detailed explanation. I sincerely appreciate your help. 

    Kenny

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • 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