[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: gEDA-user: ngspice/tclspice and SPICE 2 POLYs



A short SPICE history:

First there was SPICE 2.  This came from Berkeley, was written in
Fortran & was widely used.   It was good.

Then there came SPICE 3.   It also came from Berkeley, was written in
C, and had new capabilities -- which was good --  but unfortunately
certain SPICE 2 features were removed -- which was bad.  In
particular, controlled sources couldn't use the POLY  attribute any
more.  INstead, a new statement for polynomial sources was introduced.
This was bad because lots of vendor models were already out there
which used  controlled sources POLYs.   

Then, in the early 1990s, Georgia Tech created XSpice, which added the
abilitiy to create "codemodels", which were models for analog
comonents written in C.  (XSpice also added other capabilities which
are not germaine to this story.)  The XSpice parser included the
abiltiy to recognize SPICE 2 POLY attributes in controlled sources,
and then invoke a codemodel which implemented the polynomial
controlled sources.  Although this was a work-around, it was deemed a
good thing because people could once again simulate using the models
supplied by their part vendors.

All of these simulators were released under vague, possibly
restrictive licencing conditions.  Since restrictive licences are
generally a bad thing, the licencing may have prevented their
widespread use in the free software community.

In in the late 1990s, some folks at the University of Rome decided to
create a new circuit simulator placed under the GPL.  They determined to
completely re-write SPICE so that any licencing problems were thereby
relegated to the dustbin of historical irrelevancy.  Their simulator was
ngspice; it processed SPICE netlists written in conformace to SPICE
3, which was bad.  Fortunately, somebody also incorporated the XSpice
extension code into ngspice -- which was good.  Unfoturnately, the
XSpice stuff was very, very buggy (i.e. it just didn't work)  and was
thereby unusable.  I decided that this was a bad thing, and set about
to fix it.  Since I finally got it to work, I sent out the e-mail which
you read earlier today.

It turned out that developement on ngspice had basically stopped in
2000.  I don't know why.  Luckily, some folks at MultiGiG Ltd were
actively working on a branch of ngspice called tclspice.  They were
trying to graft a TCL API onto ngspice so that you could invoke SPICE
analysis commands in TCL.   Since development was active on tclspice,
I decided to incorporate my stuff with their code base since it seemed
to have the greatest chance of being useful, relevant, and used.
That's why I encourage people using and developing gEDA stuff to take
a look at it under:

http://tclspice.sourceforge.net/

Finally, as for Gnucap: In the late 1990s, somebody named Al wrote a
circuit simulator called ACS (Al's Circuit Simulator).  I know nothing
about it.  Later, ACS was turned into a GNU project and renamed
Gnucap.  I haven't used it because -- as it says on the Gnucap web
page -- it has some differences with standard SPICE syntax.  The
differences may be trivial or irrelevant for all I know.  However,
because I need to simulate vendor models, I didn't want to mess around
with something which wasn't straight SPICE. 

HTH,

Stuart
  
> 
> Being that I haven't looked at Spice, etc. since my college days which 
> was better than 25 years ago...
> 
> Can some kind soul explain to me the basic functional differences 
> between gnucap and say - tclspice?
> 
> Thanks,
> 
> Steve Wilson
>