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:
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)
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.
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.
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.
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 .
ShawnLogan 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.
ShawnLogan 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)
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.
Several points here: