Ngspice F.A.Q.Version 2.1 (ngspice-27 release) Maintained by Paolo Nenzi, Holger Vogt Last update: 08-23-2017 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 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 Discussion groups 1.9 What mailing lists exist for ngspice? 1.10 Are the mailing lists archived anywhere? 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? 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 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" (as they say) initially under the guide of Donald O. Peterson. - Cider is a mixed-level simulator that already includes Spice3f5 and adds a device simulator to it: DSIM. Cider couples the circuit level simulator to the device simulator to provide greater simulation accuracy (at the expense of greater simulation time). Critical devices can be described with technology parameters (numerical models) and non critical ones with the original spice's compact models. - Xspice is an extension to Spice3 that provides code modeling support and simulation of digital components through an embedded event driven algorithm. The NG prefix has lot of meanings: Next Generation, New (and) Good, etc. Choose or invent the one you prefer. The heart of the project is the ngspice program, with its tremendous advancements. 1.2 What is sharedspice ? 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. This has not been used and tested for some time. 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 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. Spice3 is based on proven numerical algorithms (most commercial implementations have only strengthened them), implements most of the models for MOSFET submicron design and has a powerful set of analyses. The readily availability of its source code in the past made this simulator the de-facto standard. 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 simulator available. This means fixing bugs, adding new features but always in the spice3 framework. Achieving compatibility with commercial spice based simulators and provide users the latest devices models are important goals of the project. Improvements in the postprocessing (data handling capabilities) and user interface are other goals. 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 day by developers writing on the lists. Ngspice development activity can be summarized in 3 points: + 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 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. + Compact models: The interest in using ngspice is intimately connected to the available models. To provide the latest models available for active and passive devices is a fundamental goal of the project. In this direction we are integrating ADMS model compiler into ngspice. + Documentation: Commercial simulators come with very good manuals containing tutorials, description of models equations, example of use, suggestions, etc. Spice came with little documentation. The 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. 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.7 Legal issues 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.8 Discussion groups Vivid discussion are going on in the ngspice discussion groups. They are found at https://sourceforge.net/p/ngspice/discussion/ A new group 'ngspice tips and examples' will present interesting ngspice tips (your input is welcome!) 1.9 What mailing lists exist for ngspice? Mailing lists have somewhat lost importance compared to the discussion groups described above. There are two general mailing lists dedicated to the ngspice project. Users mailing list: This list is for ngspice users. Examples, problems, bug reports and general discussion on ngspice can be sent here. Developers mailing list: 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. Send an empty message with Subject "help" to the following addresses to get instructions. Send an empty message to the following address to Subscribe. Documentation about the user interface of these mailing lists can be found at: http://www.gnu.org/software/mailman/mailman-member 1.10 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/p/ngspice/mailman/ 1.11 Where can I get a copy of ngspice? You can download ngspice from: http://sourceforge.net/projects/ngspice/files/ng-spice-rework/ 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.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 Others docs are assembled at: http://ngspice.sourceforge.net/literature.html 2. DEVELOPMENT 2.1. What is the current version? The latest version released is: * ngspice-27 (released on 28/08/2017) 2.2. What are the latest features in the current release? - New features: + check for correct inductor coefficients + add variable 'win_console' + --enable-relpath configure flag to set preprocessor flag HAS_RELPATH + sets search path for spinit relativ to current directory + shared ngspice: search path for spinit: current dir, HOME dir, USERPROFILE dir + new function stddev to calculate the standard deviation of all elements of a vector + xspice digital n-input x m-output look-up table gate + xspice digital model d_lut (digital n-input look-up table gate) + add variable $sharedmode (if shared ngspice is running), to be used in scripts + enable msys2 for mingw compilation + OMP support for bsim3v3.24 model + bsim3v3.24: add model parameter lmlt (Channel length scaling) + OMP support for BSIM4.5 model + update and extension of command 'wrdata' + option xmu to set damping in trapezoid integration + command 'linearize' will take time data from transient analysis vector if no circuit is loaded + two new commands: edisplay and eprvcd + 'edisplay' will show a list of all event nodes + 'eprvcd' will print all event nodes in vcd format + XSPICE 2D and 3D table models + add variable 'batchmode' which is set when command line option `-b' is active + enable backquote substitution for Visual Studio console apps + update how-to-ngspice-vstudio.txt + update visualc directory and project files, add XSPICE code model generation by VS2015 + allow access to 4 GB memory of 32 bit ngspice on 64 bit Windows, 8 TB for 64 bit ngspice + new variable `interactive' + xspice, introduce cm_message_printf() + add variable `width' to command "print line ..." + support msys2 + favor exponential temperatur equation if all parameters tc1, tc2 and tce are given for R + move libfftw3 sideways out of the ngspice tree + remove visual studio 2008 .vcproj files + visualc/sharedspice.vcxproj, updated and migrated with visual studio 2015 + `E..table {expr} {pairs}', `G..', allow an optional `=' after `table' + `E..value=', `G..value=', allow `=' being optional + introduce TCE, exponential temperature coefficient for R + allow `temper' to be recognised when preceded by '=' + allow cross-compilation, especially for MinGW-w64 + allow "plot xlog ylog" (equiv to "plot loglog") + extend qa test to hisimhv version 2 + update hisimhv model to version 2.2.0 + update hisim model to version 2.8.0 + .control variable "sqrnoise" to deliver noise data in squared representation + noise analysis, deliver results in V/sqrt(Hz) and A/sqrt(Hz) + add delvt0 for bsim4 models + bug fixes for diode model + allow a xspice circuit with exclusively xspice event nodes + man pages for cmpp ngmakeidx and ngproc2mod + implement `nint()' + everywhere: ln to the base e, log to the base e, log10 to the base 10 + allow an optional '=' in ".func foo() = {expr}" + bsim4, update to version 4.8 + update hisimhv to version 1.2.4 + cmc quality check for bsim3 model + nested indexing for vectors + option savecurrents to save current through all devices + option interp to plot interpolated raw file data + MS VS 2010 project file added for compatibility + XSPICE: new callback function cm_get_path - Bug fixes: + many, many ... as always 2.3. What does it look like? Ngspice, as the original Spice3 (and Xspice and Cider) is a command line simulator, but with a graphics output capability. 2.4. Who are the authors of ngspice? The development is open to anyone who wish to contribute. If the original Spice3 was made with the contribution of "a cast of thousand", ngspice can only increase that number. An incomplete list of contributor makes the "acknowledgements" page of the ngspice manual. 2.5. How can I report a bug/request for a feature? The ngspice summary page (hosted on Sourceforge) has bug-reporting, feature-request and bugs trackers. You can use them or subscribe to mailing lists and post there. The former is preferred since almost it allows to track all necessary actions upon a bug. The web site at http://ngspice.sourceforge.net/bugrep.html will give you more details. 2.6. How can I join the development? 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 git repository. It might be that your feature has already been implemented. There is no bureaucracy here. 3. SOLUTIONS TO COMMON MISCELLANEOUS PROBLEMS 3.1. What systems are supported? Ngspice is written in C, and uses some GNU extensions, then you need a GNU C compiler and a UNIX environment to compile it. Ngspice can be compiled under Windows using the mingw or cygwin environment as well as MS Visual Studio. 3.2. I get errors when I try to compile the source code, why? This is a one-million-euros question :). Write to the user's discussion group describing the problem and providing information on the type of hardware, the flavour of operating system. 3.3. This document didn't answer my question. Where else can I look for an answer? 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 lists. 4. ADMINISTRATIVE INFORMATION AND ACKNOWLEDGEMENTS 4.1. Feedback Send your comments about this F.A.Q. to: https://sourceforge.net/p/ngspice/discussion/127605/ 4.2. Formats in which this FAQ is available This document is available only in ASCII format in the ngspice source package. 4.3. Authorship and acknowledgements Parts of the questions and answers are originate from Paolo Nenzi and are updated by Holger Vogt. 4.4. Disclaimer and Copyright This document is provided as is. The information in it is not warranted to be correct: you use it at your own risk.