Commit Graph

7376 Commits

Author SHA1 Message Date
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 fb6820de30 Send warning message to stderr, not to stdout. 2024-06-22 14:23:29 +02:00
dwarning 11a3711d86 revert commit ea4c438 and db85dead by removing VJ and M limiting 2024-06-22 14:23:13 +02:00
Holger Vogt dd6089c4fc Improved warning message: hint to line causing the warning. 2024-06-22 14:22:59 +02:00
Holger Vogt f15a92d997 Revise commit
75c2a3c621/
If the frquency difference is less than a decade, use the old
frequency calculation.
If start and stop frequencies are equal, use a single point only.
2024-06-22 14:22:38 +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 e5195c10a3 Enable monotonic negative growth of abscissa values. 2024-06-22 14:21:42 +02:00
Holger Vogt 32901f9d0c Error messages to stderr only.
For MS Windows: Make code model path absolute.
Call LoadLibrary only when *.cm file exists. Until now
spurious return from LoadLibrary prevented error message,
when *.cm was not found, followed by a crash upon 'quit'.
2024-06-22 14:21:28 +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 36e7835afd Remove Valgrind "potentially undefined" message. 2024-06-22 14:20:44 +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 a5bf93d04d 'No OP' is the more important news, update note to the user. 2024-06-22 14:20:15 +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
dwarning 02a5cd5ea6 mos1...3: set channel thermal noise to 0 in subthreshold range for nlev=3 2024-06-22 14:17:45 +02:00
dwarning f44a0ede08 mos1...3: logical error-prevent garbage for nlev=3 2024-06-22 14:17:36 +02:00
dwarning ac5470568c diode: no need for vte recalculation, rhs not changed 2024-06-22 14:17:28 +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 29c4a2a151 Improve error message if malloc or realloc fails. 2024-05-14 16:32:38 +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
dwarning 63a6234c92 diode: add saturation current temperature model tlev=2 2024-05-14 16:32:17 +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 fc7ba6ee8f Add a fcn wl_delete to free the wordlist, but not its wl_word contents. 2024-05-14 16:30:49 +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 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