Simulator

Base Class for all simulators.

class spicelib.sim.simulator.Simulator[source]

Bases: ABC

Pure static class template for Spice simulators. This class only defines the interface of the subclasses. The variables below shall be overridden by the subclasses. Instantiating this class will raise a SpiceSimulatorError exception.

A typical subclass for a Windows installation is:

class MySpiceWindowsInstallation(Simulator):
    spice_exe = ['<path to the spice executable>']
    process_name = "<name of the process on Windows Task Manager>"

or on a Linux distribution:

class MySpiceLinuxInstallation(Simulator):
    spice_exe = ['<wine_command>', '<path to the spice executable>']
    process_name = "<name of the process within the system>"

If you use MacOS, you can choose either one of the 2 above. If you are on Intel, running LTSpice under wine (therefore: like under Linux) is preferred.

The subclasses should then implement at least the run() function as a classmethod.

@classmethod
def run(cls, netlist_file: str | Path, cmd_line_switches: list | None = None, timeout: float | None = None,
    stdout=None, stderr=None, cwd: str | Path | None = None, exe_log: bool = False) -> int:
    '''This method implements the call for the simulation of the netlist file. '''
    cmd_run = cls.spice_exe + ['-Run'] + ['-b'] + [netlist_file] + cmd_line_switches
    return run_function(cmd_run, timeout=timeout, stdout=stdout, stderr=stderr, cwd=cwd)

The run_function() can be imported from the simulator.py with from spicelib.sim.simulator import run_function instruction.

classmethod create_from(path_to_exe, process_name=None)[source]

Creates a simulator class from a path to the simulator executable

Parameters:
  • path_to_exe (pathlib.Path or str. If it is a string, it supports multiple sections, allowing loaders like wine, but MUST be in posix format in that case, and the last section MUST be the simulator executable.)

  • process_name – the process_name to be used for killing phantom processes. If not provided, it will be

Returns:

a class instance representing the Spice simulator

Return type:

Simulator

static expand_and_check_local_dir(path, exe_path=None)[source]

Expands a directory path to become an absolute path, while taking into account a potential use under wine (under MacOS and Linux). Will also check if that directory exists. The path must either be an absolute path or start with ~. Relative paths are not supported. On MacOS or Linux, it will try to replace any reference to the virtual windows root under wine into a host OS path.

Examples:

  • under windows:

    • C:/mydir -> C:/mydir

    • ~/mydir -> C:/Users/myuser/mydir

  • under linux, and if the executable is /mywineroot/.wine/drive_c/(something):

    • C:/mydir -> /mywineroot/.wine/drive_c/mydir

    • ~/mydir -> /mywineroot/.wine/drive_c/users/myuser/mydir

Parameters:
  • path (str) – The path to expand. Must be in posix format, use PureWindowsPath(path).as_posix() to transform a windows path to a posix path.

  • exe_path (str | None) – path to a related executable that may or may not be under wine, defaults to None, ignored on Windows

Returns:

the fully expanded path, as posix path, will return None if the path does not exist.

Return type:

str | None

classmethod get_default_library_paths()[source]

Return the directories that contain the standard simulator’s libraries, as derived from the simulator’s executable path and platform. spice_exe must be set before calling this method.

This is companion with set_custom_library_paths()

Returns:

the list of paths where the libraries should be located.

Return type:

list[str]

static guess_process_name(exe)[source]

Guess the process name based on the executable path

classmethod is_available()[source]

This method checks if the simulator exists in the system. It will return a boolean value indicating if the simulator is installed or not.

process_name: str

the name of the process in the task manager

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

This method implements the call for the simulation of the netlist file. This should be overriden by its subclass.

spice_exe: list[str]

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

abstract classmethod valid_switch(switch, switch_param)[source]

This method validates that a switch exist and is valid. This should be overriden by its subclass.