Commit Graph

7740 Commits

Author SHA1 Message Date
dwarning 3281d0798a correct rthca connection 2025-11-08 09:13:16 +01:00
dwarning 600ff13796 Revert "Remove instance parameter temp. To specify offset to ambient temperature use dtemp instead."
This reverts commit 3340df46ca.
2025-10-26 08:34:34 +01:00
dwarning ddfb52d134 Revert "correct and simplify temp derivatives"
This reverts commit a6590d354f.
2025-10-26 08:33:58 +01:00
Holger Vogt 6fc75e636c Fix a bug. 2025-10-25 15:40:37 +02:00
Holger Vogt f8036c5363 fix bug no 819, which has been introduced by
d5ef8a366 ("Remove all entries connected to IPC, an outdated (>30 years) method to link ngspice to a now defunct controller (ATESSE).", 2025-10-21)
2025-10-25 15:37:08 +02:00
dwarning a6590d354f correct and simplify temp derivatives 2025-10-24 09:37:34 +02:00
dwarning 3340df46ca Remove instance parameter temp. To specify offset to ambient temperature use dtemp instead.
Remove temp update double application for beta and series resistances and fix derivatives for selfheating model.
2025-10-22 18:21:49 +02:00
Holger Vogt 4560fce4af make nthreads local 2025-10-21 22:18:12 +02:00
Holger Vogt b8325efe24 Improve comments 2025-10-21 22:17:35 +02:00
Holger Vogt d5ef8a3660 Remove all entries connected to IPC, an outdated (>30 years)
method to link ngspice to a now defunct controller (ATESSE).
2025-10-21 11:18:22 +02:00
Holger Vogt 8e0622434f Improve comments, add note to user. 2025-10-20 16:07:19 +02:00
Holger Vogt b260b4bc27 Entries to old CLUSTER code removed. 2025-10-19 22:27:21 +02:00
Holger Vogt cbd3772519 Add variable deltacheck to measure the CKTdelta[0]
(most recent accepted delta time) versus simulation time.
Activated if 'set ngdebug' is given (not forget to set
'.save deltacheck' if other .save commands are given).
2025-10-18 15:40:02 +02:00
Giles Atkinson 8471e0902c Add new functions for .param expressions. vec() takes a string argument
and fetches a vector value from the current plot or "const".  var() is similar
but fetches an interpreter variable.
2025-10-17 17:43:45 +02:00
Holger Vogt 891ec865f6 Another update on comments 2025-10-17 17:31:12 +02:00
Holger Vogt d676fc34f8 Small update on comments. 2025-10-15 23:59:01 +02:00
Holger Vogt 082b31018b document the goto labels. 2025-10-15 22:59:28 +02:00
Holger Vogt f929b0c9b3 Remove all entries related to CLUSTER,
an old, never finished attempt to run transient in parallel.
2025-10-15 22:44:24 +02:00
Holger Vogt e168df83fb Update on comments. 2025-10-15 22:35:04 +02:00
Holger Vogt 83897d8474 Add perror() to fopen: more info for user. 2025-10-15 17:58:10 +02:00
Holger Vogt 1390e577fa Improve error messages. 2025-10-15 17:37:14 +02:00
Holger Vogt a1de300a82 Add breakpoints to achieve quadratic smoothing.
Shift 50%-detection for breakpoints into the INIT section,
to do it only once.
2025-10-10 20:44:21 +02:00
Giles Atkinson 172fb6d668 Fix Bug 817 - "Global models are not visible from with subcircuits".
Remove code that can miscount the number of nodes to be renamed.
2025-10-08 18:19:17 +01:00
Holger Vogt bbceec30d0 Re-enable warning note when rusage xxx is not implemented. 2025-10-07 15:36:27 +02:00
Holger Vogt 236967a21e Improve error message: add source type 2025-10-06 17:30:38 +02:00
Holger Vogt 8585383654 Improve error messages. Towards better locating of errors:
Remove entry to avoid false file readings.
Still to do: Return correct fline numbers, when reading large PDKs.
2025-10-06 17:07:27 +02:00
Holger Vogt fafb8cc272 Improve on truncation when printing out the .model lines during debug-out 2025-10-04 19:59:19 +02:00
Holger Vogt 875aaaf530 Add info for line source 2025-10-04 19:58:22 +02:00
Holger Vogt cec426292f Improve reading the source code sequence by extra comments:
While searching for 'Parsing the circuit', the sequence of major
functions is revealed.
2025-10-03 15:45:47 +02:00
Brian Taylor 7ab6c6f4af Update and clarify the comments at the top of udevices.c, which should make it easier when someone in the future has to make changes. 2025-10-03 15:43:03 +02:00
Brian Taylor 4f5c23ba44 Add a correction to the previous change of inppas4.c, which freed devname and left instance name pointers in DEVnameHash pointing at freed memory. This commit adds the devname string to the symbol tables which are eventually cleared by INPtabEnd. Also, if a capacitor in the spice netlist has the same name (unlikely, but possible) as a shunt capacitor, then no shunt is created, and a warning is issued. 2025-10-03 15:42:58 +02:00
dwarning 931e223493 correct init state vector for qth integration 2025-09-25 17:09:33 +02:00
Holger Vogt c5dd1bd379 Typo 2025-09-23 22:57:48 +02:00
dwarning 2a5f9e3ba8 correct xoi and xom defaults to Angstrom and clarify comments 2025-09-23 17:02:42 +02:00
dwarning 1921d64163 count level=3 model poly and metal capacitance in charge calculation 2025-09-23 16:47:52 +02:00
Brian Taylor 6619b7265e Fix memory leaks in INPpas4 and get_number_terminals found using paranoia_parallel. 2025-09-21 22:44:12 +02:00
Holger Vogt daf687a680 Add short description of code model 2025-09-21 16:23:35 +02:00
Holger Vogt b8357edddc Add analog code model astate.
It reports the previous state (delayed by 1 to 3 time steps)
of the input node. Single or differential voltage or current.
2025-09-21 15:52:51 +02:00
Holger Vogt 144f1c6fc6 Improve the error message by naming the port 2025-09-21 11:55:39 +02:00
Holger Vogt adcc1de2fb Exxx n1 n2 nc1 nc2 TABLE = (x0, y0, x1, y1, x2, y2)
is now supported in addition to already existing
Exxx n1 n2 TABLE {expression} = (x0, y0) (x1, y1) (x2, y2)
2025-09-19 16:54:56 +02:00
Holger Vogt 537116424f add new function gettok_node_br which adds braces { } on its list
of ignored characters.
2025-09-19 16:53:11 +02:00
Holger Vogt 91c5fe7926 Cosmetics: Indentation 2025-09-17 14:46:18 +02:00
Holger Vogt aadd12965b Enable plain expression instead of only a number for area
in bipolr device instances.
2025-09-17 10:15:42 +02:00
dwarning 8b9047ed8a remove obsolete bracket 2025-09-16 18:44:51 +02:00
dwarning 056ca890fd remove old commented strncmp version check code 2025-09-16 18:33:55 +02:00
dwarning f314e2b41c Merge commit '683e208d87f431eb175a368d63dc10f2311a7bf7' into pre-master-46
Fixes in BSIM4 4.8.3 contributed by A. Buermen
2025-09-16 17:58:21 +02:00
Holger Vogt 2b1dc09caf Improve detection of the number of terminals for bipolar devices.
Fixes bug no. 807.
2025-09-16 15:08:34 +02:00
Árpád Bűrmen 683e208d87 BSIM4 version 4.8 is considered to be the latest, i.e. 4.8.3. 2025-09-16 13:37:50 +02:00
Árpád Bűrmen c6a6bd9edb Scaling of NQS charge deficit with mult_q. 2025-09-15 12:04:44 +02:00
Árpád Bűrmen 06b73b4056 ceqqjd, ceqqjs should be scaled with mult_q.
This fixes erratic simulation behavior when
mult_i != mult_q.
2025-09-15 10:30:18 +02:00
Árpád Bűrmen 535e22a502 Fixed a bug causing mult_* factors to get scaled at each setup(). 2025-09-15 10:23:11 +02:00
Holger Vogt 8249142506 Spelling
Found by Lintian, patches provided by C. Schoenert
2025-09-13 12:18:05 +02:00
Árpád Bűrmen 740670805e Check if toxp+dtox!=toxe with double precision tolerance. 2025-09-12 10:10:48 +02:00
Árpád Bűrmen e4aa062156 icvgs, icvds, icvbs exposed as BSIM4v8 parameters. 2025-09-12 10:04:52 +02:00
Árpád Bűrmen 5900f70438 Fast version checks in BSIM4. 2025-09-12 10:04:29 +02:00
Brian Taylor 57dd3342ef Enable CIDER with KLU for DC, OP, and TRAN analyses. Small signal AC analysis is not yet supported for CIDER complex valued device KLU matrices. The examples/cider testcases produce printed simulation result values which have slight differences between Sparse and KLU. Differences are probably expected and in a few cases are ~1-2%, sometimes a little more. This should be good enough for most CIDER analyses. Francesco did a good piece of work. Runtimes are significantly shorter with KLU. 2025-09-08 23:33:41 +02:00
Holger Vogt aa3ab5bc25 Fixing bug 804.
Using function get_windows_canonical_path() may neglect the
ngspice file search sequence, as an absolute path is returned also
for relative input paths. ngspice however searches a file not only
relative to the current directory, as inforced by this
function, but for example also in the directory of the previous
input file.

