Commit Graph

7438 Commits

Author SHA1 Message Date
Brian Taylor 33780055ee Add MODIFICATIONS note, cleanup white space. 2023-10-28 10:58:28 +02:00
Brian Taylor 5c4352d02f Add __MINGW64__ defines for builds on mingw with msys. 2023-10-28 10:58:15 +02:00
Brian Taylor 3bb6e86015 Add Windows Visual Studio support for the Isotel d_process xspice digital model. The Isotel mixedsim-master/examples/embedded/motorforce C code needs to have minor changes for _MSC_VER defines, and are not included with this commit. The changes relate to using #pragma pack(push, 1)...#pragma pack(pop) around some structs, and setting stdin/stdout in binary mode. It is doubtful that the cfunc.mod will compile on mingw or cygwin since I don't know if they support pipe/fork/exec/spawn calls. The code builds and runs on Windows, Linux, and MacOS. In the future, Giles Atkinson is looking at allowing Xspice models to load shared libraries (.dll, .so) which will avoid creating and communicating with an external program. 2023-10-28 10:58:06 +02:00
Holger Vogt efdf332061 Prevent a crash if hash model table was not generated,
e.g. due to missing valid models.
2023-10-27 23:13:41 +02:00
Holger Vogt 10d7297798 Add cm_cecit(). If the input file could not be opened, stop ngspice. 2023-10-21 15:52:10 +02:00
Holger Vogt 19ebfb1887 Add a code model function cm_exit(const int exitcode).
This function calls controlled_exit(exitcode) to shut
down gracefully.
2023-10-18 22:46:27 +02:00
Holger Vogt f26dda8616 Formatting 2023-10-18 17:44:56 +02:00
Holger Vogt 39443fafdd Removing unused models takes much more time than keeping them
for large circuits.

Probably a hash table may help here (t.b.d.).
2023-10-18 14:36:08 +02:00
Holger Vogt 8ef0aece58 During setup of the models thre have been search scans in the
linked model list modtab. The time used here grows approx.
quadratically with the number of models. If the numbers get large,
e.g. with the IHP Open PDK, setup time make simulation impractical.
Therefore the linked list modtab has been enhanced by a hash table
modtabhash, which allows linear search time and makes simulation
of a 200k transistor circuit with IHP PDK possible. Already
the setup time for 15k transistor circuits has been reduced.
2023-10-18 14:34:16 +02:00
Holger Vogt 9702557f81 Evaluate function gauss() in B sources. This is required when
in .model files the tokens 'temper' and gauss() coexist, because
then the B Source function parser is applied.
2023-10-16 17:53:58 +02:00
Holger Vogt eb36084700 re-formatting (indentation, tabs removed) 2023-10-11 00:08:55 +02:00
Holger Vogt 9edf34495e Don't say 'issue in line no. 0', as this 'info' does not tell
where the line with position 0 really is in the input deck.
2023-10-09 23:19:30 +02:00
Holger Vogt 7c3cb8169c This is a re-write of the PWM generator.
It is modelled according to the new d_OSC by Giles Atkinson.
Here frequency is fixed and duty cycle is controlled by an
analog input.
2023-10-07 17:13:55 +02:00
Holger Vogt ecb416b800 This patch fixes a bug when shared library uses XSPICE:
Don't subtract delta twice, when breakpoint is active
and step is rejected.
https://sourceforge.net/p/ngspice/patches/106/
Thanks to Vyacheslav Shevchuk
2023-10-07 17:10:31 +02:00
Holger Vogt 9944a4869f typo 2023-10-07 13:36:56 +02:00
Holger Vogt 53315ed764 Prevent crash when no input file given. 2023-10-05 00:19:51 +02:00
Holger Vogt 4f79105b06 Add comment 2023-10-02 10:07:52 +02:00
Holger Vogt 233f9daba4 Remove unused instance parameter ic (initial condition of controlling source). 2023-10-01 10:51:31 +02:00
Holger Vogt 28b495318d Update to command 'wrnodev':
Prevent crash if tran is not (yet) run.
Open output file only when data are available.
Enhanced comment and warning message.
2023-09-28 10:05:31 +02:00
Holger Vogt e449c894ce Prepend title line by '*' if printed by 'listing r'.
This allows skipping all pre-processing.
2023-09-27 15:51:16 +02:00
Holger Vogt 76f837b0b7 skip all pre-processing for expanded input files created by 'listing r' 2023-09-27 15:49:37 +02:00
Giles Atkinson 2790fd68bb Make the special "noglob" variable work. To preserve previous behaviour
change the default value from true to undefined (meaning false).
Also fix a misleading comment in glob.c.
2023-09-25 10:54:13 +02:00
Giles Atkinson a70e708114 Make special interpreter variable "noglob" behave as documented:
globbing is off by default.  An incompatible change, but previous
behaviour can be restored by "unset noglob" in .spiceinit.
2023-09-23 17:03:34 +02:00
Giles Atkinson 41c61604c5 Handle SIGTTIN and SIGTTOU on Unix-like OSs with X11 graphics.
That makes it possible to push ngspice into the background while
plot windows are open: the windows remain responsive.
Discussion on ngspice-users, starting 2023-09-01,
title: "`quit` in Interactive Mode."
Also restore terminal state when forcing exit with SIGINT (control-C).
2023-09-23 17:03:24 +02:00
Giles Atkinson 588116af48 Fix a bug in the "help" command. Some commands have no action function,
so the function pointer should not be used to detect the end of the table.
Use the command name instead.
2023-09-23 17:03:19 +02:00
Giles Atkinson 423f9a9db2 Fix a build bug for XSPICE: files generated for code models are
not removed when doing 'make clean' from release/src/xspice or above.
2023-09-23 17:03:09 +02:00
Holger Vogt f3eb46e76d Fix bug in fprintf 2023-09-23 16:45:35 +02:00
Holger Vogt b034332e84 Improve warning message during evaluating .probe 2023-09-19 14:57:22 +02:00
Giles Atkinson 62471ecede Fix two bugs in cmpp: an unmatched right bracket in cfunc.mod
causes an infinite parsing loop (mod_yacc.y) and XSPICE macros
are replaced in string literals (mod_lex.l).
2023-09-16 00:19:36 +02:00
Holger Vogt dbc5042263 Prevent a crash if port cntrl is set to NULL 2023-09-15 23:42:08 +02:00
Holger Vogt 01bdd44ef9 Modify the previous commit a616a0abe:
no spaces in the first column
2023-09-15 23:41:12 +02:00
Vogt a616a0abe3 Add variable wr_onspace to allow printing the vetor name with
one space delimiter
2023-09-14 15:22:14 +02:00
Holger Vogt daa58f4125 Fix previous commit [acb7f2]
Allow frequency 0 Hz (make check will do agian).
2023-09-11 22:48:50 +02:00
Holger Vogt acb7f2cd97 Make .ac error messages more verbose, prevent some crash,
enable default values.
2023-09-11 17:42:38 +02:00
dwarning 4368790c5d remove compiler warning wrt. prototypes 2023-09-11 14:50:27 +02:00
Holger Vogt b7993bb530 Formatting cktpzstr.c 2023-09-11 14:28:49 +02:00
Holger Vogt dfeb0bdb4e Improve error message on obsolete dot command 2023-09-11 14:28:20 +02:00
Holger Vogt 64c29e667e Improve error message on unimplemented dot command 2023-09-11 12:02:59 +02:00
Holger Vogt a6d5ce8ea6 Some KLU warnings are useless for the normal user, as she or he
does not have any means to further analyze or repair the issue:
Warning: KLU ReFactor failed. Factoring again...
Warning (ReFactor Complex): KLU Matrix is SINGULAR
    Numerical Rank: %d\n
    Singular Node: %d\n
