Commit Graph

7554 Commits

Author SHA1 Message Date
Giles Atkinson f471461035 When parsing a XSPICE string-valued model parameter, break only
on a closing quote, string end or white space (if unquoted) and
unquoted ']' when parsing an array.  That allows generic value overrides
for GHDL models to pass through: "-gVar=value".  Previously, the string
was terminated on '='.  Also remove some dead and non-functional code.
2025-05-24 11:05:13 +02:00
Giles Atkinson 9786d3b8e2 Improve checking of XSPICE model parameters and tidy code.
Checking for null values moves from per-instance code to
per-device code, potentially removing duplicate error messages.
Limits on parameter values and sizes of array parameters that are
specified in the IFS files are now actually checked.
2025-05-24 11:04:55 +02:00
Holger Vogt 2afd3d1ea8 Prevent a crash in case of incomplete stoks[] 2025-05-24 11:03:29 +02:00
Árpád Bűrmen 91040891f9 Temperature handling inconsistency in jfetnoise.c fixed. 2025-05-24 11:03:13 +02:00
Holger Vogt 796b4fd634 Fixes wrong @bxxx[i] return values of B source, ignoring the m parameter.
Reported in bug 734 by Stefan.
2025-05-24 11:00:32 +02:00
Holger Vogt 0c2a287d3c Allow .probe I(XU1)
For device with more than 2 nodes, and alli not set, the vcurr_xxx
nodes did contain a probe_int_ section which made them to be
not saved. While o.k. for power measurement, this was not o.k. for
measuring current.
2025-05-24 11:00:11 +02:00
Holger Vogt 1abeb1290b Align title line to the numbers following 2025-05-24 10:59:47 +02:00
Holger Vogt c8dc858f9e use effective gate voltage 2025-05-24 10:59:39 +02:00
dwarning 3da74cacb6 VDMOS: use effektive Gatespannung for mobility reduction of Beta 2025-05-24 10:59:28 +02:00
Holger Vogt 26b197df33 Allow m parameter for B source with current output
Fixes bug no. 734
2025-05-24 10:59:04 +02:00
Giles Atkinson afb399a1f0 Fix Bug #733 -
"Pre-master-45 hangs forever on a circuit that works on older versions."
That was an infinite loop when parsing a line with just "*#",
introduced by commit fb63573b6b.  Also add some comments.
2025-05-24 10:58:08 +02:00
Árpád Bűrmen 1b40f0d444 initializeLimiting -> iniLim, reorder sim_params for faster OSDI device evaluation. 2025-05-24 10:57:46 +02:00
Árpád Bűrmen d659943d77 Per-device load timing support. 2025-05-24 10:56:33 +02:00
Holger Vogt 7ecb5a5d45 Add some more debug output. 2025-05-24 10:56:03 +02:00
Holger Vogt e5d4d7d63f Add to debug-out.txt an output without source file information.
Thus cluttering the view is reduced.
2025-05-24 10:55:18 +02:00
Holger Vogt 1a1d2558e8 We are developing towards ngspice-45 2025-05-24 10:50:59 +02:00
Holger Vogt 80d22fc802 Prepare the bug-fix release 44.2 2025-01-11 11:55:56 +01:00
dwarning a6d6a07f79 S to Z matrix conversion by formula instead of Y inversion
low limiting Rn and Cy to prevent division by 0, fix provided by Alessio Cacciatori

