The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl
Simulators >> Circuit Simulators >> spectre transient noise
https://designers-guide.org/forum/YaBB.pl?num=1204165488

Message started by panditabupesh on Feb 27th, 2008, 6:24pm

Title: spectre transient noise
Post by panditabupesh on Feb 27th, 2008, 6:24pm

Hi
I have been trying transient noise simulation on a switched capacitor filter. Without noise enabled, I was getting an SNR of greater than 90 db, but with noise enabled the SNR dropped to 42 dB.
The output power spectral density shows a flicker noise kind of noise floor. I forced the flicker noise parameters in the models to zero, but despite that I am not seeing any improvement in the SNR and also the output PSD continues to shown an 1/f shape. I am simulating an audio circuit.

Any insights on what is going on would be helpful.

Thanks
Bupesh


Title: Re: spectre transient noise
Post by Stefan on Feb 28th, 2008, 2:40am

Maybe you should check the generation of the clock for the switches ...
You can use the simulator to check for the noise sources that distribute to the output. What does it say ?

Title: Re: spectre transient noise
Post by panditabupesh on Feb 28th, 2008, 5:57am

Hi
Today I tried with noisefmin greater than noisefmax (basically, to eliminate flicker noise contribution) and the SNR improved to 70 dB (about 30 dB improvement).  With flicker noise parameters in the models zero, I can not understand how spectre is generating flicker noise.  I generated a report, in Ocean,  on the models and confirmed that the flicker noise parameters are zero.

The clocks are  from an ideal non-overlapping clock generator. Also, how can I use the simulator to tell me about the contribution of each device to the output noise.

Thanks
Bupesh

Title: Re: spectre transient noise
Post by thechopper on Feb 28th, 2008, 4:52pm

Hi,

A couple of quick questions:  is the SC circuit an integrator?, what do you have at the input of the SC filter?

Tosei

Title: Re: spectre transient noise
Post by Ken Kundert on Feb 28th, 2008, 9:42pm

Have you considered using SpectreRF's PNoise analysis?

-Ken

Title: Re: spectre transient noise
Post by panditabupesh on Feb 29th, 2008, 5:58am

Hello
Yes the circuit is an integrator, and the input is an ideal sine wave.
Ken, with flicker noise parameters made zero (BSIM4 parameters with fnoimod=1, and all flicker noise parameters, noia noib noic including kf made zero), pnoise, unlike transient noise, shows flicker noise disappearing.


Thanks
Bupesh



Title: Re: spectre transient noise
Post by thechopper on Feb 29th, 2008, 7:12am

I'm not completely sure about this but, what if you have a white noise component at the input of your SC integrator? My point is that the white noise, once integrated, looks like flicker noise at the output of any integrator (I guess). What source of white noise do you have at the very input of your integrator? May be the input switches?. An easy test would be just to put ideal switches at the input just to see if your flicker like output noise gets reduced in the transient sim....

Tosei

Title: Re: spectre transient noise
Post by panditabupesh on Feb 29th, 2008, 7:59am

Hello Tosei
The idea that integrator is coloring the white noise is really possible, and I am planning to explore it further. But, then why should making noisefmin greater than noisefmax impact the output noise psd.

Thanks
Bupesh

Title: Re: spectre transient noise
Post by panditabupesh on Feb 29th, 2008, 8:49am

Hello
Perhaps, I am confused about one more thing:

For noisefmin = noisefmax condition, does spectre use the thermal noise parameters of the devices (or just the 4kTBR equation for the resistors)? The transient noise application note says that, "spectral noise density will be zero above noisefmax, constant below noisefmin, and will follow the device noise equation in between".

How does spectre decide the noise magnitude below noisefmin?

Thanks
Bupesh

Title: Re: spectre transient noise
Post by Ken Kundert on Feb 29th, 2008, 2:04pm

Trying to perform flicker noise simulations with transient noise is expensive and error prone. So, given that SpectreRF is giving you the expected results, why are you bothering with transient noise?

-Ken

Title: Re: spectre transient noise
Post by panditabupesh on Feb 29th, 2008, 2:54pm

Ken, the idea was to find SNR and harmonic distortion etc., under real signal conditions.

Thanks
Bupesh

Title: Re: spectre transient noise
Post by safwatonline on Mar 13th, 2008, 7:28am

Hi,
i noticed that i don't have the transient noise in my cadence version, what is the version u r using?

Title: Re: spectre transient noise
Post by kDaniu on Apr 3rd, 2008, 6:22pm

does anybody How to use the same spectre advantages "transient noise" in hspice (I mean auto generation (on the fly) the noise during transient simulation) ?
right now to get the noise I just put the artificial noise using pwlf component, but that is not comfort in the case of long time simulations

