Opened 3 weeks ago
Closed 3 weeks ago
#71124 closed defect (fixed)
ngspice @43: Lacking xspice support
Reported by: | hughsonm (Max Hughson) | Owned by: | markemer (Mark Anderson) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.10.2 |
Keywords: | Cc: | bpdegnan (Brian Degnan), markemer (Mark Anderson) | |
Port: | ngspice |
Description
Problem
I upgraded from ngspice-36 to ngspice-43 recently, by updating my macports. After upgrading, I started getting errors in my circuits due to the use of s_xfer, which is a model from xspice.
Steps to Reproduce
I've attached a circuit file that tries to use s_xfer. With ngspice-36, it succeeds. With ngspice-43, it fails.
Run these commands to reproduce the issue:
port info ngspice # Check the version of ngspice. If less than 43, then sudo port selfupdate sudo port install ngspice # Run the example circuit from this ticket ngspice -b example.cir
At the time of writing, ngspice-36 is unavailable on macports. I have ngspice-36 on my computer, so I will show the different results I get from the 2 ngspice versions. Here is the text, copy-pasted from my terminal:
Maxs-MacBook-Pro:ng-versions max$ sudo port activate ngspice@36 ---> Computing dependencies for ngspice ---> Deactivating ngspice @43_0+lib+manual ---> Cleaning ngspice ---> Activating ngspice @36_0+lib+manual ---> Cleaning ngspice Maxs-MacBook-Pro:ng-versions max$ ngspice -b ./example.cir No compatibility mode selected! Circuit: *spara analysis Reducing trtol to 1 for xspice 'A' devices Doing analysis at TEMP = 27.000000 and TNOM = 27.000000 Warning: vpulse1: no DC value, transient time 0 value used Initial Transient Solution -------------------------- Node Voltage ---- ------- in 0 xsubckt.int_a1_a1_0 0 out 0 e.xsubckt.es_1_1_n1#branch 0 vpulse1#branch 0 a.xsubckt.ags_2_2_n1#branch_1_0 0 No. of Data Rows : 201 ERROR: (internal) This operation is not defined for display type PrinterOnly. Can't open viewport for graphics. ERROR: (internal) This operation is not defined for display type PrinterOnly. Can't open viewport for graphics. ASCII raw file "rc.raw" Note: No ".plot", ".print", or ".fourier" lines; no simulations run Maxs-MacBook-Pro:ng-versions max$ sudo port activate ngspice@43 ---> Computing dependencies for ngspice ---> Deactivating ngspice @36_0+lib+manual ---> Cleaning ngspice ---> Activating ngspice @43_0+lib+manual ---> Cleaning ngspice Maxs-MacBook-Pro:ng-versions max$ ngspice -b ./example.cir Warning: can't find the initialization file spinit. Note: No compatibility mode selected! Circuit: *spara analysis Error on line 3 or its substitute: a.xsubckt.ags_2_2_n1 in xsubckt.int_a1_a1_0 xsubckt:filter_ags_2_2_n1 MIF-ERROR - unable to find definition of model xsubckt:filter_ags_2_2_n1 Simulation interrupted due to error! Note: No ".plot", ".print", or ".fourier" lines; no simulations run Maxs-MacBook-Pro:ng-versions max$
My Investigation
- Activating the ngspice-36 port and deactivating the ngspice-43 port fixes the issue, but is not a long-term solution.
- I deactivated all my versions of ngspice from macports. Then, I pulled the code with git and followed the build instructions in INSTALL for macos/Clang.
- If I configure with --enable-xspice=no, then the xspice models are inaccessible.
- If I configure with --enable-xspice, then the xspice models are accessible.
I suspect that the macports build instructions are disabling xspice, though I do not know how they would be disabled. The portfile sets the correct configuration flags, as far as I can tell.
Attachments (1)
Change History (17)
Changed 3 weeks ago by hughsonm (Max Hughson)
Attachment: | example.cir added |
---|
comment:1 Changed 3 weeks ago by markemer (Mark Anderson)
The portfile is indeed correct, I'll have to check a build as to why the below isn't being respected for some reason.
configure.args --enable-cider \ --enable-xspice \
comment:2 Changed 3 weeks ago by markemer (Mark Anderson)
I've also been meaning to dive in to get openmp working now that we have compilers on every platform to handle them.
comment:4 Changed 3 weeks ago by markemer (Mark Anderson)
Owner: | changed from bpdegnan to markemer |
---|
comment:5 Changed 3 weeks ago by hughsonm (Max Hughson)
- How did you compile the one that worked?
- I pulled the code from ngspice's sourceforge here and followed the instructions in the
INSTALL
file, specifically section 10.3. If I follow the instructions, then I get a ngspice binary that can use xspice. If I change the configure step to./configure --enable-cider --enable-xspice=no --enable-openmp --enable-pss --with-readline=yes --enable-debug=no
, then I get a ngspice binary that cannot use xspice.
- I pulled the code from ngspice's sourceforge here and followed the instructions in the
- Also, what macOS and Xcode version are you running as well as architecture?
- macos 14.6.1 (23G93)
- xcode: I don't have Xcode installed (I think). How can I check? My AppleClang is
Apple clang version 15.0.0 (clang-1500.3.9.4)
- architecture: Intel x86 cpu
comment:6 Changed 3 weeks ago by markemer (Mark Anderson)
I wonder if it has to do with openmp. That makes no sense, but it's the only difference. Your circuit file doesn't work for me either, but I see it building the xspice stuff, and my own build didn't work either. However, I didn't enable open-mp.
Still makes zero sense, since openmp is for BSIM3 models.
To be clear this is the line you ran that works?
./configure --enable-cider --enable-xspice --enable-openmp --enable-pss --with-readline=yes --enable-debug=no
comment:7 Changed 3 weeks ago by markemer (Mark Anderson)
I can't get this circuit file to work with any ngspice-43
, one I built myself, one with openmp
, anything. Are we sure the problem isn't in ngspice
or the file? For example, if all you have installed is Apple clang version 15.0.0 (clang-1500.3.9.4)
, there is no way it should have built. Mine failed while building with openmp failures.
comment:8 Changed 3 weeks ago by markemer (Mark Anderson)
My current theory is it has something to do with this:
Warning: can't find the initialization file spinit. Note: No compatibility mode selected!
comment:9 Changed 3 weeks ago by hughsonm (Max Hughson)
That was my first suspicion too, but I believe those are both optional
comment:10 Changed 3 weeks ago by hughsonm (Max Hughson)
And the spinit
file does exist, at /opt/local/share/ngspice/scripts/spinit
. Mine looks like
* Standard ngspice init file alias exit quit alias acct rusage all set x11lineararcs *set rndseed=12 ** ascii rawfile ** *set filetype=ascii ** frontend debug output ** *set ngdebug ** asking after quit ** *set askquit ** set the number of threads in openmp ** default (if compiled with --enable-openmp) is: 2 set num_threads=8 * comment out if central osdi management is set up unset osdi_enabled * Load the codemodels if $?xspice_enabled codemodel ../lib/ngspice/spice2poly.cm codemodel ../lib/ngspice/analog.cm codemodel ../lib/ngspice/digital.cm codemodel ../lib/ngspice/xtradev.cm codemodel ../lib/ngspice/xtraevt.cm codemodel ../lib/ngspice/table.cm end * Load the OpenVAF/OSDI models if $?osdi_enabled osdi ../lib/ngspice/asmhemt.osdi osdi ../lib/ngspice/bjt504t.osdi osdi ../lib/ngspice/BSIMBULK107.osdi osdi ../lib/ngspice/BSIMCMG.osdi osdi ../lib/ngspice/HICUMl0-2.0.osdi osdi ../lib/ngspice/psp103_nqs.osdi osdi ../lib/ngspice/r2_cmc.osdi osdi ../lib/ngspice/vbic_4T_et_cf.osdi end
comment:11 Changed 3 weeks ago by markemer (Mark Anderson)
Yep, I added this .spiceinit in the directory I ran ngspice in makes it work. Why it's not picking our spinit up, or not running it, I'm not sure.
* Standard ngspice init file alias exit quit alias acct rusage all ** set the number of threads in openmp ** default (if compiled with --enable-openmp) is: 2 set num_threads=4 echo "runing this" if $?sharedmode unset interactive unset moremode else set interactive set x11lineararcs end strcmp __flag $program "ngspice" if $__flag = 0 codemodel /opt/local/lib/ngspice/spice2poly.cm codemodel /opt/local/lib/ngspice/analog.cm codemodel /opt/local/lib/ngspice/digital.cm codemodel /opt/local/lib/ngspice/xtradev.cm codemodel /opt/local/lib/ngspice/xtraevt.cm codemodel /opt/local/lib/ngspice/table.cm end unset __flag
comment:12 Changed 3 weeks ago by markemer (Mark Anderson)
So for some reason our default spinit isn't loading and so these aren't loaded, so boom, error.
codemodel /opt/local/lib/ngspice/spice2poly.cm codemodel /opt/local/lib/ngspice/analog.cm codemodel /opt/local/lib/ngspice/digital.cm codemodel /opt/local/lib/ngspice/xtradev.cm codemodel /opt/local/lib/ngspice/xtraevt.cm codemodel /opt/local/lib/ngspice/table.cm
comment:13 Changed 3 weeks ago by hughsonm (Max Hughson)
Yep, I added this .spiceinit in the directory I ran ngspice in makes it work
Worked for me too!
Maybe it's caused by some naming confusion? spinit
vs .spiceinit
? Just speculating, I'm no expert.
comment:14 Changed 3 weeks ago by markemer (Mark Anderson)
Ok, it seems --enable-relpath
in our build doing this. I need to look into why it doesn't load the default file when that's active. We may have needed it once upon a time, but don't anymore, or need to set something to pickup spinit
spinit
is the main one, but you can override it locally with .spiceinit
, and usually have to for things like the Skywater 130 PDK which is why I may not have noticed it wasn't being picked up.
comment:15 Changed 3 weeks ago by markemer (Mark Anderson)
I think I have a fix in PR-26216 once it passes CI, I'll merge and that should deal with it
comment:16 Changed 3 weeks ago by markemer (Mark Anderson)
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Example file for demonstrating lack of xspice support