ngspice/src/xspice
rlar 0c0bc4079f configure.ac, allow cross-compilation, especially for MinGW-w64
notably on debian gnu/linux with package `mingw-w64'
cross-compile a mingw 32bit windows executable with this incantation:

(compile "
  ./autogen.sh
  rm -rf tmp-build tmp-output
  mkdir -p tmp-build tmp-output
  ( cd tmp-build && ../configure \
      --build=$(../config.guess) \
      --host=i686-w64-mingw32 \
      --prefix='c:/spice' \
      --exec-prefix='c:/spice'\
      --with-windows --enable-xspice --enable-cider --disable-debug )
  LC_ALL=C make -C tmp-build -k -j6
  LC_ALL=C make -C tmp-build -k -j6 DESTDIR=$(pwd)/tmp-output/ install
  (cd 'tmp-output/c:/' && zip -r - .) > tmp-output.zip
")

compilation to Win64 works the same way, with
      --host=x86_64-w64-mingw32

The tmp-output.zip directory structure resembles the
  structure of our original sourceforge ngspice-26_140112.zip windows package
ready to be unzip'ed in c:/

Though the testfiles, examples and documentation is missing.
2015-07-06 21:08:05 +02:00
..
cm new callback function cm_get_path, which makes the global 2014-01-18 19:14:42 +01:00
cmpp configure.ac, allow cross-compilation, especially for MinGW-w64 2015-07-06 21:08:05 +02:00
enh remove all .cvsignore files 2012-10-26 18:30:14 +02:00
evt rewrite, using tprintf() 2014-04-05 19:10:12 +02:00
examples Changed line-ending from DOS to UNIX 2012-10-20 19:48:48 +02:00
icm configure.ac, allow cross-compilation, especially for MinGW-w64 2015-07-06 21:08:05 +02:00
idn remove all .cvsignore files 2012-10-26 18:30:14 +02:00
ipc cleanup, use NULL instead of 0 in pointer context 2015-05-02 10:24:49 +02:00
mif cleanup, use '\0' instead of 0 in char context 2015-05-02 10:24:54 +02:00
.gitignore .gitignore files 2012-02-26 16:19:58 +01:00
Makefile.am fix `make dist' 2012-11-16 22:29:55 +01:00
README fix file modes 2012-06-12 21:26:29 +02:00
xspice.c new callback function cm_get_path, which makes the global 2014-01-18 19:14:42 +01:00

README

ngspice Xspice code model support.
2012 05 06
--------------------------------------

Use configure the flag --enable-xspice to compile xspice support in,
when you run the ./configure script.
This creates a new command, "codemodel", which you can 
use to load a codemodel. 

The command codemodel attempts to load all the codemodels specified in the
arguments, eg 
"ngspice 1 ->codemodel /usr/lib/ngspice/analog.cm /usr/lib/ngspice/spice2poly.cm"

( note: the codemodel path must begin with ./ or / to work )

The codemodels are automatically compiled and then installed in
${prefix}/lib/ngspice/ when ngspice is installed.

To create your own codemodels:

* Unpack the ngspice source and compile as normal.

* cd src/xspice/icm

* make the directory structure for the new library:
 Create the nested library_name and module_name directories and copy the
 source code to the module_name directories

        src/xspice/icm/ <library_name> /
                modpath.lst udnpath.lst
                <module_name> / 
                        files:
                         cfunc.mod  ifspec.ifs ( for a device )
                         or
                         udnfunc.c ( or a user defined node )

* For each library create the files modpath.lst and udnpath.lst, which 
  contain a list of the user devices and nodes respectivily, in the location
  shown above.

* Edit src/xspice/icm/makedefs.in and alter the CMDIRS line to include
  your library directory.

* Run make in the src/xspice/icm directory. ( the makefile does the rest )

The codemodel can be then found in 
  src/xspice/icm/<library_name>/<library_name>.cm


-----------------------------------------
SPICE2 POLY codemodel support.

SPICE2 POLY attributes are now available for controlled sources.  

To use POLY attributes, configure and install ( make install ) 
ngspice with the --enable-xspice flag set as described above.  

After compilation of ngspice edit 
${prefix}/share/tclspice/scripts/spinit or 
${prefix}/share/ngspice/scripts/spinit 
( depending if you included tcl support or not )

and uncomment the 
"* codemodel /usr/lib/spice/spice2poly.cm" 
line and edit as required. ( the path to spice2poly.cm may be wrong )
( alternativily create a ~/.spiceinit file with the above codemodel line )

Then read in your SPICE netlist.  SPICE 2 POLY attributes in
controlled sources will be translated into .models invoking the
spice2poly codemodel.  You should be able to run ngspice and simulate
in the usual way!

Please direct questions/comments/complaints to the ngspice user's list 
or forum.