• 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. Noise Figure of track and hold circuit

Stats

  • Locked Locked
  • Replies 17
  • Subscribers 125
  • Views 21860
  • 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

Noise Figure of track and hold circuit

Alok110
Alok110 over 4 years ago

Hi, I am trying to get Noise Figure in track and hold circuit with RC>>Ts/2. My ckt is like RC low pass filter {Port(with res=50) + switch + cap to gnd }

NF= 10logF,  where F is Noise Factor
and F = (Ni+Nsys)/Ni.

In my circuit Nsys = 0 (Sys include only switch and cap, there is no res(noise generator)). so, F should be =1, so the Noise figure should be = 0.
But, cadence giving me F = 1.96  and NF = 2.92 dB. (I am measuring it with Pss+Pnoise)


what I am doing wrong?

                            

Fullscreen netlist.txt.txt Download
// Library name: PHD22
// Cell name: switching
// View name: schematic
W0 (Prt net02 clk 0) relay vt1=1m vt2=500.0m ropen=1T rclosed=1.0
C1 (net02 0) capacitor c=c
V1 (clk 0) vsource type=pulse val0=0 val1=500.0m period=1/f width=1/(2*f) \
        fundname="CLK"
PORT1 (Prt 0) port r=r dc=DC/2 type=sine freq=frf ampl=Amp/2 mag=Ac_mag/2 \
        isnoisy=yes
Fullscreen Input(scs).txt Download
// Generated for: spectre
// Generated on: Aug 14 21:28:57 2021
// Design library name: PHD22
// Design cell name: switching
// Design view name: schematic
simulator lang=spectre
global 0
parameters r=50 frf=50M f=50000k c=1000n DC=0 Amp=1 Ac_mag=0

// Library name: PHD22
// Cell name: switching
// View name: schematic
W0 (Prt net02 clk 0) relay vt1=1m vt2=500.0m ropen=1T rclosed=1.0
C1 (net02 0) capacitor c=c
V1 (clk 0) vsource type=pulse val0=0 val1=500.0m period=1/f width=1/(2*f) \
        fundname="CLK"
PORT1 (Prt 0) port r=r dc=DC/2 type=sine freq=frf ampl=Amp/2 mag=Ac_mag/2 \
        isnoisy=yes
simulatorOptions options reltol=1e-3 vabstol=1e-6 iabstol=1e-12 temp=27 \
    tnom=27 scalem=1.0 scale=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=20  errpreset=liberal  autotstab=yes
+    saveinit=yes  method=gear2only  tstabmethod=gear2only  maxacfreq=50G
+    annotate=status
pnoise  (  net02  0  )  pnoise  start=1  stop=25M
+       maxsideband=1000  iprobe=PORT1  refsideband=0
+       noisetype=timeaverage  noiseout=[usb]  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
saveOptions options save=all

 

  • Cancel
