Commit Graph

7438 Commits

Author SHA1 Message Date
Holger Vogt 2d8fe0362f Allow delay of 0, as requested by Infineon model of the 2EDNY52X 2024-05-14 16:29:07 +02:00
Holger Vogt 89b25c5d58 Do not add line number 0, but the number of the original
.probe command to linenum_orig.
2024-05-14 16:28:51 +02:00
Holger Vogt e151b691fb Add an additional funtion parameter 'filename' to fcn inp_readall
to transfer not only the folder, but also the file name of the
current input
2024-05-14 16:28:40 +02:00
Holger Vogt da3d51ce9a Add 'linesource', to contain the path/file of the origin of the line. 2024-05-14 16:28:17 +02:00
Holger Vogt 2ac12df93b while copying a deck, copy the new infos 2024-05-14 16:27:56 +02:00
Giles Atkinson b2c0f85c6d Prevent lines beginning '#' in .include files from being treated
as device lines.
2024-05-01 10:55:26 +02:00
Giles Atkinson 9f0e44cace Fix an error in cfbe1afa21 that causes a crash in d_cosim. 2024-05-01 10:55:10 +02:00
dwarning 6b80d21e36 diode: add alternative bangap calculation for tlev=2 2024-05-01 10:54:45 +02:00
dwarning 5fdd21f239 diode: add model parameter xw for mask and etching effect (level=3) 2024-05-01 10:54:29 +02:00
Holger Vogt 44d0991af0 Replace IOP by IOPR 2024-05-01 10:53:50 +02:00
Pat Deegan 52365c718a level 3 note on breakdown voltage params 2024-05-01 10:46:45 +02:00
Pat Deegan bcc769af0e Diode Model Parameters, Level 3, support for diode breakdown voltage synonyms, as used in sky130 PDK 2024-05-01 10:46:22 +02:00
Holger Vogt cf4684f9ae Stop ngspice in case of pwl errors, avoid crash. 2024-05-01 10:33:42 +02:00
Holger Vogt 5d207f7b43 Add environmental variable NGSPICE_OSDI_DIR. It may contain
a path for *.osdi files (compiled Verilog-A models). The search
sequence for a *.osdi file now is:
Absolute path (if any)
Linux home directory ~/
Path in NGSPICE_OSDI_DIR
Path of netlist loaded
Path of executable ngspice.exe
Path of 'Current working directory'
2024-05-01 10:33:14 +02:00
Holger Vogt a48b1f8f46 allow compiling with CIDER deselected 2024-05-01 10:32:54 +02:00
Holger Vogt 4ed1ebf874 avoid crash when compiled with lto 2024-05-01 10:32:43 +02:00
Holger Vogt 1cdacad261 optran 0 0 0 0 0 uic may be used to load initial conditions
(.ic=xxx statements) without staring an op iteration.
2024-05-01 10:32:31 +02:00
Holger Vogt 39b5ea0d3f no lower casing for file input paths 2024-05-01 10:32:23 +02:00
Holger Vogt 2bee691717 correct the link to the license text. 2024-05-01 10:31:58 +02:00
Giles Atkinson 5f59d76a03 Suppress some warnings from MSVC. 2024-05-01 10:31:25 +02:00
Giles Atkinson 6ce627e6f8 Tidy d_process/ifspec.ifs so that it works after changes in
mif_inp2.c and writ_ifs.c to enforce "Null_Allowed".
2024-05-01 10:31:15 +02:00
Giles Atkinson 27eda59034 Make the 'Null_Allowed' option for XSPICE code model parameters
behave as reasonably expected and as described in the manual.
Previously a missing (null) value was always accepted if the ifsspec.ifs
file contained a default value, and several of the the included
code models worked that way.  Where there was a useful default,
"no" has channged to "yes".  Some models with a look-up table defined
by two parameters had such defaults that did nothing useful. Thay have
been given useful vector defaults.  These changes should not affect
previously-working netlists.
2024-05-01 10:31:07 +02:00
Giles Atkinson 7dd2db904c Change CMPP-related struct Mif_Parse_Value to a union
as C99 allows initialisation of any member.  Also correct a comment
in miftypes.h.
2024-05-01 10:30:48 +02:00
Giles Atkinson 0152ea92db Support use of vector defaults for XSPICE vector parameters.
This answers Feature Request 60 - "Array as default value for parameter".
2024-05-01 10:30:40 +02:00
Giles Atkinson 8ad759bd66 Use the correct type of hash table for device and model names.
This fixes unpredictable failures of commands like "print @some_device".
2024-05-01 10:30:31 +02:00
Giles Atkinson 673ae5c01d Change the code that makes variables from device/model parameters
(spiceif.c) and vectors from variables (vectors.c) so that
array and string-valued parameters and the resulting variables
are handled correctly.  Fix a memory leak in converting
array parameters; that requires a change in cplask.c so that
CPL devices behave the same way as others.  Add a "device" variant of
the Compose command so that generated vectors are available in scripts.
2024-05-01 10:30:16 +02:00
dwarning 3684db0126 use limexp to prevent NaN with extreme exponents 2024-05-01 10:30:03 +02:00
dwarning 0fdd412324 format 2024-05-01 10:29:53 +02:00
Brian Taylor d002ba353b Fix scan_gates to consider correctly gates with an inverted output. Refactor the checks in infix_to_postfix for invalid postfix expressions. 2024-05-01 10:29:35 +02:00
Brian Taylor 0ec0c92eae Go back to before previous merge. 2024-05-01 10:29:21 +02:00
Brian Taylor 31ed74041f Remove unnecessary #include. 2024-05-01 10:29:06 +02:00
Brian Taylor 57048228e9 Add variable ps_scan_gates_optimize (default 1). If < 1, then turn off the optimizations in scan_gates. 2024-05-01 10:28:53 +02:00
Holger Vogt ab0cf31148 Guard reading and executing spinit by variable no_spinit. 2024-05-01 10:28:40 +02:00
Holger Vogt 8f2f0088f2 Add a new exported function ngSpice_nospinit() to set
variable no_spinit.
2024-05-01 10:28:09 +02:00
Holger Vogt 2c2c97104f Unify all spinit sources 2024-05-01 10:27:31 +02:00
Holger Vogt ac7584bcf6 Unify the function interface, avoid lto-type-mismatch 2024-05-01 10:27:19 +02:00
Brian Taylor 292f7ad60a Fix bug in the LOGICEXP scan_gates optimizer. Some gates with an inverting output were generated with bad logic which gave incorrect simulation results. 2024-05-01 10:27:09 +02:00
Holger Vogt 3341b2e045 Bug 665: enable compiling the code models with link time optimization.
Fix provided by Giles Atkinson.
Still the build of ngspice fails (tested with Cygwin) at the linking stage.
2024-05-01 10:25:12 +02:00
Holger Vogt cac87d9dd0 Improve response to error: reporting the error when
detecting an expression, not simply move on with a
wrong meas result.
2024-03-29 17:21:38 +01:00
Holger Vogt e561249e9b fix a bug in the ={par({...})} function.
The replacement did not happen correctly.
2024-03-29 17:19:48 +01:00
Holger Vogt ee39b2600b Add a evaluation function which truly removes also the
scale factor from the token when gobble=0 before
moving on.
2024-03-29 17:16:41 +01:00
Holger Vogt 49951cd197 Bug 664: Report an error if token in meas statement is not a vector and
cannot be evaluated as a number.
2024-03-26 20:08:08 +01:00
dwarning a1210a257d use only magnitudes in ac noise analysis even if openvaf compiled models deliver negative noise contributions 2024-03-26 19:59:23 +01:00
dwarning 7722c3dc6b only access to CKTkluMODE if KLU configured 2024-03-25 09:20:51 +01:00
Holger Vogt e27f093fb7 Prevent error: implicit declaration of function ‘get_local_home’
[-Werror=implicit-function-declaration], if editline is selected.
2024-03-16 23:18:13 +01:00
Holger Vogt 0c2c10eb9c add 'option klu' to printout 2024-03-16 23:13:03 +01:00
Brian Taylor 715ce8c809 Return correct error statuses. Detect another illegally placed gate operator in an infix expression. 2024-03-15 21:53:13 +01:00
Holger Vogt 603c730260 If TRACE is defined, print out everything without comment lines,
to improve readability.
Redo printing of global nodes when TRACE is defined.
2024-03-15 19:20:53 +01:00
Holger Vogt 054a65c2d5 Fix a bug in 'reset', where .subckt are not transformed
due to wrong line count in dynmaxline.
2024-03-15 19:20:47 +01:00
dwarning 7e39c10bee introduce jfet gate-drain and gate-source junction emission coefficient 2024-03-13 21:55:38 +01:00
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