• 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. RF Design
  3. pnoise spurs at multiples of clock frequency.

Stats

  • Locked Locked
  • Replies 19
  • Subscribers 65
  • Views 21718
  • 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 spurs at multiples of clock frequency.

vamshiky
vamshiky over 11 years ago

Hi,

 I have a simple inverter driven by a square wave, and ran pnoise on the circuit.

There is flicker and thermal noise and after that  has huge spurs ( about +20dBc ) at 2*Ffref , 5*Fref.

And this goes away if I carefully choose the sweep type and step size (delberately avoiding those freq points during sim). 

 

Also I have noticed from earlier posts that while running pnoise sim, simulator automatically skips the freq point which is exact multiple of beat frequency and gives a message "Infinite flicker noise is ignored"

however I dont see this happening in my sims.

Are there any additonal settings/options which I missed out.

 

Thanks,

Vamshi 

 

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 11 years ago

    Vamshi,

    Can you post your Netlist (the input.scs) here and also give the spectre subversion you're using? (Type "spectre -W" at the unix prompt; it will also appear near the top of the spectre output log)?

    Whilst I can throw together a simple example to show this, seeing your setup will help to understand why you are getting this.

    Thanks,

    Andrew 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • vamshiky
    vamshiky over 11 years ago
    Andrew, Here is the netlist, and spectre is : sub-version 12.1.0.489.isr9 ---------------------------- // Generated for: spectre // Generated on: Dec 19 12:31:13 2013 // Design library name: xxxx // Design cell name: test_pss_pnoise // Design view name: schematic simulator lang=spectre global 0 include "xxxxx.scs" // Library name: xxxxxxxxx // Cell name: CKINVX2 // View name: schematic subckt CKINVX2 VDD VSS i o MN0 (o i VSS VSS) nch_lvt ..................... MP0 (o i VDD VDD) pch_lvt ...................... ends CKINVX2 // End of subcircuit definition. // Library name: xxxx // Cell name: test_pss_pnoise // View name: schematic V1 (avss 0) vsource dc=0 type=dc V0 (avdd0p8 avss) vsource dc=800.0m type=dc I1 (avdd0p8 avss in out) CKINVX2 V2 (in avss) vsource type=pulse val0=0 val1=800.0m period=20n delay=10p \ rise=10p fall=10p width=10n C0 (out avss) capacitor c=10f simulatorOptions options reltol=1e-3 vabstol=1e-6 iabstol=1e-12 temp=27 \ tnom=27 scalem=1.0 gmin=1e-12 rforce=1 maxnotes=5 maxwarns=5 digits=5 \ cols=80 pivrel=1e-3 sensfile="../psf/sens.output" checklimitdest=psf pss pss fund=50M harms=10 errpreset=conservative + annotate=status pnoise ( out avss ) pnoise start=1k stop=500M dec=20 + maxsideband=10 annotate=status modelParameter info what=models where=rawfile element info what=inst where=rawfile outputParameter info what=output where=rawfile designParamVals info what=parameters where=rawfile primitives info what=primitives where=rawfile subckts info what=subckts where=rawfile save out avss saveOptions options save=selected -------------------------------------------------------------------------- In this example I get tones at 100M,500M with -1.7dB magnitude, and & noisefloor is <-150dB. Not sure if can give the device details at the moment, so removed those lines here... Thanks, Vamshi
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • vamshiky
    vamshiky over 11 years ago
    As I mentioned earlier, when I changed sweep type these tones disappear. ------------ pnoise ( out avss ) pnoise start=1k stop=501M step=1.7M + maxsideband=10 annotate=status --------------
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 11 years ago

    I tried your circuit (with two pnoise analyses in the netlist to make it simpler), and with some made up models and device sizes, and I don't see the problem. Spectre also reports (using the same version you're using):

     Warning from spectre at freq = 100 MHz during PNoise analysis `pnoise'.
        WARNING (SPCRTRF-15037): Infinite flicker noise is ignored. 

    Here's what I used (I fixed your line wrapped netlist - I assume you're using Chrome, which causes some problems with the forums on this web site, as far as I know).

     // Generated for: spectre
    // Generated on: Dec 19 12:31:13 2013
    // Design library name: xxxx
    // Design cell name: test_pss_pnoise
    // Design view name: schematic
    simulator lang=spectre
    global 0
    //include "xxxxx.scs"
    model nch_lvt bsim4 type=n
    model pch_lvt bsim4 type=p
    // Library name: xxxxxxxxx
    // Cell name: CKINVX2
    // View name: schematic
    subckt CKINVX2 VDD VSS i o
    MN0 (o i VSS VSS) nch_lvt w=1u l=0.1u
    MP0 (o i VDD VDD) pch_lvt w=2u l=0.1u
    ends CKINVX2

    // End of subcircuit definition.
    // Library name: xxxx
    // Cell name: test_pss_pnoise
    // View name: schematic
    V1 (avss 0) vsource dc=0 type=dc
    V0 (avdd0p8 avss) vsource dc=800.0m type=dc
    I1 (avdd0p8 avss in out) CKINVX2
    V2 (in avss) vsource type=pulse val0=0 val1=800.0m period=20n delay=10p \
      rise=10p fall=10p width=10n
    C0 (out avss) capacitor c=10f

    simulatorOptions options reltol=1e-3 vabstol=1e-6 iabstol=1e-12 temp=27 \
     tnom=27 scalem=1.0 gmin=1e-12 rforce=1 maxnotes=5 maxwarns=5 digits=5 \
     cols=80 pivrel=1e-3 sensfile="../psf/sens.output" checklimitdest=psf
    pss pss fund=50M harms=10 errpreset=conservative
    + annotate=status
    pnoise ( out avss ) pnoise start=1k stop=500M dec=20
    + maxsideband=10 annotate=status
    pnoiseAlt ( out avss ) pnoise start=1k stop=501M step=1.7M
    + maxsideband=10 annotate=status
    modelParameter info what=models where=rawfile
    element info what=inst where=rawfile
    outputParameter info what=output where=rawfile
    designParamVals info what=parameters where=rawfile
    primitives info what=primitives where=rawfile
    subckts info what=subckts where=rawfile
    save out avss
    saveOptions options save=selected

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • vamshiky
    vamshiky over 11 years ago

     Thanks for your efforts Andrew, I now need to understand if the issue is with models used or some kind of env variable which differs from your test.

    please suggest.

     

    -Vamshi

     

     

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 11 years ago

    It seems unlikely that it would be an environment variable. I can only imagine that it might be model related. Maybe the flicker noise profile is such that the flicker noise is still high near the harmonic multiples.

    That said, I just tried setting dec=200 on the pnoise line, and I no longer get the message about infinite flicker noise, and there is a huge peak at 100MHz if I do this. So my guess is that due to floating point numerical error, it may not detect the near-infinite flicker noise and out a value instead (e.g. if it was a small fraction of a Hertz away from the harmonic multiple).

    Either way, going through exact (or very near exact) multiples of the fundamental probably doesn't make a lot of sense anyway.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • vamshiky
    vamshiky over 11 years ago

    OK, then I am only left with carefully choosing the step sizes/ sweep points. Linear step size with an irrational number does the job but actually slows my sims on actual circuit chargepump for PLL. (ofcourse still see a bit of wierd behaviour at high frequencies)

    Do you have any better suggestions to avoid those near/exact multiple frequencies in sims.

    Thanks,

    Vamshi

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 11 years ago

    Vamshi,

    Could you alter your input frequency to not be exact "decade" frequency? Then you could use a number of points per decade, and know that your harmonics don't coincide with 10M, 100M, 1G etc.

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • vamshiky
    vamshiky over 11 years ago

     I understand that, however input frequncy is a system level spec and cant be changed.

     

    Thanks,

    Vamshi

     

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 11 years ago

    The other alternative is that you specify start, stop and log - this is the number of log steps beween the two end points. For example:

    pnoiseLog ( out avss ) pnoise start=1k stop=501M log=110
    + maxsideband=10 annotate=status

    So I moved the end point to not be on an exact multiple, and I made the log roughly 20*numDecades (assuming you had dec=20 before).

    Regards,

    Andrew.

    • 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