Commit Graph

8034 Commits

Author SHA1 Message Date
Pascal Kuthe b06bfc5eeb
prototype for Verilog-A integration using OSDI and OpenVAF
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
2022-11-14 10:51:49 +01:00
Holger Vogt fcc3191732 rename example file 2022-11-12 14:52:22 +01:00
Holger Vogt 0ea6dd8322 Examples moved to folder /various 2022-11-12 14:49:01 +01:00
Holger Vogt 7cf6b1f12b Examples for d_pwm and d_osc 2022-11-12 14:47:57 +01:00
Holger Vogt 743f20d04b Add new functions for operators x**y or x^y
compatmode hs: x>0 pow(x, y), x<0 pow(x, round(y)), X=0 0
compatmode lt: x>0 pow(x, y), x<0 pow(x, y) if y is close to integer, else 0
2022-11-12 14:35:26 +01:00
Holger Vogt eff183f51e Add new functions for operators x**y or x^y
compatmode hs: x>0 pow(x, y), x<0 pow(x, round(y)), X=0 0
compatmode lt: x>0 pow(x, y), x<0 pow(x, y) if y is close to integer, else 0
2022-11-12 14:35:01 +01:00
Brian Taylor b147aa0c3a Add safety braces. 2022-11-11 14:13:36 +01:00
Brian Taylor e770d96151 Tidy up debug tracing code. 2022-11-11 14:13:28 +01:00
Brian Taylor cd72c7960b Fix memory leaks. 2022-11-11 14:13:22 +01:00
Brian Taylor b0e9874de8 Add more vectors to behavioral 283 circuit. Add tristate buffer circuit which shows glitches until inertial delays are implemented. 2022-11-11 14:13:03 +01:00
Brian Taylor a922f797d3 When the gen_tab has only one entry, do not call optimize_gen_tab, it is not necessary. 2022-11-11 14:12:54 +01:00
Brian Taylor 574737b7b6 Check that the bparse gen_tab optimization loop finishes when no more improvements occur. 2022-11-11 14:12:47 +01:00
Holger Vogt 539176bf15 remove unused 2022-11-11 13:41:10 +01:00
Holger Vogt d6650e66f0 To find the nearest integer, use nearbyint(). trunc() has delivered
only one-sided answers.
2022-11-11 13:21:21 +01:00
Holger Vogt 5adef0cf36 AlmostEqualUlps setting has been too strict: it failed in MINGW gcc.
3 --> 10
2022-11-11 11:50:53 +01:00
Holger Vogt 0d86539638 Trim trailing spaces 2022-11-09 15:11:13 +01:00
Holger Vogt f9039ea238 Don't allocate memory for control array at every time step
Use loc instead, setting it up once during INIT
2022-11-09 15:09:52 +01:00
Holger Vogt 94a0030fde Add logicexp.c to fftw and shared project files 2022-11-07 17:50:21 +01:00
Brian Taylor 104afe77cb Remove asserts, replace fixed size lexer_buf. 2022-11-07 14:47:57 +01:00
Brian Taylor f9236131ff Typo, 2 x1 subcircuits. 2022-11-07 14:47:46 +01:00
Brian Taylor d05689eed8 Add pindly tristate example. Cleanup error handling. 2022-11-07 14:47:36 +01:00
Brian Taylor f6386bda0c Remove most asserts. 2022-11-07 14:47:29 +01:00
Brian Taylor 1200092250 Add behavioral (LOGICEXP, PINDLY) test for 283 circuit. There are glitches in the simulation for some of the s* outputs. Probably due to not having inertial delays. And why not set 'zero' delays as close to zero as permitted by XSPICE. 2022-11-07 14:47:18 +01:00
Brian Taylor ab7634e72e Reduce the delays of 'zero' delay gates to 1.0e-11. Add decoder test for logicexpr and pindly. 2022-11-07 14:47:13 +01:00
Brian Taylor 77d56eb184 Fix a typo, add more comments. 2022-11-07 14:47:02 +01:00
Brian Taylor 7e4b10a9db Add support for TRISTATE: in PINDLY. 2022-11-07 14:46:53 +01:00
Brian Taylor 50e3c7eadd Fix potential memory leak, clean out debug code. 2022-11-07 14:46:48 +01:00
Brian Taylor 3bdb6ee151 Better estimates of rise/fall delays in PINDLYs with outputs separated by CASE. 2022-11-07 14:46:34 +01:00
Brian Taylor 5717b2b2fc Fix visualc compiler warnings. 2022-11-07 14:46:27 +01:00
Brian Taylor 629010b1cb Improve delay estimates for pindly output buffers. 2022-11-07 14:46:14 +01:00
Brian Taylor 3eb0a089e5 Initial handling of PINDLY. Output buffers without rise/fall delay estimates. 2022-11-07 14:46:04 +01:00
Brian Taylor 9d239dc2f7 Move f_logicexp, f_pindly calls to u_process_instance. Use u_add_instance to copy gate instances and models to the replacement cards. 2022-11-07 14:45:57 +01:00
Brian Taylor a27ae48e27 Fix potential memory leak. 2022-11-07 14:45:51 +01:00
Brian Taylor 67369f1c67 Initial logicexp parser and gate generator. 2022-11-07 14:45:45 +01:00
Brian Taylor db81d7ca28 Add drive 0/1 for $d_lo/$d_hi. 2022-11-07 14:45:33 +01:00
Holger Vogt 2e064db79a Add STATIC_VAR_TABLE locdata
Add CALLBACK cm_d_pwm_callback
Reserve memory for x, y arrays only once during INIT
2022-11-07 12:16:58 +01:00
Holger Vogt 9bab229e7b We are developing towards ngspice-39 2022-11-06 11:31:21 +01:00
Holger Vogt 5bf6894d58 Add info on new function ngCM_Input_Path 2022-11-06 11:30:00 +01:00
Holger Vogt d1605d5a7f New Age: Function ngCM_Input_Path added to the shared ngspice
interface, backward compatible.
2022-11-06 11:29:43 +01:00
Holger Vogt 159e36d23b Add function
char* ngCM_Input_Path(const char* path);
to shared  ngspice API
to send file path for code model input files (e.g. dsource).
Such path cannot be extracted automatically when netlist has
been sent by ngSpice_Circ
2022-10-26 23:34:10 +02:00
Holger Vogt ce2e95f32d Fix typo 2022-10-26 16:23:36 +02:00
Holger Vogt 39316ea3c6 Function ngSpice_Circ() may send empty lines to shared ngspice.
Skip these lines while processing the netlist array.
2022-10-26 16:23:00 +02:00
Holger Vogt 8bcea45f1c Add a guard on parameter 'position', limit to
1e-9 to 0.999999999
FIXME: the given parameter limits from ifspec.ifs are not recognized.
2022-10-22 13:31:38 +02:00
Holger Vogt 4a222d74c1 Update on author 2022-10-22 13:29:48 +02:00
Holger Vogt ec43c65f56 Patch required to allow compiling at Fedora with -Werror=format-security
Provided by Mamoru Tasaka
2022-10-21 15:26:20 +02:00
Holger Vogt 3864edb941 Typo 2022-10-19 12:25:00 +02:00
Holger Vogt 16b95ecda2 Small correction to previous commit. 2022-10-17 20:32:44 +02:00
Holger Vogt 43517efb41 Add a limit of 0.999 to bipolar parameters mje, mjc, and mjs.
The bipolar model is restricted to values < 1.
Fixes bug 583
2022-10-17 20:32:34 +02:00
Holger Vogt ce82fb22e2 prepare ngspice-38 2022-10-17 20:32:06 +02:00
Holger Vogt 6b0ba58e42 Fix bug 590, but only for GUI with MS Windows.
X11 for Cygwin, Linux is not yet o.k.
2022-10-17 20:27:15 +02:00