NGspiceSimulator

Class used interfacing with Ngspice.

class spicelib.simulators.ngspice_simulator.NGspiceSimulator[source]

Bases: Simulator

Stores the simulator location and command line options and runs simulations.

process_name: str

the name of the process in the task manager

classmethod run(netlist_file, cmd_line_switches=None, timeout=None, stdout=None, stderr=None, cwd=None, exe_log=False)[source]

Executes a NGspice simulation run.

A raw file and a log file will be generated, with the same name as the netlist file, but with .raw and .log extension.

Parameters:
  • netlist_file (str | Path) – path to the netlist file

  • cmd_line_switches (list | None) – additional command line options. Best to have been validated by valid_switch(), defaults to None

  • timeout (float | None) – If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised, defaults to None

  • stdout (_FILE, optional) – control redirection of the command’s stdout. Valid values are None, subprocess.PIPE, subprocess.DEVNULL, an existing file descriptor (a positive integer), and an existing file object with a valid file descriptor. With the default settings of None, no redirection will occur. Also see exe_log for a simpler form of control.

  • stderr (_FILE, optional) – Like stdout, but affecting the command’s error output. Also see exe_log for a simpler form of control.

  • cwd (str | Path | None) – The current working directory to run the command in. If None, no change will be done of the working directory. This may not work as wanted when using the simulator under wine.

  • exe_log (bool) – If True, stdout and stderr will be ignored, and the simulator’s execution console messages will be written to a log file (named …exe.log) instead of console. This is especially useful when running under wine or when running simultaneous tasks.

Raises:
  • SpiceSimulatorError – when the executable is not found.

  • NotImplementedError – when the requested execution is not possible on this platform.

Returns:

return code from the process

Return type:

int

classmethod set_compatibility_mode(mode='kiltpsa')[source]

Set the compatibility mode. It has become mandatory in recent ngspice versions, as the default ‘all’ is no longer valid.

A good default seems to be “kiltpsa” (KiCad, LTspice, PSPICE, netlists).

The following compatibility modes are available (as of end 2024, ngspice v44):

  • a : complete netlist transformed

  • ps : PSPICE compatibility

  • hs : HSPICE compatibility

  • spe : Spectre compatibility

  • lt : LTSPICE compatibility

  • s3 : Spice3 compatibility

  • ll : all (currently not used)

  • ki : KiCad compatibility

  • eg : EAGLE compatibility

  • mc : for ’make check’

Parameters:

mode (str) – the compatibility mode to be set. Set to None to remove the compatibility setting.

spice_exe: list[str]

The executable. If using a loader (like wine), make sure that the last in the array is the real simulator.

classmethod valid_switch(switch, parameter='')[source]

Validates a command line switch. The following options are available for NGSpice:

  • -c, –circuitfile=FILE: set the circuitfile

  • -D, –define=variable[=value]: define variable to true/[value]

  • -n, –no-spiceinit: don’t load the local or user’s config file

  • -q, –completion: activate command completion

  • –soa-log=FILE: set the outputfile for SOA warnings

  • -s, –server: run spice as a server process

  • -t, –term=TERM: set the terminal type

The following parameters will already be filled in by spicelib, and cannot be set:

  • -a –autorun: run the loaded netlist

  • -b, –batch: process FILE in batch mode

  • -o, –output=FILE: set the outputfile

  • -r, –rawfile=FILE: set the rawfile output

Parameters:
  • switch (str) – switch to be added.

  • parameter (str) – parameter for the switch

Returns:

the correct formatting for the switch

Return type:

list