Commit Graph

7287 Commits

Author SHA1 Message Date
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