• 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 21820
  • 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
  • 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
  • Alok110
    Alok110 over 4 years ago in reply to ShawnLogan

    Hi Shawn,

    I am really delighted to see such a detailed reply. Thank you for your time and efforts.

    I am fairly new with PSS and Pnoise analysis. I will try your suggestions.

    In my circuit RC>> Ts/2,I did PSD calculation for same circuit with this same settings (harmonics =0, no saving of transient result and all) and I got the expected PSD and total noise result .Port resistance is 50 ohms and I think it as source resistance which generate source noise. If I disable the noise from port then simulator doesn't calculate NF and F.

    I tried same circuit without switch (bypassing switch) and did noise sim, and my F and NF were coming as expected.

    I am using spectre +aps.

    Thank you again.

    • Cancel
    • Vote Up 0 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

    Hi Andrew,

    Thank you very much for your time.

    I am attaching the netlist here.

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

    Really? A picture of the netlist? Yes, that allows me to recreate it, but why not just post the actual netlist as a text file - that way I can test in seconds, rather than it taking me a number of minutes to recreate it and re-check until I've got it right.

    I'll wait for you to post it properly.

    Andrew

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

    Ha ha, I am really sorry, Its new for me, I googled it and thought its it.  I ll try again.

    • Cancel
    • Vote Up 0 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
>

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