I did the following experiment to check the accuracy of the Spectrum assistant.
Simple VSIN with 1V peak amplitude series-connected to a 100kOhm resistor and done fft of the output after activating the transient noise up to 100kHz to avoid aliasing. Strobeperiod=1/24MHz was added. Sine frequency was chosen as 3*24e6/8192 to obtain a perfect fit of the signal on fft samples. Number of points is 8192. Hanging window selected. Number of signal samples = 1 as per manual.
My calculation of SNR over a 100kHz bandwidth gives: rms of signal = 0.707V, and rms of noise = sqrt(4*kT*R*100k) = 12.87uV. Hence, SNR = 20*log10(0.707/12.87uV) = 94.7 dB
However, the Spectrum Assistant gives around 3 dB better, i.e. 97.2 dB. It also reports signal power 1e-5 dB so 0 dB. We obtain close to this number if we do 1/12.87e-6.
So it appears to me that SNR function takes signal amplitude instead of signal rms. Where is the flaw in my reasoning if any?
Thanks, best regards.
I do not know this “Spectrum Assistant”, and therefore cannot tell you the root cause what is going wrong in your case, but I can at least help and contribute to show, what MUST BE correct from theory, as a quick reference:
First of all, your hand calculation is correct. You must obtain the 94 dB SNR. As a consequence, the simulator or function or whatever you use, also MUST give you THIS result.
Next, you or someone has to find out, what goes wrong with the Spectrum Assistant: The SNR is just the relation of the 2 calculations: So, does the signal gets calculated wrong with this assistant, or the noise? Although you already have a speculation about that it is the signal, you must see evidence.
Therefore, I filled your exact data into my Matlab script (which is verified a lot of times against professional real measurement devices) and this is the output:
I have plotted for you 2 windows as a reference: The first one is the spectrum, as it should be outputted from your used DFT function, window uncorrected in units “dBVrms”: This means, a sinusoid signal with 1Vpk basically gives -3dBVrms. So far, so clear. Now the Hann window comes into the game. It produces 3 signal bins instead out of 1, whereas the main lobe is by definition 6 dB lower and its side lobes are 12 dB lower (not for DC!). Integrating all 3 bins together gives again the -3dBVrms, q.e.d. Thus the cursor positioned on the main lobe of the signal shows -9dBVrms, as it should be. First, check this reference against “your” DFT assistant.
Next is the noise: As noise does not have the unit “Volt” but “Volt per something bandwidth”, I re-calculated the whole plot in a single-sided Root-Spectral-DENSITY (RSD), PLUS accounting for the 6 dB of your used window function “von Hann”. As you see, the averaged green curve with the correct window accounting gives a noise density of your 100k resistor with -147dBVrms/sqrt(Hz), as it also can be easily calculated manually with “20*log10(sqrt(4*k*T*R)) = -147”, q.e.d.
I hope I could help contributing a bit in finding out what is the root cause error in your case.
Dear Fede26 and bernd2700,
You piqued my interest with your initial question Fede26 (as it did with you bernd2700 I guess too!) and provided some motivation to better understand the difference you observed in Cadence Spectrum Assistant and your expected results. I am pretty sure I can explain the difference and have put together a test case, run a series of simulations and done some post-processing using both Cadence tools as well as my own tools. I am just documenting the results and will post them in the next day for your consideration.
I believe part of the issue, although not the entire issue, is the application that I believe the Spectrum Assistant was designed for - ADCs and its terminology and requirements. I'm including a few words about that too in the notes.
I beg your patience as I assemble the document!
Dear Fede26 and bernd2700,
I have completed the study of Cadence's Spectrum Assistant with regard to its reported signal power and what appears to be the root cause of the difference between its reported Fourier analysis amplitudes (as well as the ViVA ft(0 function and the expected results. The summary of the effort is shown as Figure 1 and a link to the full report is at URL:
I hope this helps provide some insight!
Thank you for your detailled report! It took me a while to be able to download it from Dropbox and I quickly skimmed through it. Since I do not use this Viva Assistance or similar, I also did not have a detailled look at it, but I downloaded it, if I once will use it.
Anyway, I hope, you did not find any contradictions to any of my statements made above, what shall be and what shouldn't be?!
I thank you for even trying to wade through the note - and apologize that you experienced issues downloading the file! The link should allow you (or anyone) to download the file. I know some companies do not allow access to DropBox files due to security concerns - and perhaps this was an issue in your case. In any case, thank you for trying bernd2700!
bernd2700 said:Since I do not use this Viva Assistance or similar, I also did not have a detailled look at it, but I downloaded it, if I once will use it.
The effort details data and documentation that shows the ViVA dft() function, on which the the Spectrum Assistant is based, is responsible for the discrepancy in signal levels from the values expected by you and Fede26. The study includes a reasonable amount of simulation results and uses Parseval's Theorem to validate the hypothesis I present. Hence, even if you do not use the Spectrum Assistant, if you use the dft() Calculator function, you will also be subject to this error unless you understand exactly what the dft() Calculator function provides.
Secondly, I think that Fede26 may not have fully appreciated the "Peak Sat. Level" term in the Spectrum Assistant GUI. I also try to provide a clear explanation of the term and its appropriate value to provide the desired reference value for parameters expressed in dB.
Finally, the noise reported by the Spectrum Assistant does not differentiate between actual random noise due to Johnson or thermal noise attributed to components in one's circuit and spectral components due to the dft() operation. Both are contributors to the noise component. Hence, it is very possible that the reported Signal to Noise ratio will not be what is expected. I have some interesting evidence of this latter effect.
Dear bernd2700 and Fede26,
Just in case you still have an interest ViVA's Spectrum Assistant and its subtleties, wich was the subject of your initial Forum pst Fede26, I have updated the study I performed to include a root cause of analysis of the apparent difference between the signal to noise ratio (SNR) reported by the Spectrum Assistant and the expected theoretical value for the test case which I used to examine the difference between its reported signal power and the expected power for you. Version 1.1 may be accessed at URL:
This is the same URL as its initial 1.0 version. If you happen to be interested and have any access issues with the link I provided, please let me know!
The version history, Table of Contents, and Summary and Conclusions pages are attached if you are interested but don't have time to review the document itself.
Hi Shawn, thanks for the analysis.
In the end, the problem is related to the choice of fmax in Cadence transient noise analysis. Due to the noise generation algorithm, noise is attenuated by 3dB at fmax. Therefore, if I choose a Lower upper integration limit, SNR calculation will respect theory and also if I choose a larger fmax, keeping integration limit constant.
This was confirmed by support.
Fede26 said:In the end, the problem is related to the choice of fmax in Cadence transient noise analysis. Due to the noise generation algorithm, noise is attenuated by 3dB at fmax.
Yes -This is indeed the case. Thank you for letting me know of your findings! In fact, I just posted a note where this factor is quite obvious. The note is at URL:
In case you are interested, and to save you some time, the PSD of a resistor is shown in Figure 1 computed ffom a transient noise simulation where the sample size is varied. For a large enough sample size (higher sample rate), the noisefmax chosen of 100 GHz results in the thermal noise being attenuated. The relevant figure from page 14 of the note is shown below.
Thank you again for your update Fede26!
from page 14 of URL:https://www.dropbox.com/s/7vxzliml4uz6518/psd_study_sml_090622v1p0.pdf?dl=0