• 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. PSS simulation for VCO

Stats

  • Locked Locked
  • Replies 8
  • Subscribers 63
  • Views 33962
  • 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

PSS simulation for VCO

yefJ
yefJ over 6 years ago

Hello , i have found that my VCO oscilates 13.45GHZ by converting period to frequency from the transient plot bellow f=1/T,

i  tried to perform the PSS and PNOISE as following:

PSS: 

tbstat=30.48nsecnsec (the transient of the signal,from the plot bellow the steady state starts after 30.48ns ,tbstat help definition is shown bellow bellow)

Beat frequency=13.45GHZ(its the high common input frequency, from my transient response i calculated the oscilation frequency by f=1/T)

PNOISE:

Relative frequency: the help shown bellow says we should use 2 because we have diodes in it(so i am not sure, my diodes are used as a varactor)

 frequency range: i thought to specify the range from zero till the frequency of the oscillation i got fro the transient plot and f=1/T.

The final ADEL shown bellow.

When i tried to run the PSS first ,it gave me an error shown in the end.

Why it gave me an error? my VCO is oscillating fine  as you can see in the transient plots bellow.

a step by step of what was done shown  is bellow. 

Thanks


*****************************************************************************************************

pss: time = 30.08 ns (97.5 %), step = 2.974 ps (9.64 m%)

Error found by spectre at time = 30.8517 ns during periodic steady state analysis `pss'.
ERROR (SPCRTRF-15050): V(out_p,out_n) is too small to reliably detect the period of the oscillator.Perhaps nodes with insignificant signal levels were chosen, or perhaps the oscillator was never properly started.

Analysis `pss' was terminated prematurely due to an error.
modelParameter: writing model parameter values to rawfile.

Opening the PSF file ../psf/modelParameter.info ...
element: writing instance parameter values to rawfile.

Opening the PSF file ../psf/element.info ...
outputParameter: writing output parameter values to rawfile.

Opening the PSF file ../psf/outputParameter.info ...
designParamVals: writing netlist parameters to rawfile.

Opening the PSFASCII file ../psf/designParamVals.info ...
primitives: writing primitives to rawfile.

Opening the PSFASCII file ../psf/primitives.info.primitives ...
subckts: writing subcircuits to rawfile.

Opening the PSFASCII file ../psf/subckts.info.subckts ...

