Hello everyone,
I hope I am posting this question in the right sub-forum.
In Virtuoso (I am using spectre) I have a circuit in which I inject some charges through delta-like pulses and expect at the output a semigaussian unipolar response (I evaluate it at a time t_p). I am performing transient noise analyses (# = 300) in order to get the input-referred noise in terms of charge (Equivalent Noise Charge, in electrons) at t_p through a formula which is basically based on the Signal-to-Noise Ratio. For reference when SNR -> inf, ENC -> 0 e- .
My issue is that when I compare the results obtained for a transient noise in which every possible noise source is activated (noise contribution list is not set) and those obtained through single transient noise analyses in which I enable a block at a time (noise contribution list set to "on" for the block I want to get info about), they don't add up. I'll provide a numeric example so as to make my statement clearer. Let's say that transient noise gives me 250 e- at the input, then I perform the transient noise with single block contribution activated (preamplifier, shaper, biases) and, summing them, I get 170 e-; summing them in quadrature doesn't work too. My question is: where are the 80 e- missing? I made sure to perform one transient noise for each single block, so no block contribution is missing in the sum.
Transient noise analysis is set to conservative, noisefmax = 1G, noisefmin = 1, noiseseed = VAR("ITERATION") (I set this value to parallelise transient noise analyses).
Hope everything is clear and specified to an acceptable degree.
Thanks in advance for the help.
you ran individual noise processes and "everybody" noise process
try running two or three at a time
there may be processes where they interact in random(?) ways,
so that the results do not add up (should not add up??)
what does noiseseed do? the name implies to me a seed for a random number generator.
if that's what it is, each time to you set it to something, you should get different results.
since it is computer, each time you set it to the same thing, you should get the same result.
if noise analysis is a random process, depending on some seed, i see no reason why the individual results and the total should agree
you ran individual noise processes and "everybody" noise process
try running two or three at a time
there may be processes where they interact in random(?) ways,
so that the results do not add up (should not add up??)
I will try to do it, but it seems strange to me that that the blocks I have in my circuit are interacting in some ways. Is there a way in which I am able to assure they are uncorrelated? (I thought a buffer would be sufficient.)
what does noiseseed do? the name implies to me a seed for a random number generator.
if that's what it is, each time to you set it to something, you should get different results.
since it is computer, each time you set it to the same thing, you should get the same result.
if noise analysis is a random process, depending on some seed, i see no reason why the individual results and the total should agree
Exactly: noiseseed value in transient noise form, acts as a seed for random generation. Fact is that I always run simulations with this seed going from 1 to 300 with unitary step, so that I am parallelising the jobs and my analysis are reproducible. I therefore think that noise is generated in the same way for each simulation I carry out. Am I wrong?
it seems strange to me that that the blocks I have in my circuit are interacting in some ways. Is there a way in which I am able to assure they are uncorrelated? (I thought a buffer would be sufficient.)
I have not specified that this buffer is ideal (vcvs component from AnalogLib). Is the situation unchanged? I expected this component not to introduce noise.
I have not specified that this buffer is ideal (vcvs component from AnalogLib). Is the situation unchanged? I expected this component not to introduce noise.
i think, that, just as circuit behavior in "block 1" effects circuit behavior in "block 2",
noise behavior in "block 1" effects noise behavior in "block 2".
therefore, i do not expect noise behavior to add up.
you can check by
(1) measure the noise result in "block 1", with no noise in the other blocks,
(2) then measure the noise result in "block 2", with no noise in the other blocks,
(3) then measure the noise result in "block 1 and block 2", with no noise in the other blocks,
i do not expect the first two to add up to the third.