So restrict this function to paths longer than MAX_PATH, which would fail
otherwise.
2025-09-06 17:47:21 +02:00
Holger Vogt 4693173d37 Revert "Fix a bug in the Windows Builds:"
This reverts commit ecb288138f.
2025-09-06 17:46:50 +02:00
Holger Vogt a754cc187b free(info.errors) leads to a assertion error on the heap.
On Windows it reads:

is_block_type_valid(header->_block_use).

Memory for info.errors is allocated in the osdi device dll
during the call to

      descr->setup_instance((void *)&handle, inst, model, temp,
                            connected_terminals, sim_params, &init_info);

(in fcn OSDIsetup(), line 254 of osdisetup.c).
Therefore ngspice is not the owner of this memory and thus cannot free it.

Fixes bug no. 803.
2025-09-04 00:25:26 +02:00
Holger Vogt ecb288138f Fix a bug in the Windows Builds:
With commit
80d6e681f ("MS Windows: Get a canonical paths name: Important if path length exceeds MAX_PATH, might happen when using  PDKs", 2025-04-12)
the newly introduced function get_windows_canonical_path() does not do the
right thing when the path name is only a simple file name. Then internally
used function GetFullPathNameW() then will prepend the current directory to the
file name, which may be simply wrong.
2025-09-04 00:03:25 +02:00
Holger Vogt 0e8cc00070 We are developing towards ngspice-46 2025-09-02 17:07:07 +02:00
dwarning b19f5ca4c3 bsim4: unify error printout 2025-09-02 11:40:11 +02:00
dwarning ecac7a07a2 bsim4: reimplement mobility and binning extension 2025-09-02 11:15:38 +02:00
dwarning 82bf2169b1 reply commit e5c162f1: dc sweep fails after transient sim 2025-09-02 10:10:33 +02:00
dwarning a97dcda62b prevent warning if NOBYPASS is not defined 2025-09-02 09:50:20 +02:00
dwarning 32c50aa254 adapt instance parameter extension to new bsim4 multiplier concept 2025-09-02 09:44:16 +02:00
dwarning 86c78150b7 add KLU bindings for diode selfheating effect, bug #802 2025-08-31 15:16:05 +02:00
Holger Vogt dbb1db8b9d add tlines files to distribution 2025-08-29 23:55:36 +02:00
Holger Vogt 86ea9fee8a Prepare for ngspice-45 2025-08-29 15:01:45 +02:00
Holger Vogt a2b3d7c7d2 Enhance comment. 2025-08-28 12:39:13 +02:00
Holger Vogt 7fc68c0c07 Adding .param SWSOA=1 right after the .lib entry during reading in
the libraries.
2025-08-28 12:39:01 +02:00
Holger Vogt b1f4f32b36 Prevent a segfault if cp_variablesubst return a nullptr.
Fixes bug-801
2025-08-28 12:16:22 +02:00
Holger Vogt 2185f82a28 typo 2025-08-28 12:16:11 +02:00
Holger Vogt bebf7efd8b Command completion is not supported, removed from 'help' 2025-08-28 12:15:55 +02:00
Holger Vogt c45d1e0974 Rename t to tn to avoid t shadowing the t from the function header
void cpmslineAnalyseDispersion (double W, double h, double s,
				   double t, double er, double Zle,
...
2025-08-28 12:15:40 +02:00
Vadim Kuznetsov 94740a3d2b Fixed warnings in cpmlin and mlin 2025-08-28 12:15:25 +02:00
Holger Vogt 481e3e567b Update to filesource
Move tprev out of the loop to enable storing the previous time value.
Add some general warning message that an error might have occurred during
reading the time or data values from the data input file.
Allow empty lines in the data input file.
Guard early data values (TIME < time offset) against false reading.
Add some simple examples.
2025-08-11 18:45:21 +02:00
Brian Taylor 179c7504fb Misplaced break statement in callback. 2025-08-08 11:46:33 +02:00
Holger Vogt 21c238276a Another copyright update 2025-08-08 11:46:22 +02:00
Holger Vogt 632b55a90d Update copyright notice 2025-08-08 11:46:13 +02:00
Holger Vogt b7692fbda7 Move CALLBACK into the 'init' section,
to have it called once only.
2025-08-08 11:46:06 +02:00
dwarning 5e21393fbb prevent unused warning 2025-08-08 11:45:49 +02:00
dwarning 7ede33e7c6 git ignore temporary file 2025-08-08 11:45:32 +02:00
Holger Vogt 787a8530be Prevent doubly defined tokens. 2025-08-08 11:45:15 +02:00
Holger Vogt cbf93cf8e0 Add missing CALLBACK 2025-08-08 11:44:51 +02:00
Holger Vogt 5af5f02ad1 Remove unused variable. 2025-08-08 11:44:34 +02:00
Holger Vogt 4ab6be1b90 Keep saving nodes only once, but make an exception for node 'all'.
Fixes bug-799, at least partially (diffpair.cir is running again.).
2025-07-29 11:05:14 +02:00
Holger Vogt 805f14e50b Don't check .params as they will fall through anyway. 2025-07-29 11:05:06 +02:00
Holger Vogt 3d55c16531 Don't print a form feed if 'option nopage' is given.
Print the header really only once  if 'option nopage' is given.
2025-07-29 11:05:00 +02:00
dwarning 68c3fc1031 diode needs both current components (bottom and sidewall) for Vcrit and breakdown voltage calculation 2025-07-29 11:04:51 +02:00
dwarning 05bbb2aaa2 introduce aliases for certain diode breakdown model parameter 2025-07-29 11:04:38 +02:00
Jason Pyeron 178b541fb2 BUGFIX: #797 - gettoks did not protect against NULL pointer input 2025-07-29 11:04:05 +02:00
Brian Taylor 47d7f7aa62 Allocating arrays of double* should use sizeof double* not double, even though they may be the same. Avoid potential divide by zero. 2025-07-29 11:03:28 +02:00
Brian Taylor 416edbbb9a Fix memory leak in xspice oneshot. 2025-07-29 11:03:10 +02:00
dwarning a0c7af575d bsim4 update to version 4.8.3 2025-07-29 11:02:56 +02:00
Holger Vogt c24fc9e9d0 Remove compiler warning. 2025-07-29 11:02:39 +02:00
Holger Vogt 29d5584c56 Bug fixes:
fix function rdivide
fix a copy/paste bug in cpline
add copying of tlines
2025-07-29 11:01:57 +02:00
Holger Vogt 33efc5ed2c Add functions for VS non-C99-compatible complex data manipulation,
selected by #ifdef _MSC_VER switch.
Update tlines project file, correct buiuld sequence for
code models in vngspice.
Add tlines to spinit.
2025-07-29 11:01:30 +02:00
Holger Vogt 6d86b0ebda Visual Studio C does not support C99 complex types and functions
Add type DoubleComplex, to become 'double complex'
with gcc and _Dcomplex with Visual Studio.
Add functions rdivide and divide to divide real or complex numbers
by another complex number.
Use rdivide and VS built in function to evaluate _Z11 - _Z14.
2025-07-29 11:01:02 +02:00
Holger Vogt 89c2070a96 Add missing constants for Visual Studio C 2025-07-29 11:00:52 +02:00