thanks
Dan

Title: Re: spectre transient noise
Post by Geoffrey_Coram on Apr 4th, 2008, 7:22am

I've heard that Eldo has transient noise, but I'm not aware that HSpice does (yet?).

Title: Re: spectre transient noise
Post by kDaniu on Apr 4th, 2008, 4:22pm

I know that such possibility is absent.
but I'm asked about any another mechanizm to get it in scheme (at least on the imporant places)..
maybe present some way to auto generation (on the fly) the noise during transient simulation f.e. by using Monte Carlo possibilities (right now this way do not help me) etc... :(

thanks,
Dan

Title: Re: spectre transient noise
Post by Geoffrey_Coram on Apr 7th, 2008, 4:46am

HSpice has nice Verilog-A capabilities, and you could write a model to use the $rdist_ functions to generate random samples.

However, this is probably only practical for resistors and maybe diodes -- there's no good way to get the MOS/BJT internal variables that are used in the noise equations, unless you replace all the transistor built-ins with Verilog-A equivalents.  (That's simple for resistors, and only moderately difficult for diodes.)

Title: Re: spectre transient noise
Post by kDaniu on Apr 22nd, 2008, 10:50pm

Geoffrey_Coram thanks, but maybe that is not appropriate  
possible I can simplify the problem:
How I can get a new random (Gaussian distribution) value of some variable  of every TRAN step (scheme recounting time)?  
I tried to use some Monte Carlo possibilities for that, but they giving only one random varue per full TRAN simulation  
any ideas ?

thanks,  
kDaniu

Title: Re: spectre transient noise
Post by Geoffrey_Coram on Apr 23rd, 2008, 6:12am

I guess you didn't understand my suggestion about Verilog-A $rdist_normal.  This module generates new a new random value each time it is called.  The trick is getting a circuit with this to converge, and deciding how often it needs to be called to accurately represent white noise of a given bandwidth.


Code:
`include "disciplines.vams"
module randomv(out);
 inout out;
 electrical out;
 parameter real mean = 0;
 parameter real stddev = 1 from (0:inf);
 integer seed;

 analog begin
   @(initial_step) seed = 1;

   V(out) <+ $rdist_normal(seed, mean, stddev);

 end

endmodule

Title: Re: spectre transient noise
Post by kDaniu on Apr 29th, 2008, 2:18am


Geoffrey_Coram wrote on Apr 23rd, 2008, 6:12am:
I guess you didn't understand my suggestion about Verilog-A $rdist_normal.  This module generates new a new random value each time it is called.  The trick is getting a circuit with this to converge, and deciding how often it needs to be called to accurately represent white noise of a given bandwidth.


Code:
`include "disciplines.vams"
module randomv(out);
 inout out;
 electrical out;
 parameter real mean = 0;
 parameter real stddev = 1 from (0:inf);
 integer seed;

 analog begin
   @(initial_step) seed = 1;

   V(out) <+ $rdist_normal(seed, mean, stddev);

 end

endmodule


Thanks a LOT for your help and example. I found the information about this verilog-A possibility, etc.
and already test the possibility of using one such noise source.
to get a good statistic during the long simulation time I was must to 'play' with a seed and in general case it's looks very well
right now I'm testing for the correlation/crosscorrelation the few noise sources which on one scheme ... hope that all will workl perfect without statistical weaknesses
again - thanks for your help,
Dan

Title: Re: spectre transient noise
Post by rgcii on May 29th, 2008, 7:01pm

To turn off flicker noise in Spectre transient noise, just leave the noisefmin value blank.  If there's no value for noisefmin in the netlist, then only white noise will be simulated using the noisefmax value.

BTW, Berkeley Design Automation has a transient noise engine that works with both Spectre and HSPICE netlists.  It's also pretty fast.

Title: Re: spectre transient noise
Post by Ken Kundert on May 29th, 2008, 9:19pm

I think it is important to point out again that transient noise is expensive and error prone. In general you are much better off going with SpectreRF's PNoise. It is hard to think of a situation where subjecting your self to the pain of transient noise is justified.

-Ken

Title: Re: spectre transient noise
Post by David Lee on May 31st, 2008, 12:06pm

This Verilog-A module sets the output voltage to a random value at each Newton iteration during transient timestep integration. This will cause non-convergence.

If you need a white (or colored) noise source with a given bandwidth, you will need to know (but don't know inside Verilog-A):
i) transient integration method (trap, euler, gear, etc.)
ii) transient timesteps
iii) perform transient timestep error control for a system of noisy circuit equations
To model a white noise source, simply run transient noise, and call the $white_noise(..) function in Verilog-A or equivalent in your circuit simulator.

