Commit Graph

860 Commits

Author SHA1 Message Date
Francesco Lannutti f25b22e56a Fixed a bug in SMPpreOrder and let KLU digest an empty matrix 2023-08-16 11:14:12 +02:00
Francesco Lannutti ce18d6846f KLU Integration from scratch #4, changed files 2023-08-16 11:14:10 +02:00
Francesco Lannutti cf5991ae81 KLU Integration from scratch #1, new files 2023-08-16 11:14:10 +02:00
Francesco Lannutti 60b4c3cda7 move include files to src/include/ngspice/ 2023-08-16 11:14:10 +02:00
holger 57c880b6a3 Prepare ngspice-41 2023-08-13 14:03:34 +02:00
Holger Vogt d4c54123d4 Revert "Add code in ivars.c to look for a SPICE_ROOT environment variable"
This reverts commit 6b0ab44f1e.
2023-08-06 16:27:33 +02:00
Giles Atkinson 6b0ab44f1e Add code in ivars.c to look for a SPICE_ROOT environment variable
that gives the location of the ngspice installation.  That allows
binaries to be installed in a different directory to the one
compiled in.  The spinit startup file is made location-independent
by passing a variable giving the location of loadable modules,
so this fixes Bug #615 -
"spinit contains arch dependent paths, but is installed as noarch DATA".
2023-07-31 14:29:23 +02:00
Holger Vogt 18911b06b6 re-enable rcheck debug output with WINGUI 2023-07-31 14:27:35 +02:00
Holger Vogt fe3222a118 Add an option nginfo to enable a status report during simulation
(currently available only with MS Windows GUI version).
2023-07-31 14:26:40 +02:00
Giles Atkinson 5114d6c2f4 Add an option to the iplot command: -d sets the number of simulation
steps before the window is shown.  The value can be chosen to
limit rapid resizing when starting and that is used in the PLL examples.
2023-07-15 11:29:32 +02:00
Giles Atkinson e5a931e537 Improve commands for vector scales. "setscale" can now change
or clear the scale of an individual vector and "compose" can
explicitly create a vector from XSPICE event node history.
2023-07-15 11:28:48 +02:00
Holger Vogt 0ee5e3f32a Add a control language function cvector, to create a complex vector.
Let vec1 = cvector(50)
will generate a complex vector, with the real part values
increasing from 0 to 49, the imaginary values are set to 0.
Useful in ac loops to store result data.
2023-07-15 11:17:10 +02:00
Pascal Kuthe e5d1885e39 make accessible 2023-05-27 10:47:11 +02:00
Holger Vogt b6e9ba20b9 Add another error qualifier to decribe the current policy
when a doubling token exists (or is created) in the netlist.
2023-05-27 10:43:40 +02:00
Holger Vogt d53acbed8e Add noise capability to XSPICE code models
Coded according to acan., AC analysis

