FinFet Simulation with Python

Status
Not open for further replies.

Andrew Lees

New Member
Hi all,

I'm interested in how circuit simulators work and I've started to put together a very simple circuit simulator. An (incomplete) description of what I'm trying to do can be found here:

www.circuit-simulation.net

As an exercise, I'm trying to do some simulations using the BSIM CMG finfet model. To do this, I started from the BSIM Verilog-a model and ported this to Python. I then use this model with my Python tools to simulate a finfet inverter.

This seems to work, but the simulation is slow and the results do not completely look correct to me. For example, the edge rates on the waveforms look far too slow (the inverter is only driving a 15fF capacitor). In addition, I think that the simulation is numerically unstable since it does not always work if I change some component values (i.e. change a resistor from 100R to 10R).

I'm looking for some help with this project:

1. How can I improve the speed at which the ODEs are solved (I use the odeint library).
2. Is the simulation accurate and how can I verify that?
3. Why is the simulation unstable? Is there anything that I can do to reduce rounding and truncation errors?
4. Are there any standard simulation convergence "hacks" that I can apply to help convergence (i.e. SPICE's GMIN parameter).

I'm attaching a tarball of the example Python scripts. If anyone is interested, please take a look. Any help that can be offered would be greatly appreciated!
 

Attachments

  • python_forum.tar.gz
    185.6 KB · Views: 209
Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…