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
options savecurrents_bsim3, savecurrents_bsim4, and savecurrents_mos1
will save all device currents as listed in chapts 31.6.1, .8 and .9
of the ngspice manual. Pure savecurrents will yield a subset of MOS1
currents, as seen before.
to after numparam expansion, thus allow parameters in functions agauss etc.
Replace gettok by new gettok_np to ignore characters ( ) ,
which may be left over after parameter expansion.
This fixes bug 593.
Function resides in inpc_probe.c.
The function renames all current measurement instances
vcurr_instance:node#branch to instance:node#branch by
modifying the global instance table (tab).
when the circuit is not yet loaded.
Then the optran data are stored in static variables,
until optran is called again with arg NULL from inp.c,
to set the data in ft_curckt->ci_defTask.
inadvertently deleted in commit
83592c456 ("unify the evaluation of '.options scale=xx'
.option in a netlist will override 'options' from spinit,
.spiceinit or a script '.options scalm=xx' yields a warning,
it is not supported.", 2021-04-05)
The code transforms the option statements and adds them
to the current circuit.
Evaluate '.options cshunt=xx' earlier to allow the following:
Set the option by calling INPpas4() during parsing the circuit,
before .ic is set.
Ckt and Task cshunt are still set, but their values are available
only too late for INPpas4(), but may be used by command 'option'
(w/o parameters) for assessing the options and their values.
Netlist is flat at this stage, all numbers expanded,
but not yet parsed into the circuit structure.
So again try to remove unused MOS models.
All binning models are still here when w or l have been
determined by an expression from within the PDK.
a lot of binning models.
This is a hack and needs testing!
inpcom.c: If an x line, add w and l to the netlist card,
if available.
subckt.c: select a suitable model bin, discard the rest
for each subcircuit, depending on w and l from above.
inpgmod.c: less restrictive equal for real numbers,
allow both min and max boundaries (problem of equating
real numbers), when the selected device has w or l on
the boundary between two model bins.
Error message when .end card is missing
Reset if .end card is missing, to allow loading
a netlist again.
NULL as last element is no longer required, but .end card
(this has been implicitedly assumed).
Remove a bug that skippoed the last line (the .end card).