ngspice Changelog

What's new in ngspice 42

Dec 28, 2023
  • New features:
  • New optional matrix solver KLU (select by 'option klu')
  • improve error messages (more verbose, user centric)
  • Add variable wr_onspace to allow printing the vector name with
  • one space delimiter
  • Re-write of the code model PWM generator
  • Linked list modtab has been enhanced by a hash table
  • modtabhash
  • Add a code model function cm_cexit(const int exitcode).
  • PSP103 model pspnqs103va is now standard
  • Add Isotel d_process xspice digital model (enable C models).
  • OSDI interface allows small signal noise simulation in Verilog-A
  • compact models compiled by current OpenVAF.
  • Add series resistance 1e-4 Ohms to diode model, if RS is not given
  • Generate seed numbers from a microseconds clock, not a seconds clock
  • Add functions ngSpice_LockRealloc and ngSpice_UnlockRealloc
  • Add new code model function cm_irreversible().
  • Add XSPICE code model d_cosim, a generic adaptor for digital cosimulation.
  • Script 'vlnggen' may be used with Verilator and d_cosim to create
  • XSPICE code models controlled by HDL code.
  • New interpreter commands strstr, strslice, fopen, fread and fclose.
  • Recognise *ng_script_with_params
  • Add a predefined variable 'skywaterpdk' to speed up circuit
  • loading and parsing.

New in ngspice 41 (Sep 9, 2023)

  • New features:
  • Add support for PSpice DLYLINE
  • eprvcd -a] -t timescale] node node ..., new options
  • Completely renew XSPICE d_osc code model
  • Read Touchstone file for S parameter simulation
  • Analog node changes in VCD file output
  • Add variable "csnumprec" to allow setting the precision of vectors
  • and variables
  • option nginfo to enable a status report during simulation (MS Windows GUI)
  • Returned status of the "shell" command available as interpreter
  • variable "shellstatus"
  • New default colors for Linux, macOS plot windows.
  • Update to commands setscale and compose
  • New function cvector for creating complex vectors
  • Add an option FREQ to the E- and G-sources
  • Improve error messages: More verbose, better user information
  • iplot: new option -w to set width for the window, and -d to set
  • starting of the plot
  • New dot command .libsave to save a parsed PDK for speeding up
  • later usage.
  • Speed up parsing of large PDKs (e.g. Skywater)
  • Update VBIC device model
  • Prepare noise capability of XSPICE code models
  • Command 'listing': new extension 'listing r' writes parsed netlist
  • without further formatting, ready to be be loaded and run again.
  • Bug fixes:
  • 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

New in ngspice 40 (Apr 1, 2023)

  • New features:
  • VBIC: Add optional parameters for determining the operation region
  • VBIC: Add bvbe, bvbc, bvce, bvsub as SOA parameters
  • Add inertial delay to all basic digital code models, make it available
  • for U devices
  • VDMOS default parameters are now similar to IRF540 IRF9540
  • Add function atanh to .control section
  • Add a scale factor 'a' (atto, 1e-18)
  • Bug fixes:
  • ngspice-40 is mostly a bug-fix release. In conjunction with KiCad and
  • shared ngspice, inappropriate user inputs have led to crashing ngspice.
  • bugs no. 331, 619, 620, 624 have been fixed
  • 9 crash bugs (double delete, access NULL pointer etc) removed which have
  • occurred mostly due to incomplete or faulty inputs.
  • Memory leaks removed

New in ngspice 39 (Feb 11, 2023)

  • New features:
  • OSDI interface integrated to read und simulate with
  • OpenVAF-compiled Verilog-A compact models delivers
  • access to open CMC models and many others.
  • Visual Studio 2022 is required.
  • ADMS is declared deprecated.
  • Extended support of digital U devices with f_logicexp and f_pindly,
  • ngspice now fully simulates 74xx ICs.
  • BSIM4 updated to 4.8.2
  • Examples for Laplace model x_fer added
  • String-valued parameters enabled
  • Add --enable-shortcheck as configure option to reduce check time
  • Add a function ddt (derivative versus time) to the B-source
  • The 8th parameter on a voltage or current source now is 'number of pulses'
  • Add a new compatibility mode xs (for XSPICE legacy behavior)
  • Add new functions for operators x**y or x^y
  • Add a user definable variable enable_noisy_r (for .spiceinit)
  • Replace obscure warning "singular matrix: check nodes mymode1 and mynode1"
  • by "singular matrix: check node mynode1", if both node names are equal.
  • Preprocessor flag PREDICTOR is enabled
  • Search path for *.osdi lib files extended: current, inputdir, relative
  • to executable
  • Bug fixes:
  • many bugs fixed and code improvements (see bugs 608 and up)
  • making error messages more verbose
  • memory leaks removed

