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
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
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
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
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
7722c3dc6b
only access to CKTkluMODE if KLU configured
2024-03-25 09:20:51 +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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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