• 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. adding white and flicker noise sources in cadence virtu...

Stats

  • Locked Locked
  • Replies 7
  • Subscribers 126
  • Views 21395
  • 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

adding white and flicker noise sources in cadence virtuoso

OneNewBoy
OneNewBoy over 12 years ago

Hi all,

I am new to cadence virtuoso/spectre. I want to design an ADC for which I have written some components through verilog A containing their respective noise models implemented through white_noise and flicker_noise functions.

Now how to activate those sources in spectre simulation ? It's only active in small signal analysis as far as I know.
However I want noise to be present along with the main signal so that I can measure SNR etc using calculator function.

So which type of analysis to use: tran or noise ? and how (few lines of analysis statement will help)

Moreover, from cadence virtuoso manual I found that we can perform small signal analysis during transient analysis, by using below command:

  Name tran stop=stop actimes=time acnames=name

However I got a syntax error of  "ERROR (SPECTRE-16062): Output of circuit is not specified." on running below code snippet on a simple test circuit :

tran tran stop=4u write="spectre.ic" writefinal="spectre.fc" \

    annotate=status maxiters=5 actimes=[2u] acnames=[noise1]

noise1 noise start=2u stop=2.1u

finalTimeOP info what=oppoint where=rawfile

I stuffed another "info what=oppoint" statement between 2nd and 3rd line, still same error. Here my understanding is tran analysis stops at 2u and till 2.1 the simulator will run noise analysis (if wrong please correct me). I am still trying to debug this and it may be a plain syntax error. However can someone please answer above questions and guide me through the right approach.

 Thanks a lot!

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 12 years ago

    OK, to answer your first question, the answer is that you should not need to set the noise seed or scale factors. The noise seed just alters the initialization of the random number generators, so you will end up with a different sequence of random numbers, but they should have the same distribution. It's actually used if you use the "multiple runs" capability of transient noise to allow you to get a set of results to potentially average over (for example), but other than that I'd leave it alone. The scale factor just artificially increases the noise above what the model says it should be - so it's typically used for "what if" type investigations.

    The problem could be that you don't have enough accuracy. Noise contributions are pretty small in general, and so it's quite likely you'll need to use errpreset=conservative at least (possibly setting reltol to 1e-4 as well, which would mean that the effective reltol is 1e-5 because conservative divides it by 10). It's also important to set a suitable value for noisefmax, so that you get noise contributions at high frequency. Note that if you don't set noisefmin, it will take whatever noise values there are at noisefmax, and use those across all frequencies (so effectively the noise will be white). If  you set noisefmin, it will be coloured using the power spectral density between noisefmin and noisefmax (this involves a bit more work for the simulator though, clearly). Also of course you need a long enough simulation to effectively see the contributions of low frequency noise.

    To answer your subsequent 5 questions:

    1. Whether you are doing small signal noise with acnames/actimes or using tran noise, it is including thermal noise.
    2. I don't think small signal noise is really appropriate for an ADC. It's not going to include any noise folding caused by sampling - whereas transient noise would. You could potentially use pss/pnoise if the circuit is periodic in nature, but sometimes that can be difficult if you are performing a lot of conversion cycles of an ADC because it could take a lot of memory (pss/pnoise will capture the non-linearity in the pss, and hence your pnoise will include noise folding effects, but it's a small signal approach so a lot more efficient).
    3. Can't say what your problem was here since you didn't say what the expression was or what the error was.
    4. You can't use SpectrumMeas on the result of small signal noise - it uses a DFT approach and so the input has to be in the time domain, not frequency domain.
    5. As I said originally, all that the actimes/acnames approach is doing is telling it to perform a small-signal noise at the DC operating point found at a specific point in time. That's fine if that's what you want, but I doubt it's what you really want here.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 12 years ago

    OK, to answer your first question, the answer is that you should not need to set the noise seed or scale factors. The noise seed just alters the initialization of the random number generators, so you will end up with a different sequence of random numbers, but they should have the same distribution. It's actually used if you use the "multiple runs" capability of transient noise to allow you to get a set of results to potentially average over (for example), but other than that I'd leave it alone. The scale factor just artificially increases the noise above what the model says it should be - so it's typically used for "what if" type investigations.

    The problem could be that you don't have enough accuracy. Noise contributions are pretty small in general, and so it's quite likely you'll need to use errpreset=conservative at least (possibly setting reltol to 1e-4 as well, which would mean that the effective reltol is 1e-5 because conservative divides it by 10). It's also important to set a suitable value for noisefmax, so that you get noise contributions at high frequency. Note that if you don't set noisefmin, it will take whatever noise values there are at noisefmax, and use those across all frequencies (so effectively the noise will be white). If  you set noisefmin, it will be coloured using the power spectral density between noisefmin and noisefmax (this involves a bit more work for the simulator though, clearly). Also of course you need a long enough simulation to effectively see the contributions of low frequency noise.

    To answer your subsequent 5 questions:

    1. Whether you are doing small signal noise with acnames/actimes or using tran noise, it is including thermal noise.
    2. I don't think small signal noise is really appropriate for an ADC. It's not going to include any noise folding caused by sampling - whereas transient noise would. You could potentially use pss/pnoise if the circuit is periodic in nature, but sometimes that can be difficult if you are performing a lot of conversion cycles of an ADC because it could take a lot of memory (pss/pnoise will capture the non-linearity in the pss, and hence your pnoise will include noise folding effects, but it's a small signal approach so a lot more efficient).
    3. Can't say what your problem was here since you didn't say what the expression was or what the error was.
    4. You can't use SpectrumMeas on the result of small signal noise - it uses a DFT approach and so the input has to be in the time domain, not frequency domain.
    5. As I said originally, all that the actimes/acnames approach is doing is telling it to perform a small-signal noise at the DC operating point found at a specific point in time. That's fine if that's what you want, but I doubt it's what you really want here.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

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