New in ngspice 36 (Jan 3, 2022)

  • New features:
  • Add function 'integ' to control language.
  • New dot command .probe
  • for current and differential voltage measurements.
  • Allow math characters in node names.
  • Enable x/y contour plots for 2d Cider using gnuplot.
  • Update to bipolar model, incl. IBE and IBC parameters.
  • Add garbage collector to cpl code to remove any mem leakage.
  • Enable .save within subcircuits.
  • New compile scripts for macOS, for Apple clang and Homebrew gcc.
  • gcc allows compiling a fully featured ngspice (incl. OpenMP) on MAC.
  • Add RKM notation (e.g. 4k7) if compat mode LT.
  • Add 'ยต' as special character in netlists.
  • Add parameter 'r' to command 'listing' for (runable).
  • Fix several issues with CIDER.
  • New command 'wrnodev' to print matrix RHS in form of .ic = V(node_xx).
  • Transient operating pointadded to gmin and source stepping.
  • More SOA parameters on more devices (V, I, T, P).
  • Bug fixes:
  • many bugs fixed and code improvements (see bugs 557 and up)
  • making error messages more verbose
  • memory leaks removed

New in ngspice 35 (Aug 8, 2021)

  • New features:
  • Libtool version info for shared ngspice
  • Version info in sharedspice.h.
  • Replace double braces {{...}} by {(...)} in netlist (PSLT mode).
  • Add plotting of graphics in SVG format.
  • Setting variable 'nounits' allows suppressing the unit in a graph.
  • Update of macOS configure script.
  • In sharedspice API, convert all boolean variables to type integer for C++ compatibility.
  • Add geometry scaling to diode device model (level 3).
  • In PS mode exp function is limited to exp(14).
  • Speed enhancement for using SkyWater PDK under Linux.
  • Add option Cshunt which adds a capacitor to each circuit voltage node.
  • Diode device model now has a self heating option.
  • Allow opening files with names containing ANSI special characters.
  • Enable using parameters in .options lines.
  • For C and R devices enable value tokens like 4k7 or 1u2 in addition to 4.7k and 1.2u.
  • New XSPICE pswitch for internally replacing the vswitch.
  • Within a single run, allow multiple PS or SVG plots with different names.
  • Don't replace a device model name by a parameter, if both have the same names.
  • Analog delay code model 'delay'.
  • B source (ASRC) will acknowledge temp and dtemp instance parameters.
  • In CIDER printing of either ASCII or binary is supported.
  • PSP models now support NMOS and PMOS, update to parameters and examples.
  • E and G source TABLE function replaces by a B source pwl.
  • Re-enable making the old help system for Linux/Cygwin by --enable-help --enable-oldapps.
  • Enable the m parameter in E, G, B, R behavioral source/devices.
  • Bug fixes:
  • Many bugs fixed and code improvements (see bugs 539 and up)
  • Memory leaks removed

New in ngspice 34 (Mar 9, 2021)

  • New features:
  • Improved VBIC model
  • Get the vector type automatically, if db, ph, cph are applied.
  • Enable finding 'spinit' if its path contains spaces.
  • Increase buffer size for command 'listing' to 4096 bytes.
  • Add compatibility modes for EAGLE (ea) and Spectre (spe).
  • Add parameter 'plain' to 'plot' command.
  • Add variables 'plainplot', 'plainwrite', 'plainlet'
  • Add RF bipolar model HICUM 2.4 to the ngspice C sources.
  • Add charge formulation for non-linear capacitors.
  • Remove outdated code from contrib and unsupported directories.
  • When installing ngspice executable, do not install the headers.
  • Add support for tc1, tc2, and m for behavioral resistors,
  • Which use the B source internally.
  • Add supporting E_constant Vconst 0 TABLE {Max(V(DP)-V(GN),0)}=((20,120)).
  • Remove the XSPICE limitation of the current source flag "current".
  • Remove the XSPICE dependency of the phase parameter for the
  • Independent current source.
  • Drastically reduce the memory requirements if there is a PDK with
  • A lot of binning models (e.g. the SkyWater PDK).
  • Update to admst: Enhance the Verilog A compatibility.
  • Add most recent PSP102, Mextram504, BSIMBULK, and BSIMCMG models
  • To the ngspice adms sources.
  • Model checking for BSIM4.5 will only write to file if an excursion
  • Is detected (still to be added to the other BSIM models)
  • Many code updates not visible to the user, but enhancing stability
  • And efficiency
  • Bug fixes:
  • Many bugs fixed and code improvements (see bugs 523 and up)
  • Memory leaks removed