there are still problems in Z matrix conversion in specific networks
2025-01-11 09:22:15 +01:00
Holger Vogt e1bd97d8f6 If C= or Q= is omitted in the instance line of a behavioral capacitor,
select as default the C= formulation, not the Q= formula..
2025-01-10 15:17:22 +01:00
Holger Vogt e0a7d821e9 Notes go to stdout, not stderr 2025-01-09 13:21:52 +01:00
Giles Atkinson 2666460663 Using XFlush() instead of XSync() avoids a round trip to the X server
on each call to DevUpdate().  That speeds plotting when using XQuartz
on Macintosh and makes iplot useable there.
2025-01-09 13:21:31 +01:00
Giles Atkinson b0953d9980 Allow out-of-tree builds. Problem reported by Carsten Schönert. 2025-01-09 13:21:22 +01:00
Holger Vogt 1b7c8eb2d7 Fix a crash due to buggy user input.
Improve error message.
Reported in
https://gitlab.com/kicad/code/kicad/-/issues/19439#note_2277932762
2025-01-09 13:21:05 +01:00
Holger Vogt ce8480c690 Enable improved error message with nested .include. 2024-12-28 14:43:01 +01:00
Holger Vogt c7ee676e3d Improve the error message by hinting to the source of the error. 2024-12-28 14:42:49 +01:00
Holger 114bda2941 Add missing backslash 2024-12-27 17:31:01 +01:00
Holger Vogt 6730474067 Make verilog/libvvp.def verilog/MSVC.CMD verilog/README.txt distributable 2024-12-27 17:11:12 +01:00
Holger 3fa09bd3cf Add missing header files to enable their distribution 2024-12-27 16:20:08 +01:00
Holger Vogt a4e443fcce precautionary prevent passing instances which internally have got
upper case lettering. Removes a crash reported in
https://gitlab.com/kicad/code/kicad/-/issues/18648.
2024-12-27 11:18:00 +01:00
Holger Vogt ffde17441b Don't quote the subcircuit name in an X line 2024-12-27 11:15:09 +01:00
Giles Atkinson d549b882df Fix a crash that happens after an iplot window is zoomed and closed
while active.
2024-12-27 11:14:53 +01:00
Holger Vogt 8eea1f0b41 Prepare ngspice-44 2024-12-26 15:01:10 +01:00
Holger Vogt 20e889b736 Fix a typo 2024-12-23 16:54:34 +01:00
Brian Taylor a841a66ee1 d_process needs to strip || at the end of the process_file string when using PSpice compat mode. The failure was found by @slh on the KiCad forum. 2024-12-15 22:12:17 +01:00
Holger Vogt 1e4a6ac8b8 avoid memory leak by appending, not prepending the word 2024-12-15 10:29:32 +01:00
Holger Vogt a6ad2470f1 Add a flag compmod to struct card.
Set compmod to 1 if netlist line is included by command 'incpslt'
Guard special newcompat.hs sections by compmod
2024-12-15 10:29:23 +01:00
dwarning 3f562ae4f6 fix diode level=3 setup for multiple simulations 2024-12-15 10:29:05 +01:00
dwarning 4bd5ebe3e3 Fixed the diode scaling bug reported by A. Buermen 2024-12-15 10:28:46 +01:00
Árpád Bűrmen 727f11edf0 Fixed incorrect OSDItrunc() state index when $limit is present. 2024-12-15 10:28:33 +01:00
Árpád Bűrmen bf6ed080cf Verilog-A $simparam("tnom") is in degrees Celsius.
Adjusted OSDI interfaces to reflect that.
2024-12-15 10:28:19 +01:00
Árpád Bűrmen 778b730393 Exposed more $simparams via OSDI.
initializeLimiting, epsmin, reltol, vntol, abstol
2024-12-15 10:28:06 +01:00
Holger Vogt 72d70e3471 bool definition is in stdbool.h, no local definition required 2024-12-15 10:27:29 +01:00
Holger Vogt f9b7455d10 Proper conversion bool to int 2024-12-15 10:27:14 +01:00
Holger Vogt c05a6398b7 Reserve enough memory 2024-12-15 10:27:04 +01:00
Holger Vogt 3f26d455c3 Re-formatting for readability 2024-12-15 10:26:51 +01:00
Holger Vogt 33638fc46e Improve error messages 2024-12-15 10:26:42 +01:00
Holger Vogt 3ca51e47b2 Unify to type bool 2024-12-15 10:26:29 +01:00
Holger Vogt 8b5a046cdb Remove again, not needed 2024-12-15 10:26:20 +01:00
Holger Vogt 8e9a115aa9 Update/remove comment(no longer valid) 2024-12-15 10:26:08 +01:00
Holger Vogt b7092ff19b Revert ABORTPROC to bool, where appropriate 2024-12-15 10:25:51 +01:00
Holger Vogt deb3cd9809 Replace all BOOLEAN, BOOL, _Bool by bool
Remove all #undef bool (set in conjunction with #iclude <Windows.h>)
2024-12-15 10:25:28 +01:00
Giles Atkinson 932ef50cc3 Improve two error messages: in d_cosim, report the filename given,
not the last one tried; and report attempted use of iplot or
tclplot in batch mode only once.
2024-12-06 22:50:37 +01:00
Giles Atkinson 721aab9624 Fix a bug reported by Tom Hajjar with title "XSPICE d_osc usage" in
Help, 2024/12/5.  Also correct the timing of the request for the next
call and modify a constant to make the method more robust.  To support
the main change, cm_analog_set_temp_bkpt() now reports when a breakpoint
request is ignored, and T(x) values are set before an EVENT call.
2024-12-06 22:50:25 +01:00
Holger Vogt 68228ca33f Improve comments 2024-12-06 22:49:55 +01:00
Holger Vogt 660b183ad0 Revise check for '.probe alli' and event nodes:
Bail out, don't run any sim, don't change variable
'auto_bridge'.
2024-12-06 22:49:40 +01:00
dwarning 54865ed39d bring the KLU_malloc() in right order, ticket #717 2024-12-06 22:48:56 +01:00
Holger Vogt 4eec6eb8e2 Fixes bug 723
New lines had been inadvertently written into the .control section.
2024-12-06 22:48:44 +01:00
Holger Vogt 2db9533380 Enable strings as parameters across subckt boundaries
by keeping the quotes and excluding {} around the string token.
2024-12-06 22:48:15 +01:00
dwarning 07994ff225 VDMOS: concatenate inner node name 2024-12-06 22:45:48 +01:00
Brian Taylor 6500caeba1 Now that checks on actuals and formals have been fixed for X* instances, some older PSpice libraries will not translate correctly in psa mode. This commit removes unnecessary power and ground nodes from X* instances of subcircuits where the nodes are optional. These X* instances occur within the body of another subcircuit which is being translated. MicroCap libraries that we can translate in ngspice do not have such cases. To enable the removal of the power and ground nodes, set ps_global_tmodels=1 in .spiceinit. This is not set by default since an extra pass through the circuit word list is necessary to find the subcircuits whose instances do not require power and ground node removal. Without enabling this feature, errors reporting too many parameters may be reported. 2024-12-06 22:45:13 +01:00
Giles Atkinson 5980869040 Apply Patch #119 -
"Fix buffer overflow in src/xspice/icm/digital/d_state/cfunc.mod".
The change is not identical to the supplied patch. It was slightly
modified to make the original code more sane.
Found and patched by Artem Sinkevich.
2024-12-06 22:44:36 +01:00
Giles Atkinson abc3fceb7e Enhance sensitivity analysis with an option to choose the parameters
to be varied.  Shell-style wildcards ("*?") are supported.
2024-12-06 22:44:06 +01:00
Giles Atkinson c30bc423ba Initial fix for Bug 710 -
"The log file appears blank when a VDMOS element is added".
The problen was caused by a crash during sensitivity analysis
caused by selecting parameters for wariation based on their
values.  That is not repeatable between passes.  The fix is to
remove that code, but it causes many more parameters to be used.
2024-12-06 22:43:53 +01:00
Holger Vogt 7d59ad2db7 Create extra name derived from node name, but with / replaced by _,
to become part of the new voltage source name: avoid names
which are not parsed correctly by the B source equation parser.
2024-12-06 22:43:26 +01:00
Holger Vogt a45c1500a6 Remove 512 char limit of sourcepath variable.
Make attaching new path more efficient.
2024-12-06 22:43:00 +01:00
Holger Vogt 3d7dbc0124 Update to
a43c6f491 ("Add #define RESMIN 1e-6 as a minimum resistor value", 2024-07-12)
Remove bug with TL071 model.
2024-12-06 22:42:35 +01:00
Holger Vogt 22b4f4e632 Re-enable detection of over- or underflow of number of nodes
when calling a subcircuit.
Update to commit
c12296182 ("The code in src/frontend/subckt.c has a
fixed-size structure called table at the top with a
size set to N_GLOBAL_NODES = 1005.  If the number of
items passed in formal and actual exceeds 1005, then
ngspice exits immediately with an error.", 2023-03-14)
2024-12-06 22:42:16 +01:00
Holger Vogt 33ef1fc876 typos 2024-12-06 22:41:43 +01:00
Holger Vogt 8c806912d0 Improve convergence in Infineon Power MOS.
0**something is 0
2024-12-06 22:41:18 +01:00
Giles Atkinson b48224e514 Improve the behaviour of ngspice when run in the background on a
Unix-like OS with job control.  The progress ticker is suppressed
for a command like "ngspice some_circuit.cir &" so the terminal
remains usuable while the simulation runs.
2024-12-06 22:40:55 +01:00
Giles Atkinson 4feb0c3ccc Remove function cp_ccon() and related code. The function modifies
the terminal driver's treatment of the control-D (EOF) and escape
keys on Unix-like OSs.  But escape has no special meaning, and treating
control-D as a line terminator was probably to prevent unexpected
session exit when connected through a modem without error-correction.

Removing the function allows "ngspice netlist &" to work correctly.
The function was called during initialisation, which caused an endless
loop of job-control stops when ngspice was started as a background process.
2024-12-06 22:40:38 +01:00
Giles Atkinson 562466a3c5 Three minor code improvements. Remove a redundant test in com_measure2.c.
In vectors.c, always initialise a newly-created plot exactly once.
Improve an error message in spiceif.c.
2024-12-06 22:40:21 +01:00
Giles Atkinson fb63573b6b Fix processing of lines like: "*# pre_some_command ...". 2024-12-06 22:40:08 +01:00
Brian Taylor 75c2811fa9 Fix some memory leaks. 2024-12-06 22:39:49 +01:00
Holger Vogt a2b8b0d733 In batch mode: if transient simulation fails with 'Timestep too small',
still fill in the number of points in the raw file.
Fixes bug no 714.
2024-12-06 22:39:34 +01:00
dwarning 6381c51ee1 relative time differences needed - not to prgm start time 2024-12-06 22:39:21 +01:00
dwarning 02abb65c59 rm obsolete #ifdef HAVE_QUERY in windows block 2024-12-06 22:39:06 +01:00
dwarning 3d20dc0da7 format - white spaces 2024-12-06 22:38:26 +01:00
dwarning bf6ffd357d Keep it simple: use only one structure and get_time function 2024-12-06 22:38:16 +01:00
dwarning 60554855d8 seconds() gives difftime to program start, lower priority for getrusage() and times() 2024-12-06 22:38:00 +01:00
Holger Vogt 26f2fec689 seconds() no longer supports a time difference, so create it locally. 2024-12-06 22:37:51 +01:00
dwarning 821733a5f6 suppress compiler warning 2024-12-06 22:37:39 +01:00
dwarning 40aa445ee8 unify os dependent time code in one file - rm win_time.c 2024-12-06 22:37:30 +01:00
Holger Vogt 5000e0d57a Fix a bug: AF and KF had been interchanged. 2024-12-06 22:37:06 +01:00
Holger Vogt 5d47c9b696 Add AF and KF: error messages in commands 'showmod' or .sens are gone. 2024-12-06 22:36:11 +01:00
dwarning 7b815c743e intel cc see obsolete }; as empty declaration 2024-12-06 22:35:49 +01:00
dwarning 3faed1647a Reorder and renovate timer functions taking into account ngspice multiprocessor capabilities
by using available high performance functions first.
Deprecated ftime() still acts as a backup function.
Solution is portable for today's operating systems and compilers.
2024-12-06 22:35:02 +01:00
Holger Vogt 2b89d2a1cd Add function ngSpice_nospiceinit(void) if you don't want to read .spiceinit 2024-11-02 22:46:49 +01:00
Holger Vogt 7ac92bb9fc Bail out when the number of s parameter ports is less than 2. 2024-11-02 22:46:39 +01:00
Holger Vogt 60ddad4983 Make the resistor name unique for a device with multiple unconnected nodes 2024-11-02 22:46:20 +01:00
Holger Vogt 70b407d835 Improve error message during setup of TXL or CPL 2024-11-02 22:46:01 +01:00
Holger Vogt 793fca6e2a If preprocessing is skipped, we still need the number of lines in the deck. 2024-11-02 22:45:45 +01:00
Holger Vogt 8e05683592 Prevent crash if number of lines is wrong/not available ... 2024-11-02 22:45:35 +01:00
Brian Taylor 5079b42f26 Fix bug 483 again. Faulty merges of KLU changes for cider were
introduced in ngspice 42. These broke the fix.
2024-11-02 22:45:11 +01:00
Holger Vogt 20d6fb460f Add a comment 2024-11-02 22:44:56 +01:00
Holger Vogt e2c4182888 Vectors Cy_xxx are of type 'current'. 2024-11-02 22:44:43 +01:00
Holger Vogt c716e34425 Use the correct type for each vector after S-parameter analysis.
Cy_1_1 is still missing (voltage as default).
2024-11-02 22:44:34 +01:00
Holger Vogt de7ae6e678 Fix bug 711 reported by Sonia Edward 2024-11-02 22:44:21 +01:00
Holger Vogt 3d6d0d880a Improve comment 2024-11-02 22:44:11 +01:00
Holger Vogt 27db91480b Fix bug no. 708, reported by Philip Sauvage. 2024-11-02 22:43:57 +01:00