Behavioral noise models take tender loving care to create and it is difficult to check for their accuracy because interesting noise processes in ADCs, PLLs and oscillator transients are time-varying and correlated over time (with memory effects).

You are generally better off running transient noise (or periodic noise, when applicable) on the transistor-level netlist.


Geoffrey_Coram wrote on Apr 23rd, 2008, 6:12am:
I guess you didn't understand my suggestion about Verilog-A $rdist_normal.  This module generates new a new random value each time it is called.  The trick is getting a circuit with this to converge, and deciding how often it needs to be called to accurately represent white noise of a given bandwidth.


Code:
`include "disciplines.vams"
module randomv(out);
 inout out;
 electrical out;
 parameter real mean = 0;
 parameter real stddev = 1 from (0:inf);
 integer seed;

 analog begin
   @(initial_step) seed = 1;

   V(out) <+ $rdist_normal(seed, mean, stddev);

 end

endmodule

Title: Re: spectre transient noise
Post by Ken Kundert on May 31st, 2008, 3:38pm

The random number generator in Verilog-A/MS will only update at each time point, not each iteration, so the risk of non-convergence is low. However, David's point about the coloring of the noise spectrum is valid. This can be controlled by updating the random number generator at even intervals. The resulting noise is still colored, but the coloring is known. The code below passes the random value through a transition function, so all chance of convergence problems is eliminated. It produces a random triangle wave, so coloring is sin2x/x at the update rate.

Code:
module randomv(out);
 output out;
 electrical out;
 parameter real mean = 0;
 parameter real stddev = 1 from (0:inf);
 parameter real period = 1 from (0:inf);
 integer seed;
 real value;

 analog begin
   @(initial_step) seed = 1;

   @(timer(0,period))
       value = $rdist_normal(seed, mean, stddev);
   V(out) <+ transition(value, 0, period);
 end
endmodule

This exposes one of the three challenges with transient noise. They are ...
  • To get known coloring on the noise sources, you have to use equally spaced updates. To make the noise seem white over the bandwidth of interest, the update rate must be very high.
  • To see low frequency noise such as flicker noise, you need to simulate for a very long time. These two challenges together result in very long simulation times.
  • The noise sources generally produce signal levels that are well below the error of the simulator, so it is difficult to see the noise through the simulator error. Tightening tolerances often results in even worse simulator performance with no guarantee that the results will be correct. If you artificially make the noise bigger in order make it larger than the simulator error, you run the risk of producing a spurious nonlinear response in your circuit, which would also make the results inaccurate.
Transient noise simulations should only be undertaken by sophisticated users, and only when no other approach is suitable.

-Ken

Title: Re: spectre transient noise
Post by Paul Geraedts on Mar 20th, 2009, 3:07pm

First of all, interesting thread on transient noise. Thanks!


Quote:
It is hard to think of a situation where subjecting your self to the pain of transient noise is justified.

Ken, what about circuits like comparators? Isn't transient noise the only way to simulate their noise behavior? Pnoise does not seem appropriate, e.g. I don't see how the noise in such circuits can be accurately modeled as being small signal. Any insight on this?

Title: Re: spectre transient noise
Post by Ken Kundert on Mar 21st, 2009, 6:42pm

I've gotten pretty good results applying pnoise to comparators. The trick is setting the tolerances tight enough so that you get several time points during the transition.

-Ken

Title: Re: spectre transient noise
Post by Paul Geraedts on Mar 23rd, 2009, 4:14am

Sorry, I don't think I fully get the picture.

Say you got a clocked comparator as used frequently in low-power ADCs that compares 2 static voltages.

How would you define your testbench when applying pnoise on such a circuit? How do you choose the large-signal voltage levels and slew-rates for PSS?

I can imagine that you can determine the noise behavior of such a comparator in time-domain (i.e. by means of strobed pnoise), but are the simulation results in that case not dependent on the (large-signal) testbench?

Thanks,

Paul


Title: Re: spectre transient noise
Post by Geoffrey_Coram on Mar 23rd, 2009, 5:34am


David Lee wrote on May 31st, 2008, 12:06pm:
You are generally better off running transient noise (or periodic noise, when applicable) on the transistor-level netlist.


Yes, but the question was whether one could do anything with a simulator that doesn't support transient noise.

Are you the same David Lee from BDA who wrote this article:
http://www.scdsource.com/article.php?id=144&page=1
?

If so, can you (or can anyone else) comment on how the minimum transient analysis time (tstop in Table 2) is determined?

The Designer's Guide Community Forum » Powered by YaBB 2.2.2!
YaBB © 2000-2008. All Rights Reserved.