The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl Measurements >> Phase Noise and Jitter Measurements >> simulating phase noise of differential LC-VCO in spectre https://designers-guide.org/forum/YaBB.pl?num=1228240587 Message started by oermens on Dec 2nd, 2008, 9:56am |
Title: simulating phase noise of differential LC-VCO in spectre Post by oermens on Dec 2nd, 2008, 9:56am sorry if this has been covered before, i searched but did not find an answer. i am wondering how to set up pss and pnoise in spectre. i have a 2.4ghz differential lcvco and i want to mesaure the phasenoise at 1mhz offset. right now the settings i have are as follows and ijust want to make sure htey are correct: pss: Beat frequency: 2.4G # of harmonics: 10 Accuracy: Conservative tstab: 100n (vco reaches steadystate after ~20ns) saveinit: yes oscillator node: Vo+ reference node: Vo- (is this correct or should be /gnd! ?) pnoise: sweeptype: default Relative harmonic: blank (should be 1?) Start-stop: 0.01M to 100M Logarithmic sweep, 10 points per decade Max sideband: 10 Positive output node: Vo+ Negative output node: Vo- (again, is this correct?) Input source: none I didnt change any of the additional options for pss/pnoise. If someone could validate or correct my settings, it would be appreciated. |
Title: Re: simulating phase noise of differential LC-VCO in spectre Post by pancho_hideboo on Dec 2nd, 2008, 10:34pm oermens wrote on Dec 2nd, 2008, 9:56am:
If you read Cadence Spectre documents surely, you can find all answers to your questions easilly. oermens wrote on Dec 2nd, 2008, 9:56am:
If you use Shooting Newton PSS, you have to set fundamental frequency lesser than actual steady state oscillation frequency. oermens wrote on Dec 2nd, 2008, 9:56am:
You should set Accuracy=Moderate in your first simulation. With Accuracy=Conservative, you might encounter convergence problem in PSS. oermens wrote on Dec 2nd, 2008, 9:56am:
You had better set reference node as Vo-. But even though you set reference node as /gnd!, there is no problem. oermens wrote on Dec 2nd, 2008, 9:56am:
When master PSS analysis is autonomous, sweeptype is relative and Relative harmonic=1 by your setting. This is implicit setting. If you are still worried, you may set sweeptype=relative and Relative harmonic=1 clearly. oermens wrote on Dec 2nd, 2008, 9:56am:
You had better set Negative output node as Vo-. But even though you set Negative output node as /gnd!, phase noise results is not changed if you set reference node as Vo- in pss setting. oermens wrote on Dec 2nd, 2008, 9:56am:
Basically there is no critical problem in your settings. http://www.designers-guide.org/Forum/YaBB.pl?num=1223659963/0#1 |
Title: Re: simulating phase noise of differential LC-VCO in spectre Post by oermens on Dec 3rd, 2008, 7:46am Thank you. I have another question. I initiate oscillation by putting an initial condition on Vo+ and Vo- of 1fV. When transient analysis starts (either in pss or tran) I get convergence errors, Vbox errors and imelt errors. I look at the waveform of transient result, the voltage starts at 5V for few nanoseconds but my initial condition is just fV!! Should I ignore this? |
Title: Re: simulating phase noise of differential LC-VCO in spectre Post by pancho_hideboo on Dec 3rd, 2008, 4:01pm Explain in detail and correctly. oermens wrote on Dec 3rd, 2008, 7:46am:
Does the above mean that simulation fails ? oermens wrote on Dec 3rd, 2008, 7:46am:
It seems simulation itself can complete without fail. Right ? |
Title: Re: simulating phase noise of differential LC-VCO in spectre Post by oermens on Dec 3rd, 2008, 5:17pm the simulation does not fail, just for the first 1 or 2 ns many convergence/vbox/imelt errors show up but then the oscillation is normal afterwards. is there any explanation for this kind of 'startup transient'? is it just the simulator/model characteristic or something related to the circuit? |
Title: Re: simulating phase noise of differential LC-VCO in spectre Post by pancho_hideboo on Dec 3rd, 2008, 8:34pm Again explain correctly. oermens wrote on Dec 3rd, 2008, 5:17pm:
Error is different from Warning. Does Spectre report "convergence errors" and "Error" regarding "imelt" and "vbox" truely ? Actually Spectre report like following, doesn't it ? WARNING (CMI-2377): I50.I_left.I0.I39.I11.I5.g4_N5: Vgd has exceeded the oxide breakdown voltage of `vbox' = 8.673 V. WARNING (CMI-2139): I50.I_left.I0.I39.I11.I5.g3_N2: The bulk-source junction current exceeds `imelt'. The results computed by Virtuoso(R) Spectre(R) are now incorrect because the junction current model has been linearized. WARNING (CMI-2144): I50.I_left.I0.I39.I11.I5.g4_N5: The bulk-drain junction current exceeds `imax'. If so, these are warning. If these are reported only during shooting newton iterations, generally you can ignore these warnings. If Spectre report "Errors", spectre simulation will fail and not complete. oermens wrote on Dec 3rd, 2008, 7:46am:
Voltage at time=0 is truely 5V ? Show me your result graph around time=0. |
Title: Re: simulating phase noise of differential LC-VCO in spectre Post by oermens on Dec 4th, 2008, 7:32am I am not at campus now so I can not give the waveform. But 5V was not correct, it goes to about 1.8 or 2V from 0 within few ps, then the simulator complains until about 200-300ps at whihc point it goes to the proper DC point. The waveform is linear during the time the warnings are being reported, and goes in a 'shooting' fashion as the algorithm name suggests. i get some new interesting errors now. when I do pss, i sometimes get an error about the V(Vout) is too small to reliably detect the period. I saw on another post in this forum that this error was resolved in a previous release of cadence (im using 5.1.41 USR5). Changing the initial guess of the fundamental frequency (even by 10MHz) sometimes solves this. Other times, I don't get the error but the PSS will hang and not do any simulation - i have to terminate it manually. Is is a problem with my convergence settings? i have reltol=1e-6 vabstol=1e-9, iabstol=1e-13, gmin=1e-14 and cmin=1f. |
Title: Re: simulating phase noise of differential LC-VCO in spectre Post by pancho_hideboo on Dec 4th, 2008, 6:25pm Your post is usage of specific EDA vendor's simulator not "Phase Noise and Jitter Measurements". Please post to "The Designer's Guide Community Forum ≫ Simulators ≫ RF Simulators". oermens wrote on Dec 4th, 2008, 7:32am:
I want to know voltage value at time=0. So show me waveform during time=0~500psec. oermens wrote on Dec 4th, 2008, 7:32am:
Is it truely "Error" not "Warning" this time ? Such reports from Cadence Spectre are very common in Cadence Shooting Newton PSS. oermens wrote on Dec 4th, 2008, 7:32am:
Again the initial guess of the fundamental frequency must be lesser than steady state oscillation frequency. oermens wrote on Dec 4th, 2008, 7:32am:
Maybe internal time step is too small and very large memeory is consumed due to convergence difficulty, so simulation is almost hang. We often encounter such convergence problem in Cadence Shooting Newton PSS. Increase tstab value. Loosen your accuarcy setting. Or try autonomous HB analysis. |
Title: Re: simulating phase noise of differential LC-VCO in spectre Post by pancho_hideboo on Dec 6th, 2008, 6:15am Also see the following. http://www.cadence.com/Community/blogs/rf/archive/2008/08/26/guidelines-for-simulating-oscillators-phase-noise-simulations.aspx?postID=10863 |
Title: Re: simulating phase noise of differential LC-VCO in spectre Post by Ken Kundert on Dec 6th, 2008, 1:30pm I would go farther than simply saying you should loosen your tolerances. I would say that the tolerances you using are very extreme, so extreme that they may be the cause of some of your problems. By default you should use the default tolerances, and only tighten them if , after simulation, you find you are not getting the accuracy you need. The default tolerances were chosen for a reason, because they work in most cases and provide a reasonable tradeoff between accuracy and efficiency. In my experience a large percentage of the problems people have with SpectreRF are self-induced by use of extremely tight tolerances. In addition to creating unnecessary convergence problems, simulations are running 5-10x slower than they need to because people are so conservative in setting the tolerances. SpectreRF issues the message "V(Vout) is too small to reliably detect the period" when the oscillation dies during the tstab interval. You need to do a better job of starting the oscillator. Trying to set initial conditions on an LC tank is fraught with problems. In particular, if you try to set the voltage on the capacitor, the inductor interferes and the result is a very large initial current through the inductor. A similar problem occurs if you try to set the current through the inductor. I discuss this issue in some depth in my "Spice and Spectre" book. The end result is you either end up with unexpectedly large initial conditions, which results in "melting" and "vbox" messages, or very small initial conditions, which results in the "too small" message. You should tell Spectre to save the waveforms during the tstab interval and display them, and then adjust your initial condition and tstab settings to assure that you are getting a good strong oscillation at the end of the tstab interval, and that frequency estimate you give the PSS analysis is roughly correct (there is no constraint that it be greater than or less than the actual frequency, only that it be close, and by close I mean within 10% or so should be plenty). You might consider starting the oscillator with a damped sinusoidal current source. I find that works best on oscillators with parallel LC resonators. -Ken |
Title: Re: simulating phase noise of differential LC-VCO in spectre Post by oermens on Dec 6th, 2008, 2:26pm thanks for the replies. i keep mistakenly referring to warnings as errors, as pointed out by pancho_hideboo. well I set the initial condition of 1f on the two output nets since the passive components in my kit don't have an option for initial condition (although i could take a 0 F cap from analogLib and put IC on that). i do select save initial transient in pss, and the waveform for the first < 1ns looks like a triangle starting from 0V, peaking around 1.8-2V and then going back down to 0V, after which oscillation starts. Again i forgot to take a screenshot to show. regarding tstab, my oscillator reaches steady state oscillations in < 25ns, and my tstab is 150ns. the problem seemed to lie with this initial guess of the frequency. For example, 2.42GHz may give the 'too small' error, but 2.43GHz would work or pss would hang. i will try the damped sinusoidal current source and see how that works out. i will reduce the tolerances to default as well. as i understand, conservative errpreset multiples all the tolerances by 0.1 also? thanks again for the help. i appreciate it. |
Title: Re: simulating phase noise of differential LC-VCO in spectre Post by pancho_hideboo on Dec 9th, 2008, 6:22am oermens, I suggested you not to set Accuracy=Conservative as first answer to your question like following. Do you read my post surely. And why do you refer "Warning" as "Error" ? pancho_hideboo wrote on Dec 2nd, 2008, 10:34pm:
But we can't often get reasonable results at all in Cadence Shooting Newton PSS or QPSS even though we loosen accuracy setting. Such issues are well known between RF guys who have other simulators than Cadence Spectre. http://www.designers-guide.org/Forum/YaBB.pl?num=1220476173/0 |
Title: Re: simulating phase noise of differential LC-VCO in spectre Post by Ken Kundert on Dec 9th, 2008, 8:37am That has not been my experience. I almost always get good results with default tolerances in SpectreRF. In fact, my experience has been the opposite. Harmonic balance simulators do not automatically control the number of harmonics and so can get results that are pretty far off, while the shooting methods in SpectreRF are transient-based and automatically controls the time step for accuracy, and so is unlikely to give such inaccurate results. -Ken |
Title: Re: simulating phase noise of differential LC-VCO in spectre Post by oermens on Dec 9th, 2008, 10:48am i have set the tolerances to defaults (reltol=1e-3, vabstol=1e-6, iabstol=1e-12) and moderate accuracy preset. my simulations no longer give the convergence warnings and as Ken mentioned, they complete much faster. the results are also consistent with the higher tolerance's results. it is my understanding that flexbalance was made available in MMSIM6.2. we are using MMSIM6.1 so we don't have flexbalance option, i will talk to our network admin about upgrading to 6.2 (we don't download via sourcelink, we get our tools from 3rd party) --- i just read another post related to flex balance, it seems we did not have the environment variable CDS_SPECTRERF_FBENABLE in our setup script. i will try flexbalance now. -------- sorry if i'm squeezing too many things into one topic, but i set the environment variable but when i run pss it says 'flexbalance' is not a valid parameter for an instance of 'pss'. Ignored. any idea how to correct this? |
Title: Re: simulating phase noise of differential LC-VCO in spectre Post by pancho_hideboo on Dec 9th, 2008, 3:43pm oermens wrote on Dec 9th, 2008, 10:48am:
Again not correct. HB analysis is available since MMSIM6.0USR1. If your version of MMSIM is 6.1 truely, you can use HB analysis. oermens wrote on Dec 9th, 2008, 10:48am:
You don't have to set CDS_SPECTRERF_FBENABLE if you use MMSIM after 6.0USR3. oermens wrote on Dec 9th, 2008, 10:48am:
Is it true that you are using MMSIM6.1 ? Show me version of MMSIM in logfile of Spectre according with netlist regarding pss statement. |
Title: Re: simulating phase noise of differential LC-VCO in spectre Post by oermens on Dec 9th, 2008, 5:10pm this is our version: MMSIM.61.ISR200706210503 i'm not sure but setting the CDS_SPECTRERF_FBENABLE variable was the only way to get the option for shooting or flexible balance. |
Title: Re: simulating phase noise of differential LC-VCO in spectre Post by pancho_hideboo on Dec 9th, 2008, 5:22pm oermens wrote on Dec 9th, 2008, 5:10pm:
Show me version correctly by executing the followings. % spectre -V % icms -V % spectre -W % icms -W Your version of DFII might be old. |
Title: Re: simulating phase noise of differential LC-VCO in spectre Post by oermens on Dec 9th, 2008, 5:52pm $ spectre -V @(#)$CDS: spectre version 6.1.1 06/17/2007 07:20 $ icfb -V @(#)$CDS: icfb.exe version 5.1.0 06/20/2007 02:40 $ spectre -W sub-version 6.1.1.424 $ icfb -W sub-version 5.10.41_USR5.90.69 |
Title: Re: simulating phase noise of differential LC-VCO in spectre Post by pancho_hideboo on Dec 9th, 2008, 6:09pm oermens wrote on Dec 9th, 2008, 5:52pm:
It seems that your versions are OK for both Spectre and DFII. Execute "spectre -h pss". Can you confirm "Harmonic Balance parameters" such as followings ? harmonicbalance=no flexbalance=no Show me netlist regarding pss statement. |
Title: Re: simulating phase noise of differential LC-VCO in spectre Post by oermens on Dec 9th, 2008, 6:18pm Harmonic Balance parameters 50 harmonicbalance=no Use Harmonic Balance engine instead of time- domain shooting. Possible values are no or yes. 51 flexbalance=no Same parameter as `harmonicbalance'. Possible values are no or yes. 52 pinnode Node to pin during autonomous HB simulation. 53 oversamplefactor=1 Oversample device evaluations. 54 oversample=[...] Array of oversample factors for each tone. It overrrides oversamplefactor. 55 oscmethod Osc Newton method for autonomous HB: onetier (default) or twotier. im not at my desk, i'm executing over ssh and i'm not familiar with executing simulation via command line so i cant get netlist, but anyways all there was related to flexbalace was the message i posted previously. i will get the netlist tomorrow morning --- this is what comes in spectre.out related to flexbalance: Warning from spectre during circuit read-in. pss: `flexbalance' is not a valid parameter for an instance of `pss'. Ignored. |
Title: Re: simulating phase noise of differential LC-VCO in spectre Post by oermens on Dec 12th, 2008, 7:12pm sorry for delay. here is the relevant part of netlist simulatorOptions options reltol=1e-3 vabstol=1e-6 iabstol=1e-12 temp=25 \ tnom=25 scalem=1.0 scale=1.0 gmin=1e-12 rforce=1 maxnotes=5 maxwarns=5 \ digits=5 cols=80 pivrel=1e-3 ckptclock=1800 \ sensfile="../psf/sens.output" checklimitdest=psf sweeppss sweep dev=V7 param=dc start=-0.55 stop=0.95 + lin=10 { pss ( net018 net036 ) pss flexbalance=yes fund=2G harms=7 + errpreset=moderate tstab=150n saveinit=yes cmin=1f + annotate=status pnoise ( net018 net036 ) pnoise sweeptype=relative + relharmnum=1 start=0.01M stop=100M dec=20 maxsideband=7 + annotate=status } |
Title: Re: simulating phase noise of differential LC-VCO in spectre Post by pancho_hideboo on Dec 12th, 2008, 10:27pm oermens wrote on Dec 12th, 2008, 7:12pm:
There is no problem in your PSS statement. I suspect your spectre version. Even though a result of "spectre -V" is version 6.1, spectre version could be still 5.1 in ADE. Show me version of spectre in logfile of spectre simulation. |
Title: Re: simulating phase noise of differential LC-VCO in spectre Post by oermens on Dec 13th, 2008, 7:22am input.scllog:spectre (ver. 5.10.41_USR5.053107 -- 31 May 2007). from spectre.out: Environment variable: SPECTRE_DEFAULTS=-I/***/IC/tools/dfII/local/lib/cmosp13/../../Spectre/models -f psfbin Command line: /***/IC/tools.sun4v/spectre/bin/32bit/spectre -env \ artist5.1.0 +escchars +log ../psf/spectre.out +inter=mpsc \ +mpssession=spectre0_2856_18 -format sst2 -raw ../psf \ -I/***/models \ +lqtimeout 900 input.scs from recent CDSlogs logfile \o Program: @(#)$CDS: icfb.exe version 5.1.0 06/20/2007 02:40 (cicsun11) $ \o Hierarchy: /*/cadence.2007a/IC.5141.USR5/tools.sun4v/dfII/ \o Sub version: sub-version 5.10.41_USR5.90.69 (32-bit addresses) \o Host name (type): * (sun4u) \o Operating system: SunOS 5.10 Generic_137111-08 \o X display name: :0.0 \o X server: Sun Microsystems, Inc. \o Depth of Visual (Root): 8 (24) \o Number of Planes Used: 8 \o X version: 11.0 (vendor release 6620) i was reading something online and found that there are 2 spectre's - 1 as part of IC and one part of MMSIM. how do I know which one I'm using? i don't see any references to mmsim in relation to spectre in any log file, so i'm using IC? |
Title: Re: simulating phase noise of differential LC-VCO in spectre Post by pancho_hideboo on Dec 13th, 2008, 7:41am oermens wrote on Dec 13th, 2008, 7:22am:
As I suspect, you are using Spectre 5.1 in ADE. If you want to use MMSIM6.1, set MMSIM6.1 prior to DFII5.1 in command search path. |
Title: Re: simulating phase noise of differential LC-VCO in spectre Post by oermens on Dec 13th, 2008, 11:35am What should I change? In our startup script, MMSIM comes before IC. Code:
($CDS_HOME = $CDS_TOP_DIR/IC) when I type 'which spectre' it finds it in $CDS_TOP_DIR/MMSIM/tools/bin/, but when spectre is invoked in ADE, it chooses $CDS_HOME/tools.sun4v/spectre/bin/32bit/ |
Title: Re: simulating phase noise of differential LC-VCO in spectre Post by pancho_hideboo on Dec 13th, 2008, 8:15pm oermens wrote on Dec 13th, 2008, 11:35am:
Maybe your icms or icfb is wrapper which ignore your path setting. Confirm administrator whether he make any script for icms or icfb. Show me result of getShellEnvVar("PATH") in CIW. |
Title: Re: simulating phase noise of differential LC-VCO in spectre Post by oermens on Dec 13th, 2008, 9:16pm i'll talk to my admin on monday. should i suggest switching from the IC stream to MMSIM stream? if so, how will that affect the functionality of other tools? besides my lab, we have an undergrad course next semester which will be using cadence and i don't want to mess around with the tools unless we know excatly what to change. in the mean time, i've got flexbalance working by using ocean to execute all the commands. the results are close (within less than 1dB) between shooting and flexbalance at the points of interest. i am running over ssh and can't export display (disabled by admin), so i'm using ocean -nograph. i've started learning a bit of scripting, now i can run PSS+PNOISE and export to .ps to see results. is it possible to do the following? run pss+pnoise using shooting plot pnoise to new window, hold the result run pss+pnoise using flexbalance append pnoise to previous window print result to ps (i guess i should start a new thread related to ocean now) |
Title: Re: simulating phase noise of differential LC-VCO in spectre Post by pancho_hideboo on Dec 14th, 2008, 1:28am oermens wrote on Dec 13th, 2008, 9:16pm:
I don't know your environment. So I can't recommend it. But I don't use old Spectre such as version 5.1. Phase noise decomopsition to AM/PM ability might be unavailable in Spectre 5.1. oermens wrote on Dec 13th, 2008, 9:16pm:
No, you can't do the above tasks in "-nograph" environment. You have to write data in text file such as CSV style then use some graph drawing tool such as microsoft excel. If you lauch ocean without "-nograph", you can do the above tasks. Here you can also execute other vendor tools such as ADSsim in RFDE or Agilent GoldenGate which can produce PSF data. See the followings. http://www.designers-guide.org/Forum/YaBB.pl?num=1208334972 http://www.designers-guide.org/Forum/YaBB.pl?num=1205223090 oermens wrote on Dec 13th, 2008, 9:16pm:
From first, your post is not "Phase Noise and Jitter Measurements". |
Title: Re: simulating phase noise of differential LC-VCO in spectre Post by monicaf on Jul 10th, 2009, 3:15am Hi, I have the same problem as oermens. I'm running Cadence ICv5.1.41USR5 in centOS. I need to simulate with spectre from MMSIM, but ADE always chooses spectre from cds/IC. I have configured the environment variables as described in this forum (mmsim path appears before IC path in bashrc) but still, spectre runs from IC. Do you know what can I be possibly doing wrong? Thank you. Monica |
Title: Re: simulating phase noise of differential LC-VCO in spectre Post by Andrew Beckett on Jul 10th, 2009, 5:52am Best not to post an update in a thread that was over 6 months old. I doubt your problem is anything related to the issue here. My guess is that you have: <MMSIMinstDir>/tools/bin in your $path (or $PATH depending on the shell), but the "tools" link is missing in the MMSIM installation. MMSIM releases (at least recent ones) do not automatically add the "tools" link (unfortunately) and as a result this becomes a rather regularly occurring problem. So you need to go to your MMSIM installation and do: ln -s tools.lnx86 tools (if it's not there already). You can check if it's really in your path by typing "spectre -W" and seeing if it shows the right version number. Regards, Andrew. |
The Designer's Guide Community Forum » Powered by YaBB 2.2.2! YaBB © 2000-2008. All Rights Reserved. |