From cf9b889bb2a8e694d4ffb4efaa529a65093d40d4 Mon Sep 17 00:00:00 2001 From: Holger Vogt Date: Tue, 9 Jul 2024 17:36:38 +0200 Subject: [PATCH] Update the Information files for ngspice-43 --- ANALYSES | 6 ++--- AUTHORS | 1 + BUGS | 6 ----- DEVICES | 6 ++--- FAQ | 12 ++++----- INSTALL | 81 +++++++++++++++++++++++++------------------------------- NEWS | 49 +++++++++++++++++++++++++++++++--- README | 11 ++++---- 8 files changed, 100 insertions(+), 72 deletions(-) diff --git a/ANALYSES b/ANALYSES index 52dd83c69..d4d3a1623 100644 --- a/ANALYSES +++ b/ANALYSES @@ -1,5 +1,3 @@ -12345678901234567890123456789012345678901234567890123456789012345678901234567890 - ANALYSES ======== @@ -46,7 +44,9 @@ Table of Contents 2 Operating point analysis (OP) The operating point analysis determines the dc operating point of the - circuit with inductors shorted and capacitors opened. + circuit with inductors shorted and capacitors opened. If a simple matrix + solution fails, two versions of gmin stepping may be followed by source + stepping and finally an OP search by a transient simulation. 3 Operating point sweep Analysis (DC) diff --git a/AUTHORS b/AUTHORS index df0a4883f..72f545d33 100644 --- a/AUTHORS +++ b/AUTHORS @@ -15,6 +15,7 @@ Phil Barker, Steven Borley, Krzysztof Blaszkowski, Stuart Brorson, +Árpád Bűrmen, Alessio Cacciatori, Mansun Chan, Wayne A. Christopher, diff --git a/BUGS b/BUGS index b338848fb..8d37147a3 100644 --- a/BUGS +++ b/BUGS @@ -30,9 +30,3 @@ OPEN BUGS: algorithms, does not give correct results for all tested input files. The effort to correct that issue seems to be large. - -* voltage (and current) controlled switches need better timing - - The controlled switches (SW, CSW), which still stem from the original - spice3f5 implementation, sometimes lead to wrong results when on and off - ramp times differ considerably. diff --git a/DEVICES b/DEVICES index a64e2e4aa..c6d3e4236 100644 --- a/DEVICES +++ b/DEVICES @@ -827,16 +827,16 @@ will be updated every time the device specific code is altered or changed to ref 13.8 r2_cmc More models are available at https://github.com/dwarning/VA-Models, - user compiled models are possible as well (See ngspice manual, chapter 13). + user compiled models are possible as well (See ngspice manual, chapter 9). 14. XSpice code models - more than 100 models are available, please see ngspice manual chapt. 12 + more than 100 models are available, please see ngspice manual chapt. 8 15. Digital Building Blocks (U instances) U instances are digital primitives which may be used (in proper combination) to model digital devices, e.g. from the 74xx or 40xx families. ngspice maps them onto XSPICE models, which allows a fast event based simulation. Please see the - ngspice manual, chapter 14. + ngspice manual, chapter 10. diff --git a/FAQ b/FAQ index 0571cbb00..93576c300 100644 --- a/FAQ +++ b/FAQ @@ -96,7 +96,7 @@ 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 recently. + This has not been used and tested for some time now. 1.4 Why resurrecting Berkeley's Spice? @@ -135,7 +135,7 @@ 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. + foundries. Some compatibility switches are available. + Compact models: The interest in using ngspice is intimately connected to the available models. To provide the latest models available for @@ -256,7 +256,7 @@ The latest version released is: - ngspice-41 (released on Aug 13 2023) + ngspice-43 (released on July 14 2024) 2.2. What are the latest features in the current release? @@ -308,8 +308,8 @@ 3.1. What systems are supported? - Ngspice is written in C, and uses some GNU extensions. You may use - a GNU C compiler and a LINUX environment to compile it. Ngspice can + Ngspice is written in C, C++, and uses some GNU extensions. You may use + a GNU C/C++ compiler and a LINUX environment to compile it. Ngspice can be compiled under Windows using the mingw or cygwin environment as well as MS Visual Studio. It will readily compile on macOS. FreeBSD or Solaris will do, but are not officially supported. @@ -356,7 +356,7 @@ 4.4. Disclaimer and Copyright - Copyright: Holger Vogt, 2023 + Copyright: Holger Vogt, 2024 License: Creative Commons Attribution Share-Alike (CC-BY-SA) v4.0. This document is provided as is. The information in it is not warranted to be correct: you use it at your own risk. diff --git a/INSTALL b/INSTALL index 19866cfb1..c0f082586 100644 --- a/INSTALL +++ b/INSTALL @@ -56,7 +56,7 @@ This file describes the procedures to install ngspice from sources. library and ngspice as a tcl/tk library. Compilation to 64 bit is recommended and available per default in - the ./compile_linux.sh compule script. 32 bit might be possible, + the ./compile_linux_new.sh compile script. 32 bit might be possible, but is not tested. The following software must be installed in your system to compile @@ -64,7 +64,8 @@ This file describes the procedures to install ngspice from sources. output): bison, flex, X11 headers and libs, Xaw, Xmu, Xext, Xft, FontConfig, Xrender, freetype headers and readline. - Typically one needs the headers (e.g. libX11-devel) and the libs (e.g. libX11-6). + Typically one needs the headers (e.g. libX11-devel) and the libs (e.g. libX11-6) + of the packages mentioned above. ngspice as a shared library (no graphics and no command-line interfaces) will need bison and flex only. @@ -73,11 +74,11 @@ This file describes the procedures to install ngspice from sources. internal fft algorithms. If you want to compile the source from the git repository, or if you want to - use the compile script ./compile_linux.sh, you will need additional software: + use the compile script ./compile_linux_new.sh, you will need additional software: autoconf, automake, libtool. The following software may be needed when enabling additional features: - editline, tcl/tk. + editline (as a replacement for readline), tcl/tk (when compiling tclspice). Please have a look at the current ngspice manual, downloadable at http://ngspice.sourceforge.net/docs.html, which gives you much more @@ -86,20 +87,20 @@ This file describes the procedures to install ngspice from sources. For compiling ngspice as a shared library, see section 1.4. -1.2 Install from tarball (e.g. ngspice-41.tar.gz) +1.2 Install from tarball (e.g. ngspice-43.tar.gz) This covers installation from a release distribution (for example - ngspice-41.tar.gz, the so called tar ball). + ngspice-43.tar.gz, the so called tar ball). After downloading the tar ball to a local directory, unpack it by command: - $ tar -zxvf ngspice-41.tar.gz + $ tar -zxvf ngspice-43.tar.gz Now change directories in to the top-level source directory (where this INSTALL file can be found). The most comfortable way to compile ngspice is running the compile script - compile_linux.sh within the terminal window by ./compile_linux.sh. The + compile_linux.sh within the terminal window by ./compile_linux_new.sh. The script has to be declared as 'executable', and admin rights are required to allow the installation of ngspice. @@ -110,31 +111,27 @@ This file describes the procedures to install ngspice from sources. $ mkdir release $ cd release - $ ../configure --with-x --with-readline=yes --disable-debug + $ ../configure --with-x $ make $ sudo make install The default install directory for executables is /usr/local/bin, the XSPICE code models will be installed in /usr/local/lib/ngspice. Some distros use lib64 - instead. - - A simple ../configure might be sufficient for a basic ngspice, but the preferred - arguments to ../configure are - --with-x --with-readline=yes and --disable-debug - providing you with a comfortably working ngspice. - - See the section 1.5 titled 'Advanced Install' for instructions about additional arguments - that can be passed to ../configure to customise the build and installation. + instead. The following options are now included automatically: readline, openmp, + osdi, xspice. Only CIDER has to be selected as an extra option. A fully featured ngspice on LINUX may be obtained with the following commands: $ mkdir release $ cd release - $ ../configure --with-x --enable-xspice --disable-debug --enable-cider --with-readline=yes --enable-predictor --enable-osdi --enable-openmp + $ ../configure --with-x --enable-cider --enable-predictor $ make 2>&1 | tee make.log $ sudo make install To remove the executables and libraries from the install directory, you may call $ sudo make uninstall + + To disable one of the already inlcuded options, you may call --with-readline=no, or + --disable-openmp, --disable-osdi, --disable-xspice 1.3 Install from the git repository @@ -155,7 +152,7 @@ This file describes the procedures to install ngspice from sources. directory, so to e.g. maintain separate debug and release versions. The most comfortable way to compile ngspice is running the compile script - compile_linux.sh within the terminal window by ./compile_linux.sh. Admin + compile_linux_new.sh within the terminal window by ./compile_linux_new.sh. Admin rights are required to allow the installation included in the script. If you want to copile ngspice manually, you may run @@ -163,7 +160,7 @@ This file describes the procedures to install ngspice from sources. $ ./autogen.sh $ mkdir debug $ cd debug - $ ../configure --with-x --with-readline=yes + $ ../configure --with-x $ make $ sudo make install @@ -178,7 +175,7 @@ This file describes the procedures to install ngspice from sources. $ ./autogen.sh $ mkdir release $ cd release - $ ../configure --with-x --enable-xspice --disable-debug --enable-cider --with-readline=yes --enable-openmp --enable-predictor --enable-osdi + $ ../configure --with-x --enable-cider --enable-predictor $ make 2>&1 | tee make.log $ sudo make install @@ -189,7 +186,7 @@ This file describes the procedures to install ngspice from sources. 1.4 ngspice as a shared library The relevant configure options for the ngspice shared library are: - $ --with-ngshared --enable-xspice --disable-debug --enable-cider --enable-osdi --enable-openmp + $ --with-ngshared --enable-cider Typically the two aliases libngspice.so, libngspice.so.0 and the compiled library libngspice.so.0.0.1 are made. The install locations depend on @@ -217,15 +214,7 @@ This file describes the procedures to install ngspice from sources. 1.5.1 Most useful options: - --enable-osdi - Add the OSDI interface to ngspice. This interface allow to dynamically - load compiled Veriloag-A compact models. Compiling is done with - OpenVAF. Thus for the first time ngspice has access to modern - device models like BSOMBULK or BSIM_CMG. - - --enable-cider - Cider is a mixed-level simulator that couples Spice3 and DSIM - to simulate devices from their technological parameters. +(the following are already included) --enable-xspice Enable XSpice enhancements, @@ -240,11 +229,18 @@ This file describes the procedures to install ngspice from sources. Parallelization is done by OpenMP, for MOS models in BSIM3.3.0 BSIM4.6.0 and and BSOI4 only. See the ngspice manual for details. - --disable-debug - This option will remove the '-g' option passed to the compiler - and add -O2 optimization (instead of default O0). - This speeds up simulating significantly, and is recommended for - normal use. + --enable-osdi + Add the OSDI interface to ngspice. This interface allow to dynamically + load compiled Veriloag-A compact models. Compiling is done with + OpenVAF. Thus for the first time ngspice has access to modern + device models like BSOMBULK or BSIM_CMG. + + +(the following have to be selected to become available) + + --enable-cider + Cider is a mixed-level simulator that couples Spice3 and DSIM + to simulate devices from their technological parameters. --enable-oldapps The old apllications ngsconvert ngproc2mod ngmultidec and ngmakeidx @@ -254,11 +250,11 @@ This file describes the procedures to install ngspice from sources. Disable using fftw fast fourier transform library. Use internal fft instead. Default is 'yes'. - --with-editline=yes Enables the use of the BSD editline library (libedit) instead of readline. See https://www.thrysoee.dk/editline/ + (requires --with-readline=no) --enable-shortcheck Enables a 'make check' with strongly reduced runtime. Besides some @@ -494,7 +490,7 @@ This file describes the procedures to install ngspice from sources. automake, libtool, FLEX and BISON, all available with pacman in MSYSS2). Some links are given below which describe the procedures. - Installing from the tarball, e.g. ngspice-36.tar.gz, is simple: After + Installing from the tarball, e.g. ngspice-43.tar.gz, is simple: After expanding, you may just run ./compile_min.sh from the ngspice directory. The default installation location of ngspice is the Windows path @@ -517,16 +513,11 @@ This file describes the procedures to install ngspice from sources. $ make $ make install - The most useful options are: - --enable-xspice - --enable-cider - --disable-debug (-O2 optimization, no debug information) - A fully featured ngspice on Windows may be obtained with the following commands: $ ./autogen.sh $ mkdir release $ cd release - $ ../configure --with-wingui --enable-cider --disable-debug --enable-openmp --enable-xspice --enable-osdi + $ ../configure --with-wingui --enable-cider --disable-debug $ make install However, to compile code extracted from the git repository the procedure is diff --git a/NEWS b/NEWS index 4def20b82..9e733eba3 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,44 @@ +Ngspice-43, July 14th, 2024 +============ +- New features: + + Update to VBIC model: Enable self-heating in AC sim. + + Enable single terminal n devices (Verilog-A modules) + + Add path or filepath (without file name) to variable sourcepath, + when calling command 'source' + + B source pwl, enable monotonic negative growth of abscissa values. + + Enable coupling of more than 2 inductots in a single line: + K1 L1 L2 L3 L4 L5 0.99 + + Enable reading library search paths from env. variables like + .lib "$ENVS1/$ENVS2/libraries/sky130_fd_pr/latest/models/sky130.lib.spice" tt + + Add '.save nosub' to suppress storing the node vectors from inside + of subcircuits. + + Transform nested braces {{}} into {()} also in .param statements + + Save path to .include file, add it to the search paths + for loading the next .include file. + + In ./configure, the following options are now standard: + non-debug, osdi, xspice, readline, klu, openmp + + in case of netlist errors, try identifying the file and line number + of its origin. + + Add diode model parameters, Level 3, for diode breakdown voltage + as used in sky130 PDK + + New environmental variable NGSPICE_OSDI_DIR may contain + a path for *.osdi files (compiled Verilog-A models) + + optran 0 0 0 0 0 uic may be used to load initial conditions (.ic=xxx + statements) without starting an op iteration. + + Add variable ps_scan_gates_optimize (default 1). If < 1, then turn off + the optimizations in scan_gates. + + new exported function ngSpice_nospinit() to set variable no_spinit + + Update to JFET model (add emission coefficient) + + MOS models 1...3: updated noise code + + Update to fft window functions, scaling etc. + + Add transformer model with params on the .subckt line + + timing .model statements at the global level for subckts with U* instances + + variable 'rsdiode' sets RS of a diode, if not given in the .model line. + + Update the AM voltage/current sources: enable amplitude + modulation, carrier suppression. + + Remove some ADMS remnants. + + Ngspice-42, Dec 24th, 2023 ============ - New features: @@ -27,7 +68,6 @@ Ngspice-42, Dec 24th, 2023 + Add scripts for running the paranoia tests in parallel on Linux with valgrind. - Ngspice-41, Aug 13th, 2023 ============ - New features: @@ -60,7 +100,8 @@ Ngspice-41, Aug 13th, 2023 + Several crash bugs (double delete, access NULL pointer etc) removed which have occurred mostly due to incomplete or faulty inputs. + Memory leaks for CIDER removed - + + Ngspice-40, Mar 31st, 2023 ============ - New features: @@ -153,7 +194,7 @@ Ngspice-38, Oct 30th, 2022 Ngspice-37, May 22nd, 2022 ============ - New features: - + Reduce XSPICE memory consumption dramatically + + Reduce XSPICE memory consumption dramatically (> factor of 10). + Add source stepping to B source + Add 'esave' command to save only specific event nodes. @@ -320,7 +361,7 @@ Ngspice-32, Apr 25th, 2020 - New features: + Add resource info on memory used and available for macOS + redesign of memory monitoring - + Replace B source pwl by XSPICE PWL Controlled Source that has smooth rounded and + + Replace B source pwl by XSPICE PWL Controlled Source that has smooth rounded and stepless differentiable corners. + Get a variable directly from an input file with i/o redirection + Make 64 bit compilation the standard diff --git a/README b/README index 665622acf..21b5955e0 100644 --- a/README +++ b/README @@ -5,16 +5,17 @@ Ngspice is a mixed-level/mixed-signal circuit simulator. Its code is based on three open source software packages: Spice3f5, Cider1b1 and Xspice. -Spice3 does not need any introduction, is the most popular circuit -simulator. In over 30 years of its life Spice3 has become a de-facto -standard for simulating circuits. +Spice3 does not need any introduction, it is the ancestor of many +commercial or open source circuit simulators. In over 30 years +since its existence it has set several de-facto standards for +simulating circuits. -Cider couples Spice3f5 circuit level simulator to a device simulator +Cider couples the Spice3 circuit level simulator to a device simulator to provide greater simulation accuracy of critical devices. So you may create device models for diodes, bipolar, JFet and MOSFETs derived from their cross-sectional structures and materials. -Xspice is an extension to Spice3C1 that provides code modelling support +Xspice is an extension to Spice3 that provides code modelling support and simulation of digital components through an embedded event driven algorithm.