New in ngspice 32 (May 4, 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 stepless differentiable corners.
  • Get a variable directly from an input file with i/o redirection
  • Make 64 bit compilation the standard
  • On Windows VisualStudio compilation we support only VS2019
  • Add function 'conj'
  • Improved error messages for 'meas' command
  • Improved PSPICE compatibility
  • VDMOS model now allows electro-thermal simulation
  • Optionally (instance flag 'thermal') 2 thermal nodes tj and tcase are added to the device instance
  • Enable utf-8 and UNICODE for string handling (maybe switch off by --disable-utf8)
  • Vastly redisigned plotting capability: vertical text for labeling y axis, independent color selection for background, grid/text and graphs, independent width selection for grid and graph, access to UNICODE fonts, characters may become ticmarks (variable 'ticchar'), RGB color tables included, variable 'nolegend' switches off the legend
  • Add variables 'oscompiled'
  • Command 'let' to allow default low and high indices
  • Upon calculating the operating point, true gmin stepping added
  • Free the internal control structure memory by sending ngSpice_Command(NULL)
  • No interrupt handling (SIGINT) in shared ngspice
  • Limit the exp function to exp(14)
  • Event simulation output data may be selected by command 'setplot'
  • Many code updates not directly visible to the user, enhancing stabilityand efficiency
  • Bug fixes:
  • many bugs fixed and code improvements (see bugs 427 and up)
  • memory leaks removed

New in ngspice 31 (Sep 22, 2019)

  • New features:
  • if a subcircuit is defined more than once, only read the first one and discard the others
  • vbic model implementation including self-heating effect
  • Enable the file input as additional search path for .include files also for non-Windows OSs
  • add scope to decks and subcircuits (not yet fully implemented)
  • enable 'res' as valid resistor model identifier
  • Add variable 'nostepsizelimit' to relieve step size limit defined by TSTEP of the .tran command
  • Windows GUI: make GUI more responsive
  • if the comaptibility mode is PS, LTPS or LTPSA, '$' is treated as a valid character, not as
  • end-of-line comment delimiter
  • allow very short version information with new options -v and -d to 'version' command
  • the PSPICE area token for a device instance may be not only a number, but also a parametrized
  • token like {tok}
  • Windows GUI: New history buffering
  • Windows GUI: Added scrolling to input window
  • update to hicum version 2.40
  • allow " around netnames for .plot and .print commands
  • command 'setcs': like command 'set' but case sensitive
  • linearized cutout of an original vector by defining the vectors lin-tstart, lin-tstop,
  • and lin-tstep before sending the 'linearize' command
  • new examples: inverters and ring oscillator using SOI
  • option norefvalue' to suppress printing the reference value
  • Bug fixes:
  • many bugs fixed and code improvements (patches 33 - 64, bug tracker nos. 390,
  • 394, 395, 403, 404, 408)
  • memory leaks removed

New in ngspice 24 (May 28, 2012)

  • New features:
  • csparam allows to tranfer a param into a vector in .control ... .endc
  • functions floor and ceil
  • syntax Gxxx n1 n2 TABLE {expression} = (x0, y0) (x1, y1) (x2, y2)
  • syntax Gxxx n1 n2 value={equation} or Exxx n1 n2 value={equation}
  • variable strict_errorhandling to exit ngspice with exit code 1
  • if any error occurs during circuit parsing
  • command altermod allows reading from file
  • command "devhelp" to show available devices and describe device parameters
  • command "inventory" to print the number of istances of each device.
  • function cph(vec) delivers phase from a vector without jumps at +-PI
  • enable 64 bit compilation in MS Visual Studio
  • adms3 flag to compile with (experimental) adms code
  • still very experimental pss code
  • command 'remcirc' to remove a circuit from the list
  • command 'wrdata' aknowledges appendwrite and prints complex variables
  • allow comment lines inside of command files
  • path variable NGSPICE_INPUT
  • Filesource' code model
  • Bug fixes:
  • More on prototypes, type casts, reordering of functions, compiler warnings
  • fix a numerical problem in the hisim2 an hisimhv models
  • plot i(vdd) from a loaded rawfile
  • fix the guard for device generated internal nodes (via CKTmkVolt())
  • reduce memory leaks for command 'reset'
  • parameter processing for nested .subckt
  • bsim4/b4noi.c: correct init the correlated noise slot in noiseDens and lnNdens vector
  • Many small bugs