• 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. sum of sampled_noise output spectrum, how to access the...

Stats

  • Locked Locked
  • Replies 14
  • Subscribers 128
  • Views 9221
  • 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

sum of sampled_noise output spectrum, how to access the phase information?

NewScreenName
NewScreenName over 2 years ago

Hi all,

I am trying to simulate the pnoise of a circuit whose output of interest is then passed through a high pass FIR filter x(n)-x(n-1)+x(n-2)-x(n-3)+x(n-4)-...-x(n-L-1) with L even number.

Because the noise I am interested in, is the one after this filtering process, I have tried to implement this filter in a verilogA model, where I had to put the ignore hidden states option, but the result is I get 0 noise at the output of such model. Is that because the noise is not retained once electrical nets are assigned to variables within the verilog model?

As an alternative, I tried to simulate L cycles of the circuit, performing one pnoise_sampled point for each of these. The idea was to then take the L output noise power spectra and sum/subtract them accordingly to the FIR operation. However this is not yielding expected results. I see the output noise spectrum is not a complex number, therefore I guess it is just showing the absolute values and this would explain why I do not see the expected cancelation of the noise within certain portion of the frequency spectrum.

Is there a way to have a meaningful sum of the output noise at different time points, like for example by accessing the actual output power spectrum with its phase information?

Are there maybe more suitable ways to simulate this? (transient noise would require me very long simulations, so would be the last option if possible

Thank you

Best regards)

  • Cancel
Parents
  • Frank Wiedmann
    Frank Wiedmann over 2 years ago

    How about taking the spectrum of the sampled noise and multiplying it by the transfer function of the FIR filter in the frequency domain?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ShawnLogan
    ShawnLogan over 2 years ago in reply to Frank Wiedmann

    Dear NewScreenName,

    In addition to Frank's good suggestion, I would like to add a few comments if I may regarding your post and some of the observations in your post.

    1. I think a little more background regarding the nature of the circuit subject to the FIR filter might allow for some more specific suggestions from the experts, such as Frank, who monitor this Forum. For example, is its output quantized or does it undergo quantization as part of your FIR filter? What generic type of circuit are you simulating? Is the follow-on FIR filter used as an anti-aliasing filter or representing some type of noise filter to provide a standards based measurement? Are your signals periodic?

    2.

    NewScreenName said:
    Is that because the noise is not retained once electrical nets are assigned to variables within the verilog model?

    Assigning an input signal (i.e., the terminal voltage of a verilog-A block) to an internal verilog-A signal will retain the terminal voltage - irrespective if it is noise. However, if you are averaging the terminal voltage over some period of time and it is zero-mean based noise, its average may be zero. Are you doing any averaging?

    3.

    NewScreenName said:
    I see the output noise spectrum is not a complex number,

    The computed noise spectrum can be a complex number. For example, the ViVA dft() function returns a real and imaginary component at each spectral frequency. When plotted in ViVA, it will display the magnitude. You can access the real and imaginary components. The psd() function, by its nature, is a real quantity.

    4.

    NewScreenName said:
    Is there a way to have a meaningful sum of the output noise at different time points, like for example by accessing the actual output power spectrum with its phase information?

    I'm not sure I understand what you mean by "time points" as computing a spectrum from a time domain simulation requires a finite time window of simulation data. Hence, computing a spectrum from "different timepoints" is not something I think I understand. You could use take the dft() over a number of time intervals separated in time if that is close to what you are looking to do. It will retain phase information as I noted in my item 3.

    5.

    NewScreenName said:

    Are there maybe more suitable ways to simulate this? (transient noise would require me very long simulations, so would be the last option if possible

    I really need to better understand the nature of your circuit and your goal to provide a suggestion that might be useful - sorry!

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • ShawnLogan
    ShawnLogan over 2 years ago in reply to Frank Wiedmann

    Dear NewScreenName,

    In addition to Frank's good suggestion, I would like to add a few comments if I may regarding your post and some of the observations in your post.

    1. I think a little more background regarding the nature of the circuit subject to the FIR filter might allow for some more specific suggestions from the experts, such as Frank, who monitor this Forum. For example, is its output quantized or does it undergo quantization as part of your FIR filter? What generic type of circuit are you simulating? Is the follow-on FIR filter used as an anti-aliasing filter or representing some type of noise filter to provide a standards based measurement? Are your signals periodic?

    2.

    NewScreenName said:
    Is that because the noise is not retained once electrical nets are assigned to variables within the verilog model?

    Assigning an input signal (i.e., the terminal voltage of a verilog-A block) to an internal verilog-A signal will retain the terminal voltage - irrespective if it is noise. However, if you are averaging the terminal voltage over some period of time and it is zero-mean based noise, its average may be zero. Are you doing any averaging?

    3.

    NewScreenName said:
    I see the output noise spectrum is not a complex number,

    The computed noise spectrum can be a complex number. For example, the ViVA dft() function returns a real and imaginary component at each spectral frequency. When plotted in ViVA, it will display the magnitude. You can access the real and imaginary components. The psd() function, by its nature, is a real quantity.

    4.

    NewScreenName said:
    Is there a way to have a meaningful sum of the output noise at different time points, like for example by accessing the actual output power spectrum with its phase information?

    I'm not sure I understand what you mean by "time points" as computing a spectrum from a time domain simulation requires a finite time window of simulation data. Hence, computing a spectrum from "different timepoints" is not something I think I understand. You could use take the dft() over a number of time intervals separated in time if that is close to what you are looking to do. It will retain phase information as I noted in my item 3.

    5.

    NewScreenName said:

    Are there maybe more suitable ways to simulate this? (transient noise would require me very long simulations, so would be the last option if possible

    I really need to better understand the nature of your circuit and your goal to provide a suggestion that might be useful - sorry!

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • NewScreenName
    NewScreenName over 2 years ago in reply to ShawnLogan

    Dear ShawnLogan,

    Regarding your points:

    1. For the background, I hope my reply to Frank gave enough?

    2. the input signal of the Verilog-A model internally was not assigned to an internal signal (by signal I suppose you meant an electrical net, right?) but just to a real variable. This is why I wondered whether this approach would be correct for the pnoise small signal analysis? I suspect those real variables (not electrical) cannot retain noise?

    3. How can I access that? When I do imag(getData("out" ?resultsDir ?result "pnoise_sample_pm1"))) for example, I will get a zero signal across all spectrum, which I would not really expect. Am I doing something wrong here?

    4. I hope after giving more context it sounds clearer now? I run a pss simulation, of L periods of my ADC sampling frequency, and chose L time points where to compute the pnoise

    • 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