Commit Graph

8707 Commits

Author SHA1 Message Date
Giles Atkinson 3ba314d4bc New interpreter commands strstr, strslice, fopen, fread and fclose. 2023-11-27 14:58:01 +00:00
Giles Atkinson 566e2938f4 Add XSPICE code model d_cosim, a generic adaptor for digital cosimulation. 2023-11-27 14:50:21 +00:00
Giles Atkinson 12fe7b90c4 Add new code model function cm_irreversible(). This may only be
called from an XSPICE code model's INIT call and has three effects:
the instance is treated as "hybrid" even when it does not use both
port types; its position in the hybrids array is adusted; and it
is explicitly notifed when called just befoore the end of an
analog time-step.
2023-11-26 18:30:53 +00:00
Giles Atkinson 34e6c4abea Convert XSPICE's hybrid_index array to instance pointers.
That simplifies code and will be needed for irreversible code model support.
2023-11-26 18:29:23 +00:00
Giles Atkinson 508fad0f55 In dctran.c, call EVTcall_hybrids() (which then calls a subset of
code model instances) only when the current timestep was successful.
That is efficient and means that code models may rely on such calls,
for example a co-simulator may safely advance to the end of the timestep.
The function cm_irreversible() that is mentioned in a comment will be
added in a later commit.
2023-11-26 18:29:03 +00:00
Holger Vogt 3d1cbf93ee Add a predifined variable 'skywaterpdk' to speed up circuit
loading and parsing.
If set, it removes quoting tokens for params. This requires
that Skywater PDK does adequately stick to the ngspice syntax
to put params in between braces. As far as tests go, it does.
It also set the number of nodes for MSO devices to 4, so no lengthy
search is required.
2023-11-23 18:29:48 +01:00
Holger Vogt dd58b07949 Initialize the new mutex vecreallocMutex 2023-11-19 12:37:29 +01:00
Holger Vogt 1849a8d220 Add functions ngSpice_LockRealloc and ngSpice_UnlockRealloc
to lock reallocing output vectors, e.g. during reading the
vecs for plotting.
2023-11-19 12:05:18 +01:00
Holger Vogt e87651e27f Update to comments, restrict mutex definitions to shared ngspice 2023-11-19 12:05:10 +01:00
Holger Vogt 3619041e26 Add new lock for realloc of vectors 2023-11-19 12:05:01 +01:00
Holger Vogt 1db8eff25c Write message only once. 2023-11-19 10:46:19 +01:00
Holger Vogt ecf4f819dc typo 2023-11-19 10:44:42 +01:00
Holger Vogt 40a783408c Remove adms, enable klu 2023-11-18 20:10:17 +01:00
Holger Vogt 86e991515e Enable compiling with MINGW under MS Windows 2023-11-18 20:09:49 +01:00
Holger Vogt 4d4f226a83 Prevent crash, when vector is defined, but still empty. 2023-11-18 17:17:04 +01:00
Holger Vogt e376c0e5c6 Eanble op or ac op (operating point), when selfheat is on.
op for tran has been o.k.
Fixme: preliminary fix or hack.
2023-11-18 17:16:19 +01:00
Holger Vogt b62bb20e6f Increase the allowable node name length from 24 to 256.
Enable safe copying, no user induced buffer overflow.
2023-11-18 10:55:19 +01:00
Holger Vogt 10756111bf Fix a bug when deleting the memory. With the first call
to mem_delete() all the hash table is deleted, a second
call to mem_delete() does not have any further effect, so
has to be avoided.
2023-11-18 09:58:30 +01:00
Holger Vogt e57979d15d Plug two memory leaks introduced by
2bbadc608 ("Use a hash table glonodes to prevent
double or multiple entries in global node table
global_nodes", 2023-11-17)
2023-11-17 23:50:59 +01:00
Holger Vogt 70e366021b Generate seed numbers from a microseconds clock, not a seconds clock 2023-11-17 18:35:21 +01:00
Holger Vogt 81bb886c71 Replace array global_nodes by hash table glonodes:
Save each global node only once
Search for global nodes hash table (much faster than scanning the list repeatedly).
Remove limit for amount of global nodes.
2023-11-17 17:02:06 +01:00
Holger Vogt 2bbadc6085 Use a hash table glonodes to prevent double or multiple entries
in global node table global_nodes
2023-11-17 13:58:57 +01:00
Holger Vogt d060cb82af typo 2023-11-17 13:57:39 +01:00
Holger Vogt 0735b8d0a5 fix previous commit on repeating error messages 2023-11-15 22:54:53 +01:00
Holger Vogt 22a10c0e44 typo 2023-11-15 22:54:06 +01:00
Holger Vogt 55ba927973 If nan occurs during op calculation, issue the warning
no more than 10 times.
2023-11-14 16:57:14 +01:00
Holger Vogt 4da3dc51fd If compatmode ps or lt: add a series resistance (100µOhms) to
diodes, when RS is not given or 0:
Improves convergence in behavioural models for op evaluation.
2023-11-14 16:56:31 +01:00
Holger Vogt 29bfe94318 Exclude some code under a unified #undef REM_USED 2023-11-13 12:32:15 +01:00
dwarning 2cf2693706 few code cleanings 2023-11-12 17:04:36 +01:00
Holger Vogt 2a005292db Sparse 1.3 is the matrix solver if no option (sparse or klu) is given.
KLU is selected by 'option klu'
If both 'option klu' and 'option sparse' are given,
the last one executed determines the solver.
'option sparse=0' de-selects spares, i.e. selects klu.
'option klu=0' de-selects klu, selects sparse.
'option klu=1' has the same meaning as 'option klu'.
'option sparse=1' has the same meaning as 'option sparse'.
2023-11-12 16:32:40 +01:00
Holger Vogt 5645968510 compiling with klu is now standard 2023-11-12 15:40:04 +01:00
Holger Vogt c87df54f24 Remove unused global variable cp_dol.
This also prevents a gcc 13 bug, as cp_dol has been set to '\0'
by -O2 optimization (see
https://stackoverflow.com/questions/77407156/s-0-being-optimized-out-possible-gcc-13-bug-or-some-undefined-behaviour)
2023-11-11 10:39:51 +01:00
Holger Vogt 02aa2c03f9 klu is now compiled-in as standard 2023-11-10 19:48:52 +01:00
Giles Atkinson 359e3d4609 Fix Bug #467 - ".OPTION INTERP has accuracy issue". 2023-11-09 12:09:05 +00:00
Giles Atkinson 10386ee3e3 Commit [35d338]ngspice partly reverted commit 423f9a9db to fix deletion
of source files if make was accidentally used in the source tree.
That caused the original bug to return.  Fix the problem by deleting
the generated source files by name (no such files exist in source.
Also make the generated files depend on cmpp, making 'make clean'
unnecessary after a chenge to cmpp.
2023-11-09 12:08:02 +00:00
Giles Atkinson f6f7319792 Add null-pointer checks to some code that crashed when trying
to .print results from a non-existent analysis.  Also remove the
troublesome .plot and .print lines from two examples.
2023-11-09 12:07:31 +00:00
Giles Atkinson 4228ba6e8a Ignore end-of-line comments in quoted strings. 2023-11-09 12:06:34 +00:00
Holger Vogt 0a087809d6 If both node names are the same, just print them once in the error message. 2023-11-08 13:12:06 +01:00
Brian Taylor 0555c5d9c7 Make previous KLU support check more transparent. 2023-11-08 11:49:28 +01:00
Brian Taylor 295f212de8 When CIDER is detected, until KLU works with CIDER, print Error: CIDER simulation is not (yet) supported with 'option klu'. Use 'option sparse' instead. and then call controlled exit(1). 2023-11-08 11:49:22 +01:00
dwarning 35d338f256 partly revert commit 423f9a9db - don't remove xspice/icm .c files 2023-11-08 07:59:36 +01:00
Holger Vogt d27b888f13 Noise simulation is buggy when using the KLU solver. Thus for now it is disabled.
Use 'option sparse' instead.
2023-11-06 15:03:09 +01:00
dwarning 4e1452cdb7 rm compiler warnings 2023-11-04 19:36:31 +01:00
dwarning 42f882e4e4 add osdinoise.c 2023-11-04 19:36:31 +01:00
dwarning e67a6a1297 add osdinoise 2023-11-04 19:36:30 +01:00
Pascal Kuthe 5223f4b27d fix(hicuml2): ensure flicker noise power is always stored in state vec 2023-11-04 19:36:30 +01:00
Pascal Kuthe c21f87051a always compute osdi noise powers
ngspice will reuse operating points for noise analysis so we can not trust
the mode flags
2023-11-04 19:36:30 +01:00
Pascal Kuthe 826cddb483 add examples for OSDI noise 2023-11-04 19:36:30 +01:00
Pascal Kuthe f66e0bf2ac implement osdi noise support 2023-11-04 19:36:30 +01:00
Brian Taylor 04c68d5f30 Cleanup child processes on Windows VisualC and Mingw. On Linux those processes quit when ngspice quits. 2023-10-28 19:45:24 +02:00