they exist. Modern ncurses does not need curses.h to compile term.h
so that header has been removed. Also make ncurses the last choice
when looking for tputs().
by using available high performance functions first.
Deprecated ftime() still acts as a backup function.
Solution is portable for today's operating systems and compilers.
of the d_cosim codemodel, using libvvp, the simulation runtime of
Icarus Verilog. This complements the existing method using Verilator.
The new source code is built into two binary shared libraries,
ivlng.so (or .DLL) and ivlng.vpi that are loaded during simulation.
non-debug, osdi, xspice, readline, klu, openmp
Still needs to be enabled explicitely:
cider (by --enable-cider)
./compile_linux-new.sh tested with Ubuntu 24.04LTS
More testing is needed (switch off the now standard options)!
This initial prototype is capable of performing DC, transient and AC
analysis. Not all features of OSDI are supported yet and there are still
some open questions regarding ngspice integration. However many usecase
already work very well and a large amount of CMC models are supported.
The biggest missing feature right now is noise analysis.
test: test case for diode DC working with SH
test: add transient analysis to osdi_diode test
test: added docu text to osdi_diode test
test: added test case directories
fix: bug in osdi_load
test: small change to netlist
fix: implement DEVunsetup
fix: correct behaviour for MODEINITSMSIG
test: osdi diode enable all analysis modes
removed netlist
ignoring test results
added the build of the diode shared object to the python test script
deleting old stuff and always rebuilding the shared object
added diode_va.c to the repo
preparing CI
Create .gitlab-ci.yml file
(testing) add res, cap and multiple devices test
feat: use osdi command to load files
Previously OSDI shared object files were loaded from fixed directories.
This was unreliable, inconvenient and caused conflicts with XSPICE.
This commit remove the old loading mechanism and instead introduces the
`osdi` command that can load (a list of) osdi object files (like the
codemodel command for XSPICE). A typical usecase will use this as a
precommand in the netlist:
.control
pre_osdi foo.osdi
.endc
If the specified file is a relative path it is first resolved relative
to the parent directory of the netlist. If the osdi command is invoked
from the interactive prompt the file is resolved relative to the current
working directory instead.
This commit also moves osdi from the devices folder to the root src
folder like xspice. This better reflects the role of the code as users
may otherthwise (mistakenly) assume that osdi is just another
handwritten model.
test: update tests to new command
fix: do not ignore first parameter
feat: implement log message callback
fix: don't generate ddt matrix/rhs in DC sweep
fix: missing linker script
update to osdi 0.3
(testing) simplify test cases, fix bug
(testing) multiple devices test improvement
(testig) node collapsing bugfix
test: increase tolerance in tests
feat: update to newest OSDI header
fix: temperature update dt behaviour
fix: ignored models
fix: compilation script
fix: allow hicum/l2 to compile with older c++ compilers
fix: set required compiler flags for osdi
fix: disable x by default
fix: add missing SPICE functions
fix: update diode to latest ngspice version
feat: implement python CMC test runner
doc: Add README_OSDI.md
fix: make testing script work with python version before 3.9
fix: free of undefined local variable
fix: do not calculate time derivative during tran op
update osdi version
fixes for compilation on windows
This isn't currently used but can be used in various places to
automatically provide the internal API version that is used.
Normally developers doesn't want to break the API by introducing a
version bump as this means the new library isn't backward compatible
any more.
E.g. the API version can be used to enhance the name of the library,
quite often libraries with an API version 0 don't add this version to
library name (like ngspice is doing this too right now).
Doing the libtool versioning right can be a bit tedious. Especially the
correct handling of the various versions for the libtool .so naming is
difficult to understand if this part isn't done often.
To improve the API versioning adding some helping text what the various
version number are intended for and how to handle these within the
life cycle and development of the Ngspice project.
Basically libtool uses 'current', 'revision' and 'age' to version a
library.
Here a short outline how to do the libtool versioning:
Only bug fixing did happen, no new symbols were added, the new library
provide the exact amount and behaviour of the existing symbols.
--> Increase the 'revision' by 1 (c:r+1:a)
New symbols were added, the behaviour of the existing symbols doesn't
have changed.
--> Increase the 'age' by 1, set 'revision' to 0 (c:r=0,a+1)
Existing symbols behave now different or existing symbols were removed.
--> Increase 'current' by 1, set 'revison' to 0, set 'age' to 0 (c+1,r=0,a=0)
!!!Note!!!
The ABI version is also affected by this (needs a bump too, the library
isn't backward compatible any more.
--with-readline=<location> may be given instead of --with-readline=yes
This is required when on macOS readline is installed from Homebrew.
Standard Xcode readline in macOS is not compatible with ngspice.
If --with-readline=yes is given, there is no change of behaviour
compared with previous releases.