Spice for Linux
Hello Michael,
I have read your mail and gave a look to the files you sent me.
During the last weekend i spent some hours ont the sources of your
porting of spice. After a couple of liters of water (we have over30
degrees in Rome, it's very hot) I realized that spice is very bad coded
(well, for today coding standards). Anyway I learned more on it's internal
structure, so I can make my changes in a more clean way.
I have made a some changes to your spice that you can include in your
next release (if you want):
1) I have sligtly modified the inpfindl.c to accept device level greater
than 9 (to have space for SOI models). This change in not yet
necessary, I hope to port the SOI models next week.
2) I have upgraded the BSIM3 model with the latest release from Berkeley:
BSIM3v3.2.2. I did this in a very dirty way: applying the 3v3.1 patches
included in the tarball. To check my work i ran the test simulations
distributed with the code and all went well (my results matched with
the ones provided).
In the next days I will reinclude BSIM3v3.1 as MOS level 11 and (but I
have to check some things) the old model BSIM3v3 as level 7. Most
commercially available simulators include these models for
compatibility.
3) I have reorgasnized the 3f5patches directory. It is less messy now.
4) I have created a configuration file for the Linux distribution I use:
Debian/GNU Linux 2.1 (Slink). Debian guys have dropped libtermcap
support two distributions ago. Now the provide libncurses so I have
changed -ltermcap with -lncurses (it's "api to api" compatible).
This is what I did: plase let me know if you want to include them in your
next distribution, I will send you patches and/or files.
Now some info:
after reading the "readme" file in the distribution I discovered the
existence of a new command "altermod". I saw the code for it in
inp/device.c but it was not linked to the commands table. I added an entry
simply duplicating the "alter" entry, but it does not seem to work.
As the readme says:
"altermod" command for altering model parameters (was
"alter") minor bug fixes
In the near future I would like to work on the code to make device models
dynamically loadable, soon the number of device models will
increse: a new BSIM4 is planned, some other models from semiconductor
industry will be available in the next years. Three new technologies
are developed and will be deplyed in a few years: SiGe, SiC, SOI, not to
mention optical devices, and so on.
As long term target it will be nice to include some features already
present in commercially available high-end spice simulators. I am now
reading the SmartSpice manuals to get some ideas. Think about mixed
mode mixed level simulation: you can simulate an hybrid circuit with some
digital device, some analog device characterized by model and some other
device characterized by process parameters. For the last type Berkeley
distribute the CIDER software (which contains a spice3f5 release, look at
it some bugs may have been fixed).
Now back to reality and talk about Berkeley's docs: Ms. Little answered,
now I am going to order the following manuals:
M89/43 52 The Front End to Simulator Interface T. Quarles
M89/44 122 The SPICE3 Implementation Guide T. Quarles
M89/45 60 Adding Devices to SPICE3 T. Quarles
they seems interesting enough.
This message is getting long, but i prefer write a single long message
than many small ones. I would like to introduce you the group here in
Rome working on the ng-spice project:
Danilo Antonelli, Daniele Foci, Daniele Pellegrini, Pierpaolo Pierozzi and
(obviously) me. All of them are students of the faculty of Engineering
and have experience with SPICE and Linux. Pierpaolo has experience with
the Be operating system too, and i think that he would like to port Spice
on it (am I right Pierpaolo ?). I think that they are able to introduce
yourselves (;-)), I introduced the whole group. Now some history.
All the project started when Daniele Pellegrini was complaining about the
lack of a graphical interface (schematic entry and output viewer) for
SPICE under linux (free obviously). We made half a day of brainstorming
and decided to write a GUI for Spice (Dan, our drawings are still in may
notebook). The first phase was to form a group to divide the work.
This phase is almost complete now, and we are thinking about moving in
three directions:
1) Spice coding: debugging and adding features.
2) GUI coding: GUI will be based on GNOME: actually the most promising
and not portable desktop environment on the net. We plan not to
integrate the simulator itself and the GUI to avoid portability
problems. As you pointed out, SPICE is already a memory consuming
program, it is not necessary to make it heavier. The GUI is necessary
only for input and output, when spice simulate it is grown enough to be
alone.
3) Manuals Writing: as you told in your readme files: the spice manuals
have some errors and are not too good. You have to buy some book to
learn to use spice. We would like to get the distributed user manual,
some circuits on the net and prepare a couple of manuals: an user
guide and a reference guide, to help the spice users.
How is it going with your collegues ? Some interested in the project ? I
think that we can make a good simulator, joining our "forces".
Now at you,
Paolo Nenzi
PS: rember to subscribe to the list so i can write a single message to you
and the guys here in Roma.
Partial thread listing: