2. News

2.1. Vx.y.0 (whishes)

  • The circuit API is actually low level. It is fastidious to work with and error-prone. Skidl has a very good approach to make the connections between elements. A clever idea is to make the connection through loop, e.g. gnd & C1 & (R1 | R2) & D1 & vcc.

  • Improve Spice library handling, e.g. we have to read the library code to know how to map the pins, etc.

  • Improve the Spice parser.

  • Unit should be provided by a third party. We need a library that works well with Spice.

2.2. V1.6.0 (development release)

  • New Simulation API

    # build a circuit
    # instantiate a simulator
    simulator = Simulator.factory()
    # or
    simulator = Simulator.factory(simulator='ngspice')
    # same as
    simulator = Simulator.factory(simulator='ngspice-shared')
    # create a simulation, it corresponds to the Spice code part with lines starting with ".someting ..."
    simulation = simulator.simulation(circuit, temperature=25, nominal_temperature=25)
    # define a analysis and run it
    analysis = simulation.transient(step_time=ac_line.period/200, end_time=ac_line.period*50, log_desk=True)
    # analysis is now Pickable
  • Simulation output is now Pickable

  • KiCadTools a proof of concept module to read KiCad 6 .kicad_sch schema file and compute the netlist. This module can be used to perform any kind of processings on a KiCad schema. It is actually hosted in the source but could become a standalone project. For PySpice, it provides a very flexible way to draft a circuit with the help of KiCad and then generate the netlist without using the netlist export feature of KiCad. And thus leverage the writing of fastidious cicruit.

  • The most common PySpice parts can be imported from from PySpice import ...

  • Logging setup code cleanup

2.3. V1.5.0 (production release) 2021-05-15

  • Support Ngspice up to version 34

  • Renamed custom dunders “__dunder__” to “CONSTANT” or “_private” class attributes

  • Fixed typo in documentation (thanks to endolith and brollb)

  • Add DC temperature sweep support #272 (thanks to Fatsie)

  • PWL support improvements #271 (thanks to Fatsie)

  • Assign units on creation of temperature-sweep vectors #263 (thanks to ARF1)

  • Prevent memory leaks by freeing ngspice command log #260 thanks to ARF1)

  • Performance optimization: dispatch multiple alter commands jointly #259 (thanks to ARF1)

  • Added spice library support #258 (thanks to Fatsie)

  • Allow to specify DC value for PWL #257 (thanks to Fatsie)

  • Support for .nodeset type initial condition #256 (thanks to Fatsie)

  • Fix accuracy problems #254 (thanks to sotw1957)

  • Changes to make it easier to use PySpice with a large archive of SPICE models medium diff #249 (thanks to xesscorp)

  • Netlist.py: Fix wrong method when joining parameters during netlist parse #245 (thanks to cyber-g)

  • Unit: add Pickle support

  • Add Parser code from #136 (thanks to jmgc) but not yet merged

  • Unit: add np.mean

2.4. V1.4.3 2020-07-04

A huge effort, thanks to @stuarteberg Stuart Berg, has been made to make Ngspice and PySpice available on Anaconda (conda-forge) for the Window, OSX and Linux platforms. Thanks to the conda-forge continuous integration platform, we can now run unit tests and the examples on theses platforms automatically. Hope this will make the software more robust and easier to run !

  • PySpice is now available on Anaconda(conda-forge) as well as a wheel on PyPI

  • Added a post installation tool to download the Ngspice DLL on Windows and to check the installation. It should now simplify considerably the PySpice installation on Windows.

  • This tool can also download the examples and the Ngspice PDF manual.

  • On Linux and OSX, a Ngspice package is now available on Anaconda(conda-forge). Note that theses two platforms do not download a binary from Ngspice since a compiler can easily be installed on theses platforms.

  • Updated installation documentation for Linux, the main distributions now provide a ngspice shared package.

  • Added a front-end web site so as to keep older releases documentation available on the web.

  • fixed and rebuilt all examples (but mistakes could happen …)

  • examples are now available as Python files and Jupyter notebooks (but some issues must be fixed, e.g. due to the way Jupyter handles Matplotlib plots)

  • support NgSpice 32 API (no change)

  • removed @substitution@ in PySpice/__init__.py, beacause it breaks pip install from git

  • fixed some logging spams

  • fixed NonLinearVoltageSource

  • fixed Unicode issue with °C (° is Extended ASCII)

  • fixed ffi_string_utf8 for UnicodeDecodeError

  • fixed logging formater for OSX (removed ANSI codes)

  • reworded “Invalid plot name” exception

  • removed diacritics in example filenames

  • cir2py has been converted to an entry point so as to work on all platforms

  • updated Matplotlib subplots in examples

  • added a unit example

  • added a NMOS example (thanks to cyber-g) cf. #221

2.5. V1.4.0 2020-05-05

This release is yanked due to broken Windows support.

  • fixed nasty issue with NgSpice shared for setlocale(LC_NUMERIC, “C”); cf. #172

  • fixed AC AC_MAG AC_PASAE SIN for new NgSpice syntax

  • fixed initial_state for VoltageControlledSwitch

  • fixed LosslessTransmissionLine #169

  • fixed docstrings for element shortcut methods (thanks to Kyle Dunn) #178

  • fixed parser for leading whitespace (thanks to Matt Huszagh) #182

  • fix for PyYAML newer API

  • support NgSpice 31 API (no change)

  • added check for CoupledInductor #157

  • added check-installation tool to help to fix broken installation

  • added pole-zero, noise, distorsion, transfer-function analyses (thanks to Peter Garrone) #191

  • added .measure support (thanks to ceprio) #160

  • added log_desk parameter to CircuitSimulator

  • added listing command method to NgSpiceShared

  • added Xyce Mosfet nfin #177

2.6. V1.3.2 2019-03-11

  • support Ngspice 30 and Xyce 6.10

  • fixed NgSpice and Xyce support on Windows 10

  • bug fixes

2.7. V1.2.0 2018-06-07

  • Initial support of the Xyce simulator. Xyce is an open source, SPICE-compatible, high-performance analog circuit simulator, capable of solving extremely large circuit problems developed at Sandia National Laboratories. Xyce will make PySpice suitable for industry and research use.

  • Fixed OSX support

  • Splitted G device

  • Implemented partially A XSPICE device

  • Implemented missing transmission line devices

  • Implemented high level current sources Notice: Some classes were renamed !

  • Implemented node kwarg e.g. circuit.Q(1, base=1, collector=2, emitter=3, model='npn')

  • Implemented raw spice pass through (see User FAQ)

  • Implemented access to internal parameters (cf. save @device[parameter])

  • Implemented check for missing ground node

  • Implemented a way to disable an element and clone netlist

  • Improved SPICE parser

  • Improved unit support:

    • Implemented unit prefix cast U_μV(U_mV(1)) to easily convert values

    • Added U_mV, … shortcuts

    • Added Numpy array support to unit, see UnitValues Notice: this new feature could be buggy !!!

    • Rebased WaveForm to UnitValues

  • Fixed node order so as to not confuse users Now PySpice matches SPICE order for two ports elements !

  • Fixed device shortcuts in Netlist class

  • Fixed model kwarg for BJT Notice: it must be passed exclusively as kwarg !

  • Fixed subcircuit nesting

  • Outsourced documentation generator to Pyterate

  • Updated setup.py for wheel

2.8. V1.1.0 2017-09-06

  • Enhanced shared mode

  • Shared mode is now set as default on Linux

2.9. V1.0.0 2017-09-06

  • Bump version to v1.0.0 since it just works!

  • Support Windows platform using Ngspice shared mode

  • Fixed shared mode

  • Fixed and completed Spice parser : tested on example’s libraries

2.10. V0.4.2

  • Fixed Spice parser for lower case device prefix.

2.11. V0.4.0 2017-07-31

  • Git repository cleanup: filtered generated doc and useless files so as to shrink the repository size.

  • Improved documentation generator: Implemented format for RST content and Tikz figure.

  • Improved unit support: It implements now the International System of Units. And we can now use unit helper like u_mV or compute the value of 1.2@u_kΩ / 2@u_mA. The relevant documentation is on this page.

  • Added the Simulation instance to the Analysis class.

  • Refactored simulation parameters as classes.

2.12. V0.3.2 2017-02-22

  • fixed CCCS and CCVS

2.13. V0.3.1 2017-02-22

  • fixed ngspice shared

2.14. V0.3.0 2015-12-08

  • Added an example to show how to use the NgSpice Shared Simulation Mode.

  • Completed the Spice netlist parser and added examples, we could now use a schematic editor to define the circuit. The program cir2py translates a circuit file to Python.

2.15. V0 2014-03-21

Started project