Holger Vogt
65a91648ef
temporary printout of deck
2024-03-13 17:27:33 +01:00
Brian Taylor
14bf034f28
The lexer incorrectly treats a single '_' '-' '/' as an identifier. The counter used for tmp__ names should be incremented after use. The infix_to_postfix converter now has more checks for invalid infix expressions in LOGICEXP constructs. Without these checks the evaluation of the generated postfix could silently create bad gates which would load but simulate incorrectly. All MicroCap and PSpice libraries and QEI.cir pass their tests.
2024-03-11 22:25:48 +01:00
Brian Taylor
ae8e423d97
Add WARNINGs when there are potential name collisions, and identify the possible name.
2024-03-11 22:25:39 +01:00
Holger Vogt
adb38ecb17
Upon error, bail out when strict_error is set.
2024-03-10 21:58:56 +01:00
dwarning
2dab26212a
introduce diode breakdown voltage parameter alias vb
2024-03-10 09:47:17 +01:00
Holger Vogt
f5c0a1420c
Upon a warning on a model issue, ngspice should not bail out,
...
even if strict_error is set, as typically the simulation will
run and foreign models often have additional unsupported, but
less important parameters.
It shall however, exit if the simulation is interrupted due
to an error and strict_errorhandling is set.
2024-03-09 23:41:34 +01:00
Holger Vogt
da51e1bddf
Don't use printf(".."), but fprintf(stdout, "..."),
...
thus send an end-of-line also when redirected to file.
2024-02-28 10:06:31 +01:00
Holger Vogt
a5f99a4953
Make PSP103_nqs standard, as it is used by the Open PDK from IHP
2024-02-23 14:12:49 +01:00
Brian Taylor
4c983e9133
Remove old dead code.
2024-02-23 14:06:39 +01:00
Brian Taylor
8788ce3504
Add check for a trailing } in a logicexp statement.
2024-02-23 14:06:28 +01:00
Brian Taylor
826401f6a4
Add error detection and reporting for invalid infix expressions.
2024-02-23 14:06:17 +01:00
dwarning
adaa3d39fc
no use for grouping in cx_fft and cx_ifft
2024-02-16 13:56:43 +01:00
dwarning
3201bcb09b
prevent clang error
2024-02-16 10:12:09 +01:00
dwarning
fd000c079b
hicum2: use device temperature for noise analysis too
2024-02-15 18:19:11 +01:00
dwarning
3a18028283
vbic: use device temperature for noise analysis too
2024-02-15 18:09:38 +01:00
dwarning
305cd85c76
mos1...3: use device temperature for noise analysis too
2024-02-15 07:49:06 +01:00
dwarning
a1dbd3f3c8
bjt, dio, jfet, res: use device temperature for noise analysis too
2024-02-14 18:16:50 +01:00
dwarning
20c82a5b1b
format
2024-02-14 17:50:41 +01:00
dwarning
e8f1cd4c92
too soon return - break is correct
2024-02-14 14:17:01 +01:00
dwarning
8d64381795
rm confusing comments and formatting
2024-02-14 14:14:15 +01:00
Holger Vogt
b9c1f68ee0
Preliminary fix to bug report 660
...
Final setting will be decided before next release.
2024-02-13 14:04:58 +01:00
Brian Taylor
e01290c9a2
Replace the logicexp parser with infix to postfix translation followed by evaluating the postfix. logicexp.c is now shorter and easier to understand and maintain. Also, operator precedence expression parsing conforms to the PSPICE rules. Thus, a & b | c is understood to mean (a & b) | c, for example.
2024-02-13 10:11:28 +01:00
Brian Taylor
bd0f725776
There are approx. 47 out of 1455 subckts in PSPICE 9.1 libraries which contain X* subckt calls together with zero or more U* instances. Now this type of subckt can be translated to XSPICE.
2024-02-13 10:11:21 +01:00
dwarning
9ed7a24a0e
mos1...3: Beta in noise w/o channel length modulation
2024-02-12 18:44:35 +01:00
dwarning
6359b7b41f
mos1...3: add nlev=3 mode channel thermal noise
2024-02-12 18:44:35 +01:00
dwarning
c2f0b1468c
mos3mask: change unusual structure name
2024-02-12 18:44:35 +01:00
dwarning
89c7b83954
mos1...3: formatting and white spaces
2024-02-12 18:44:35 +01:00
dwarning
1381d71cb1
selectable flicker noise models for mos1...3
2024-02-12 18:44:35 +01:00
dwarning
2a6db71726
formatting mos1...3 noise code
2024-02-12 18:44:35 +01:00
dwarning
1c9f8b6345
two corrections in Ycor and NF formulae
2024-02-12 11:08:35 +01:00
Giles Atkinson
2ec5944dd4
Use all available precision when creating a "plot" command for a
...
zoomed window. That prevents an unexpected zoom-out in one dimension
caused by a zero-height (or width) window being requested when zooming
with already high magnification.
2024-02-07 14:56:59 +01:00
Holger Vogt
7d1ea80a2e
F source fails when VNAM contains math symbols like '-'.
...
Use INPgetNetTok for instance parameters
like it has been done for nodes already.
2024-02-02 11:15:14 +01:00
Holger Vogt
c0b3511b20
compile with gcc-14 fails due to `-Werror=incompatible-pointer-types`
...
Patch provided by Mamoru Tasaka.
2024-02-02 11:12:24 +01:00
dwarning
1e8f9a411a
rm obsolete order for spec blackman window
2024-01-26 08:32:18 +01:00
dwarning
e0c3206601
partially revert commit aafd7bbb: spec triangular window
2024-01-26 07:45:27 +01:00
dwarning
8aa20cfc98
fft window functions back to correct scaling - no need need for post scaling step
2024-01-24 23:16:44 +01:00
dwarning
9e41383dd9
window weightings between 0 and 1 for fft vector function and command
2024-01-22 17:37:27 +01:00
dwarning
aafd7bbb42
correct bartlett/triangle fft window formulae
2024-01-21 21:58:43 +01:00
Brian Taylor
a70297e87a
Several PSPICE 9.1 evaluation digital libraries contain timing .model statements at the global level for subckts with U* instances that reference those models. By specifying "set ps_global_tmodels=1" in .spiceinit an extra pass inside u_instances() will collect those global timing models for use in subckts. Report errors detected when ngspice parses a LOGICEXP but has not added support for operator precendence. Include a hint of how to fix those errors by inserting parentheses. This error only occurs in 10 of 585 cases in the libraries. Note that inpcompat.c has been saved as a unix filetype.
2024-01-17 14:15:07 +01:00
dwarning
add31fd410
correct flicker noise term for mos1 and mos2 - bug #656
2024-01-16 16:26:38 +01:00
Holger Vogt
a0bddf872d
Fix dd7b9ff27
...
("Avoid memory crash when reading old VDMOS models.
Enable both old and current model format.",
2023-12-30)
2024-01-15 11:10:50 +01:00
Holger Vogt
79e80dbbab
Automatically adding diode RS only when variable 'rsdiode' is set
...
to a positive resistance value.
2024-01-15 09:59:21 +01:00
Holger Vogt
0141473aa4
Don't derefence Matrix->SMPkluMatrix->KLUmatrixCommon if it is NULL.
...
Test for NULL moved upwards in front of dereferencing.
2024-01-14 15:12:03 +01:00
Holger Vogt
5266a7c4bc
If there is a successful step, but the goal is not yet reached,
...
don't start with the minimum value of 1.00005, as this may last
forever. Restart with 3.
2024-01-14 11:16:45 +01:00
Giles Atkinson
d86a0c77cb
Improve scheduling of breakpoints for V-source (PULSE and PWL).
...
This fixes bugs with the TRA delay line reported by Tom Hajjar in
the Help forum, Jan 11 2024.
2024-01-13 18:06:46 +00:00
Giles Atkinson
2ad97feb31
A quick fix for a bug reported in the Help forum by Tom Hajjar on
...
Jan 6 2024. Prevent the TRA device from requesting a breakpoint
in the past, as that is a hard error.
2024-01-12 17:14:05 +00:00
Holger Vogt
e6d6f8e928
Update to V/I sources, SFFM and AM
...
Enable more AM functions.
Unify the settings of both sources.
2024-01-08 13:21:43 +01:00
Holger Vogt
5dbb25f667
Set new default values.
...
Restructure the code a bit.
Two parameters for AM are required (offset and amplitude). Even if this
sounds needless, changing it would require a major effort.
2024-01-07 11:59:33 +01:00
Holger Vogt
4d0e65b3b6
Extend the error message
2024-01-07 11:56:56 +01:00
Holger Vogt
a4ae81ec06
We are developing towards ngspice-43
2024-01-06 23:14:26 +01:00
Holger Vogt
aaaad70991
Previous AM was buggy in V(I)SRC: Update to amplitude modulation
...
with corrected equation.
2024-01-06 23:09:27 +01:00
Holger Vogt
88d0727d3f
In PS compat mode we only have 2 nodes in a diode,
...
but still allow self heating diode with ngspice syntax.
2024-01-06 11:51:11 +01:00
Holger Vogt
ace932e1b9
Patches provided by Carsten Schoenert: Misspellings, File access
2023-12-31 13:51:05 +01:00
Holger Vogt
88844ba74d
Prevent vectors carrying the E POLY source current from being disaggregated
2023-12-31 13:32:45 +01:00
Holger Vogt
dd7b9ff273
Avoid memory crash when reading old VDMOS models.
...
Enable both old and current model format.
2023-12-30 22:52:41 +01:00
Holger Vogt
ace235da04
Remove ADMS from build process
2023-12-29 16:53:39 +01:00
Holger Vogt
f99a137eb3
Patch for snprintf provided by Marco Atzeri
2023-12-29 10:59:56 +01:00
Holger Vogt
902a62d2f4
win_time.c as extra distribution, used only by MSVC
2023-12-27 19:41:13 +01:00
Holger Vogt
f8e77d08d0
More headers distributed
2023-12-27 17:12:15 +01:00
Holger Vogt
f4c560ba71
Add more KLU headers to enable their distribution
2023-12-27 16:42:37 +01:00
Holger Vogt
a08f1046e4
Add KLU headers to enable their distribution
2023-12-27 16:18:36 +01:00
Holger Vogt
009249eafe
Short title
2023-12-27 12:27:31 +01:00
Holger Vogt
c1effe3b33
Just a hack to avoid a crash during sensitivity analysis:
...
Exclude parameter RCO from sens code, if not given,
as sens sets mods->BJTintCollResistGiven to TRUE, which fails due to
missing memory allocation for the extra nodes.
2023-12-27 12:26:56 +01:00
Holger Vogt
ca7c6cce71
Avoid crash, when sensitivity analysis is called
2023-12-27 11:32:31 +01:00
Holger Vogt
f307586d89
Formatting
2023-12-27 10:42:07 +01:00
Holger Vogt
db5e5b08eb
Don't switch display to "op", if called from a dc simulation.
2023-12-22 18:16:26 +01:00
Holger Vogt
03905433bb
If compatmode hs is set, don't run an extra iteration with
...
differing mode settings, but go directly to CKTop().
If other or none compat modes, keep existing behavior, as
for example CIDER example may otherwise slow down significantly.
This is to keep dc sim in accordance with other simulators.
2023-12-22 17:21:55 +01:00
Holger Vogt
37944bd7c4
Preliminary fix to bug 650
...
Don't omit replacement, when independent nested subcircuit has been checked.
FIXME: Better use the cards level parameter.
2023-12-22 17:18:43 +01:00
Holger Vogt
4671b588b6
Update comment
2023-12-22 17:14:43 +01:00
Holger Vogt
5154fd3fd7
Allways export function ngCM_Input_Path, independently from XSPICE
...
Update comment
2023-12-22 17:14:22 +01:00
Holger Vogt
d1abc8f6c7
typo
2023-12-22 13:11:21 +01:00
Holger Vogt
c53b32ffa8
Plug a potential memory leak
2023-12-19 15:30:44 +01:00
Brian Taylor
8f52a67786
Fix set but not used warning.
2023-12-19 14:28:29 +01:00
Giles Atkinson
af31904f99
The previous fix for Bug #467 - ".OPTION INTERP has accuracy issue"
...
(359e3d46 ) updated variable timeold inside a loop so that
all interpolations after the first caused division by zero.
That caused the xspice/delta-sigma example to fail.
Set the variable once at the end of the function.
2023-12-19 14:27:33 +01:00
Giles Atkinson
ffcf3b24d9
Improve efficiency and irreversible CM support in EVTcall_hybrids() by
...
halting calls to code models as soon as the timestep is chenged.
This should have been included in 508fad0f55 .
2023-12-19 14:26:56 +01:00
Holger Vogt
9a50f8b749
typo
2023-12-12 17:24:23 +01:00
Holger Vogt
ce8f6c5017
prepare ngspice-42
2023-12-12 17:08:58 +01:00
Holger Vogt
2e56f3a063
Add short description of the new interface functions
...
ngSpice_LockRealloc(void) ad ngSpice_UnlockRealloc(void)
2023-12-12 17:02:19 +01:00
Holger Vogt
7f30055f22
Prevent crash if port number is less than 1.
2023-12-12 16:29:32 +01:00
Holger Vogt
45850c07dc
Don't silently accept wrong user input (missing nodes, values).
...
Check for at leat 4 tokens (name, n1, n2, val/model/...).
If the instance has not been set up correctly, bail out, prevent crash.
2023-12-12 16:29:28 +01:00
Holger Vogt
7cd4f003ff
typo
2023-12-12 16:29:23 +01:00
Holger Vogt
6459fed460
Don't prescribe a different resistance value if the user has given one > 0.
2023-12-12 16:28:38 +01:00
Holger Vogt
732c12c93f
Remove another potential crash if buggy user input
2023-12-09 15:43:19 +01:00
Holger Vogt
c69018fe82
Enable measurements with ?-sweep (v, i, temp, or res).
...
Improve error messages.
Prevent crash is compüdata is not available.
Add to examples for measure failures.
2023-12-09 15:43:15 +01:00
dwarning
6ad0a6ad38
hisim2: allow compile w/o NEWCONV defined
2023-12-09 15:43:11 +01:00
dwarning
a98cfcd8cb
allow compile w/o NEWCONV defined
2023-12-09 15:43:00 +01:00
Giles Atkinson
3cf8fe8c41
Stop after last data point, preventing read overrun of nscale.
2023-12-01 12:26:58 +00:00
Giles Atkinson
d82f948832
Fix a crash found by Brian Taylor: when .plot attempts to plot digital
...
node history, interpolation may produce an infinite value at digital edges.
Remove vertical edges when interpolating and make some other improvements:
do not calculate a polynomial approximation for unused frames;
center the target x-value in the frame; and do not propogate a reduction
in degree to later frames.
2023-11-30 17:23:32 +00:00
Giles Atkinson
c18447f9f5
Add the support files for co-simulation with Verilog code
...
compiled by Verilator. Also add script files to Visual Studio builds
that are already installed by the Makefile builds.
2023-11-27 20:55:59 +00:00
Giles Atkinson
a92c569b72
Prevent some strings being mis-recognised by strstr(), including
...
one that causes a false error message from the vlnggen script.
2023-11-27 17:17:21 +00:00
Giles Atkinson
597268cc26
Treat input files names passed a start-up the same as those entered
...
as commands or called as scripts: search for them using $sourcepath.
2023-11-27 17:16:55 +00:00
Giles Atkinson
07ce9c788e
Recognise *ng_script_with_params" in the first line of the first
...
program input file to mean that the file is a pure interpreter
script that receives any remaining command arguments.
In winmain.c ensure that the argv array is NULL-terminated
and tidy some code.
2023-11-27 17:06:39 +00:00
Giles Atkinson
89851872ed
When substituting interpreter variables, allow '$' to be part of
...
the variable expresstion only within '[]' or '()'. That lets
forms like "$a$b" to be treated as two substitutions, not one.
2023-11-27 15:13:31 +00:00
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
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
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
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
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
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
Brian Taylor
4219efb5d5
Make it explicit that null output ports are not allowed. The output port vector bounds are always >= 1.
2023-10-28 19:43:46 +02:00
Brian Taylor
c83d11c9c0
Call cm_cexit() to prevent the simulator running when d_process initialization errors occur.
2023-10-28 19:43:23 +02:00
Holger Vogt
21761207bc
Change license to 3-clause BSD (see
...
https://sourceforge.net/p/ngspice/ngspice/merge-requests/6/?limit=25#fd4f/73e6 )
2023-10-28 14:55:13 +02:00
Brian Taylor
09f070f582
Error handling improvements in cfunc.mod. Ensure that d_process.h wiil always respond to version and interface checks sent from sendheader. This is needed so that the pipe reads in sendheader do not cause Windows to hang when the interface version and in/out counts do not match. This hang was the cause of errors not being reported and the Windows gui hanging. Startup and header checks are now detected in cm_d_process, and the simulator will run but with runtime errors since a d_process model cannot be completely instantiated after initial errors. It would be good to find a means of gracefully halting the simulation run.
2023-10-28 11:00:33 +02:00
Brian Taylor
8c72a76844
Another attempt at clean up of error handling and reporting. It's OK on limux and cygwin, but Windows VisualC is being stubborn. I would prefer not to have to call exit(1) just for Windows, since then nothing is reported and the gui disappears in a puff of smoke. Even without the exit calls nothing gets reported with the Windows gui which will hang when there are errors detected by d_process.
2023-10-28 11:00:28 +02:00
Brian Taylor
4eae039779
Add modifications note.
2023-10-28 11:00:23 +02:00
Brian Taylor
4530cde8e2
Use Xspice cm_message_send to report errors rathen than printing to stderr and calling exit. When a d_process model has errors found in start(), sendheader(), and dprocess_exchangedata() these are reported, but if the model is run a SIGINT is raised. There must be a better way of stopping the simulator.
2023-10-28 11:00:18 +02:00
Brian Taylor
df28fabc42
Restore the deleted unused params to be backword compatible. Handle the case where the d_process instance has a null in vector, so that N_din is zero. This allows the model to be just a pattern generator. Add include to cmproto.h to avoid a forward ref. to an enum type.
2023-10-28 11:00:03 +02:00
Brian Taylor
307ba1985b
Remove unused reset_state param; do not allow null in and out, so there is at least 1 input and 1 output.
2023-10-28 10:59:52 +02:00
Brian Taylor
7820940be3
Remove the unused reset_delay param.
2023-10-28 10:59:42 +02:00
Brian Taylor
e762047fc2
Add array bounds check, fix typos.
2023-10-28 10:59:34 +02:00
Brian Taylor
022a340ddb
Fix VisualC and Mingw compiler warnings.
2023-10-28 10:59:11 +02:00
Brian Taylor
cccb4a1559
Add callback to free process memory.
2023-10-28 10:58:39 +02:00
Brian Taylor
33780055ee
Add MODIFICATIONS note, cleanup white space.
2023-10-28 10:58:28 +02:00
Brian Taylor
5c4352d02f
Add __MINGW64__ defines for builds on mingw with msys.
2023-10-28 10:58:15 +02:00
Brian Taylor
3bb6e86015
Add Windows Visual Studio support for the Isotel d_process xspice digital model. The Isotel mixedsim-master/examples/embedded/motorforce C code needs to have minor changes for _MSC_VER defines, and are not included with this commit. The changes relate to using #pragma pack(push, 1)...#pragma pack(pop) around some structs, and setting stdin/stdout in binary mode. It is doubtful that the cfunc.mod will compile on mingw or cygwin since I don't know if they support pipe/fork/exec/spawn calls. The code builds and runs on Windows, Linux, and MacOS. In the future, Giles Atkinson is looking at allowing Xspice models to load shared libraries (.dll, .so) which will avoid creating and communicating with an external program.
2023-10-28 10:58:06 +02:00
Holger Vogt
efdf332061
Prevent a crash if hash model table was not generated,
...
e.g. due to missing valid models.
2023-10-27 23:13:41 +02:00
Holger Vogt
10d7297798
Add cm_cecit(). If the input file could not be opened, stop ngspice.
2023-10-21 15:52:10 +02:00
Holger Vogt
19ebfb1887
Add a code model function cm_exit(const int exitcode).
...
This function calls controlled_exit(exitcode) to shut
down gracefully.
2023-10-18 22:46:27 +02:00
Holger Vogt
f26dda8616
Formatting
2023-10-18 17:44:56 +02:00
Holger Vogt
39443fafdd
Removing unused models takes much more time than keeping them
...
for large circuits.
Probably a hash table may help here (t.b.d.).
2023-10-18 14:36:08 +02:00
Holger Vogt
8ef0aece58
During setup of the models thre have been search scans in the
...
linked model list modtab. The time used here grows approx.
quadratically with the number of models. If the numbers get large,
e.g. with the IHP Open PDK, setup time make simulation impractical.
Therefore the linked list modtab has been enhanced by a hash table
modtabhash, which allows linear search time and makes simulation
of a 200k transistor circuit with IHP PDK possible. Already
the setup time for 15k transistor circuits has been reduced.
2023-10-18 14:34:16 +02:00
Holger Vogt
9702557f81
Evaluate function gauss() in B sources. This is required when
...
in .model files the tokens 'temper' and gauss() coexist, because
then the B Source function parser is applied.
2023-10-16 17:53:58 +02:00
Holger Vogt
eb36084700
re-formatting (indentation, tabs removed)
2023-10-11 00:08:55 +02:00
Holger Vogt
9edf34495e
Don't say 'issue in line no. 0', as this 'info' does not tell
...
where the line with position 0 really is in the input deck.
2023-10-09 23:19:30 +02:00
Holger Vogt
7c3cb8169c
This is a re-write of the PWM generator.
...
It is modelled according to the new d_OSC by Giles Atkinson.
Here frequency is fixed and duty cycle is controlled by an
analog input.
2023-10-07 17:13:55 +02:00
Holger Vogt
ecb416b800
This patch fixes a bug when shared library uses XSPICE:
...
Don't subtract delta twice, when breakpoint is active
and step is rejected.
https://sourceforge.net/p/ngspice/patches/106/
Thanks to Vyacheslav Shevchuk
2023-10-07 17:10:31 +02:00
Holger Vogt
9944a4869f
typo
2023-10-07 13:36:56 +02:00
Holger Vogt
53315ed764
Prevent crash when no input file given.
2023-10-05 00:19:51 +02:00
Holger Vogt
4f79105b06
Add comment
2023-10-02 10:07:52 +02:00
Holger Vogt
233f9daba4
Remove unused instance parameter ic (initial condition of controlling source).
2023-10-01 10:51:31 +02:00
Holger Vogt
28b495318d
Update to command 'wrnodev':
...
Prevent crash if tran is not (yet) run.
Open output file only when data are available.
Enhanced comment and warning message.
2023-09-28 10:05:31 +02:00
Holger Vogt
e449c894ce
Prepend title line by '*' if printed by 'listing r'.
...
This allows skipping all pre-processing.
2023-09-27 15:51:16 +02:00
Holger Vogt
76f837b0b7
skip all pre-processing for expanded input files created by 'listing r'
2023-09-27 15:49:37 +02:00
Giles Atkinson
2790fd68bb
Make the special "noglob" variable work. To preserve previous behaviour
...
change the default value from true to undefined (meaning false).
Also fix a misleading comment in glob.c.
2023-09-25 10:54:13 +02:00
Giles Atkinson
a70e708114
Make special interpreter variable "noglob" behave as documented:
...
globbing is off by default. An incompatible change, but previous
behaviour can be restored by "unset noglob" in .spiceinit.
2023-09-23 17:03:34 +02:00
Giles Atkinson
41c61604c5
Handle SIGTTIN and SIGTTOU on Unix-like OSs with X11 graphics.
...
That makes it possible to push ngspice into the background while
plot windows are open: the windows remain responsive.
Discussion on ngspice-users, starting 2023-09-01,
title: "`quit` in Interactive Mode."
Also restore terminal state when forcing exit with SIGINT (control-C).
2023-09-23 17:03:24 +02:00
Giles Atkinson
588116af48
Fix a bug in the "help" command. Some commands have no action function,
...
so the function pointer should not be used to detect the end of the table.
Use the command name instead.
2023-09-23 17:03:19 +02:00
Giles Atkinson
423f9a9db2
Fix a build bug for XSPICE: files generated for code models are
...
not removed when doing 'make clean' from release/src/xspice or above.
2023-09-23 17:03:09 +02:00
Holger Vogt
f3eb46e76d
Fix bug in fprintf
2023-09-23 16:45:35 +02:00
Holger Vogt
b034332e84
Improve warning message during evaluating .probe
2023-09-19 14:57:22 +02:00
Giles Atkinson
62471ecede
Fix two bugs in cmpp: an unmatched right bracket in cfunc.mod
...
causes an infinite parsing loop (mod_yacc.y) and XSPICE macros
are replaced in string literals (mod_lex.l).
2023-09-16 00:19:36 +02:00
Holger Vogt
dbc5042263
Prevent a crash if port cntrl is set to NULL
2023-09-15 23:42:08 +02:00
Holger Vogt
01bdd44ef9
Modify the previous commit a616a0abe:
...
no spaces in the first column
2023-09-15 23:41:12 +02:00
Vogt
a616a0abe3
Add variable wr_onspace to allow printing the vetor name with
...
one space delimiter
2023-09-14 15:22:14 +02:00
Holger Vogt
daa58f4125
Fix previous commit [acb7f2]
...
Allow frequency 0 Hz (make check will do agian).
2023-09-11 22:48:50 +02:00
Holger Vogt
acb7f2cd97
Make .ac error messages more verbose, prevent some crash,
...
enable default values.
2023-09-11 17:42:38 +02:00
dwarning
4368790c5d
remove compiler warning wrt. prototypes
2023-09-11 14:50:27 +02:00
Holger Vogt
b7993bb530
Formatting cktpzstr.c
2023-09-11 14:28:49 +02:00
Holger Vogt
dfeb0bdb4e
Improve error message on obsolete dot command
2023-09-11 14:28:20 +02:00
Holger Vogt
64c29e667e
Improve error message on unimplemented dot command
2023-09-11 12:02:59 +02:00
Holger Vogt
a6d5ce8ea6
Some KLU warnings are useless for the normal user, as she or he
...
does not have any means to further analyze or repair the issue:
Warning: KLU ReFactor failed. Factoring again...
Warning (ReFactor Complex): KLU Matrix is SINGULAR
Numerical Rank: %d\n
Singular Node: %d\n
So print these messages only in debug mode.
2023-09-10 14:41:16 +02:00
Holger Vogt
64307ba907
Add a title line to 'listing r', so the resulting output may be
...
re-loaded by the 'source' command.
2023-09-10 13:44:18 +02:00
Holger Vogt
9d84138216
Remove memory leak by not mallocing unused node_ids.
...
Remove some compiler warnings.
2023-09-09 23:35:54 +02:00
Holger Vogt
3b89410b8f
Slight cosmetics in comment.
2023-09-09 23:34:49 +02:00
Brian Taylor
492bb64d92
By default, use the shortest typical delay estimate. This makes the digi_74LS90_74LS42.cir testcase for bug641 behave almost the same as MicroCap 12. In ngspice and MicroCap, the only signal with a glitch is not_y8. The other not_* signals look the same. Setting ps_use_mntymx in .spiceinit will change the delay estimates. See the function set_u_devices_info in src/frontend/udevices.c for the various settings of ps_use_mntymx.
2023-09-09 23:22:06 +02:00
Holger Vogt
7a646c0a12
If 'strict_errorhandling' is set, bail out if operating point is not found
2023-09-09 18:38:09 +02:00
Holger Vogt
ad23146544
Don't check continuously for autostop, only when option flag is set
...
This speeds up simulations with simple device evaluation, but many
time stepps.
2023-09-09 18:37:13 +02:00
Holger Vogt
0f14c690d5
Stat. functions: safeguard against divide by zero, return nominal value
2023-08-26 10:15:08 +02:00
Holger Vogt
8837132f29
Fix d0fc344bf
...
("Shorten the ngspice message when performing operating point evaluation.
The average user often complained about useless 'info'.
The old output is now available when 'set ngdebug' in .spiceinit.",
2023-08-19)
Return with 0 if optran has been successful.
2023-08-20 00:11:39 +02:00
Holger Vogt
d5ceced24d
We are developing towards ngspice-42
2023-08-19 23:54:36 +02:00
Holger Vogt
d0fc344bf9
Shorten the ngspice message when performing operating point evaluation.
...
The average user often complained about useless 'info'. The old output
is now available when 'set ngdebug' in .spiceinit.
2023-08-19 23:42:34 +02:00
Holger Vogt
c0d73dcd6f
Fix bug 642 by replacing strstr() by search_plain_identifier()
2023-08-19 23:14:26 +02:00
Holger Vogt
750d92c493
Fix a bug, not finding any instance parameters for PSP or R2_CMC
...
If already aligned, return input value, not 0.
2023-08-16 11:14:26 +02:00
Holger Vogt
adc645d8e9
Fix intro comment: NDEV is no longer supported in ngspice
2023-08-16 11:14:26 +02:00
Holger Vogt
c11613d1f7
Fix some memory leaks (Patch provided by Brian Taylor)
2023-08-16 11:14:25 +02:00
Holger Vogt
4864f0a118
Remove crash in CIDER example meclgate.cir
2023-08-16 11:14:25 +02:00
Pascal Kuthe
499634df47
integrate OSDI with KLU
2023-08-16 11:14:25 +02:00
Francesco Lannutti
05aa9f0927
Better fix for previous commit
2023-08-16 11:14:24 +02:00
Francesco Lannutti
13e74751cc
Fixed a MLK for XSPICE and commented out an unused array
2023-08-16 11:14:24 +02:00
Francesco Lannutti
cab5e8cd37
Added the case of VSRCport to VSRC model for KLU
2023-08-16 11:14:24 +02:00
Holger Vogt
d658e0427c
Enable compilation with MSVC (alignof seems to be available only for C++)
2023-08-16 11:14:24 +02:00
Francesco Lannutti
b08eb2266a
Added initial KLU support for node collapsing
2023-08-16 11:14:24 +02:00
Francesco Lannutti
470cd4a514
Fixed KLU SINGULAR matrix handling and messaging
2023-08-16 11:14:24 +02:00
Francesco Lannutti
d68e83be78
Fixed VBIC model for KLU
...
Fixed SMPfindElt messages
2023-08-16 11:14:23 +02:00
Francesco Lannutti
8123fde6f7
Handled properly KLU messages when XSPICE is purely digital
2023-08-16 11:14:23 +02:00
Francesco Lannutti
4200362f42
Fixed Empty Matrix handling in KLU
2023-08-16 11:14:23 +02:00
Francesco Lannutti
937325e2ce
Handled an empty circuit with KLU
2023-08-16 11:14:23 +02:00
Francesco Lannutti
4427a1f6dd
Rebased upon pre-master branch
2023-08-16 11:14:23 +02:00
Francesco Lannutti
ae83b7c807
Added KLU support to HICUM model
2023-08-16 11:14:22 +02:00
Holger Vogt
6b6e9bb7cb
Enable log output (warning and error messages) on the Windows GUI
2023-08-16 11:14:22 +02:00
Holger Vogt
d6aeb6cd94
Set up the matrix according to branch KLU-6+11-rebase-master-28_10_2020
...
All cpl example files from ngspice\examples\TransmissionLines are o.k.
2023-08-16 11:14:22 +02:00
Francesco Lannutti
02e7c1c5b0
KLU branch rebased upon master @ 3 Feb 2022
...
Some merge conflicts have not been solved yet
Please look for >>>> HEAD if you want to solve them
2023-08-16 11:14:22 +02:00
Francesco Lannutti
b900527341
Fixed KLU binding for VDMOS
2023-08-16 11:14:21 +02:00
Francesco Lannutti
2bfd22c8f9
Fixed KLU binding for BJT
2023-08-16 11:14:21 +02:00
Francesco Lannutti
caf1ee7c47
Fixed a crash when SPARSE is used
2023-08-16 11:14:21 +02:00
Francesco Lannutti
3c15993fe5
Fixed the case when DiagGmin has to not be loaded again and the case when refactoring returns 1
2023-08-16 11:14:21 +02:00
Francesco Lannutti
1ee798ec9d
Fixed CKTsetup for KLU when XSPICE is used
2023-08-16 11:14:21 +02:00
Francesco Lannutti
6ccaacaf1d
Added the support for KLU to VBIC Self Heating
2023-08-16 11:14:21 +02:00
Francesco Lannutti
12288f7be6
Fixed KLU memory leak during SMPdestroy
2023-08-16 11:14:20 +02:00
Francesco Lannutti
7048a24b74
Added the KLU support to Noise Analysis
2023-08-16 11:14:20 +02:00
Francesco Lannutti
4639e936a3
Fixed the dimension of the COO Trash Can
2023-08-16 11:14:20 +02:00
Francesco Lannutti
73626c62f8
Add KLU support to VDMOS
2023-08-16 11:14:20 +02:00
Holger Vogt
3bb643c8f5
re-enable CIDER with option sparse by setting CKTkluMODE
...
in new matrix to CKTkluMODE from current circuit.
2023-08-16 11:14:20 +02:00
Holger Vogt
98dd7da1c4
fix a memory leak in ASRC
2023-08-16 11:14:20 +02:00
Francesco Lannutti
613ae18db9
Fixed a memory leak
2023-08-16 11:14:20 +02:00
Holger Vogt
33eec95855
plug a memory leak
2023-08-16 11:14:20 +02:00
Holger Vogt
d5434a2df2
fix a memory leak
...
ckt->CKTmatrix is now malloced, so has to bee freed as well
2023-08-16 11:14:19 +02:00
Francesco Lannutti
967ee13940
Added a comment in NIiter
2023-08-16 11:14:19 +02:00
Francesco Lannutti
1110019ff2
Changed the PivTol in SMPreorder with PivRel
2023-08-16 11:14:19 +02:00
Francesco Lannutti
0b7dc09fc1
Fixed the accounting statistics for SPICE and CIDER about number of elements in KLU
2023-08-16 11:14:19 +02:00
Francesco Lannutti
3b1f5e6122
Changed the Error message in klusmp.c to Information
2023-08-16 11:14:19 +02:00
Francesco Lannutti
88074a23c9
Fixed 2 files due to rebasing KLU branch on the master branch - 8/7/2020
2023-08-16 11:14:19 +02:00
Francesco Lannutti
fe89da2b2c
Getting rid of SPARSE for Initial Circuit Matrix creation. Now KLU is totally independent from SPARSE. This opens up the interface for other solvers as well
...
SPARSE can still used through '.options sparse', but it isn't possible to switch from KLU to SPARSE and viceversa at run-time
2023-08-16 11:14:18 +02:00
Francesco Lannutti
4d00b67b4d
Used IF_REAL instead of IF_FLAG
2023-08-16 11:14:18 +02:00
Francesco Lannutti
49f6444957
Added "klu_memgrow_factor" option to control the KLU memory grow factor
2023-08-16 11:14:18 +02:00
Francesco Lannutti
5513f6e5f6
Handled the SINGULAR matrix case in a more clever way!
2023-08-16 11:14:18 +02:00
Francesco Lannutti
658f449c9b
Fixed the VSRCbindCSC routine
2023-08-16 11:14:18 +02:00
Francesco Lannutti
f487720b10
Fixed BJTbindCSC routine
2023-08-16 11:14:17 +02:00
Francesco Lannutti
fbd8d94cdf
Fixed again the NIiter loop for KLU
2023-08-16 11:14:17 +02:00
Francesco Lannutti
710341bbfd
Fixed KLU returns values so that NIiter can Factor again, if the matrix is numerically singular from the refactorization
...
Fixed the NIiter code to perform a factorization without reloading the matrix
2023-08-16 11:14:17 +02:00
Francesco Lannutti
72d78a2053
Added the KLU support to ADMS models
2023-08-16 11:14:17 +02:00
Francesco Lannutti
77fa5c06a9
Fixed the KLU returns values for Factorization and ReFactorization.
...
If the matrix is Numerically Singular, continue the factorization till the end
2023-08-16 11:14:17 +02:00