Parents
  • ShawnLogan
    ShawnLogan over 4 years ago

    Dear Alok110,

    Alok110 said:

    In my circuit Nsys = 0 (Sys include only switch and cap, there is no res(noise generator)). so, F should be =1, so the Noise figure should be = 0.
    But, cadence giving me F = 1.96  and NF = 2.92 dB. (I am measuring it with Pss+Pnoise)


    what I am doing wrong?

    Just reading your description, Alok110, does not really give me the full picture of your circuit and simulation results to be honest - I apologize if I am overlooking something!

    However, I do see a number of items that I consider "red flags" and list them below.

    1. Did you check to make sure the port resistance of 50 ohms has its noise term disabled? There is an option for it to produce noise and want to make sure it is, indeed, noiseless.

    2. You have set the number of "output harmonics" in your pss analysis GUI to 0. Is this really reasonable for a sampled signal (especially since you chose a "Shooting method" for your pss analysis)?

    3. I have personally never seen anyone select the "liberal" level of simulation accuracy for a css analysis. Why are you choosing such a relaxed tolerance (especially for such a small circuit). The accuracy of your steady-state solution may be compromised and this will clearly impact the accuracy of your estimated NF. Are you using spectre or spectre with +aps or ++aps or spectre X? You did not indicate and did not include any log files (which would be exceedingly useful to understand your results).

    4. With the "liberal" level of simulation accuracy, did you visually  inspect the pss solution? Did you run a companion conventional analysis and compare the estimated pss solution waveform to the transient waveform after it reaches steady-state to see if the pss solution appears close to that of the transient steady-state solution?

    5. In your PSS analysis, it appears you are not saving the transient results. Is there a reason you are not? It can be helpful. You also are not specifying a value for tstab. I would suggest you might consider setting it to a time when your conventional transient simulation appears to be close to its steady-state waveform.

    We recently had a similar set of discussions concerning a noise figure analysis for a track and hold circuit using pss and you might want to review its contents if you have not seen it. I think it may be provide you some added insights.

    community.cadence.com/.../question-on-pss-pnoise-simulation-for-a-track-and-hold-circuit

    Shawn

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to ShawnLogan

    If the original poster could post the input.scs so that I can see all the options used and parameter values, that would help - then I can think about this properly and check the results so I can point what (if anything) you're doing wrong.

    A few quick comments on Shawn's suggestions (sorry for countering some of them Shawn...):

    1. You can't make the port noiseless, because then you can't compute noise figure. Noise figure is the ratio of signal/noise at the input to signal/noise at the output, and hence you need noise at the input to avoid the zero denominator.
    2. There's no issue with having 0 harmonics in the PSS - that's just an output parameter, and unless you're particularly interested in looking at the harmonics of the clock signal throughout the circuit, it doesn't really matter - the PSS solution is computed regardless (the only reason for setting it might be to ensure there are sufficient harmonics in the solution to include high frequency noise - maxacfreq would be another way of doing that without outputting any frequency domain data from the PSS)
    3. Yes, this is unusual, but not sure it's the reason for the issue. As you said, it's a pretty pointless optimisation for such a small circuit, so I'd set it to moderate at least.
    4. Always worth checking the time-domain periodic solution from PSS (and frequency domain in general, although not that useful in this case). That said, it's not that clear to look at just the clock propagation here - but at least you can spot if something is wrong
    5. The default is not to save the tstab transient results, and it's not really necessary to unless you want to be really sure the circuit has started up properly. Probably not necessary in such a circuit. I also wouldn't expect setting tstab to be necessary here either.

    Anyway, seeing the netlist would help. My first assumption was that this is probably kT/C (Johnson-Nyquist) noise - but having something real to check would help.

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • Alok110
    Alok110 over 4 years ago in reply to Andrew Beckett

    Fullscreen 4786.netlist.txt.txt Download
    // Library name: PHD22
    // Cell name: switching
    // View name: schematic
    W0 (Prt net02 clk 0) relay vt1=1m vt2=500.0m ropen=1T rclosed=1.0
    C1 (net02 0) capacitor c=c
    V1 (clk 0) vsource type=pulse val0=0 val1=500.0m period=1/f width=1/(2*f) \
            fundname="CLK"
    PORT1 (Prt 0) port r=r dc=DC/2 type=sine freq=frf ampl=Amp/2 mag=Ac_mag/2 \
            isnoisy=yes
    
        
    Fullscreen 7510.Input(scs).txt Download
    // Generated for: spectre
    // Generated on: Aug 14 21:28:57 2021
    // Design library name: PHD22
    // Design cell name: switching
    // Design view name: schematic
    simulator lang=spectre
    global 0
    parameters r=50 frf=50M f=50000k c=1000n DC=0 Amp=1 Ac_mag=0
    
    // Library name: PHD22
    // Cell name: switching
    // View name: schematic
    W0 (Prt net02 clk 0) relay vt1=1m vt2=500.0m ropen=1T rclosed=1.0
    C1 (net02 0) capacitor c=c
    V1 (clk 0) vsource type=pulse val0=0 val1=500.0m period=1/f width=1/(2*f) \
            fundname="CLK"
    PORT1 (Prt 0) port r=r dc=DC/2 type=sine freq=frf ampl=Amp/2 mag=Ac_mag/2 \
            isnoisy=yes
    simulatorOptions options reltol=1e-3 vabstol=1e-6 iabstol=1e-12 temp=27 \
        tnom=27 scalem=1.0 scale=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=20  errpreset=liberal  autotstab=yes
    +    saveinit=yes  method=gear2only  tstabmethod=gear2only  maxacfreq=50G
    +    annotate=status
    pnoise  (  net02  0  )  pnoise  start=1  stop=25M
    +       maxsideband=1000  iprobe=PORT1  refsideband=0
    +       noisetype=timeaverage  noiseout=[usb]  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
    saveOptions options save=all
    

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to Alok110

    OK, having taken a look at this, everything is as expected and there's a very simple explanation.

    First of all, you really don't need to set harmonics=1000 for the pnoise (better to turn on the Full Spectrum option on the UI and leave the harmonics much lower, e.g. 10). maxacfreq on the pss doesn't need to be so high either (the results are pretty good even without it, but 5G should be plenty).

    The first thing to note is that the only noise contributor in the circuit is the port itself - the switch (relay) doesn't produce noise because by default isnoisy is set to no for relays. So that doesn't contribute any noise.

    As I mentioned before, the noise factor (or figure) is the ratio of signal/noise at the input to signal/noise at the output. That ends up being the ratio of total output referred noise to the noise contribution from the input port in the reference sideband only (because you're only interested in the signal/noise in the input band - which in this case is the same as the output band). If you plot the total output noise, then at lower frequencies that is 1.575aV^2/Hz (1.25nV/sqrt(Hz)). This compares with the output noise if the clock signal is held high at all times of 800.8zV^2Hz (894.5pV/sqrt(Hz)) - so 1.9668 times higher (sound familiar?). This is because the switch is aliasing the thermal noise from a number of sidebands and translating it into the output band, so the total output noise is higher in the band of interest because of that, and hence the noise factor is 1.96.

    You can also see this by turning on the saveallsidebands option on the pnoise analysis (if you do this, turn off full spectrum and save, say, 100 sidebands). If you do this and look in the results browser and plot the PORT1:rn noise contributor from the pnoise-sideband database - perhaps plotting the sqrt() of this if you want it in V/sqrt(Hz), you'll see that the zeroth sideband (which is the noise contributor used in the denominator I mentioned above) is the same as it would have been if the relay wasn't switching. You can also use this code (in the CIW) to sum up the first 10 (plus and minus) harmonics and see that it adds up to (close) to the total output noise:

    selectResult('pnoise_sb)
    maxHarm=10
    portNoise=pv("PORT1" "rn")
    sum=0
    for(i -maxHarm maxHarm
        sum=sum+harmonic(portNoise i)
    )
    total=sqrt(sum)
    plot(total)
    

    So, to summarise, the output noise is higher because of the sampling of the wide-band thermal noise into the band up to the Nyquist frequency, and so your output noise is higher as a result. The consequence of this is the noise factor (and noise figure) that you're observing.

    Regards,

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • Alok110
    Alok110 over 4 years ago in reply to Andrew Beckett

    Thanks a lot for explaining everything.

    One more thing, I want to understand about 'Reference side-band' in Pnoise and how to decide anyone of its options.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to Alok110

    The reference sideband is used to determine which transfer function should be used for the signal. When using pnoise analysis, you define the output of the circuit (where you are measuring noise) and the output frequency range. It then needs to determine the input frequency range so that it can compute the transfer function from input to output. The input frequency would be defined as |Fout+refSideband*PSSfund|. In the case of a switch cap filter or track and hold, that would typically be the same frequency, and so the reference sideband would be 0. In the case of a down-conversion mixer (such as in a receiver) it would usually be -1 or +1 (for lower or upper sideband around the LO frequency) - but the best thing to do is to use the UI choice that allows you to pick the right frequency band to make sure you pick the right number.

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • ShawnLogan
    ShawnLogan over 4 years ago in reply to Andrew Beckett

    Dear Alok110,

    As Andrew did, I also simulated your netlist using a few of the suggestions I made. As Andrew found, i also found that the Noise Figure you quoted appears to be correct. As an attempt to illustrate the reason it is higher, I assembled a few pages detailing the unsampled and sampled spectrum in the hope they might provide some insight fir you. I also verified that if you move your filter capacitor before the sampling process occurs (i.e., this keeps the noise bandwidth to a value less than 1/2 the sample rate of 50 MHz), the noose is not aliased and the Noise Figure doesctske on your expected result.  Finally, two other items:

    1. I ran a conventional transient analysis and inspected and compared the pss solution with the conventional transient solution after it had reached its seady-state. With your settings, the pss solution did not have the same average DC value as observed in the conventional transient solution in steady-state. 

    2. To my surprise, i did not observe a significant difference between the pss solution using your "liberal" accuracy setting and one with "liberal" changed to "conservative".

    i hope this adds a bit to your understanding snd Andrew's similar findings....nnoise_figure_nose_figure_sampled_sml_081521.pdf

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to ShawnLogan

    Shawn,

    1. I didn't see that. If I run the tstab for 1m and add saveinit=yes, the settled net02 is at 619mV, which is what you get from the PSS time domain solution - as it should. PSS doesn't need a long tstab if the circuit has normal settling - the shooting method can find that. So for me, it matches well. Sure, I didn't run tran - I just looked at the tstab, but I wouldn't expect a massive difference.
    2. This doesn't surprise me - I would expect liberal to give reasonable results here. The circuit does not have high large-signal dynamic range - it only has the clock - and there will also be a fair number of time points (especially with maxacfreq=50G) which would reduce much chance of their being any significant error in such a simple circuit. Liberal can often be much better than people think - and in this case where there's no smaller signal to be resolved (other than in the pnoise analysis), it's not going to make a huge difference to the accuracy.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ShawnLogan
    ShawnLogan over 4 years ago in reply to Andrew Beckett

    Hi Andrew,

    Thank you for reading my comments and your insights (totally unnecessary but appreciated!)!

    Andrew Beckett said:
    I didn't see that. If I run the tstab for 1m and add saveinit=yes, the settled net02 is at 619mV, which is what you get from the PSS time domain solution - as it should. PSS doesn't need a long tstab if the circuit has normal settling - the shooting method can find that. So for me, it matches well. Sure, I didn't run tran - I just looked at the tstab, but I wouldn't expect a massive difference.


    Just for your amusement to indicate what I observed as  differences between the pss converged solution and the end of a 4 ms conventional transient simulation, I updated the prior Adobe Portable Document to include pages 5, 6, and 7. Pages 5 and 6 illustrate the pss solution and last 4 periods of a 4 ms conventional transient analysis for the output voltage on Alok110's circuit (net02 - output capacitor following sampling switch) respectively. The ranges of the two y-axes are identical for a comparison of the DC values of each. To further illustrate the differences, page 7 compares the two waveforms on an identical x-axis by time shifting the last period of the 4 ms conventional transient analysis.

    Shawn

    (Note: prior Adobe Portable file with added 3 pages is apparently too large to post and hence I am providing a URL to the updated file. If you are interested and happen to try to open file, please let me know if you experience any issue with the link.)

    ent.box.com/.../fbxt680s2cpop64y9ksqqquj57wvxi82

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Alok110
    Alok110 over 4 years ago in reply to ShawnLogan

    Dear Shawn,

    Thank you.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ShawnLogan
    ShawnLogan over 4 years ago in reply to Alok110

    Dear Alok110,

    Alok110 said:
    Thank you.

    Absolutely  - but I just hope it adds something to your insights to allow you to complete your simulations!

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to ShawnLogan

    Shawn,

    OK, I thought you were talking about a massive difference in the DC level! This is fairly small, especially with a circuit where the settling time is considerably longer than the PSS interval and the circuit is so small too. In essence, it's unsurprising that the shooting method can get a slightly different result given that it works by detecting small error in each of the voltages and branch currents in the circuit and ensuring it is smaller than a tolerance (involving reltol and steadyratio) - small accumulation of errors can be missed. That said, even the transient is rather sensitive to whether you run that with liberal or moderate (I didn't try the tran with conservative because I thought I'd spent long enough on it).

    Anyway, it's clear now. Thanks for your additional info.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to ShawnLogan

    Shawn,

    OK, I thought you were talking about a massive difference in the DC level! This is fairly small, especially with a circuit where the settling time is considerably longer than the PSS interval and the circuit is so small too. In essence, it's unsurprising that the shooting method can get a slightly different result given that it works by detecting small error in each of the voltages and branch currents in the circuit and ensuring it is smaller than a tolerance (involving reltol and steadyratio) - small accumulation of errors can be missed. That said, even the transient is rather sensitive to whether you run that with liberal or moderate (I didn't try the tran with conservative because I thought I'd spent long enough on it).

    Anyway, it's clear now. Thanks for your additional info.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • ShawnLogan
    ShawnLogan over 4 years ago in reply to Andrew Beckett

    Dear Andrew,

    Thank you for even taking your very limited time to view, comment, and provide your insight! The latter is very helpful!

    I do agree that the difference between the DC averages of the pss converged solution and that of the apparent steady-state response from a 4 ms conventional transient simulation. For your information, the spectre transient command I added to the netlist we were provided was:

    tran tran stop=4m write="spectre.ic" writefinal="spectre.fc" \
    errpreset="conservative" annotate=status method=gear2only maxstep=0.2e-09

    and hence it did use the spectre errpreset of "conservative".

    I did not change the pss command from that in the netlist we were supplied and hence its accuracy setting was "liberal".

    Perhaps I should just be impressed at how close the two solutions are!

    In any case, once again, my sincere thanks for "wasting" some of your limited time on me to add your comments to my responses.

    Shawn

    • 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