So print these messages only in debug mode.
2023-09-10 14:41:16 +02:00
Holger Vogt 64307ba907 Add a title line to 'listing r', so the resulting output may be
re-loaded by the 'source' command.
2023-09-10 13:44:18 +02:00
Holger Vogt 9d84138216 Remove memory leak by not mallocing unused node_ids.
Remove some compiler warnings.
2023-09-09 23:35:54 +02:00
Holger Vogt 3b89410b8f Slight cosmetics in comment. 2023-09-09 23:34:49 +02:00
Brian Taylor 492bb64d92 By default, use the shortest typical delay estimate. This makes the digi_74LS90_74LS42.cir testcase for bug641 behave almost the same as MicroCap 12. In ngspice and MicroCap, the only signal with a glitch is not_y8. The other not_* signals look the same. Setting ps_use_mntymx in .spiceinit will change the delay estimates. See the function set_u_devices_info in src/frontend/udevices.c for the various settings of ps_use_mntymx. 2023-09-09 23:22:06 +02:00
Holger Vogt 7a646c0a12 If 'strict_errorhandling' is set, bail out if operating point is not found 2023-09-09 18:38:09 +02:00
Holger Vogt ad23146544 Don't check continuously for autostop, only when option flag is set
This speeds up simulations with simple device evaluation, but many
time stepps.
2023-09-09 18:37:13 +02:00
Holger Vogt 0f14c690d5 Stat. functions: safeguard against divide by zero, return nominal value 2023-08-26 10:15:08 +02:00
Holger Vogt 8837132f29 Fix d0fc344bf
("Shorten the ngspice message when performing operating point evaluation.
 The average user often complained about useless 'info'.
 The old output is now available when 'set ngdebug' in .spiceinit.",
 2023-08-19)
