Environment (OS, Python version, PySpice version, simulator)
Windows 10 + anaconda (prompt not gui)
Python 3.7.1
Pyspice Version: 1.3.2 (installed via pip)
Simulator: ngspice-subprocess
Expected Behaviour
Doesn't error.
Actual Behaviour
Pops up a small ngsipice window (image attached), and nothing happens. When I quit either via the X or the quit button, I get the following errors:
File "test2.py", line 8, in
analysis = simulator.transient(end_time=1e-9, step_time=1e-12)
File "C:\Users\Andrew\Anaconda3\lib\site-packages\PySpice\Spice\Simulation.py", line 753, in transient
return self._run('transient', *args, **kwargs)
File "C:\Users\Andrew\Anaconda3\lib\site-packages\PySpice\Spice\NgSpice\Simulation.py", line 76, in _run
raw_file = self._spice_server(spice_input=str(self))
File "C:\Users\Andrew\Anaconda3\lib\site-packages\PySpice\Spice\NgSpice\Server.py", line 160, in call
stderr)
NameError: The number of points was not found in the standard error buffer, ngspice returned:

Steps to reproduce the behaviour
See test2.txt (rename to .py)
test2.txt
This may well be about how I installed ngspic, but I couldn't find any good instructions on this.
First I installed the shared lib, by following the installation instructions here: https://pyspice.fabrice-salvaire.fr/installation.html
At this point the ngspice-shared simulator works, however ngspice-subprocess failed since it couldn't execute "ngspice". So I unzipped ngspice-30_64.zip to program files in the spice64 dir. I also had to add the bin dir to my PATH.
Now I get the above errors, and I'm kind of stuck.
Finally my reason for wanting to use the subprocess is I want to run a lot of simulations, and it's taking a while, so I figured I'd try multi-threading. However multithreading with a shared lib sounded like it might not work, and indeed it didn't, I got the following error (which I've seen other issues about):
...
File "C:\Users\Andrew\Anaconda3\lib\site-packages\cffi\api.py", line 107, in cdef
self._cdef(csource, override=override, packed=packed)
File "C:\Users\Andrew\Anaconda3\lib\site-packages\cffi\api.py", line 121, in _cdef
self._parser.parse(csource, override=override, **options)
File "C:\Users\Andrew\Anaconda3\lib\site-packages\cffi\cparser.py", line 315, in parse
self._internal_parse(csource)
File "C:\Users\Andrew\Anaconda3\lib\site-packages\cffi\cparser.py", line 355, in _internal_parse
decl.type, name=decl.name, partial_length_ok=True)
File "C:\Users\Andrew\Anaconda3\lib\site-packages\cffi\cparser.py", line 587, in _get_type_and_quals
tp = self._get_struct_union_enum_type('struct', type, name)
File "C:\Users\Andrew\Anaconda3\lib\site-packages\cffi\cparser.py", line 734, in _get_struct_union_enum_type
raise CDefError("duplicate declaration of struct %s" % name)
cffi.error.CDefError: :7: duplicate declaration of struct ngcomplex
See test.txt (rename to .py) test.txt
I couldn't find any info on multi threading with PySpice, and so please tell me if there's a better way / docs on how to do this.
Thanks,
Andrew
edit: I realised that multi-threading isn't the way to go, as the python interpreter still uses just one core. Testing with multiprocessing does what I want, and doesn't cause errors when using ngspice-shared. Since everything is running in a separate context, this should be fine.
So I'm happy with where I'm at. However the ngspice-subprocess not working still looks like a bug to me (if it's my ngspice install, then maybe this bug could be changed to a request for more documentation / example code).
Environment (OS, Python version, PySpice version, simulator)
Windows 10 + anaconda (prompt not gui)
Python 3.7.1
Pyspice Version: 1.3.2 (installed via pip)
Simulator: ngspice-subprocess
Expected Behaviour
Doesn't error.
Actual Behaviour
Pops up a small ngsipice window (image attached), and nothing happens. When I quit either via the X or the quit button, I get the following errors:
File "test2.py", line 8, in
analysis = simulator.transient(end_time=1e-9, step_time=1e-12)
File "C:\Users\Andrew\Anaconda3\lib\site-packages\PySpice\Spice\Simulation.py", line 753, in transient
return self._run('transient', *args, **kwargs)
File "C:\Users\Andrew\Anaconda3\lib\site-packages\PySpice\Spice\NgSpice\Simulation.py", line 76, in _run
raw_file = self._spice_server(spice_input=str(self))
File "C:\Users\Andrew\Anaconda3\lib\site-packages\PySpice\Spice\NgSpice\Server.py", line 160, in call
stderr)
NameError: The number of points was not found in the standard error buffer, ngspice returned:
Steps to reproduce the behaviour
See test2.txt (rename to .py)
test2.txt
This may well be about how I installed ngspic, but I couldn't find any good instructions on this.
First I installed the shared lib, by following the installation instructions here: https://pyspice.fabrice-salvaire.fr/installation.html
At this point the ngspice-shared simulator works, however ngspice-subprocess failed since it couldn't execute "ngspice". So I unzipped ngspice-30_64.zip to program files in the spice64 dir. I also had to add the bin dir to my PATH.
Now I get the above errors, and I'm kind of stuck.
Finally my reason for wanting to use the subprocess is I want to run a lot of simulations, and it's taking a while, so I figured I'd try multi-threading. However multithreading with a shared lib sounded like it might not work, and indeed it didn't, I got the following error (which I've seen other issues about):
...
File "C:\Users\Andrew\Anaconda3\lib\site-packages\cffi\api.py", line 107, in cdef
self._cdef(csource, override=override, packed=packed)
File "C:\Users\Andrew\Anaconda3\lib\site-packages\cffi\api.py", line 121, in _cdef
self._parser.parse(csource, override=override, **options)
File "C:\Users\Andrew\Anaconda3\lib\site-packages\cffi\cparser.py", line 315, in parse
self._internal_parse(csource)
File "C:\Users\Andrew\Anaconda3\lib\site-packages\cffi\cparser.py", line 355, in _internal_parse
decl.type, name=decl.name, partial_length_ok=True)
File "C:\Users\Andrew\Anaconda3\lib\site-packages\cffi\cparser.py", line 587, in _get_type_and_quals
tp = self._get_struct_union_enum_type('struct', type, name)
File "C:\Users\Andrew\Anaconda3\lib\site-packages\cffi\cparser.py", line 734, in _get_struct_union_enum_type
raise CDefError("duplicate declaration of struct %s" % name)
cffi.error.CDefError: :7: duplicate declaration of struct ngcomplex
See test.txt (rename to .py) test.txt
I couldn't find any info on multi threading with PySpice, and so please tell me if there's a better way / docs on how to do this.
Thanks,
Andrew
edit: I realised that multi-threading isn't the way to go, as the python interpreter still uses just one core. Testing with multiprocessing does what I want, and doesn't cause errors when using ngspice-shared. Since everything is running in a separate context, this should be fine.
So I'm happy with where I'm at. However the ngspice-subprocess not working still looks like a bug to me (if it's my ngspice install, then maybe this bug could be changed to a request for more documentation / example code).