104 lines
3.3 KiB
Plaintext
104 lines
3.3 KiB
Plaintext
SPICE 2 POLY CODEMODEL
|
|
|
|
WARNING!
|
|
|
|
The text in this document has been prepared in 2003 and is outdated. It is
|
|
provided here only for reference and may provide some (historical)
|
|
information.
|
|
|
|
SPICE2 POLY attributes are now available for controlled sources. To
|
|
use POLY attributes, configure tclspice/ngspice with the
|
|
--enable-xspice flag set as described above. After compilation of
|
|
ngspice, cd into $(top_srcdir)/src/xspice/icm and read the README file
|
|
there for instructions about how to get POLY support. (Hint: you have
|
|
to download some stuff from http://www.fe.uni-lj.si/ and edit the
|
|
Makefiles before you can do "make && make install" of the codemodel
|
|
stuff.)
|
|
|
|
-- SDB 6.22.2003.
|
|
|
|
--------------------------------------------------------------------
|
|
COMPILING XSPICE CHANGES
|
|
|
|
The dependencies in the Makefile don't seem to work when you are
|
|
compiling changes in the xspice stuff. Obviously, the best thing to
|
|
do is fix Makefile.am, but since I am not an expert at this, I have
|
|
been using the following workaround when making:
|
|
|
|
touch src/main.c && make && make install
|
|
|
|
I recommend you also do this if you hack anything under src/xspice.
|
|
|
|
-- SDB 6.19.2003.
|
|
|
|
---------------------------------------------------------------------
|
|
DEBUGGING SPICE
|
|
|
|
To avoid a segmentation fault in the initial run, use the following
|
|
command in gdb:
|
|
|
|
setenv SPICE_NO_DATASEG_CHECK "1"
|
|
|
|
Or, the comparable command in your shell before running gdb. This
|
|
disable accurate tracking of how much memory is used.
|
|
|
|
----------------------------------------------------------------------
|
|
USING A GARBAGE COLLECTOR
|
|
|
|
Get the Boehm-Weiser conservative garbage collector at the following
|
|
address:
|
|
|
|
http://www.hpl.hp.com/personal/Hans_Boehm/gc/
|
|
|
|
Compile it with 'make liblinuxgc.so' and install libgc.so and gc.h
|
|
where the compiler can find them (i.e., /usr/local/lib and
|
|
/usr/local/include). Run configure and compile.
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
CREATING PATCHES
|
|
|
|
If you don't have access to anonymous CVS:
|
|
|
|
# extract the differences
|
|
$ diff -ruN ng-spice-rework-x ng-spice > my.patch
|
|
|
|
where ng-spice-rework-x is the snapshot you used to base your changes
|
|
on.
|
|
|
|
If you do have access to anonymous CVS:
|
|
|
|
$ cvs diff -u > my.patch
|
|
|
|
Note: this only works if you haven't added any files. Otherwise, the
|
|
first method is better.
|
|
|
|
Now, send your patch to ng-spice mailing list.
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
INCORPORATING PATCHES
|
|
|
|
# apply the patch
|
|
$ patch -p1 < my.patch
|
|
|
|
# update the automatically generated files
|
|
$ sh autogen.sh
|
|
|
|
----------------------------------------------------------------------
|
|
INCOMPATIBILITIES BETWEEN SPICE3 AND SPICE2
|
|
|
|
The output format of spice3 is slightly different for .print and .plot
|
|
lines. Most notably, different traces on plots are not scaled
|
|
independently. This is most noticeable on phase/magnitude plots from
|
|
an AC analysis (also, phase is displayed in radians). Finally,
|
|
frequency for ".PRINT AC" lines is displayed as a complex quantity
|
|
with an all-zero imaginary component.
|
|
|
|
For input, "POLY( )" sources are not supported (the non-linear
|
|
dependent source provides a more general replacement). Also, the
|
|
".ALTER" line is not supported. The Spice3 parser may be slightly
|
|
different on subtle points of reading input (lines need not start at
|
|
column 1 for instance).
|
|
|