Return with 0 if optran has been successful.
2023-08-20 00:11:39 +02:00
Holger Vogt d5ceced24d We are developing towards ngspice-42 2023-08-19 23:54:36 +02:00
Holger Vogt d0fc344bf9 Shorten the ngspice message when performing operating point evaluation.
The average user often complained about useless 'info'. The old output
is now available when 'set ngdebug' in .spiceinit.
2023-08-19 23:42:34 +02:00
Holger Vogt c0d73dcd6f Fix bug 642 by replacing strstr() by search_plain_identifier() 2023-08-19 23:14:26 +02:00
Holger Vogt 750d92c493 Fix a bug, not finding any instance parameters for PSP or R2_CMC
If already aligned, return input value, not 0.
2023-08-16 11:14:26 +02:00
Holger Vogt adc645d8e9 Fix intro comment: NDEV is no longer supported in ngspice 2023-08-16 11:14:26 +02:00
Holger Vogt c11613d1f7 Fix some memory leaks (Patch provided by Brian Taylor) 2023-08-16 11:14:25 +02:00
Holger Vogt 4864f0a118 Remove crash in CIDER example meclgate.cir 2023-08-16 11:14:25 +02:00
Pascal Kuthe 499634df47 integrate OSDI with KLU 2023-08-16 11:14:25 +02:00
Francesco Lannutti 05aa9f0927 Better fix for previous commit 2023-08-16 11:14:24 +02:00
Francesco Lannutti 13e74751cc Fixed a MLK for XSPICE and commented out an unused array 2023-08-16 11:14:24 +02:00
Francesco Lannutti cab5e8cd37 Added the case of VSRCport to VSRC model for KLU 2023-08-16 11:14:24 +02:00
Holger Vogt d658e0427c Enable compilation with MSVC (alignof seems to be available only for C++) 2023-08-16 11:14:24 +02:00
Francesco Lannutti b08eb2266a Added initial KLU support for node collapsing 2023-08-16 11:14:24 +02:00
Francesco Lannutti 470cd4a514 Fixed KLU SINGULAR matrix handling and messaging 2023-08-16 11:14:24 +02:00
Francesco Lannutti d68e83be78 Fixed VBIC model for KLU
Fixed SMPfindElt messages
2023-08-16 11:14:23 +02:00
Francesco Lannutti 8123fde6f7 Handled properly KLU messages when XSPICE is purely digital 2023-08-16 11:14:23 +02:00
Francesco Lannutti 4200362f42 Fixed Empty Matrix handling in KLU 2023-08-16 11:14:23 +02:00
Francesco Lannutti 937325e2ce Handled an empty circuit with KLU 2023-08-16 11:14:23 +02:00
Francesco Lannutti 4427a1f6dd Rebased upon pre-master branch 2023-08-16 11:14:23 +02:00
Francesco Lannutti ae83b7c807 Added KLU support to HICUM model 2023-08-16 11:14:22 +02:00
Holger Vogt 6b6e9bb7cb Enable log output (warning and error messages) on the Windows GUI 2023-08-16 11:14:22 +02:00
Holger Vogt d6aeb6cd94 Set up the matrix according to branch KLU-6+11-rebase-master-28_10_2020
All cpl example files from ngspice\examples\TransmissionLines are o.k.
2023-08-16 11:14:22 +02:00
Francesco Lannutti 02e7c1c5b0 KLU branch rebased upon master @ 3 Feb 2022
Some merge conflicts have not been solved yet
Please look for >>>> HEAD if you want to solve them
2023-08-16 11:14:22 +02:00
Francesco Lannutti b900527341 Fixed KLU binding for VDMOS 2023-08-16 11:14:21 +02:00
Francesco Lannutti 2bfd22c8f9 Fixed KLU binding for BJT 2023-08-16 11:14:21 +02:00
Francesco Lannutti caf1ee7c47 Fixed a crash when SPARSE is used 2023-08-16 11:14:21 +02:00
Francesco Lannutti 3c15993fe5 Fixed the case when DiagGmin has to not be loaded again and the case when refactoring returns 1 2023-08-16 11:14:21 +02:00
Francesco Lannutti 1ee798ec9d Fixed CKTsetup for KLU when XSPICE is used 2023-08-16 11:14:21 +02:00
Francesco Lannutti 6ccaacaf1d Added the support for KLU to VBIC Self Heating 2023-08-16 11:14:21 +02:00
Francesco Lannutti 12288f7be6 Fixed KLU memory leak during SMPdestroy 2023-08-16 11:14:20 +02:00
Francesco Lannutti 7048a24b74 Added the KLU support to Noise Analysis 2023-08-16 11:14:20 +02:00
Francesco Lannutti 4639e936a3 Fixed the dimension of the COO Trash Can 2023-08-16 11:14:20 +02:00
Francesco Lannutti 73626c62f8 Add KLU support to VDMOS 2023-08-16 11:14:20 +02:00
Holger Vogt 3bb643c8f5 re-enable CIDER with option sparse by setting CKTkluMODE
in new matrix to CKTkluMODE from current circuit.
2023-08-16 11:14:20 +02:00
Holger Vogt 98dd7da1c4 fix a memory leak in ASRC 2023-08-16 11:14:20 +02:00
Francesco Lannutti 613ae18db9 Fixed a memory leak 2023-08-16 11:14:20 +02:00
Holger Vogt 33eec95855 plug a memory leak 2023-08-16 11:14:20 +02:00
Holger Vogt d5434a2df2 fix a memory leak
ckt->CKTmatrix is now malloced, so has to bee freed as well
2023-08-16 11:14:19 +02:00
Francesco Lannutti 967ee13940 Added a comment in NIiter 2023-08-16 11:14:19 +02:00
Francesco Lannutti 1110019ff2 Changed the PivTol in SMPreorder with PivRel 2023-08-16 11:14:19 +02:00
Francesco Lannutti 0b7dc09fc1 Fixed the accounting statistics for SPICE and CIDER about number of elements in KLU 2023-08-16 11:14:19 +02:00
Francesco Lannutti 3b1f5e6122 Changed the Error message in klusmp.c to Information 2023-08-16 11:14:19 +02:00
Francesco Lannutti 88074a23c9 Fixed 2 files due to rebasing KLU branch on the master branch - 8/7/2020 2023-08-16 11:14:19 +02:00
Francesco Lannutti fe89da2b2c Getting rid of SPARSE for Initial Circuit Matrix creation. Now KLU is totally independent from SPARSE. This opens up the interface for other solvers as well
SPARSE can still used through '.options sparse', but it isn't possible to switch from KLU to SPARSE and viceversa at run-time
2023-08-16 11:14:18 +02:00
Francesco Lannutti 4d00b67b4d Used IF_REAL instead of IF_FLAG 2023-08-16 11:14:18 +02:00
Francesco Lannutti 49f6444957 Added "klu_memgrow_factor" option to control the KLU memory grow factor 2023-08-16 11:14:18 +02:00
Francesco Lannutti 5513f6e5f6 Handled the SINGULAR matrix case in a more clever way! 2023-08-16 11:14:18 +02:00
Francesco Lannutti 658f449c9b Fixed the VSRCbindCSC routine 2023-08-16 11:14:18 +02:00
Francesco Lannutti f487720b10 Fixed BJTbindCSC routine 2023-08-16 11:14:17 +02:00
Francesco Lannutti fbd8d94cdf Fixed again the NIiter loop for KLU 2023-08-16 11:14:17 +02:00
Francesco Lannutti 710341bbfd Fixed KLU returns values so that NIiter can Factor again, if the matrix is numerically singular from the refactorization
Fixed the NIiter code to perform a factorization without reloading the matrix
2023-08-16 11:14:17 +02:00
Francesco Lannutti 72d78a2053 Added the KLU support to ADMS models 2023-08-16 11:14:17 +02:00
Francesco Lannutti 77fa5c06a9 Fixed the KLU returns values for Factorization and ReFactorization.
If the matrix is Numerically Singular, continue the factorization till the end
2023-08-16 11:14:17 +02:00
Francesco Lannutti 8a8adfe451 First KLU support of CIDER TWOD simulations 2023-08-16 11:14:17 +02:00
Francesco Lannutti fdd815183a Fix SMPfindElement for KLU 2023-08-16 11:14:17 +02:00
Francesco Lannutti 11fb209ee6 First KLU support of CIDER ONED simulations 2023-08-16 11:14:16 +02:00
Francesco Lannutti 4c351f51bd Moved the KLU binding structures to be property of the XSPICE connections, instead of XSPICE instances 2023-08-16 11:14:16 +02:00
Francesco Lannutti 534394c0bb First attempt of KLU support for XSPICE 2023-08-16 11:14:16 +02:00
Francesco Lannutti 6b6642fbcf Updating CKTsetup in preparation of XSPICE support 2023-08-16 11:14:16 +02:00
Francesco Lannutti f3127234aa Maintain the KLU related changes under '#ifdef KLU' 2023-08-16 11:14:16 +02:00
Francesco Lannutti a5885f0e95 Compacted the flag for KLU matrix being Real or Complex to one single bit 2023-08-16 11:14:15 +02:00
Francesco Lannutti 43f7bede8f Added the support for .ic statement in KLU mode 2023-08-16 11:14:15 +02:00
Francesco Lannutti f66e06b702 Fixed the KLU binding for BJT 2023-08-16 11:14:15 +02:00
Francesco Lannutti 759fc38647 Commented out some debug printings 2023-08-16 11:14:14 +02:00
Francesco Lannutti 330de64b19 Fixed the two routines for SPARSE (thx to Marcel Hendrix) 2023-08-16 11:14:14 +02:00
rlar e31867ead9 (int) casts, applied to a double which just has been limited to INT_MAX 2023-08-16 11:14:14 +02:00
rlar f690a2d5e9 casting, use (int) sizeof(), to swallow some warnings 2023-08-16 11:14:14 +02:00
rlar eda8b57eb4 use TMALLOC 2023-08-16 11:14:14 +02:00
Francesco Lannutti b87c539435 Handling the general case for an empty CSC matrix during the conversion to CSR format 2023-08-16 11:14:14 +02:00
Francesco Lannutti 8b302dfdab Ordered the COO format also along the columns to have a correct CSR format 2023-08-16 11:14:14 +02:00
Francesco Lannutti 7b0d1ef2ac Fixed the AC part of the Sensitivity Analysis 2023-08-16 11:14:13 +02:00
Francesco Lannutti 7f85b35260 Fixed the CSC to CSR conversion for KLU matrix-vector multiplication 2023-08-16 11:14:13 +02:00
Francesco Lannutti 463e2db25a Fixed Sensibility Analysis for KLU - First Trial 2023-08-16 11:14:13 +02:00
Francesco Lannutti 1099b5452e Avoid crashing during the Sensitivity Analysis in KLU, stating that it isn't supported 2023-08-16 11:14:13 +02:00
Francesco Lannutti 0429238df5 Fixed Sensitivity Analysis integration for KLU 2023-08-16 11:14:13 +02:00
Francesco Lannutti 0823ed4e16 Fixed the sign inversion calculation for the determinant of KLU 2023-08-16 11:14:13 +02:00
Francesco Lannutti e77879ae50 Implement klu_z_print() 2023-08-16 11:14:13 +02:00
Francesco Lannutti 0afda7f89c Implement spMatrix_CSC_dump() 2023-08-16 11:14:13 +02:00
rlar d2562ba82f fix vsrc for pz analysis 2023-08-16 11:14:12 +02:00
Francesco Lannutti 634156844b Use spDeterminant_KLU 2023-08-16 11:14:12 +02:00
Francesco Lannutti 4d37c32a14 Implemented spDeterminant_KLU 2023-08-16 11:14:12 +02:00
Francesco Lannutti 4a32cfe362 Fixed SMPcZeroCol 2023-08-16 11:14:12 +02:00
Francesco Lannutti 4489f2b0b2 klu_extract_Udiag, Fixed the PZ Analysis for KLU - Added a missing KLU node in VSRC which exists only in case of PZ Analysis - Other fixes 2023-08-16 11:14:12 +02:00
Francesco Lannutti 0146a6667c other fixes 2023-08-16 11:14:12 +02:00
Francesco Lannutti f25b22e56a Fixed a bug in SMPpreOrder and let KLU digest an empty matrix 2023-08-16 11:14:12 +02:00
Francesco Lannutti dddaab6637 Implemented the Solve Transpose for KLU 2023-08-16 11:14:11 +02:00
Francesco Lannutti 6aece7faf7 Fixed the SMPcSolve routine for KLU 2023-08-16 11:14:11 +02:00
Francesco Lannutti 4a7dd29867 Enhanced KLU to avoid loosing computation cycles. The speedup is quite low, though: ~1% 2023-08-16 11:14:11 +02:00
Francesco Lannutti 15e732dbb4 fix the list of supported devices 2023-08-16 11:14:11 +02:00
rlar e73dae237e Added CPL Model to KLU 2023-08-16 11:14:11 +02:00
Francesco Lannutti 716fa64765 Added HISIMHV2 Model to KLU 2023-08-16 11:14:11 +02:00
Francesco Lannutti 14378755f5 Added ASRC Model to KLU 2023-08-16 11:14:11 +02:00
Francesco Lannutti a47ed5dba4 KLU Integration from scratch #7, devices, bsim4/ (which is bsim4v8) 2023-08-16 11:14:11 +02:00
rlar 717a99b07a KLU Integration from scratch #6, devices, bsim4v7/ 2023-08-16 11:14:10 +02:00
Francesco Lannutti 405f206ba6 Fixed the KLU package to let it correctly compile in libngspice.so 2023-08-16 11:14:10 +02:00
Francesco Lannutti 2dcc83510b KLU Integration from scratch #5, devices 2023-08-16 11:14:10 +02:00
Francesco Lannutti ce18d6846f KLU Integration from scratch #4, changed files 2023-08-16 11:14:10 +02:00
Francesco Lannutti cf5991ae81 KLU Integration from scratch #1, new files 2023-08-16 11:14:10 +02:00
Francesco Lannutti 60b4c3cda7 move include files to src/include/ngspice/ 2023-08-16 11:14:10 +02:00
Francesco Lannutti 23da61873d fix include file directories (will be in src/include/ngspice/) 2023-08-16 11:14:09 +02:00
rlar 71e403652f delete-trailing-whitespace 2023-08-16 11:14:09 +02:00
Francesco Lannutti 9dad1ae0b7 incorporate KLU source files from SuiteSparse-3.7.0.tar.gz 2023-08-16 11:14:09 +02:00
rlar e5c40de9e7 SuiteSparse.org, recipe for incorporation of SuiteSparse-3.7.0.tar.gz 2023-08-16 11:14:09 +02:00
Holger Vogt 2275fb85da add a comment 2023-08-14 23:40:48 +02:00
Holger Vogt 313a0cdf66 Do not set a breakpoint at current time,
as this may lead to trigger a "breakpoint in the past"
message and stop the simulation, depending on double
precision details during comparison.
2023-08-14 15:56:59 +02:00
holger 57c880b6a3 Prepare ngspice-41 2023-08-13 14:03:34 +02:00
Holger Vogt cb0e794907 Prevent buffer overflow, remove unused 2023-08-13 11:31:01 +02:00
Holger Vogt 6eb7e0ec82 Remove unused variable 2023-08-13 11:04:34 +02:00
Holger Vogt e1e2d8a88a Replace | by ||,
bug detected by code analysis
2023-08-13 11:04:19 +02:00
Holger Vogt d90c9dd3b5 Initialize to remove VS2022 linker warnings 2023-08-13 10:01:12 +02:00
Holger Vogt de98e49956 Set brackets to remove gcc compiler warning 2023-08-12 23:59:56 +02:00
Giles Atkinson ad02a7c47a Remove duplicate definition of variable idp, as compiler may warn. 2023-08-12 22:46:16 +02:00
Holger Vogt b893e32d75 Reemove needless code, check for '}0',
don't do anything here if not true m=something
2023-08-12 15:11:41 +02:00
Holger Vogt 0e0c8de5ee Remove gcc compiler warning: remove needless code 2023-08-12 15:11:32 +02:00
Holger Vogt 9c2a87a469 Remove buggy if clause, add safeguards against buggy input 2023-08-12 15:11:21 +02:00
Holger Vogt 62f803dfa5 Remove gcc compiler warnings 2023-08-12 15:11:04 +02:00
Holger Vogt d173deea64 Activate callback, remove memory leak 2023-08-12 15:10:49 +02:00
Giles Atkinson 738881a014 Complete version of intertial delay for d_tristate. The State and
Strength members are treated independently and combined in the output.
2023-08-11 11:40:02 +02:00
Giles Atkinson 502f15522e Fix an infinite loop bug that may be seen with "stop whan a>b" or
"stop when a<>b".
2023-08-11 11:39:17 +02:00
Brian Taylor f16c0556af Add support for PSpice DLYLINE. 2023-08-11 11:39:06 +02:00
Giles Atkinson ee7250e11f Fix a crash when trying to auto-bridge a real-valued event node
and improve an error message.
2023-08-11 11:38:45 +02:00
dwarning 53af7d179b decrease iteration count for low base biasing 2023-08-11 11:38:24 +02:00
Holger Vogt 2065dee82c Fix comment on old-style .lib 2023-08-11 11:37:49 +02:00
Brian Taylor e235fda42b For d0_eff, d0_gff timing models specify the 1.0e-12 minimum Xspice delay valuesrather than defaulting to 1ns. 2023-08-11 11:37:19 +02:00
Holger Vogt d4c54123d4 Revert "Add code in ivars.c to look for a SPICE_ROOT environment variable"
This reverts commit 6b0ab44f1e.
2023-08-06 16:27:33 +02:00
Holger Vogt 75ce3c95e3 eprvcd [-a] [-t timescale] node node ...
timescale is now given by minimum 1fs, maximum 1s.
2023-07-31 14:30:53 +02:00
Holger Vogt 7c0bbcd9b2 Remove vs2022 linker warning (ctx potentially uninitialized) 2023-07-31 14:30:29 +02:00
Holger Vogt da3dda3269 replace exp10() by pow(10, ...),
exp10 not available in VS2022
2023-07-31 14:30:21 +02:00
Holger Vogt dc5291fa91 fopen_with_path enable path search (directory of recent inputs or
NGSPICE_INPUT_DIR)
2023-07-31 14:30:13 +02:00
Giles Atkinson 4df2e69009 Fix Bug #629 - "XSPICE d_osc failures". The old code has been completely
replaced by a new design that is faster, more reliable and does not
usually insert analog breakpoints.
2023-07-31 14:29:36 +02:00
Giles Atkinson 6b0ab44f1e Add code in ivars.c to look for a SPICE_ROOT environment variable
that gives the location of the ngspice installation.  That allows
binaries to be installed in a different directory to the one
compiled in.  The spinit startup file is made location-independent
by passing a variable giving the location of loadable modules,
so this fixes Bug #615 -
"spinit contains arch dependent paths, but is installed as noarch DATA".
2023-07-31 14:29:23 +02:00
Giles Atkinson 4cc0ac846d Add an option for parameters to the xfer code model to be provided
in a Touchstone-format file instead of as a model parameter.
The change to mif_inp2.c allows the "table" parameter to be omitted.
2023-07-31 14:28:40 +02:00
Giles Atkinson 84821a4cf5 Add support for including analog node changes in VCD file output,
and an option to explicitly set the VCD timestep.  Correct the
output value for high-impedance nodes.
2023-07-31 14:28:29 +02:00
Holger Vogt 3adfa89cfc Prevent crash when number of parameter dependencies increases beyond
limit. Raise the limit from 100 to 200.
2023-07-31 14:27:49 +02:00
Holger Vogt 18911b06b6 re-enable rcheck debug output with WINGUI 2023-07-31 14:27:35 +02:00
Holger Vogt aa10f9344e Add variable "csnumprec" to allow setting the precision of vectors
and variables as arguments to functions listet in manual chapter 17.5.
Default is 6, as has been standard up to now.
2023-07-31 14:27:23 +02:00
Holger Vogt 6c48657896 Make status report (MS Windows only) a little smarter. 2023-07-31 14:27:13 +02:00
Holger Vogt fe3222a118 Add an option nginfo to enable a status report during simulation
(currently available only with MS Windows GUI version).
2023-07-31 14:26:40 +02:00
Holger Vogt c66f9faaab Remove compiler warnings (VS2022) 2023-07-31 14:26:23 +02:00
Brian Taylor b79eca646b Prevent crashes in udevices.c when malformed U* instances are present. This would happen with incorrectly written U* gates, ff, latches which do not conform to the PSpice specs. Instead, ERROR messages are output which, hopefully, will help a user to debug their subckt. 2023-07-31 14:26:01 +02:00
Giles Atkinson 480e269102 Allow netlist lines to grow during parameter substitution,
removing a 25-character limit on the size of string parameters.
2023-07-31 14:25:51 +02:00
Giles Atkinson 576f218945 Fix the NAND and NOR variants of XSPICE code model multi_input_pwl
and add an example of its use with the E-source NAND variant.
2023-07-31 14:25:40 +02:00
Giles Atkinson 3a260fd4d9 Fix Bug 584 - "XSPICE dac_bridge model shows incorrect output timing."
Remove reliance on exact breakpoint timing and tidy code.
2023-07-31 14:25:31 +02:00
Holger Vogt bc41e48126 Change message from Circuit2 to Parse 2023-07-31 14:25:23 +02:00
Brian Taylor 4d8b105b86 Simplify expression nesting depth. 2023-07-15 11:34:09 +02:00
Brian Taylor 251f1e1984 The channel data needs to be freed for some 2D Cider devices. This shows up with some of the examples/cider/parallel circuits. 2023-07-15 11:33:52 +02:00
Holger Vogt d74e43f0f0 Move extern declaration to the top, out of any function.
Thus remove VC2022 compiler warnings.
2023-07-15 11:33:11 +02:00
Brian Taylor 159e185bfe Tidy up sp_shutdown with Cider. 2023-07-15 11:32:52 +02:00
Brian Taylor 51b361bbf0 When Cider models are present, a normal batch mode sp_shutdown (for example, ngspice -b cmosinv.cir) will call com_quit(NULL). This cleans up so that valgrind will find no leaks in Cider devices after sp_shutdown. To disable this feature, set the environment variable CIDER_COM_QUIT="OFF". Even though it really does not matter that Cider memory is cleared just before exit, it makes it cleaner for valgrind checks. 2023-07-15 11:32:37 +02:00
Holger Vogt ba2842b55a Prevent a crash if p==NULL (due to buggy input) 2023-07-15 11:32:26 +02:00
dwarning 794a37339a ifft: in case input array is smaller then output array - fill in the rest with zero to prevent uninitialzed plot variables 2023-07-15 11:32:11 +02:00
dwarning 42b803e5c2 same array size for in- and output in inverse fft function from fftw3 2023-07-15 11:31:59 +02:00
Brian Taylor 25c1c971e5 Fix the Cider memory leaks from setupContacts. TWOdestroy needed to free the contact nodes. 2023-07-15 11:31:48 +02:00
Brian Taylor f39f89ea9b Add DEVmodDelete functions to reduce memoory leaks in Cider models. The model memory was not freed during remcirc or quit. In the future, some of the code duplication could be refactored. The cmosinv.cir is now down to just 1 memory leak. 2023-07-15 11:31:38 +02:00
Brian Taylor db8ac72199 The CONTACT statement does not apply to 1D devices. 2023-07-15 11:31:24 +02:00
Brian Taylor 844ea11a63 Fix some more memory leaks in the CIDER 1D and 2D destroy functions. 2023-07-15 11:31:14 +02:00
Giles Atkinson a60b7f5630 Fix sluggish output of the "Reference value" progress indicator on Linux
after it switched from stderr to stdout (28a3413).  Add fflush().
2023-07-15 11:31:03 +02:00
Giles Atkinson ac6487932b Make the returned status of the "shell" command available as interpreter
variable "shellstatus".  Also change the default shell to /bin/sh
as csh is now rare.
2023-07-15 11:30:48 +02:00
Giles Atkinson 1c1a53bac8 Set default colours for the button box in the X11 plot window that
match the default dark background of the plot.
2023-07-15 11:30:29 +02:00
Brian Taylor 80e44a32d6 Add missing FREE to reduce some of the Cider memory leaks. 2023-07-15 11:30:02 +02:00
Giles Atkinson 5f6a6a27d8 Further fix for PWL bugs introduced by 9c71db3 (Fix for Bug #607) and
partially fixed by 79c69e0 and 9c75367.  This also fixes Bug #468 -
"Bugs in src/spicelib/devices/vsrc/vsrcacct.c for PWL source."
2023-07-15 11:29:51 +02:00
Giles Atkinson 5114d6c2f4 Add an option to the iplot command: -d sets the number of simulation
steps before the window is shown.  The value can be chosen to
limit rapid resizing when starting and that is used in the PLL examples.
2023-07-15 11:29:32 +02:00
Giles Atkinson e5a931e537 Improve commands for vector scales. "setscale" can now change
or clear the scale of an individual vector and "compose" can
explicitly create a vector from XSPICE event node history.
2023-07-15 11:28:48 +02:00
Holger Vogt d3dccc68b2 Error print output consistenly only to stderr.
Replace out_printf by fprint(stderr, ...
2023-07-15 11:28:25 +02:00
Holger Vogt 87f0db6f50 Prevent crash when ControlledExit* is not initialized
in ngspice shared library.
2023-07-15 11:28:07 +02:00
Holger Vogt b0f2ab8764 Fix bug 637
Prevent crash when external current source is used.
2023-07-15 11:27:43 +02:00
Holger Vogt 90d8f7f34f Prevent crash if EXTERNAL voltage source is used
Fixes
98763c0ad ("Note: ix: dc value used for op instead of transient time=0 value Former warning message or note only issued when dc value and value at transient time=0 differ.", 2022-09-20)
2023-07-15 11:27:32 +02:00
Holger Vogt 4421d95379 improve comment 2023-07-15 11:27:14 +02:00
Holger Vogt a28784d6d7 Prevent crash if *line == NULL 2023-07-15 11:26:52 +02:00
Holger Vogt 53b72a7693 Skip title line when resorting .params, .meas, .temp 2023-07-15 11:25:27 +02:00
Giles Atkinson 762b131bb3 Fix Bug #635 - "Starting ngspice with HOME env variable unset causes segfault". 2023-07-15 11:22:13 +02:00
Holger Vogt eda9cadbed The 'plot' command is not available in batch mode.
Issue a warning and ignore it.
2023-07-15 11:22:00 +02:00
Holger Vogt 0e6b785728 Remove the error message when a simulation has been started via the .control section. 2023-07-15 11:21:40 +02:00
Holger Vogt f5091bdc2d Make the error message a little more reasonable.
Unfortunately the current setup does not easily allow naming
the offending command.
2023-07-15 11:21:11 +02:00
Holger Vogt c7ebb7aabb Error message up to now was strictly for command line interactive use only.
Improve error message when parsing .ac lines.
2023-07-15 11:20:41 +02:00
Holger Vogt d46cd894cc Prevent crash if s == NULL 2023-07-15 11:20:09 +02:00
Holger Vogt 7f8e1cecab Allow ';' also at the beginning of a line. 2023-07-15 11:19:57 +02:00
Holger Vogt c1db561373 No syntax check for title line 2023-07-15 11:19:31 +02:00
Holger Vogt 0c1f114dea add comment 2023-07-15 11:19:03 +02:00
Holger Vogt cb9cc7140d Prevent crash if no or not enough coeffs are given.
r is then probably not the repeat coefficient.
2023-07-15 11:18:36 +02:00
Holger Vogt 3420e66705 During syntax check: v,i sources need two nodes,
and prevent crash upon buggy ac input.
2023-07-15 11:18:09 +02:00
Holger Vogt 29c51c0d30 Bail out if {...} or '...' are missing around RHS of the equation.
(...) may be possible, elsewhere additional {} are put around,
so we have {(...)}.
2023-07-15 11:17:34 +02:00
Holger Vogt 0ee5e3f32a Add a control language function cvector, to create a complex vector.
Let vec1 = cvector(50)
will generate a complex vector, with the real part values
increasing from 0 to 49, the imaginary values are set to 0.
Useful in ac loops to store result data.
2023-07-15 11:17:10 +02:00
Holger Vogt 01e8b4da84 Prevent crash upon buggy user input (missing ] or >) 2023-07-15 11:16:57 +02:00
Holger Vogt 1340002c05 Improve error message 2023-07-15 11:16:43 +02:00
Holger Vogt fc169fe23f CIDER: Plug some memory leak 2023-07-15 11:16:22 +02:00
Holger Vogt 67b2ddbad5 CIDER: Plug some memory leaks by adding to TWOdestroy() 2023-07-15 11:16:13 +02:00
Holger Vogt 3bb9cd738f CIDER: Plug small memory leaks in INPparseNumMod() 2023-07-15 11:16:01 +02:00
Holger Vogt 695c1e1bd6 Add an extra model stitching for CIDER only.
This one fills in actualLine, which is use by
parsing the CIDER model parameters in INPparseNumMod()
from inpgmod.c
2023-07-15 11:15:50 +02:00
Giles Atkinson d31568bd83 Add parsing and translation of the FREQ form of E-source devices,
integrated with the existing parsing of AND/NAND/OR/NOR forms (inpcom.c).
For the implementation, add a new analog XSPICE code model, xfer.
Add an example to examples/sp.
2023-07-15 11:15:08 +02:00
Giles Atkinson 1fdf7dac51 Fix Bug #623 - "Parser warning for voltage source".
Do not warn when a single-element vector lacks parentheses.
2023-07-15 11:14:57 +02:00
Giles Atkinson 422a205409 Always propgate any individual scale for a vector that appears
in an expression, resolving conflicts by matching length and warning
only when making an arbitary choice.  One effect of this is that it
is now possible to mix analog nodes with offset digital nodes
(an expression like dvalue+6) without a warning and get a correct plot.
2023-07-15 11:14:35 +02:00
Giles Atkinson eeb912228a When creating a plot vector from XSPICE event history, add a
final point at the end of the vector, so that a plotted line
does not end at the last event, leaving an odd spike.
2023-07-15 11:13:19 +02:00
Giles Atkinson 2db6b529f2 Fix Bug #630 - "pwl if r=last time, simulation never ends".
Allowing a PWL repeat to start at the last time-point makes no sense.
2023-07-15 11:13:05 +02:00
Giles Atkinson f4f2f41940 Fix another error in 9c71db3a72. 2023-07-15 11:12:52 +02:00
Giles Atkinson 9099a922fd Apply a patch from Aleksey Morozov to fix a bug that he identified
and reproduced.  It is the same as Bug #331 -
"XSpice skips digital output point" except that it applies to the
instance queue, not the event queue.
2023-07-15 11:12:31 +02:00
Holger Vogt ee7bcac256 Reduce excessive use of TREALLOC 2023-07-15 11:12:10 +02:00
Holger Vogt fd24e5af7e re-formatting the code 2023-05-27 10:50:14 +02:00
Holger Vogt d295fe3ac6 Slightly improve error handling and warning message 2023-05-27 10:50:02 +02:00
Holger Vogt 823465ceb8 .csparam: Add some safeguarding against wrong input and crash,
allow multiple parameters in a .csparam row (like .param).
2023-05-27 10:49:53 +02:00
Holger Vogt b24c613ce6 Safeguard against bad arguments (no crash upon NULL) 2023-05-27 10:49:19 +02:00
Holger Vogt ba7ad783a8 safeguard against crash upon buggy input 2023-05-27 10:49:07 +02:00
Holger Vogt c723e124d9 Make error message more verbose and useful 2023-05-27 10:48:57 +02:00
Holger Vogt 9b3146b1fb Correct the warning message 2023-05-27 10:48:41 +02:00
Holger Vogt e834c89313 Prevent a crash when number of nodes differs in subckt and X call. 2023-05-27 10:48:30 +02:00
Holger Vogt 8c9602574e Improve error messages 2023-05-27 10:48:15 +02:00
Holger Vogt 6ea2882c3b Plug a memory leak 2023-05-27 10:48:00 +02:00
Holger Vogt 96bebafac5 Enable history substitution of interactive commands only when variable 'histsubst' is set.
This feature is in conflict with ! (logic inversion)
in .control language logic expressions.
2023-05-27 10:47:27 +02:00
Pascal Kuthe e5d1885e39 make accessible 2023-05-27 10:47:11 +02:00
Giles Atkinson 45015f974d Add a "-w" option to the iplot command. It sets a width for the
window (in the current scale units) so that it does not re-scale
on overflow, but instead plots recently-generated data on a fixed scale.
2023-05-27 10:46:45 +02:00
Giles Atkinson 7a5514a1ff In graf.c change local function set() to do what you might expect,
rather than the opposite.  Also fix a debug message.
2023-05-27 10:46:24 +02:00
Giles Atkinson 1a97e1097f Fix error in previous fix for Bug #607 -
"DC Source with Pulse stops pulsing half way through simulation".
Non-periodic PWL waveforms reverted to zero on termination.
2023-05-27 10:46:16 +02:00
Holger Vogt 923f7efab0 Prevent crash (seg fault), if measure statement is incomplete 2023-05-27 10:46:01 +02:00
Holger Vogt 66a4b2226e .libsave: don't save the command itself, improve messaging 2023-05-27 10:44:56 +02:00
Holger Vogt 006a66b055 .libsave: Print to file the expanded library read by .lib 2023-05-27 10:44:04 +02:00
Holger Vogt b6e9ba20b9 Add another error qualifier to decribe the current policy
when a doubling token exists (or is created) in the netlist.
2023-05-27 10:43:40 +02:00
Holger Vogt c6efc6bc9c Send 'refernce value' to stdout, not to stderr 2023-05-27 10:43:16 +02:00
Giles Atkinson ad5bb9eb8d Fix Bug #607 -
"DC Source with Pulse stops pulsing half way through simulation".
Do not require breakpoints to be hit almost exactly before scheduling
the next one.  That may cause the next breakpoint to be lost.
2023-05-27 10:43:01 +02:00
Holger Vogt 50a9daf24a Line concatenation: use dstring instead of tprintf:
Parsing time of Skywater libs reduced by more than 35%.
2023-05-27 10:42:47 +02:00
Holger Vogt 972ff885d0 Suppress (rare) crashes during setiup
if device or model lists are missing.
2023-05-27 10:42:27 +02:00
Holger Vogt 6c9994ea9f Remove linker warnings in MSVC 2023-05-27 10:42:12 +02:00
Holger Vogt 0b73d95f13 Formatting 2023-05-27 10:41:56 +02:00
Holger Vogt 962d9d2998 Avoid user induced buffer overflows.
Check against NULL pointer.
2023-05-27 10:41:49 +02:00
Holger Vogt d2177bbd69 Prevent reading from NULL 2023-05-27 10:41:40 +02:00
dwarning 924dc10368 get the right place for variable declaration 2023-05-27 10:41:29 +02:00
dwarning a4f6a777c0 few cleanings to prevent compiler warnings 2023-05-27 10:41:21 +02:00
dwarning 5c32a3fb9c prevent unitialized variables 2023-05-27 10:41:12 +02:00
Brian Taylor 6b85bcb805 Allocate compound gate connectors where needed. 2023-05-27 10:41:04 +02:00
Brian Taylor de34a90bb4 Create correct translations of degenerate compound gates with $d_hi/$d_lo inputs. 2023-05-27 10:40:51 +02:00
Holger Vogt a39052cd14 Make voltage ramp smooth around 0 and around end of ramp. 2023-05-27 10:40:42 +02:00
Holger Vogt 678a6582f6 A preliminary fix to reduce the amount of missing pulses considerably.
Probably not yet the final solution.
2023-05-27 10:40:32 +02:00
Holger Vogt 4231ad3f5f Prevent reading from NULL when user input is something like .ic=v 2023-05-27 10:40:24 +02:00
dwarning 02109587ee not to forget the overlap capacitances in AC 2023-05-27 10:40:08 +02:00
dwarning 56b5041266 selfheating only with rth>0 2023-05-27 10:39:48 +02:00
dwarning 2fff3e2bc0 use true vector size for memcpy 2023-05-27 10:39:39 +02:00
dwarning de09636d1a general update: fix temperature update, improve performance 2023-05-27 10:39:33 +02:00
dwarning f33e899fda white spaces 2023-05-27 10:39:25 +02:00
dwarning d053fbda93 vbic: correct soa-check warning for C-S branch 2023-05-27 10:39:14 +02:00
Holger Vogt 797795e7c0 Shift all compatibility handlinmg from inpcom.c into its own source files
inpcompat.c and inpcompat.h
2023-05-27 10:39:05 +02:00
Brian Taylor 14a403e193 Use ~ on the input of a tristate buffer for INV3, and avoid creating an extra inverter. For ff/latch use ~ on set/reset and jkff clock inputs to avoid creating extra inverters. 2023-05-27 10:38:40 +02:00
dwarning b5d5cfd543 vbic: selfheating switch selft has priority, but keep compatibility 2023-05-27 10:38:25 +02:00
Holger Vogt d53acbed8e Add noise capability to XSPICE code models
Coded according to acan., AC analysis

MIF_NOI is not yet supported by any code model, so
MIF_AC is used (code models behave like in ac mode,
they are noiseless.
2023-04-02 15:06:28 +02:00
Holger Vogt 3c41ab1190 Formatting with MSVC2022 2023-04-02 15:06:23 +02:00
Giles Atkinson 5aa48cab0b Do not generate netlist lines that use non-existent libraries.
To support that, give global scope to  function inp_pathresolve()
in inpcom.c.  Update internal documentation (long comment).
2023-04-01 13:56:12 +02:00
Holger Vogt 8f8f7ff8ab Command 'listing r': No extra formatting, truncation etc.
of netlist lines when printing to file or console.
2023-04-01 13:50:17 +02:00
Holger Vogt 95c4c0f587 Add inertial.h to the distributable headers 2023-03-25 15:36:15 +01:00
Holger Vogt 311ddeac0d Prepare for ngspice-40 2023-03-24 22:27:12 +01:00
Holger Vogt 062785319a When '.probe alli' is set, disable auto bridging and set a flag 2023-03-24 22:10:18 +01:00
Holger Vogt ce38a768b5 typo 2023-03-24 22:10:12 +01:00
Holger Vogt c30af55491 Add operating point information to SOA check,
using vbefwd, vbcfwd, and vsubfwd
Operating point heck is enabled by .options warn=2
2023-03-24 22:10:07 +01:00
Holger Vogt 443567dbaf Add SOA-check for collector-substrate diode (model parameter bvsub) 2023-03-24 22:09:55 +01:00
Holger Vogt ff77c583d7 Add model parameter selft, to switch on self-heating, default: off (selft=0) 2023-03-24 22:09:42 +01:00
Giles Atkinson 5197200fb3 Fix crash reported by Brian Taylor. If "source" is used after
analysis, the circuit is both deleted and destroyed. Beware of
double frees.
2023-03-22 14:30:18 +01:00
Giles Atkinson 98333ee89a Fix a memory leak reported by Brian Taylor that was introduced
by commit 4d8e17487b.
2023-03-22 14:30:11 +01:00
Holger Vogt 82de3db8ad VBIC: Add bvbe, bvbc, and bvce as redundant SOA parameters 2023-03-22 14:30:01 +01:00
Holger Vogt f121c433a7 Check for buggy diode instance line, avoid crash 2023-03-22 14:29:48 +01:00
Holger Vogt 2ce18ab184 Add VDMOS default junction cap IRF540 IRF9540 2023-03-22 14:29:37 +01:00
Holger Vogt 2a647f8462 Set default VDMOS model parameters to resemble IRF540, 9540 2023-03-22 14:29:22 +01:00
Giles Atkinson e25f8bd522 Add inertial delay to missed d_xnor and tidy blank lines in d_xor. 2023-03-22 14:29:03 +01:00
Giles Atkinson cecce5163e Inertial delay for remaining simple gates and buffers:
nand or xor open_c open_e, but not tristate.
2023-03-22 14:28:51 +01:00
Giles Atkinson db38d4ad54 Correct timing of transitions to UNKNOWN. 2023-03-22 14:28:37 +01:00
Giles Atkinson 240a2b9406 Add missed file inertial.h. 2023-03-22 14:28:23 +01:00
Giles Atkinson 4623a04615 Interim version of inertial delay for tristate buffer.
This does not handle three-way or mixed transitions.
2023-03-22 14:28:15 +01:00
Giles Atkinson e3b4df6a51 First group of digital code models with improved implementation
of inertial delay: buffer, inverter, and, nor.  Also adds
utility function cm_is_inertial(().
2023-03-22 14:27:54 +01:00
Giles Atkinson 2643e3b17f New code-model library functions cm_schedule_output() and cm_getvar().
To be used in the inertial delay code for digital code models.
2023-03-22 14:27:35 +01:00
Giles Atkinson c1659a64c3 Change output event setup in evtload.c so that, when making an event call
to a code model, there is no longer a reference to the value of the event
at the head of the free list.  That allows all such free lists (with the
same data type) to be combined, probably improving performance.
This is in preparation for full implementation of inertial delay for
digital nodes.
2023-03-22 14:27:19 +01:00
Giles Atkinson 2d0561f386 Allow string-valued parameters to XSPICE device models with no default.
The code model then sees the value NULL.  Needed for the "family"
parameter on logic models, used by automatic bridge insertion.
2023-03-22 14:27:06 +01:00
Brian Taylor 8c69ada5b5 The logicexp example in the PSpice ref. manual has a name with a '+' character (LCN+4). Update lexer_scan. 2023-03-22 14:26:43 +01:00
Brian Taylor 40a540a2ff Add inertial_delay=true to .model statements generated when U* instances in PSpice library subckts are translated to Xspice. Any other Xspice A* digital instances might have different inertial_delay settings in their models, so potentially there could be a mixture of delay types. For example, if a user wishes to model a DLYLINE using a d_buffer with inertial_delay=false and equal rise/fall delays. 2023-03-22 14:26:18 +01:00
Brian Taylor 164db58404 The intent now is to rely on a variable setting in .spiceinit to control the use of inertial delay XSPICE digital models. This will apply to U* instances in subcircuits which are translated to XSPICE. 2023-03-22 14:25:51 +01:00
Holger Vogt 86951501a7 Add eprvcd to the commands which set node names to lower case,
but not the file names after >
Does not work for manually entered eprvcd commands, where the user
has to provide lower case node names.
2023-03-19 15:24:27 +01:00
Holger Vogt 3632a6b4ae We need to translate from degree to rad 2023-03-18 22:32:25 +01:00
Holger Vogt 2a6052517b Fix prvious commit: allow access to all vector elements of cc 2023-03-18 22:32:19 +01:00
Holger Vogt 68156fa62c Complex number handling other than MSVC 2023-03-18 22:32:07 +01:00
Holger Vogt 71571a1432 Add function atanh to .control section 2023-03-18 22:31:48 +01:00
Holger Vogt 3996d27b29 Make code a little more efficient 2023-03-18 22:31:33 +01:00
Holger Vogt 7af6c4a661 Re-enable single line parameter lists, separated by commas 2023-03-18 22:31:27 +01:00
dwarning f34ff7e63c Revert "implement typedpnjlim as optional limiter for verilog-a models"
This reverts commit f73d3b20a0.
2023-03-18 22:31:04 +01:00
Holger Vogt 63d86f5af8 Prevent a crash in strchr
Reported by KiCad Sentry
2023-03-18 14:37:59 +01:00
Holger Vogt e4202ea181 The tc for R, L, C may include an expression
like tc={expression} or tc={expression}, 1.3u or
tc={expression}, {expression2}
2023-03-18 14:37:53 +01:00
Holger Vogt d8505f0069 Make error message more verbose by a hint to the line (fragment). 2023-03-18 14:37:47 +01:00
R. Timothy Edwards c12296182c 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.
This patch lets table be reallocated on the fly as needed to accommodate the number of subcircuit arguments, instead of being a fixed value.
2023-03-18 14:37:40 +01:00
Holger Vogt e4601c16ee Not a warning but an error, stopping the simulation 2023-03-18 14:37:33 +01:00
Holger Vogt f32f3ac8cd Improve previous commit: A bad .model line leads to a breakup
of the simulation.
2023-03-18 14:37:26 +01:00
Holger Vogt c61acefef7 Prevent crash when a bad .model line is given, like
.model
.model xxx
2023-03-18 14:37:19 +01:00
Holger Vogt 247562c096 Update copyright notice 2023-03-18 14:37:08 +01:00
Holger Vogt bcec3cb5e3 Updating links to ngspice web pages 2023-03-18 14:37:02 +01:00
Holger Vogt 4cc63494db Improve error message
Typo
2023-03-18 14:36:55 +01:00
Brian Taylor 4111aaf110 When logicexp has a ugate timing model other than d0_gate, use its delays for an inverter or buffer. 2023-03-18 14:36:45 +01:00
Brian Taylor a6b2773c90 For a ugate timing model, when tphlXX/tplhXX is not found, set the fall/rise delay to zero (1.0e-12). 2023-03-18 14:36:35 +01:00
Brian Taylor 0e5a5a62ac 74F550 and 74F551 have only fall delays on the inverters. Use the fall delay for both rise and fall. 2023-03-18 14:36:23 +01:00
Brian Taylor 3a76a1ef52 Prepare for inertial_delay model parameter. 2023-03-18 14:36:17 +01:00
Brian Taylor 4b30113f60 Check current_subckt is set when printing TRANS_OUT. 2023-03-18 14:36:00 +01:00
Giles Atkinson ae6375c519 Prevent a crash when "portnum" is used in a voltage source without "z0". 2023-03-18 14:35:51 +01:00
Holger Vogt 8915d42241 Prevent crash during .probe p(...) when no subcircuits are given. 2023-03-18 14:35:33 +01:00
Holger Vogt 5ee7a0ad2d prevent crash when defect .model line is given
(no model name or no model type)
2023-03-18 14:35:11 +01:00
Holger Vogt d2fb3fb16b Prevent memory leak.
Remove use controls.
Safeguard against NULL.
2023-03-18 14:34:57 +01:00
Giles Atkinson 79fcb5d4bd Fix plotting bug reported by Robert Turnbull: ngspice-devel 2023-02-10. 2023-03-18 14:34:50 +01:00
Markus Mueller 0caf1aa815 (fix) CALC_OP during transient analysis in OSDI interface 2023-03-18 14:34:37 +01:00
Holger Vogt d4ee9af2e6 We are developing towards ngspice-40 2023-03-18 14:34:27 +01:00
Giles Atkinson 2233e2f825 Fix Bug #624 - "Destroy All Fails with an Open Plot Window" for X11.
Move XftDrawDestroy() call to a point where the window still exists.
2023-03-18 14:34:20 +01:00
Holger Vogt f83c89cce7 When path is NULL, we don't need to free it. 2023-03-18 14:33:59 +01:00
Holger Vogt 75f9451702 Fix bug 624 also for MS Windows
by moving DestroyGraph() from WM_CLOSE to RemoveWindow()
2023-03-18 14:33:51 +01:00
Markus Mueller bd30bd4e85 fix memory leak more rigorously 2023-03-18 14:33:44 +01:00
Markus Mueller d495333578 fix small memory leak in OSDI interface 2023-03-18 14:33:34 +01:00
Holger Vogt da77fad749 In the very rare case of pPivot being NULL, prevent a crsh
by reordering the matrix.
2023-03-18 14:33:25 +01:00
Giles Atkinson d9b52eb3e1 Fix a bug reported by Thomas Hoffmann in ngspice-users discussion,
2023-02-18.  Incorrect tests were used to detect a crossing in the
first two data samples.
2023-03-18 14:33:13 +01:00
Giles Atkinson 06aa693852 A new fix for Bug #331: "XSpice skips digital output point".
The problem was caused by removing an output queue from the "modified"
list when it had been modified by processing one of its events.
2023-03-18 14:33:02 +01:00
Giles Atkinson 7457a2684b Revert "Fixes bug #331"
This reverts commit 6d9876229c, because
it was found to break examples/xspice/various/xspice_c3.cir
(see discussion in bug report for February 2023) and an alternative
fix is available.
2023-03-18 14:32:53 +01:00
Giles Atkinson dbb5219dc7 Fix a crash reported by Thomas Hoffmann when using the "TARG AT=xxxx"
variant of "measure", General Form 1.
2023-03-18 14:32:46 +01:00
Brian Taylor 8dd16feee4 Use dstrings where fixed size char buffers should not have been used. 2023-03-18 14:32:31 +01:00
Brian Taylor 3365fd4309 Remove dead code. 2023-03-18 14:32:19 +01:00
Holger Vogt 50173ac617 Enable potential calls to tprint() for debugging 2023-03-18 14:32:04 +01:00
dwarning 845dfbd830 diode recombination current emission coefficient default to 2 2023-03-18 14:31:53 +01:00
dwarning 45e6d319f3 partly revert last commit: only real input vector get special scaling for dc component 2023-03-18 14:31:31 +01:00
dwarning bccaee4821 correct fft dc scaling bug #620 2023-03-18 14:31:24 +01:00
dwarning 7ca305804d ret variable only used for openMP enabled 2023-03-18 14:31:17 +01:00
Holger Vogt 9c6fe3f8e4 Definitely exclude A devices from power probing (and others with less than 2 pins). 2023-03-18 14:31:05 +01:00
Holger Vogt 5924ae2dfb bug report 619 by Hanspeter Niederstrasser
remove double inclusion of stdlib.h
Correction of commit 9e432838c ("Patch by Robert Turnbull: remove warning messages", 2023-02-05)
2023-03-18 14:30:56 +01:00
Holger Vogt 5cb5d218c9 Remove the obsolete RETSIGTYPE, replace by void 2023-03-18 14:30:29 +01:00
Holger Vogt ff9c98f597 Patch 112 by Robert Turnbull
Remove compiler warning.
2023-03-18 14:30:15 +01:00
Holger Vogt 3ff9643f49 Add a scale factor 'a' (atto, 1e-18) 2023-03-18 14:30:03 +01:00
holger f9ed3fd080 Patch by Robert Turnbull: remove warning messages 2023-02-05 11:25:42 +01:00
Holger Vogt 4309bad14d Set the recounter to 0 upon every exit from function inp_get_param_level 2023-02-03 18:50:55 +01:00
dwarning f73d3b20a0 implement typedpnjlim as optional limiter for verilog-a models 2023-02-03 12:57:53 +01:00
Pascal Kuthe 8063e56fdf osdi: fix sigfault when using aliasparam 2023-02-03 12:07:11 +01:00
Holger Vogt 33a3557910 Safeguard against NULL pointers 2023-02-03 11:44:57 +01:00
Holger Vogt 712ed8ac77 Safeguard against stack overflow, when wrongly introduce a circular
parameter dependency
2023-02-03 11:33:36 +01:00
Holger Vogt 20711c1c25 Safeguard against NULL pointers 2023-02-01 22:35:01 +01:00
Brian Taylor 56d0c72924 Add port directions when logicexp or pindly are present. 2023-02-01 17:39:37 +01:00
Brian Taylor 9c9301eca8 Remove delay ifdefs. 2023-02-01 17:38:28 +01:00
Brian Taylor f674b64264 Remove dead code from previous commit. 2023-02-01 17:37:36 +01:00
Brian Taylor f570b04d6c For unspecified gate delays (logic and tristate gates), which PSpice would consider as zero, set the rise and fall delays to 1.e-12s (the minimum for Xspice). For dff, jkff, dlatch, and srlatch use the Xspice default 1.0ns for rise and fall delays. If the ngspice variable (ps_port_directions & 2) is true, write the translated subckt to stdout, with TRANS_OUT prefix, for debugging purposes. The user could edit and replace the translated subckt if desired. 2023-02-01 17:36:36 +01:00
Holger Vogt 26cf1a7a57 max_align_t is used to examine the largest alignment requirement,
and it is expected to check the alignment value via alignof, not sizeof.

Otherwise, __attribute__((aligned)) can complain as required alignment
being invalid, e.g. on s390x.

Patch provided by Mamoru Tasaka, Fedora
2023-02-01 13:10:53 +01:00
Holger Vogt 3598a0d0c1 enable compiling of shared lib without osdi interface 2023-01-30 16:52:14 +01:00
holger b3676bb763 enable make dist 2023-01-30 13:09:15 +01:00
Holger Vogt 2e2b74c188 In the ngspice shared library the fcn ivers is called
with a NULL argument. The fix safeguards against argv0
being NULL.
In this case Spice_Exec_Path is set to NULL, it is
safeguarded against NULL when being used.
2023-01-30 10:58:50 +01:00
Holger Vogt b68f2617c7 Preliminary bug-617 fix:
Don't set temperature to a step beyond the sweep boundaries.
2023-01-29 17:05:56 +01:00
Holger Vogt 6ef94cb9f2 Prevent from endless loop 2023-01-28 17:01:03 +01:00
Holger Vogt 6da2659026 Remove the debug printout 2023-01-27 16:44:54 +01:00
Holger Vogt 4b8d575122 Add a user definable variable enable_noisy_r (for .spiceinit)
to enable noise calculation for all behavioral resistors.
May locally be switched off by instance parameter noisy=0
If enable_noisy_r is not set, noise simulation
may locally be enabled by instance parameter noisy=1.
2023-01-27 16:12:42 +01:00
Holger Vogt 167c708e69 Add searchpath for *.osdi relative to ngspice executable 2023-01-27 16:10:28 +01:00
Holger Vogt 65cd01f3c5 fix comment 2023-01-27 16:09:51 +01:00
Holger Vogt 802ab2a2c5 Do not try to load *.osdi automatically 2023-01-27 16:09:38 +01:00
Holger Vogt be6bd990db Error message to stderr 2023-01-27 16:09:19 +01:00
Holger Vogt b9eef23eed Update the example structure for OSDI/OpenVAF:
all compiled models into lib/ngspice
spinit updated to load the models via command 'osdi'
local calls with 'pre_osdi' commanted out.
2023-01-27 16:08:17 +01:00
Holger Vogt 71002aa42f Prepare for ngspice-39 2023-01-24 15:49:42 +01:00
dwarning 33a2637530 correct header entry 2023-01-24 15:17:14 +01:00
dwarning 9c26206a68 bsim4 version update from 4.8.1 to 4.8.2 2023-01-24 15:16:55 +01:00
Pascal Kuthe d0c35512ab properly abort for invalid OSDI paramters 2023-01-23 12:04:10 +01:00
Holger Vogt 653db022ea better comment 2023-01-20 15:08:26 +01:00
Holger Vogt 3260492987 Enhance the search path for osdi files: when not found rel. to
inputdir, search rel. to current working directory.
2023-01-20 15:08:14 +01:00
Holger Vogt 1280e199a3 Add boolean variables as flags when XSPICE and/or OSDI are enabled 2023-01-20 15:07:57 +01:00