diff --git a/ANALYSES b/ANALYSES index 5f9dc2b67..5b715be9f 100644 --- a/ANALYSES +++ b/ANALYSES @@ -8,9 +8,10 @@ This file lists the analyses currently implemented into ngspice. Table of Contents 1 Noise analysis (NOISE) + 1.1 Small signal noise + 1.2 Transient noise 2 Operating point analysis (OP) 3 Operating point sweep Analysis (DC) - 3.1 Enhancements 4 Pole-zero analysis (PZ) 5 Small-Signal distortion analysis (DISTO) 6 Small Signal frequency response analysis (AC) @@ -23,6 +24,8 @@ Table of Contents 1 Noise analysis (NOISE) + 1.1 Small signal noise + The noise analysis does analysis device-generated noise for the given circuit. When provided with an input source and an output port, the analysis calculates the noise contributions of each device (and each noise generator @@ -32,6 +35,12 @@ Table of Contents range - the calculated value of the noise corresponds to the spectral density of the circuit variable viewed as a stationary gaussian stochastic process. + 1.2 Transient noise + + Time domain noise analysis during transient simulation is enabled by + providing voltage (and current) source options with white, 1/f and + random telegraph signal noise signals. + 2 Operating point analysis (OP) @@ -44,11 +53,8 @@ Table of Contents The operating point sweep analysis determines the values of output variables while one or two specified independent voltage or current source is stepped over a user-specified range and the dc output variables are stored - for each sequential source value. - - 3.1 Enhancements - - Added resistance and temperature sweep. + for each sequential source value. Resistance and temperature sweep are + included. 4 Pole-zero analysis (PZ) @@ -57,7 +63,8 @@ Table of Contents ac transfer function. The program first computes the dc operating point and then determines the linearized, small-signal models for all the nonlinear devices in the circuit. This circuit is then used to find the poles and zeros - of the transfer function. + of the transfer function. Unfortunately this code is (since its inception in + spice3) not free of bugs. 5 Small-Signal distortion analysis (DISTO) diff --git a/AUTHORS b/AUTHORS index 6a46aa674..59c253f41 100644 --- a/AUTHORS +++ b/AUTHORS @@ -7,12 +7,12 @@ releasing patches to the original code through the Internet. The following people have contributed in some way: -@verbatim Vera Albrecht, Cecil Aswell, Giles C. Billingsley, Phil Barker, Steven Borley, +Krzysztof Blaszkowski, Stuart Brorson, Mansun Chan, Wayne A. Christopher, @@ -68,7 +68,6 @@ Michael Widlok, Charles D.H. Williams, Antony Wilson, and many others... -@end verbatim If someone helped in the development and has not been inserted in this list then this omission was unintentional. If you feel you should be on this list diff --git a/COPYING b/COPYING index 5a82c58aa..e266da014 100644 --- a/COPYING +++ b/COPYING @@ -1,47 +1,51 @@ 12345678901234567890123456789012345678901234567890123456789012345678901234567890 -Ngspice-25 -Copyright (c) 2012, +Ngspice 26 +Copyright (c) 2014, All rights reserved. Foreword: -Spice's name was originally chosen at the University of California, Berkeley. -As it is the basis of almost all circuit simulators, the major part of the +The name 'Spice' (Simulation Program with Integrated Circuit Emphasis) +was originally chosen at the University of California, Berkeley. The +original Berkeley code is covered under the modified BSD license and +thus sets the basis for all other code added. +As Spice is the basis of almost all circuit simulators, the major part of the analogue and mixed signals simulation's code is designed to fit with it. The *spices (generic name for its forks) are heterogeneous in many points due to the work of researchers, electronic designers, software editors, etc. The Ngspice team tries to collect work from the different sources and contribute new functionalities. Thus, the material we manipulate is -heterogeneous in licenses. Keeping the licenses as is, is the way to live with -that diversity. For release 25 as well, we choose not to relicense. +heterogeneous in licenses. Keeping the licenses as is, but also keep it +compatible with the new BSD license, is the way to live with that diversity. Copyleft is a fundamental question in FOSS development. The choice of a copylefted contribution, or a non copylefted contribution is an important choice that should be respected. Ngspice branch as a whole will not be covered by a specific license. The Ngspice team wants to encourage contributions to -ngspice. We let each new developper choose its position regarding copyleft, -as we respect the position of the former developpers. In order to keep things +ngspice. We let each new developer choose its position regarding copyleft, +as we respect the position of the former developers. In order to keep things clear ngspice team proposes to follow the following guidelines: Each piece of code should be kept under its original contributor's license. As for any project, modifications made in sources covered by a less - restrictive license can be covered by a more restrictive license, such as - GPL. We do not encourage it. + restrictive license can be covered by a more restrictive license than new BSD. + We do not encourage it. If you feel to add code in a file under a different license than the rest of the file, please use comments to mark the boundaries of the modification, and - edit the comments at the begining of the file with correct license and + edit the comments at the beginning of the file with correct license and copyright information. We encourage restrictive licenses to be chosen only for new functionalities, - written in distinct files, leading to distinct libraries that links depending + written in distinct files, leading to distinct libraries that link depending on a specific configure flag. - We encourage non proliferation of licenses (e.g. choosing either GPL, LGPL or - new BSD). + We encourage non proliferation of licenses (e.g. choosing either LGPL or + new BSD). GPL is not suitable for code to be directly linked into ngspice, + but may be used in shared object libraries only. -This heterogenous license status makes it difficult to know which license -applies. Please take care of knowing which license aplies to the code you are +This heterogeneous license status requires some effort to keep track on licenses +applied. Please take care of knowing which license applies to the code you are editing, or conveying and not to commit license infringements, especially to GPL and LGPL which are quite restrictive. diff --git a/DEVICES b/DEVICES index 92a48e51d..29c309e21 100644 --- a/DEVICES +++ b/DEVICES @@ -66,6 +66,7 @@ Table of contents 13.3 HICUM0 Bipolar Model 13.4 HICUM2 Bipolar Model 13.5 Mextram Bipolar Model +14. XSPICE code models ------------------ @@ -849,3 +850,5 @@ will be updated every time the device specific code is altered or changed to ref Status: TO BE TESTED Web site at: http://mextram.ewi.tudelft.nl/ and http://mextram.sourceforge.net/ + + 14. XSpice code models, see ngspice manual chapt. 12 diff --git a/FAQ b/FAQ index a045f2c32..e137c93cf 100644 --- a/FAQ +++ b/FAQ @@ -1,6 +1,6 @@ - Ngspice F.A.Q.Version 1.9 (rework-25 release) + Ngspice F.A.Q.Version 2.0 (ngspice 26 release) Maintained by Paolo Nenzi, Holger Vogt - Last update: 22-12-2012 + Last update: 02-01-2014 This document contains the Frequently Asked Questions (and Answers) for ngspice project. @@ -11,17 +11,18 @@ 1. INTRODUCTION AND GENERAL INFORMATION 1.1 What is ngspice? - 1.2 What is tclspice ? - 1.3 Why resurrecting Berkeley's Spice? - 1.4 What is the project's goal? - 1.5 What you are going to do? - 1.6 Legal issues - 1.7 What mailing lists exist for ngspice? - 1.8 Are the mailing lists archived anywhere? - 1.9 What newsgroups exist for ngspice? - 1.10 Where can I get a copy of ngspice? - 1.11 Where should I look on the World Wide Web for ngspice stuff? - 1.12 Where should I look on the World Wide Web for Spice documentation? + 1.2 What is sharedspice? + 1.3 What is tclspice ? + 1.4 Why resurrecting Berkeley's Spice? + 1.5 What is the project's goal? + 1.6 What you are going to do? + 1.7 Legal issues + 1.8 What mailing lists exist for ngspice? + 1.9 Are the mailing lists archived anywhere? + 1.10 What newsgroups exist for ngspice? + 1.11 Where can I get a copy of ngspice? + 1.12 Where should I look on the World Wide Web for ngspice stuff? + 1.13 Where should I look on the World Wide Web for Spice documentation? 2. DEVELOPMENT 2.1 What is the current version? @@ -52,8 +53,9 @@ 1.1 What is ngspice ? - Ngspice is a mixed-level/mixed-signal circuit simulator based on three - open source software packages: Spice3f5, Cider1b1 and Xspice: + Ngspice is a mixed-level/mixed-signal circuit simulator, based on three + open source software packages: Spice3f5, Cider1b1 and Xspice, and + including many bug fixes and enhancements: - Spice3 is a widely used circuit simulator. It was developed by the University of California at Berkeley (UCB), by "a cast of thousand" @@ -73,20 +75,28 @@ The NG prefix has lot of meanings: Next Generation, New Good, etc. Choose or invent the one you prefer. The heart of the project is the - ngspice program. + ngspice program, with its tremendous advancements. - 1.2 What is tclspice ? + 1.2 What is sharedspice ? - Tclspice is a circuit simulator that embeds ngspice and provides a - tcl/tk interface to the user. Tclspice is both a batch and interactive - simulator and a building block for simulator applications. Analyses can - be run from a tcl script and vector plotted or post processed using tcl - or a small GUI can be built to analyze a circuit or a set of circuits. + Sharedspice is an interface option to ngspice. It compiles the simulator + into a shared object (or dynamic link library), providing full control + of ngspice to any suitable controlling program (GUI, optimizer, + development system, etc., to be provided by the user). + + + 1.3 What is tclspice ? + + Tclspice is a another interface option of ngspice, providing a tcl/tk + interface to the user. Tclspice is both a batch and interactive simulator + and a building block for simulator applications. Analyses can be run + from a tcl script and vector plotted or post processed using tcl. A small + GUI may be built by the user to analyze a circuit or a set of circuits. Tclspice is obtained compiling ngspice activating an additional option. - 1.3 Why resurrecting Berkeley's Spice? + 1.4 Why resurrecting Berkeley's Spice? Berkeley's Spice can be considered the father of most circuit simulators available today. It is an old but still good piece of @@ -99,7 +109,7 @@ its source code in the past made this simulator the de-facto standard. - 1.4 What is the project's goal? + 1.5 What is the project's goal? Ngspice is both a maintenance and enhancement project. It is a maintenance project because it aims to provide the free EDA community the best spice3 @@ -110,7 +120,7 @@ capabilities) and user interface are other goals. - 1.5 What you are going to do? + 1.6 What you are going to do? An official roadmap for ngspice was never drawn. Contributions made by developers drive ngspice development and the roadmap is built day by @@ -119,7 +129,7 @@ + Compatibility: Ngspice should be compatible with commercial products, thus allowing people to use the netlist generated for such tools. As - most of the commercial simulators avaiable tracked each other in netlist + most of the commercial simulators available tracked each other in netlist language, this should not be an impossible task. The most important goal here is to provide a reliable support for model libraries coming from foundries. @@ -135,28 +145,29 @@ Spice3f manual, available on the Internet has been used as the basis for the new manual. It will be constantly improved during ngspice development and integrated with the documentation accompanying Xspice - and Cider. This is a very time consuming task and probably the - documentation will always be left slightly behind. + and Cider. The ngspice manual today contains description of all + features ngspice is offering. It is however not a tutorial of ngspice + usage, but there are now several good ones available on the internet + (see http://ngspice.sourceforge.net/tutorials.html). - 1.6 Legal issues + 1.7 Legal issues - Ngspice, starting from release rework-18 is released under BSD/LGPL - license. Part of the code are covered by other compatible licenses: - spice3 and cider are BSD, xspice is Public Domain and TCLSPICE is - LGPL and the copyright is of their respective owners (need to write better) + The ngspice base license is new BSD, as provided by UCB. For some parts + of the code other compatible licences apply. Please see file COPYING + for details. - 1.7. What mailing lists exist for ngspice? + 1.8 What mailing lists exist for ngspice? There are two general mailing lists dedicated to the ngspice project. Users mailing list: - This list is for ngspice users, examples, problems, bug reports + This list is for ngspice users. Examples, problems, bug reports and general discussion on ngspice can be sent here. Developers mailing list: - The list dedicated to ngspice development. Developers shold + The list is dedicated to ngspice development. Developers should subscribe here, to follow the program development. May be used to send patches, and technical discussion on ngspice. @@ -176,64 +187,49 @@ http://www.gnu.org/software/mailman/mailman-member - 1.8. Are the mailing lists archived anywhere ? + 1.9 Are the mailing lists archived anywhere ? Yes, the lists are archived. There are two places where to look for archives. The project started on the IEEE Central and South Italy web server and then moved to sourceforge. Sourceforge provides an archiving service that cam be accessed via the summary page: - http://sourceforge.net/projects/ngspice - - (look for the "Lists" link). Old messages from the pre-sourceforge - age are available at: - - http://ngspice.sourceforge.net/lists.html + http://sourceforge.net/p/ngspice/mailman/ - 1.9. What newsgroups exist for ngspice? - There is no ngspice specific newsgroup. Anyway ngspice threads appear - on newsgroups dedicated to circuit simulation and electronic design. - An (incomplete) list is: + 1.10 What newsgroups exist for ngspice? - sci.electronics.cad - comp.lsi.cad + There is no ngspice specific newsgroup. Sourceforge offers additional + discussion groups for ngspice, please see + + http://sourceforge.net/p/ngspice/discussion/ + + ngspice threads may appear on newsgroups dedicated to circuit + simulation and electronic design. - 1.10. Where can I get a copy of ngspice? + 1.11 Where can I get a copy of ngspice? You can download ngspice from: - http://sourceforge.net/projects/ngspice + http://sourceforge.net/projects/ngspice/files/ng-spice-rework/ - 1.11. Where should I look on the World Wide Web for ngspice stuff? + 1.12 Where should I look on the World Wide Web for ngspice stuff? Look at the official Ngpice Web Page: http://ngspice.sourceforge.net - 1.12. Where should I look on the World Wide Web for Spice documentation? + 1.13 Where should I look on the World Wide Web for Spice documentation? There is a detailed ngspice manual available at: http://ngspice.sourceforge.net/docs.html - There are a lot of Internet sites that have information on spice. The - best way is to ask your preferred search engine. Some interesting - sites are: - - Pages on Spice: - http://bwrc.eecs.berkeley.edu/Classes/IcBook/SPICE/ - http://embedded.eecs.berkeley.edu/pubs/downloads/spice/index.htm - http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/index.html#toc - - Xspice Page: - http://users.ece.gatech.edu/~mrichard/Xspice - - Cider Page: - http://embedded.eecs.berkeley.edu/pubs/downloads/cider/index.htm + Others docs are assembled at: + http://ngspice.sourceforge.net/literature.html @@ -244,7 +240,7 @@ The latest version released is: - * ngspice-rework-25 (released on 04/01/2013) + * ngspice-26 (released on 04/01/2013) 2.2. What are the latest features in the current release? @@ -288,7 +284,7 @@ 2.3. What does it look like? Ngspice, as the original Spice3 (and Xspice and Cider) is a command - line simulator. + line simulator, but with a graphics output capability. 2.4. Who are the authors of ngspice? diff --git a/INSTALL b/INSTALL index ef2aa8162..92cca5800 100644 --- a/INSTALL +++ b/INSTALL @@ -5,7 +5,7 @@ Table of contents 1 Ngspice installation (LINUX) 1.1 Prerequisites - 1.2 Install from tarball (e.g. ngspice-25.tar.gz) + 1.2 Install from tarball (e.g. ngspice-26.tar.gz) 1.3 Install from git repository 1.4 Advanced Install 1.4.1 Most useful options @@ -41,7 +41,7 @@ This file describes the procedures to install ngspice from sources. bison, flex, and X11 headers and libs. If you want to compile the source from the git repository you need - additional software: autoconf, automake, libtool, texinfo. + additional software: autoconf, automake, libtool, texinfo, readline. The following software may be needed when enabling additional features: editline, tcl/tk, adms @@ -51,14 +51,14 @@ This file describes the procedures to install ngspice from sources. information on ngspice and its usage. -1.2 Install from tarball (e.g. ngspice-25.tar.gz) +1.2 Install from tarball (e.g. ngspice-26.tar.gz) This covers installation from a release distribution (for example - ngspice-25.tar.gz, the so called tar ball). + ngspice-26.tar.gz, the so called tar ball). After downloading the tar ball to a local directory unpack it using: - $ tar -zxvf ngspice-25.tar.gz + $ tar -zxvf ngspice-26.tar.gz Now change directories in to the top-level source directory (where this INSTALL file can be found). @@ -99,12 +99,12 @@ This file describes the procedures to install ngspice from sources. This section describes how to install from source code taken directly from the git repository. It is intended for those who want to use the most - recent enahancements of ngspice and for developers. For user install + recent enhancements of ngspice and for developers. For user install instructions using source from a released distributions, please see the sections titled 'Install from tarball' and 'Advanced Install'. Download ngspice sources from the git repository as described on the sourceforge project page - (see http://sourceforge.net/projects/ngspice/ and click on the git link) + (see http://ngspice.sourceforge.net/download.html and click on the git link) Now change directories in to the top-level source directory (where this INSTALL file can be found). @@ -115,7 +115,7 @@ This file describes the procedures to install ngspice from sources. $ ./autogen.sh $ mkdir debug $ cd debug - $ ../configure --enable-maintainer-mode + $ ../configure --with-x --with-readline=yes $ make $ sudo make install @@ -123,7 +123,7 @@ This file describes the procedures to install ngspice from sources. that can be passed to ./configure to customise the build and installation. Preferred arguments to ./configure to obtain a comfortably working ngspice may be - --with-readline=yes and --disable-debug (for smaller and speed optimized + --with-readline=yes and --disable-debug (for a smaller and speed optimized executable). A fully featured ngspice on LINUX may be obtained with the following commands: @@ -134,8 +134,8 @@ This file describes the procedures to install ngspice from sources. $ make 2>&1 | tee make.log $ sudo make install - If a problem is found with the build proccess, please submit a report to - the Ngspice development team. Please provide information about your system + If a problem is found with the build process, please submit a report to + the ngspice development team. Please provide information about your system and any ./configure arguments you are using, together with any error messages. Ideally you would have tried to fix the problem yourself first. If you have fixed the problem then the development team will love to hear @@ -451,8 +451,8 @@ Most of the options now following are not well maintained, are not tested or eve to the standard install (FLEX and BISON have to be made available in MSYS). Some links are given below which describe the procedures. - Installing from the tarball, e.g. ngspice-25.tar.gz, is now simple: After - expanding, you may just run ./compile_min.sh from the ngspice-25 directory. + Installing from the tarball, e.g. ngspice-26.tar.gz, is now simple: After + expanding, you may just run ./compile_min.sh from the ngspice-26 directory. The default installation location of ngspice is the Windows path C:\spice. The install path can be altered by passing --prefix=NEWPATH @@ -466,14 +466,14 @@ Most of the options now following are not well maintained, are not tested or eve The procedure of compiling a distribution (for example, a tarball from the ngspice website), is as follows: - $ cd ngspice-25 + $ cd ngspice-26 $ mkdir release $ cd release $ ../configure --with-wingui ...and other options $ make $ make install - The useful options are: + The most useful options are: --enable-xspice --enable-cider --disable-debug (-O2 optimization, no debug information) @@ -486,9 +486,10 @@ Most of the options now following are not well maintained, are not tested or eve $ make install However, to compile code extracted from the git repository the procedure is - a little different. To obtain ngspice, you may do the following: + a little different. Firstly install git, e.g. from http://git-scm.com/download/win + To obtain ngspice, you may do the following: - Go to a directory of your choice, e.g. D:\Spice + Open the git command window. Go to a directory of your choice, e.g. D:\Spice $ cd /d/Spice Issue the command for downloading ngspice: @@ -562,7 +563,8 @@ Most of the options now following are not well maintained, are not tested or eve vngspice.sln (project starter) and vngspice.vcproj (project contents) allows to compile and link ngspice with MS Visual Studio 2008. - The project is probably not compatible with Visual Studio 2005. + Newer Visual Studio versions will translate the project files + into their compatible format (tested with MS Visual Studio 2010). /visualc/include contains a dedicated config.h file. It contains the preprocessor definitions required to properly compile the code. diff --git a/NEWS b/NEWS index c56cfea56..ba1f3e8d2 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,32 @@ +Ngspice-26, Jan 4th, 2014 +============ + +- New features: + + fft command may (optionally) use fftw3 library + + add nint() rounding function + + usage of 'temper' in behavioral devices + + check for soa (safe operating area) in several device models + + library processing rewritten completely to enhance ngspice + compatibility (.lib) + + include file processing rewritten to allow nesting and various + absolute and relative path names (.inc) + + asinh, acosh, atanh functions + + shared ngspice option added: ngspice optionally compiles as + a shared object or dynamic link library + + use a hash table to massively speeding up finding a model + + implement a very basic .if/.else block + + implement a signed power function `pwr' for controlled sources + + implement multiplier `m' in F, G source + + apply Area Calculation Method (ACM) to the bsim3v3.3 model + + implement `tc1', `tc2' instance parameters + +- Bug fixes: + + many, many ... please see + http://sourceforge.net/p/ngspice/ngspice/ci/master/tree/ + and check the 'history' button on the upper right. + + removed memory leaks + + Ngspice-25, Jan 4th, 2013 ============ diff --git a/README b/README index e02f63f6b..f5dfecc52 100644 --- a/README +++ b/README @@ -13,11 +13,11 @@ Cider couples Spice3f5 circuit level simulator to DSIM device simulator to provide greater simulation accuracy of critical devices. DSIM devices are described in terms of their structures and materials. -Xspice is an extension to Spice3C1 that provides code modeling support +Xspice is an extension to Spice3C1 that provides code modelling support and simulation of digital components through an embedded event driven algorithm. -Ngspice is, anyway, a little more than the simple sum of the packages +Ngspice is, anyway, much more than the simple sum of the packages above, as many people contributed to the project with their experience, their bug fixes and their improvements. If you are interested, browse the site and discover what ngspice offers and what needs. If you think @@ -45,12 +45,6 @@ MAILING LISTS: -OBSOLETE MAILING LISTS: -------------- - * ngspice-bugs@list.sourceforge.net: - This list is no longer used by the ngspice maintainers. Bug reports should - go to the ngspice bug tracker. - WEB SITEs: -------- diff --git a/README.tcl b/README.tcl index c8401dfd8..f82ffb90d 100644 --- a/README.tcl +++ b/README.tcl @@ -19,6 +19,13 @@ *Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.* ********************************************************************************* +WARNING! + +The text in this document has been prepared in 2006 and is partially outdated. +It is provided here only for reference and may provide some (historical) +information. + + Welcome to tclspice README_tcl This file acompanies ngspice sources starting with ngspice-rework-18. It @@ -57,7 +64,7 @@ tk : the graphical extension of tcl, to represent data graphically and for GUIs blt : BLT toolkit gives number handling and plotting features to tcl/tk The most tested configuration is the latest: -tclspice-25 +tclspice-26 tcl 8.4 tk 8.4 blt 2.4 diff --git a/Stuarts_Poly_Notes b/Stuarts_Poly_Notes index fb8c3a5e9..63cf3083e 100644 --- a/Stuarts_Poly_Notes +++ b/Stuarts_Poly_Notes @@ -1,5 +1,11 @@ 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