Ngspice F.A.Q.Version 1.2 Maintained by Paolo Nenzi Last update: 02-11-2003 This document contains the Frequently Asked Questions (and Answers) for ngspice project. __________________________________________________________________________ Table of Contents 1. INTRODUCTION AND GENERAL INFORMATION 1.1 What is ngspice? 1.2 Why resurrecting Berkeley's Spice? 1.3 What is the project's goal? 1.4 What you are going to do? 1.5 Legal issues 1.6 What mailing lists exist for ngspice? 1.7 Are the mailing lists archived anywhere? 1.8 What newsgroups exist for ngspice? 1.9 Where can I get a copy of ngspice? 1.10 Where should I look on the World Wide Web for ngspice stuff? 1.11 Where should I look on the World Wide Web for Spice documentation? 2. DEVELOPMENT 2.1 What is the current version? 2.2 What are the latest features in the current release? 2.3 What does it look like? 2.4 Who are the authors of ngspice? 2.5 How can I report a bug/request for a feature? 2.6 How can I join the development? 3. SOLUTIONS TO COMMON MISCELLANEOUS PROBLEMS 3.1 What systems are supported? 3.2 I get errors when I try to compile the source code, why? 3.3 This document didn't answer my question. Where else can I look for an answer? 4. ADMINISTRATIVE INFORMATION AND ACKNOWLEDGEMENTS 4.1 Feedback 4.2 Formats in which this FAQ is available 4.3 Authorship and acknowledgements 4.4 Disclaimer and Copyright ______________________________________________________________________ 1. INTRODUCTION AND GENERAL INFORMATION 1.1 What is ngspice ? Ngspice is the name of a project and of a program in the project. The idea behind the project is to improve the capabilities of the Spice 3f5 circuit simulator. Spice is the most famous circuit simulator, developed at the University of California at Berkeley (UCB), by "a cast of thousand". The NG prefix has a lot of meanings: Next Generation, New Good, etc. Choose or invent the one you prefer. The heart of the project is the ngspice program, a circuit simulator derived from spice3f5. 1.2 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 software, it may not be the fastest or the most reliable but it's free, it's available in source code and most of the electrical simulators inherited it's syntax. On the more technical side, spice3 uses good numerical algorithms (most commercial implementations have only strengthened them), implements most of the models for MOSFET submicron designs and has a powerful set of analyses. On the more "social" side, spice3 it's well introduced in the academic environment. 1.3 What is the project's goal? The project goal evolved during project development, at first the final goal was to develop a reliable, fast and friendly circuit simulator for mixed signal/mixed level simulation. During development it become apparent that to reach the goal a complete rewrite of spice was needed. Since it was almost absurd to rewrite Spice and since a new simulator was already under development: ACS (Al's Circuit Simulator), now GNUCap (GNU Circuit Analyis package), the goal of nspice became less utopical: merge spice, xspice and cider into a mixed-signal/mixed-level simulator that can be used as a reliable engine. 1.4 What you are going to do? We are going to develop a mixed-signal/mixed-level circuit simulation program integrating three different spice based simulators: Spice, Xspice and Cider. Xspice is a mixed-signal circuit simulator developed by GTRI (Georgia Tech Research Institute) at Georgia Institute of Technology. Xspice was originally developed as an extension over Spice3c1. Xspice introduces code modeling and a digital simulator into ngspice. The "home site" of Xspice is: http://users.ece.gatech.edu/~mrichard/Xspice/ Cider is a mixed-level circuit and device simulator based on Spice3f5 that couples a device simulator (DSIM) to Spice. More information can be found at: http://www-cad.eecs.berkeley.edu/Software/cider.html The merging process is done in parallel with bug fixing and improvement of the three simulators. The improvements are concentrated into 6 directives: + Compact models: the improvements in compact models will address mainly the implementation of additional effects not available in the original code. Device specific improvements are documented on ngspice's documentation and in the DEVICE file in project's tarball. Improvements that affects all devices already implemented are: "dtemp" option to set instance's temperature relative to the circuit one, "m" parallel multiplier to simulate an arbitrary number of instances of the same kind connected in parallel. Planned improvements are the development of a dynamic loading mechanism for compact models, to avoid loading in memory devices that are not needed, and SOAR (Safe Operating ARea) checks to identify situations in which devices are used out of their safety areas. + Simulator's analyses: this is a low priority area. Planned improvements include the implementation of parametric analyses, to analyse the behavior of the circuit as a parameter changes. Parameter sweep, Monte Carlo and Worst Case fall in this category. Network analysis (double bipole parameters extraction) is another planned improvement. + Numerical analysis code: the improvements within the numerical code must be done with extreme care. Planned improvements are, the replacement of the Sparse library with the latest code Kenneth Kundert has released, available at: http://sourceforge.net/projects/sparse Other planned improvements, but with very low priority, includes the use SuperLU library as possible Sparse library replacement (the library is available at http://crd.lbl.gov/~xiaoye/SuperLU) and the introduction of continuation metohds to aid DC convergence. + Spice language: The language used to input the circuit to the simulator has been extended and now allows the user to input parametric values for components (the numparam library). This is an experimental feature that will be improved in the future. Planned improvements includes the support for loading more than one circuit, netlist manipulation via command line (adding and removing instances) and the implementation of a command history using the libedit library, available at: http://sourceforge.net/projects/libedit + Frontend: The design of a new spice frontend has not been successful and now is orphaned, since the is no interests and many free and commercial frontends are available. There is no planned improvement here. + Documentation: Commercial simulators have very good manuals with tutorials, models equations explained, example of use, suggestions, etc. Spice came with little documentation. The Spice3f manual, available on the Internet 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. 1.5 Legal issues Ngspice merges three different simulators: spice and cider are covered with the "old" BSD license, Xspice by its own license. The ngspice license will be then the BSD license. Since the "old" BSD license is not compatible with the GPL library it is not possible to link the ngspice with GPL'ed code, as is written in: http://www.gnu.org/philosophy/bsd.html The group developing ngspice has written to Berkeley's copyright holders asking to change the license to the new BSD, which has the incompatibility removed, but without success. Ngspice will probably never be relased under the GPL license. 11..66.. WWhhaatt mmaaiilliinngg lliissttss eexxiisstt ffoorr nnggssppiiccee?? There are three mailing lists dedicated to the ngspice project. Send an empty message to the following addresses to get information on subscription. 11..77.. AArree tthhee mmaaiilliinngg lliissttss aarrcchhiivveedd aannyywwhheerree?? Yes, the list are archived. Look at the project's web site to access archives. 11..88.. WWhhaatt nneewwssggrroouuppss eexxiisstt ffoorr nnggssppiiccee?? None. Sorry. 11..99.. WWhheerree ccaann II ggeett aa ccooppyy ooff nnggssppiiccee?? You can download ngspice from: 11..1100.. WWhheerree sshhoouulldd II llooookk oonn tthhee WWoorrlldd WWiiddee WWeebb ffoorr nnggssppiiccee ssttuuffff?? Look at the official NG-Spice Web Page 11..1111.. WWhheerree sshhoouulldd II llooookk oonn tthhee WWoorrlldd WWiiddee WWeebb ffoorr SSppiiccee ddooccuummeennttaa-- ttiioonn?? 50 Circuits analyzed with SPICE 22.. DDEEVVEELLOOPPMMEENNTT 22..11.. WWhhaatt iiss tthhee ccuurrrreenntt vveerrssiioonn?? rework-14 (released on 10/12/2001) 22..22.. WWhhaatt aarree tthhee llaatteesstt ffeeaattuurreess iinn tthhee ccuurrrreenntt rreelleeaassee?? New features: +o New functions for vectors: vecmax (find max element in a vector), vecmin (find minimum element in a vector), vecd (differentiate a vector). +o BSIM 4 and support EKV models. Bug fixes: +o Some memory leaks closed. +o Error reporting more verbose 22..33.. WWhhaatt ddooeess iitt llooookk lliikkee?? This is a command line utility, no screenshots! 22..44.. WWhhoo aarree tthhee aauutthhoorrss ooff nnggssppiiccee?? The development is open to anyone who wish to contribute. People who contributed are (in alphabetical order): +o Daniele Foci +o Paolo Nenzi +o Arno Peters +o Serban-Mihai Popescu +o Emmanuel Rouat +o Michael Widlok This list is surely incomplete (due to open development group), there are many people who contributed with improvements, pieces of code, bug fixes, etc. If you have contributed and do not appear, write to: and ask to be included. 22..55.. HHooww ccaann II rreeppoorrtt aa bbuugg//rreeqquueesstt ffoorr aa ffeeaattuurree?? Look at the projects summary page: ngspice summary page 22..66.. HHooww ccaann II jjooiinn tthhee ddeevveellooppmmeenntt?? To join the development just code the feature you want to add and send your patch in the mailing list. Before you start coding check the latest development release of ngspice from our CVS. It might be that your feature has already been implemented. 33.. SSOOLLUUTTIIOONNSS TTOO CCOOMMMMOONN MMIISSCCEELLLLAANNEEOOUUSS PPRROOBBLLEEMMSS 33..11.. WWhhaatt ssyysstteemmss aarree ssuuppppoorrtteedd?? This is the updated list: Hardware O.S. Version Compiler Functional? ---------------- ----------------------- -------------- ----------- ???? HP-UX 10.10 gcc 2.95.2 yes IBM Risc 6000 ??? lcc no i386 Debian GNU/Linux 2.1 gcc 2.7.2 yes i386 Red Hat Linux 5.2 gcc 2.7.2 yes i386 SuSE Linux 6.0 gcc 2.7.2 yes i386 Linux (SuSE) gcc yes UltraSPARC Solaris 7 gcc yes UltraSPARC Solaris 7 SUN Workshop ? MS-Dos, VMS and MacOS are no longer supported. 33..22.. II ggeett eerrrroorrss wwhheenn II ttrryy ttoo ccoommppiillee tthhee ssoouurrccee ccooddee,, wwhhyy?? [not written yet] 33..33.. TThhiiss ddooccuummeenntt ddiiddnn''tt aannsswweerr mmyy qquueessttiioonn.. WWhheerree eellssee ccaann II llooookk ffoorr aann aannsswweerr?? Read old messages from the mailing list archive, search the web site or read the docs. Upgrade to the latest version of ngspice, many problems are fixed in the new versions. If you still can't find an answer, post your question to the mailing list. 44.. AADDMMIINNIISSTTRRAATTIIVVEE IINNFFOORRMMAATTIIOONN AANNDD AACCKKNNOOWWLLEEDDGGEEMMEENNTTSS 44..11.. FFeeeeddbbaacckk Send your comments about this F.A.Q. to: Paolo Nenzi . Send your comments about ngspice to: Paolo Nenzi . 44..22.. FFoorrmmaattss iinn wwhhiicchh tthhiiss FFAAQQ iiss aavvaaiillaabbllee This document is available only in ASCII format in the ngspice source package. 44..33.. AAuutthhoorrsshhiipp aanndd aacckknnoowwlleeddggeemmeennttss Parts of the questions and answers are originate from Paolo Nenzi. 44..44.. DDiissccllaaiimmeerr aanndd CCooppyyrriigghhtt This document is provided as is. The information in it is not warranted to be correct: you use it at your own risk.