Aggregate audit (9:14:04 PM, Fri Jan 11, 2019):
Time used: CPU = 1.39 s, elapsed = 1.53 s, util. = 91.1%.
Time spent in licensing: elapsed = 31.2 ms.
Peak memory used = 58.1 Mbytes.
Simulation started at: 9:14:02 PM, Fri Jan 11, 2019, ended at: 9:14:04 PM, Fri Jan 11, 2019, with elapsed time (wall clock): 1.53 s.
spectre completes with 1 error, 5 warnings, and 4 notices.

  • Cancel
  • ShawnLogan
    ShawnLogan over 6 years ago

    Dear yefj,

    A few suggestions follow...

    1. Let spectre compute the frequency since you have specified this is an oscillator. I noticed you are entering the beat freuqency. There is a check box to allow spectre to compute the frequency.

    2. With an LC or other higher Q based oscillator, you need to guarantee that sufficient samples are taken over the period of oscillation. You are using an errpreset of "moderate" and I don't see that you have specified a value for maxstep (maximum time step for integration). With an errpreset of "moderate", the maximum integration step size is determined by dividing the time of the simulation (30.48 ns?) by 50. In your example, this is 30.48 ns/50 = 609 ps. However, the period of your oscillator is 74 ps. Hence, the maximum time step is far too large and may result in simulator accuracy errors. I would suggest including a maximum integration time step of, perhaps, 1 or 2 ps (maxstep = 1 ps, for example).

    3. Your oscillator waveform is near sinusoidal. Hence, you might consider the use of harmonic balance in lieu of the shooting algorithm.

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Tawna
    Tawna over 6 years ago

    Hi yefj,

    There are examples of how to setup an oscillator - both ring (strongly_nonlinear) and sinusoidal (linear) in the RF_Doc_Database

    ​database located in <SPECTRE17.1 hierarchy>/tools.lnx86/spectre/examples/SpectreRF_workshop/RF_Doc_Database.tar.gz

    And I believe the instructions are located here: <SPECTRE17.1>/doc/spectreRFexplorerWorkshop/spectreRFexplorerWorkshop.pdf

    The best part is...it explains the "why" about how set up the analysis.   Great step-by-step tutorials.    Also see:  Article 2046330 SpectreRF AppNotes and Tutorials - One of Our Best Kept Secrets! on https://support.cadence.com .

    Best regards,

    Tawna

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • yefJ
    yefJ over 6 years ago in reply to ShawnLogan
    Unknown said:
    1. Let spectre compute the frequency since you have specified this is an oscillator. I noticed you are entering the beat freuqency. There is a check box to allow spectre to compute the frequency.

    Hello Shawn,as you suggested i was  able to check this option when i switched my PSS to harmonic balance instead of shooting.

    after checking this option it still gives me an error that i must specify a value,although it disables this option when the box checked.

    it doesnt allow me to auto calculate the beat frequency.

    Unknown said:
    However, the period of your oscillator is 74 ps. Hence, the maximum time step is far too large and may result in simulator accuracy errors. I would suggest including a maximum integration time step of, perhaps, 1 or 2 ps (maxstep = 1 ps, for example).

    There is no maxstep option in the PSS window as shown bellow.

    also spectreRF manual says(shown bellow) that for highly non linear oscillator (i have diodes an transistors) i should use shooting PSS.

    what could be done to make it work properly? (i showed bellow my pss window)

    Thanks

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • yefJ
    yefJ over 6 years ago in reply to Tawna

    Hello Tawna,Yes i am following the spectrerf manual , i am showing quotes of definitions in my first post to justify the numbers i used, and a step by step of how it was done, in order to see where my implementation differs from the spectre rf manual.

    Thanks

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago in reply to yefJ

    Several points here:

    1. Shawn made a small mistake - the auto-calculate for the beat frequency doesn't work with oscillators, since it uses the frequencies on sources in the schematic and you don't have that, so you have to enter a number which is an estimate of the oscillation frequency (or the lowest frequency in the circuit if you have dividers as well)
    2. maxstep is on the Options form at the bottom of the PSS (or hb) form. It's a good idea to ensure enough points that the oscillation builds up
    3. The presence of diodes or transistors in your circuit isn't enough that you then couldn't use harmonic balance - that doesn't necessarily make it "strongly nonlinear". So you might still want to try hb with the harmonics set to "auto". If using hb, use the hb analysis rather than the harmonic balance on PSS - it has better automation (the simulator algorithms are the same, but it's a bit more usable).
    4. Make sure you have a long enough transient assist time - you can turn on the option Detect Steady State. 
    5. Whether you need 1 or 2 in the relative harmonic for the noise analysis depends on the frequency you want to measure the noise at. If  your oscillator oscillates at 13GHz, but you have a frequency doubler and you want to use it (and measure the noise) at 26GHz, then  you'd enter 2. If you wish to use the oscillation frequency at 13GHz, then enter 1. What it means is that you are measuring the output noise at relHarm*PSSfund+outputFreq where outputFreq is what you're sweeping
    6. It would be much easier if you uploaded (ideally as an attachment) the entire spectre.out log file rather than just the bits you think are important - there is a lot of info in there which would have captured important parameters, how it had been converging (or not). Just reporting the final error isn't very helpful...

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ShawnLogan
    ShawnLogan over 6 years ago in reply to yefJ

    Dear Andrew,

    Thank you for correcting my error! I appreciate, very much, your insight and correction - as always - I have a lot to learn.

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • yefJ
    yefJ over 6 years ago in reply to Andrew Beckett
    Andrew Beckett said:
    It would be much easier if you uploaded (ideally as an attachment) the entire spectre.out log file rather than just the bits you think are important - there is a lot of info in there which would have captured important parameters, how it had been converging (or not). Just reporting the final error isn't very helpful...

    Hello Andrew,i am still digesting and implemeting your guidance with the manual, i got a perfect harmonic balance as shown bellow.

    in my personal folder i only have files like

    ASSURA_TECH.LIB

    CDS.LIB

    cdsLibEditor.log

    and my schematic files that i created using library manager.

    where can i find SPECTRE.OUT file?

    Thanks

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago in reply to yefJ

    When you run a spectre simulation, you normally have a log file appear (you've copied and pasted info from it in your first post above). In the banner of that window, it gives the path to the file.

    If running in ADE L, and when you've not changed the project directory (on Setup->Simulator/Dir/Host), it will be in ~/simulation/cellName/spectre/schematic/psf/spectre.out - the three in italics are the test bench cell name, the simulator name, and the view being simulated (so might be a config, might be something else, but commonly is schematic).

    Anyway, glad you've got it working.

    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