Has anyone simulated transient noise in SW130? If ...
# sky130
d
Has anyone simulated transient noise in SW130? If so, how did the models behave? Were the sims accurate? Just about to start running transient noise so any info would be most appreciated. Txs
b
The thermal noise models look reasonable when I run AC noise simulations. Transient noise in ngspice runs only for low frequencies.
l
@Boris Murmann, how do you run transient noise sims in ngspice? I didn't even know it was possible using transistor models.
b
I haven't tried with SKY 130, since the low frequency limitation is a nonstarter for me.
d
@Boris Murmann: What is the low frequency limitation?
b
You can read about it in the ngspice manual (I am not the best reference on this). ngspice can keep track of only relatively low frequency noise waveforms in a transient simulation.
d
Thanks @Boris Murmann. I threw this question onto the ngspice forum today: https://sourceforge.net/p/ngspice/discussion/133842/thread/1e14618121/ From Holgers response, it seems there is no limitation on transient noise in ngspice that is different to other SPICE engines (set the time step or NT parameter 10x less than 1/fnmax). However, I haven't started simulating transient noise yet so am only going by what I hear. Sounds like you have experience on this in ngspice => am I missing something in particular to watch out for when simulating transient noise in ngspice? Thanks
b
Give it a try. Curious what you will find out. I'd start with an RC circuit and see if you can get kT/C out of the simulation.
d
Agreed, start simple and go from there. In the next week my BW will free up so can start analysing then and will update this post when I get results.
e
@Diarmuid Collins based on pp. 314-316 of the ngspice manual, it appears that you can instantiate an independent source and have it generate noise in a transient simulation, but it is not able generate and insert the noise sources automatically as is done in an ac noise simulation. Note on p. 316: The following questions (among others) are to be solved: ... • how to generate noise from a transistor model If I'm reading this correctly, you'd have to manually insert an independent source for each resistor to simulate its noise. For a MOS device, this would be even more work.
b
In section 4.17, it also says: "Transient noise is an experimental feature allowing (low frequency) transient noise injection and analysis." Seems like something was updated in the later sections cited above, but not in in 4.17, which still mentions the low frequency limitation that I read about a few versions ago. I do not know what exactly has changed, but the fact that the noise source makes you specify a uniform sampling time probably means that the simulation will be slow for broadband noise. As far as I know, the tran noise algorithms in proprietary tools use fancy adaptive timestep management techniques.
d
Thanks guys. Yes @Eric you need to determine the NTF for each individual device from ac noise analysis and model that with an independent source in series with each device. Certainly not trivial but @Amro Tork has performed such an analysis on a PLL so I will build from that. Yes @Boris Murmann the timestep management in ngspice could well be the ultimate limitation on the max noise frequency that can be simulated. Lets see.
@Boris Murmann @Eric ... apologies, due to BW limitations I only got round to looking into this a few days ago. Going purely from a simple kT/C example using analog lib components, I see the time increase of ngspice w.r.t a commercial EDA ~ 1.5x. See attached ppt for details and let me know if you would be interested in seeing anything further.
👍 2
b
Great! This is nice and encouraging. Some preliminary input: • This link is not working for me: https://github.com/SLICESemiconductor/OpenSourceTool_Examples/tree/main/Running_transient_noise_in_ngspice • I don't think the fmax should be scaled according to the ENBW. What matters is where the AC noise integral converges, which is about 10x fp (note that this is different from ENBW, which is just a math contract invented for equivalence; it does not exist in the physical circuit). Have a look Ken Kundert's PSS/PNOISE whitepaper in case that's not clear. • As a next step, I would add a clocked sampling switch to see what happens to simulation time (due to nonlinearities and steep edges). Need not be a MOSFET, just an idealized SPICE switch.
d
Thanks @Boris Murmann for the feedback. 1. Strange that link doesnt work ... can you try the following: https://github.com/SLICESemiconductor/OpenSourceTool_Examples. 2. Didnt quite get your point on the fmax scaling. Plan is just to increase fmax (by 100/1000/etc fp) and analyse the sim time. Is there a terminology issue w.r.t ENBW (that it is = 10 fp only for a 1st order circuit)? 3. In the next few days I will take some time to repeat the sim but with a sampled circuit (same R, same C but using a vloga switch clocked at fs with the output sampled at 1/fs).
b
The link is still not working for me. Perhaps you need to make it public? Regarding ENBW -- this is just a math trick to turn an integral into a multiplication. The ENBW number has no physical relevance in the circuit itself, hence it is not a good yardstick. What matters is where the AC noise integral converges, which is at about 10*fp for a first order circuit. So a good setting for fmax is 10*fp. Smaller makes you miss noise, larger makes you simulate much longer with diminishing returns.
In other words, making fmax equal to ENBW is a bad setting. Making it some multiple thereof can be fine, it is just a bit random, and assigns unjustified significance to ENBW as a yardstick.
d
@Boris Murmann @Eric... attached is the updated presentation, this time including noise sampled from a resistor onto a cap using an ideal sw (section 2). fmax in these examples is always set at 10*fp where fp is successively increased by 1order of magnitude. All details contained in the ppt but on average I see ngspice to be 2x slower than a commercial tool (AFS in this instance). As always, any feedback most welcome.
Hi all. Just want to close out this discussion on transient noise in ngspice with the updated ppt. Updates include examples of running transient noise on SW svt PMOS / NMOS devices (with ac noise correlations), and char data for flicker / thermal noise co-efficients for SW130. Also sending to the #C016UL7AQ73 group since it could be useful to anyone running large signal (or even small signal) noise analysis using ngspice.
🙌 2