Holger Vogt
123ed0aada
Add simulator version info to raw file ('write' commad)
...
using an extra line 'Command: ...').
The old sequence (adding commands manually to raw file) is
still available.
The 'Command: anycommand' will not be executed if loading
an ngspice-generated raw file. Raw files from other simulators may
generate a warning that the command is not available.
2024-11-02 22:34:59 +01:00
Holger Vogt
1087c6a0c2
Add simulator version info to raw file in batch mode,
...
using the line 'Command:...'
2024-11-02 22:34:41 +01:00
Vogt
501a64470f
Error and warning messages to stderr
2024-11-02 22:31:47 +01:00
Holger Vogt
295be20859
Remove sourceinfo upon shared ngspice reset.
...
Remove memory leaks.
2024-11-02 22:28:21 +01:00
Holger Vogt
a2ca4616b9
Memcpy only when p_word is not NULL
...
enable -fsanitize=address
2024-11-02 22:27:59 +01:00
Holger Vogt
250e9afd92
Set pl_lookup_table to NULL after freeing: allow another initialization
2024-11-02 22:27:08 +01:00
Holger Vogt
4f8cfbf9f9
Update copyright
2024-11-02 22:26:20 +01:00
Holger Vogt
2af390f0b1
Update copyright info
2024-07-13 10:14:02 +02:00
Holger Vogt
3c7012a826
Repair the link to the xhtml manual
...
Thanks to Geoffrey Coram for the hint.
2024-07-05 23:59:37 +02:00
Holger Vogt
acdd93f157
If compiling shared ngspice, don't set up a terminal.
2024-07-01 09:42:58 +02:00
Holger Vogt
442d8554f0
Enable single terminal n devices (Verilog-A modules)
2024-07-01 09:42:28 +02:00
Holger Vogt
14bb63490c
Plug a memory leak
2024-06-22 16:33:53 +02:00
Brian Taylor
d01868b725
Cleanup gcc compiler warnings.
2024-06-22 14:23:50 +02:00
Holger Vogt
b1795dbcf2
add path or filepath (without file name) to variable sourcepath,
...
when calling command 'source'
2024-06-22 14:23:41 +02:00
Holger Vogt
dd6089c4fc
Improved warning message: hint to line causing the warning.
2024-06-22 14:22:59 +02:00
Holger Vogt
d61a728688
Add function check_for_nodes to
...
check if there are enough tokens in an instance line.
2024-06-22 14:22:06 +02:00
Holger Vogt
0362953cd4
Bail out when the instance line is not complete.
...
Moving on does typically not make any sense.
2024-06-22 14:21:56 +02:00
Holger Vogt
fa5ac4a0cd
When reading code models, allow only a single model pere command
...
(as was implicitely assumed anyway).
2024-06-22 14:21:15 +02:00
Holger Vogt
344beaad24
Add ft_spiniterror, to be set during spinit processing,as
...
ft_stricterror will be set only later, when .spiceinit is
executed.
2024-06-22 14:21:01 +02:00
Holger Vogt
74fc096bfd
Enable coupling of more than 2 inductots in a single line:
...
K1 L1 L2 L3 L4 L5 0.99
2024-06-22 14:20:33 +02:00
Holger Vogt
ee39d678b7
Improve comment
2024-06-22 14:20:01 +02:00
Holger Vogt
ace47103e7
Search path for .lib and .include has been enhanced to read complete
...
or partial paths from environmental variables. The env variable
names have to start with '$' as the first character after the .inc
or .lib token. Two consecutive env variables are possible. They are
read each until directory separator '/' or '\\', or if none is found,
until the end of the line. In this case the filename has to be included
in the env variable. A .lib line may look like
.lib "$ENVS1\$ENVS2/libraries\sky130_fd_pr\latest\models\sky130.lib.spice" tt
If an env variable is read successfully, a ngspice variable with
the same name (without leading '$') and contents is defined for
use in a .control section.
2024-06-22 14:19:48 +02:00
Holger Vogt
252ca65f56
Add '.save nosub' to suppress storing the node vectors from inside
...
of subcircuits.
Saves a lot of memeory if using devices with subcircuit models,
and one is not interested in the inner workings of the device model.
2024-06-22 14:18:25 +02:00
Holger Vogt
621918f289
Transform nested braces {{}} into {()} also in .param statements
...
(See TI PSPICE model for LMR33630).
2024-06-22 14:17:16 +02:00
Holger Vogt
2f5b869979
Issue this warning only when 'set ngdebug' is given.
2024-05-14 16:32:45 +02:00
Holger Vogt
b660e75504
Save path to .include file, add it to the search paths
...
for loading the next .include file.
If input directory dir_name is not set when loading .include files,
set it to the first .include found.
Both instruction add to the search paths for file to be inluded
and are valuable when the netlist is sent by circbyline without
input file involved.
2024-05-14 16:32:27 +02:00
Holger Vogt
0e465068b0
Identifier 'card' may not be available or not useful when
...
netlist is loaded via circbyline().
2024-05-14 16:32:06 +02:00
Holger Vogt
3f2673a2be
Clear the variable before checking anew if it is to be set.
2024-05-14 16:31:57 +02:00
Holger Vogt
4cc5966b6a
Don't delete sourceinfo as it may lead to a crash upon 'quit'.
...
Needs further investigation.
2024-05-14 16:31:23 +02:00
Holger Vogt
893cd42064
Reload sourceinfo when changing the current circuit.
2024-05-14 16:31:15 +02:00
Holger Vogt
36bc67ecbb
Save the wordlist sourceinfo to the current circuit.
...
Remove sourceinfo only upon 'quit'.
2024-05-14 16:30:59 +02:00
Holger Vogt
97d9f38421
Add (enhanced) patch by Giles Atkinson
...
Add controlled_exit() to errors when parsing functions.
Add verbose error messages, including line number and
name of the source file.
.lib file handlinmg with its recursive structure probably needs
testing and improvements.
More error messages may need this update.
2024-05-14 16:30:36 +02:00
Holger Vogt
862aa27713
Add linum_orig and linesource to commented out *include line
2024-05-14 16:30:27 +02:00
Holger Vogt
eaae4d2212
Add linenum_orig and linesource info to newly generated
...
U device lines.
2024-05-14 16:30:15 +02:00
Holger Vogt
c796171638
Add char *lineinfo to parameters of fcn insert_new_line
2024-05-14 16:30:04 +02:00
Holger Vogt
63d496b564
New parameter char *linesource for fcn insert_new_line
...
Make Fcn inp_read in inpcom.c static
2024-05-14 16:29:51 +02:00
Holger Vogt
c4cbc40a3b
Add file_name to fcn inp_read
...
Add wordlist sourceinfo to store input sources
path/file, internal, etc.)
debug_out.txt adds line info (var. sourcelineinfo)
Add sourcelineinfo to wordlist sourceinfo and to each new line.
When adding lines due to compatibility handling, use existing
linenum_orig and linesource.
2024-05-14 16:29:34 +02:00
Holger Vogt
03ba8397cc
Add the original line source information to the new line.
2024-05-14 16:29:24 +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
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
Holger Vogt
a48b1f8f46
allow compiling with CIDER deselected
2024-05-01 10:32:54 +02:00
Holger Vogt
39b5ea0d3f
no lower casing for file input paths
2024-05-01 10:32:23 +02:00
Giles Atkinson
5f59d76a03
Suppress some warnings from MSVC.
2024-05-01 10:31:25 +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
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
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
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