MIF_NOI is not yet supported by any code model, so
MIF_AC is used (code models behave like in ac mode,
they are noiseless.
2023-04-02 15:06:28 +02:00
Holger Vogt 95c4c0f587 Add inertial.h to the distributable headers 2023-03-25 15:36:15 +01:00
Holger Vogt 311ddeac0d Prepare for ngspice-40 2023-03-24 22:27:12 +01:00
Giles Atkinson 240a2b9406 Add missed file inertial.h. 2023-03-22 14:28:23 +01:00
Giles Atkinson 2643e3b17f New code-model library functions cm_schedule_output() and cm_getvar().
To be used in the inertial delay code for digital code models.
2023-03-22 14:27:35 +01:00
Giles Atkinson c1659a64c3 Change output event setup in evtload.c so that, when making an event call
to a code model, there is no longer a reference to the value of the event
at the head of the free list.  That allows all such free lists (with the
same data type) to be combined, probably improving performance.
This is in preparation for full implementation of inertial delay for
digital nodes.
2023-03-22 14:27:19 +01:00
Holger Vogt 71571a1432 Add function atanh to .control section 2023-03-18 22:31:48 +01:00
Holger Vogt d4ee9af2e6 We are developing towards ngspice-40 2023-03-18 14:34:27 +01:00
Holger Vogt 5cb5d218c9 Remove the obsolete RETSIGTYPE, replace by void 2023-03-18 14:30:29 +01:00
Brian Taylor 56d0c72924 Add port directions when logicexp or pindly are present. 2023-02-01 17:39:37 +01:00
holger b3676bb763 enable make dist 2023-01-30 13:09:15 +01:00
Holger Vogt 167c708e69 Add searchpath for *.osdi relative to ngspice executable 2023-01-27 16:10:28 +01:00
Holger Vogt 71002aa42f Prepare for ngspice-39 2023-01-24 15:49:42 +01:00
Pascal Kuthe 5791a2d449 ensure config.h is always included in cktdefs.h to ensure correct
type signature
2022-12-27 14:10:16 +01:00
Pascal Kuthe acfaf023b3 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-12-27 13:51:57 +01:00
Holger Vogt 6c1be283a7 Add a function ddt (derivative versus time) to the B-source funtion parser. 2022-12-11 15:38:22 +01:00
Brian Taylor 7ff8f3773f Handle cases where logicexp has a timing model but no pindly. This is rare, only 22 tests from the digital libraries. Move digital examples, add missing .spiceint file. 2022-12-11 15:34:33 +01:00
Holger Vogt e967b31c94 Add a new compatibility mode xs (for XSPICE) 2022-12-11 15:32:30 +01:00
Holger Vogt 27fb6cd0a6 Allow resetting the limit for warning mesaages, when a new run is started. 2022-12-11 15:32:11 +01:00
Brian Taylor 62aab3885d 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-12-11 15:16:37 +01:00
Brian Taylor a54aa4d1f7 Initial logicexp parser and gate generator. 2022-12-11 15:16:02 +01:00
Holger Vogt f1165052ad We are developing towards ngspice-39 2022-11-06 11:23:17 +01:00
Holger Vogt 14f42f805d Add info on new function ngCM_Input_Path 2022-10-29 15:48:58 +02:00
Holger Vogt eb70d81dab 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-28 14:12:53 +02:00
holger 7eafd48cc0 Add udevices.h to makefile.am for 'make dist' 2022-10-24 20:27:57 +02:00
Holger Vogt 7fa5c7ad87 Typo 2022-10-22 15:53:32 +02:00
Holger Vogt 5bc1660773 prepare ngspice-38 2022-10-16 16:59:34 +02:00
Giles Atkinson e80b724460 Add two functions to the Code Model Library: cm_get_node_name()
makes circuit node names available to diagnostics, while
cm_probe_node() is needed for a bidirectional A/D bridge.
2022-10-08 16:47:50 +02:00
Holger Vogt 4713cf0bf7 add parameter description 2022-10-08 16:43:16 +02:00
Giles Atkinson b1341c8e30 Insert XSPICE bridging devices automatically when an analogue node
has the same name as an XSPICE event node (including digital nodes).
The function Evtcheck_nodes() is replaced by a new version in its
own file.
2022-10-07 13:19:59 +02:00
Brian Taylor 2d9f86c742 Check for name collisions between nodes generated during translation from Pspice to Xspice and instance pin or subckt port names. These are reported as ERRRORs. 2022-10-07 13:14:35 +02:00
Holger Vogt 7f65a68ad6 Improve (a little) the plotting of digital data with plot option digiplot:
Repair scaling on MS Windows:
Suppress y axis lettering and unit:
Allow or dis-allow grid.
2022-10-07 13:05:56 +02:00
Holger Vogt 1329942865 Add a new function char* gettok_np(char** s)
which finds a token, while scanning over (), like
they were white spaces. It also proceeds with s while
still finding (), (which gettok_noparens does not do).
2022-10-07 13:00:44 +02:00
Brian Taylor 7f38ce4ebb Remove debug code. 2022-10-07 12:55:42 +02:00
Brian Taylor e38e1099b5 Create pin and port lists only when variable ps_pins_and_ports is set != 0. 2022-10-07 12:54:17 +02:00
Brian Taylor bc8d67d5fa Generate lists of subckt ports indicating direction (in, out, inout.) 2022-10-07 12:51:33 +02:00
Brian Taylor 96a1b528fd Replace Pspice U* and .model cards with their Xspice equivalent statements. There are still memory leaks which will be plugged next. The .subckts have only digital ports, which will need to addressed for mixed A/D designs. 2022-10-07 12:49:29 +02:00
Brian Taylor a2fd346b1a Trial run at scanning cards for Pspice U* devices and models. #define INTEGRATE_UDEVICES to turn it on. No new cards are created yet, just lots of debugging info. 2022-10-07 12:48:51 +02:00
Brian Taylor 620c15a981 Initial files for translating Pspice u.. instances and timing models into Xspice equivalents. Standard gates, tristate gates, dff, jkff, dlatch are supported. Compound gates and pullup/down are not done. Makefile and frontend/inpcom.c changes have not been finished. These modifications will be needed to complete integration. 2022-10-07 12:47:59 +02:00
Holger Vogt 0faf386d45 We developing towards ngspice-38
The intermediate stage is named 37+
2022-06-23 08:33:01 +02:00
holger 6d3f92cec6 add new header spardefs.h to noinst_HEADERS 2022-05-12 17:35:16 +02:00
Holger Vogt 303cf0c92b Prepare ngspice-37 2022-05-11 13:48:33 +02:00
Holger Vogt 0e46f6f8a1 remove numerous unsigned int vs. int warnings
by setting all variables to type int.
Remove redundant function declarations by remmoving some includes
in span.c and vsrcdefs.h
In tmalloc convert int to size_t
2022-05-01 10:29:08 +02:00
Holger Vogt 08a12b5355 Add a function itoa10 and use it
instead of non-standard itoa.
2022-04-26 10:36:10 +02:00
Holger Vogt 597bc9edd0 Remove a typo: runable --> runnable 2022-04-26 10:34:11 +02:00
Alessio Cacciatori 4ebf4901b9 S-parameters in ngspice
With this commit the patch provided by Alessio Cacchiatori the S-parameter is completed:
Noise simulation added with C matrix output
Y and Z matrix output enabled

To allow compiling with gcc, the dense.h inline functions have been put into denseinlines.h
2022-04-25 21:31:28 +02:00
Alessio Cacciatori 2c10c4aebd S parameter simulation
Command '.sp'
arbitrary number of ports
ports made with modified VSRC

Patch provided by Alessio Cacciatori
https://sourceforge.net/p/ngspice/discussion/127605/thread/7a2655c86f/
2022-02-17 15:48:00 +01:00
Holger Vogt 0eb272243f Enable RKM notation also for inductors (e.g. 1u2 for 1.2u) 2022-02-07 16:00:29 +01:00
Holger Vogt 4f82a24df2 Add parameter 'isgrid' to plotting of arcs.
Smithgrid and polar plots could not discern between xgridwidth and
xbrushwidth. This is now available, similar to straight line plotting.
Tested also for PS and SVG.
2022-02-01 12:23:29 +01:00
Holger Vogt 64dba93b93 We are now developing ngspice-36+ 2022-01-09 11:57:05 +01:00
Holger Vogt f0e9a35eb6 Add 'esave' command to save only specific event nodes.
Add a prompt for esave/eprint/eprvcd.
2022-01-09 10:58:38 +01:00
Holger Vogt cb0d8f18dc Prepare for ngspice-36 2021-12-18 13:47:43 +01:00
Holger Vogt 1605d293d0 Add function integ to control language
Trapezoidal rule for integrating a vector.
2021-12-13 21:49:45 +01:00
Holger Vogt e93a19e3e8 Allow math characters in node names
Add a function ft_getpnames_quotes()
It puts quotes " around tokens xxx, when these are enclosed as
V(xxx) and contain arithmetic characters. V(R*C) becomes
V("R*C"). After settig up the parse tree, the quotes are removed again.
Thus these math character remain part of the node name and are not
parsed as parts of an equation.
2021-12-13 21:41:16 +01:00
Holger Vogt 90377dcff9 struct TSKtask: group all single bit fields together 2021-12-13 21:40:38 +01:00
Brian Taylor 38848259e4 With the ngspice gnuplot command, enable x/y contour plots for 2d Cider save file data. Usage: gnuplot <file> xycontour <expr>. xycontour is a new flag which is ignored if the plot data is not from 2d Cider. For contours, only a single plotarg <expr> is allowed. With <expr1> vs <expr2>, only <expr1> is plotted and <expr2> is ignored. 2021-10-30 13:21:32 +02:00
Holger Vogt 7c38699cd7 Add missing function nghash_delete_special(),
developed for branch gc-local
2021-10-30 10:39:19 +02:00
Holger Vogt daa3609e58 Enable RKM notation for R and C, when ngbehavior LT is selected.
Add 2 evaluation functions specific for R and C respectively.
R has code letters L, R, K, M, G, T enabled. M here is Meg!
C has code letters p, n, u or µ, m, F. F here is unity, femto is
not available, m is still milli!
Two examples files show all cases.
2021-09-29 20:31:14 +02:00
Holger Vogt 5d116d1fb9 command listing: add option r (runable)
listing r > $inputdir/mycirc_runable.cir
will save the expanded netlist without line numbers,
ready to be sourced again and run in ngspice.
2021-09-29 20:29:26 +02:00
Holger Vogt 493cf73f7f optran is only selected when the 'optran' command has been processed.
If not, the call to the OPtran() function returns the previous
'converged' value.
2021-09-29 20:12:52 +02:00
Holger Vogt df0792818f Transient op calculation added to the standard operating point code.
When standard iteration, gmin stepping and source stepping fail,
try a transient simulation (like tran with uic option) to
determine the op. Implemented for AC and Tran simulation.
2021-09-29 20:00:29 +02:00
Holger Vogt 9a2d968577 When transferring boolean data over the ABI, keep them as boolean types, not integer
Replace the type of all boolean variables around the ABI by NG_BOOL.
NG_BOOL is typedefed to _Bool, when compiling shared ngspice. When
sharedspice.h is use externally NG_BOOL is typdefed to bool
2021-08-03 15:57:58 +02:00
Holger Vogt 4feb43e067 Prepare ngspice-35 2021-07-22 20:38:08 +02:00
Holger Vogt 8eeb924460 CIDER: Enable printing either binary or ascii data output to file.
Patch provided by Brian Taylor, see
(https://sourceforge.net/p/ngspice/mailman/message/37309841/)
2021-07-05 14:31:21 +02:00
Holger Vogt 03517ae86c Define the function DevFinalize as used in the previous commit. 2021-07-05 14:22:55 +02:00
Holger Vogt a6079781ea Fix previous commit, enable name upgrade for Linux and other non-Win OSs 2021-07-05 14:22:10 +02:00
Holger Vogt 1266225cdb For C and R device enable value tokens like 4k7 or 1u2
in addition to 4.7k and 1.2u.

Valid for
R1 1 0 47k
C2 3 6 1u2
only. Does not interfere with other value tokens in params etc.
2021-07-05 14:17:31 +02:00
Holger Vogt f8357dad88 Prepare Cshunt: add a cpacitor to each voltage node
Function inppas4() will add the extra caps, to be done.
2021-07-02 11:52:15 +02:00
Holger Vogt 4bee26b8b9 Remove unused prototype 2021-07-02 11:45:11 +02:00
Holger Vogt 7064df7f3b Define a preprocessor flag HAS_NG_BOOL 2021-05-05 21:59:25 +02:00
Holger Vogt f6ba097b9c Replace BOOL by NG_BOOL
Avoid clashes in environments where BOOL my be used differently.
NG_BOOL is typedefed to int, as ngspice uses int for boolean variables.
2021-05-05 10:52:13 +02:00
Holger Vogt ded0f79c01 Avoid type 'bool', as ist is a built-in type in C++, not
equaling  'int' which ngspice is using.

Change bool to BOOL and ad a
typedef int BOOL;
2021-03-28 18:20:47 +02:00
Holger Vogt 5abd8057e6 remove deprecated storage class 2021-03-28 13:30:39 +02:00
Holger Vogt f61ea3aa96 if 'set nounits' is given, plotting of the units is suppressed
(they may be added manually to the y and x labels for SI conformity).
2021-03-14 15:32:49 +01:00
Holger Vogt 462534a0fb Rename the ngspice version information offered in sharedspice.h 2021-02-21 16:47:44 +01:00
Holger Vogt 99a7bfd8fe Move version info from sharedspice.c to sharedspice.h 2021-02-21 16:47:19 +01:00
Holger Vogt 0ae9aeec41 remove config.h from dist and install 2021-02-21 16:47:02 +01:00
Holger Vogt 5747982ae8 Re-enable devices like E2 1 0 (2,3) 1
Add a new function nexttok_noparens(const char *s) which
skips tokens. Characters , ( and ) are treated like spaces.
2021-01-28 17:06:02 +01:00
Holger Vogt ffef8e1d16 Remeove "redefinition" warning 2021-01-26 18:18:59 +01:00
Holger Vogt 06eddf1adc We need config.h.in, when compiling with ./configure,
that is without resorting to autoconf, automake etc.
So partially undo the previous commit.
2021-01-24 12:55:51 +01:00
Holger Vogt c14680c951 Do not distribute config.h.in 2021-01-24 11:29:48 +01:00
Holger Vogt ebff1fe79f makefile.am for cppduals 2021-01-23 12:54:23 +01:00
Holger Vogt 7dc6c47df5 config.h should not be distributed or installed
somewhere, because it is generated locally during
the build process.
2021-01-23 12:45:12 +01:00
Holger Vogt a5eac333bb Revert "When installing ngspice, do not install the headers"
This reverts commit 5a0d213fec.
2021-01-22 16:05:14 +01:00
Holger Vogt 822a63974f Unused binning models are removed.
Flag 'nf', when given on the x lines, is
recognized.
Tested with TSMC, Skywater, and X-Fab model
files.
2021-01-20 16:44:57 +01:00
Holger Vogt 94eac89749 Remove 'comment out any unused models' for now, it
has been working, but led to spurious error messages.
Has to be checked more thoroughly.

Add a ngbehaviour setting 'mc', needed for running
'make check'. It will unset all other compatibility modes
and suppress the note on compatibility settings which
led to a 'make check' failure just due to its printout.
2021-01-02 19:12:26 +01:00