Commit Graph

6469 Commits

Author SHA1 Message Date
Holger Vogt 9be9f46f96 Remove unused function Evt_Data_destroy() 2021-12-16 08:04:44 +01:00
Holger Vogt 6ba484e5d2 Remove redundant redeclaration of ‘ft_getpnames_quotes’ 2021-12-16 08:04:34 +01:00
Holger Vogt 5adbfc1c86 Remove compiler warnings associated with snprintf()
Use memory allocated on the heap instead.
2021-12-16 08:04:20 +01:00
Holger Vogt b5b462506f add a function prototype for com_wric() 2021-12-16 08:03:59 +01:00
Holger Vogt 3bac1ffabe Allow adequate size for copying.
Add the missing character string to fprintf.
2021-12-13 22:31:19 +01:00
Holger Vogt b636017359 add function prototype
for insert_new_line()
2021-12-13 22:09:17 +01:00
Brian Taylor 8e75cad453 Fix missing initializer warning. 2021-12-13 21:50:30 +01:00
Holger Vogt 11117912f9 typos 2021-12-13 21:50:20 +01:00
Holger Vogt 1605d293d0 Add function integ to control language
Trapezoidal rule for integrating a vector.
2021-12-13 21:49:45 +01:00
dwarning 2eaf35f633 fix a double application of device multiplier for certain diode parameter 2021-12-13 21:49:33 +01:00
Holger Vogt 422719200e re-enable parameters in agauss function
fixes bug #564 reported by Stefan Schippers

If nested braces {..{  }...} have been created,
replace the inner { } by ( )
2021-12-13 21:49:18 +01:00
Holger Vogt a68cfefb28 hcopywidth and hcopyheight failed with SVG plot
cp_getvar read CP_NUM, not CP_STRING
Patch #108 contributed by Giles Atkinson

Add hcopywidth and hcopyheight to example nmos_out_BSIM330_svg.sp
2021-12-13 21:49:01 +01:00
Holger Vogt b749e62e31 Make error message more verbose 2021-12-13 21:48:29 +01:00
Holger Vogt aaf586ae83 .probe: Add more safeguards to prevent crashes
in case of wrong user input
due to obtain empty lines in shared ngspice
2021-12-13 21:48:21 +01:00
Holger Vogt bb9f1669f6 Enable math characters also in tokens like i(z/z) by
temporarily putting " around the token.

Improve error message on missing vector
2021-12-13 21:47:54 +01:00
Holger Vogt b59d2aabd1 .probe: Add function call to modprobenames()
Function resides in inpc_probe.c.
The function renames all current measurement instances
vcurr_instance:node#branch to instance:node#branch by
modifying the global instance table (tab).
2021-12-13 21:47:37 +01:00
Holger Vogt 9dff15507d .probe: Add call to function inp_probe() which resides
in inpc_probe.c.

Make function insert_new_line() non-static

Enable detecting the number of nodes in x-lines
(calls to subciruits) in function get_number_terminals()
2021-12-13 21:47:27 +01:00
Holger Vogt 7f1a3bea20 .probe: Add the new file inpc_probe.c to the VS project files
and makefile.am in ngspice/src/frontend
2021-12-13 21:47:11 +01:00
Holger Vogt 951be0ddb0 New dot command .probe:
Code to enable current measurements at all top level
device pins and to enable differential voltage measurements
between two (arbitrary, top level) device nodes.

Adds 0 V voltage sources for current measurements to selected or all
device nodes at top level (including X lines)

Adds an E source excited by two arbitrary nodes for differential
potential (aka voltage) measurements between these nodes

Function inp_probe() is called from inpcom.c
2021-12-13 21:46:57 +01:00
Holger Vogt 7f75b2a7b8 Update to previous commit: safeguard against no circuit loaded 2021-12-13 21:46:29 +01:00
Holger Vogt 54eb12de39 Fix a bug: Crash when 'settype @d1[id]' is given,
but simulation is not yet run.

Add a better check for having at least one simulation run
2021-12-13 21:46:15 +01:00
Holger Vogt 1ce0066d3b Update to previous commit: corrected and enhanced warning messages 2021-12-13 21:46:03 +01:00
Holger Vogt 16fd8749cf Fix a bug: Crash when 'settype @d1[id]' is given,
but simulation is not yet run.

Ask for the job before acknowledging settype on
a vector starting with @
2021-12-13 21:44:30 +01:00
Holger Vogt 2f98a5b305 evtprint: prevent a crash when eprint has been called
but there is no simulation run.
2021-12-13 21:44:02 +01:00
Holger Vogt bff90f1498 Put the gmin reversal into the comment 2021-12-13 21:43:50 +01:00
Holger Vogt 5424fd0d43 Reverse the sequence of dynamic-gmin and new-gmin.
The old method dynamic-gmin now comes first,
new-gmin will follow when the former has failed to converge.
2021-12-13 21:43:30 +01:00
Holger Vogt 79c71a4ec3 Enable math characters in vector (node) names for command fft
Replace ft_getpnames() by ft_getpnames_quotes().
2021-12-13 21:42:36 +01:00
Holger Vogt ccd9a217c3 Enable math characters in vector (node) names for logic comparison
Replace ft_getpnames() by ft_getpnames_quotes().
2021-12-13 21:42:25 +01:00
Holger Vogt 8895a6e633 Enable math characters in vector (node) names for command alter
Replace ft_getpnames() by ft_getpnames_quotes().
2021-12-13 21:42:12 +01:00
Holger Vogt ee2f3a72f4 Enable math characters in vector (node) names for command fourier
Replace ft_getpnames() by ft_getpnames_quotes().
2021-12-13 21:41:58 +01:00
Holger Vogt 98b7074287 Enable math characters in vector (node) names for command spectrum
Replace ft_getpnames() by ft_getpnames_quotes().
2021-12-13 21:41:48 +01:00
Holger Vogt c09839b209 Enable math characters in vector (node) names for commands
write and print
Replace ft_getpnames() by ft_getpnames_quotes().
2021-12-13 21:41:37 +01:00
Holger Vogt 57f6d41e69 Enable math characters in vector (node) names for plotting
Replace ft_getpnames() by ft_getpnames_quotes().
2021-12-13 21:41:28 +01:00
Holger Vogt e93a19e3e8 Allow math characters in node names
Add a function ft_getpnames_quotes()
It puts quotes " around tokens xxx, when these are enclosed as
V(xxx) and contain arithmetic characters. V(R*C) becomes
V("R*C"). After settig up the parse tree, the quotes are removed again.
Thus these math character remain part of the node name and are not
parsed as parts of an equation.
2021-12-13 21:41:16 +01:00
Holger Vogt d5dc757288 correct assignment of a variable value to a 1-bit-field
only by a logic comparison.
2021-12-13 21:40:57 +01:00
Holger Vogt 90377dcff9 struct TSKtask: group all single bit fields together 2021-12-13 21:40:38 +01:00
dwarning 26979079d4 prevent few compiler warnings 2021-12-13 21:40:15 +01:00
Holger Vogt 3f3936c728 Remove memory leaks 2021-12-13 21:34:07 +01:00
Holger Vogt 89eaf7739c Remove unused variables 2021-12-13 21:33:09 +01:00
Holger Vogt a420f58ef5 Plug a (potential) memory leak
Add missing memsaved
2021-12-13 21:32:46 +01:00
Holger Vogt 6b41ad433a Remove memory leak
Free some tokens generated by CNVget_token
Initialize reset and clk

Still missing: free 'states'
2021-12-13 21:32:15 +01:00
Holger Vogt 36fa47a8a0 Remove memory leak
Add callback function free_local_data
Free some tokens generated by CNVget_token
2021-12-13 21:31:49 +01:00
dwarning 8f9bf94a38 Aware of sscanf return value 2021-12-13 21:30:55 +01:00
dwarning ba6d8c871c white spaces 2021-12-13 21:30:32 +01:00
dwarning ba9f5be52c Prevent arithmetic overflow and reduce operations 2021-12-13 21:29:37 +01:00
Brian Taylor 38848259e4 With the ngspice gnuplot command, enable x/y contour plots for 2d Cider save file data. Usage: gnuplot <file> xycontour <expr>. xycontour is a new flag which is ignored if the plot data is not from 2d Cider. For contours, only a single plotarg <expr> is allowed. With <expr1> vs <expr2>, only <expr1> is plotted and <expr2> is ignored. 2021-10-30 13:21:32 +02:00
dwarning 550e9f1a81 correct some scaling rules 2021-10-30 11:03:26 +02:00
dwarning f638a63fba save few calculation effort in diode load routine 2021-10-30 11:03:05 +02:00
dwarning 62242a5538 save few calculation effort in bjt load routine 2021-10-30 11:02:54 +02:00
dwarning 133f9c46e7 prevent unwanted fallthrough 2021-10-30 11:02:25 +02:00
dwarning ae49043fe3 correct scaling for IBC parameter 2021-10-30 11:02:13 +02:00
dwarning b15c7d29f1 correct temp update for IBE and IBC parameter 2021-10-30 11:01:51 +02:00
dwarning 01fb0ac18b introduce IBE and IBC model parameter for more accurate current calculation 2021-10-30 11:01:36 +02:00
dwarning 231e6218a5 remove comment regarding ancient leakage current defaults 2021-10-30 11:01:24 +02:00
dwarning 5ff04ee85b c2 and c4 are now aliases for B-E and B-C leakage saturation currents 2021-10-30 11:01:09 +02:00
Holger Vogt fb98f7873b remove some compiler warnings 2021-10-30 10:46:39 +02:00
Holger Vogt f3cb69403a bug 497: Prevent a crash in CPL
Forbiddeb combination of model parameters.
Details are not yet available.
2021-10-30 10:44:44 +02:00
Holger Vogt 69e2903bf6 Update to Garbage Collector for cpl
Update some comments
Insert the deleting functions
Reset pool_vi and ndn_btree
Add an example with 20 call to cpl in sequence
2021-10-30 10:44:29 +02:00
Holger Vogt 041264df03 No more meory leaks with existing cpl examples:
Add cpldelete.c and cplmdel.c
Delete the model parameters.
Add 2 missing memsaved().
2021-10-30 10:44:07 +02:00
Holger Vogt 9ede9b80e0 Issue a warnong only when ngdebug is set. 2021-10-30 10:43:38 +02:00
Holger Vogt d2dd1950cb Add memsaved() to TMALLOC, calloc and replace CPLTFREE for tfree 2021-10-30 10:43:10 +02:00
Holger Vogt de00317e49 Add memsaved or memdelete to macros 2021-10-30 10:42:37 +02:00
Holger Vogt 8c5277a5e8 Re-format cplsetup.c 2021-10-30 10:42:09 +02:00
Holger Vogt 7dcb1b2a39 Add memsaved() to TMALLOC 2021-10-30 10:41:51 +02:00
Holger Vogt 1dddd6df8d Each TMALLOC is accompanied by fcn memsaved(). 2021-10-30 10:41:37 +02:00
Holger Vogt b142f2eb9d Add mem_init() and mem_delete() to setup and unsetup functions 2021-10-30 10:41:24 +02:00
Holger Vogt 3be7370fa8 Add header with extern function prototypes 2021-10-30 10:40:40 +02:00
Holger Vogt 677ec1a094 Update intro text 2021-10-30 10:40:04 +02:00
Holger Vogt 7c38699cd7 Add missing function nghash_delete_special(),
developed for branch gc-local
2021-10-30 10:39:19 +02:00
Holger Vogt b9afd2bd16 add missing headers 2021-10-30 10:38:23 +02:00
Holger Vogt 2f5a00f0a5 hash functions for cpl garbage collector 2021-10-30 10:37:42 +02:00
Holger Vogt 063665c374 Fix a bug in optran code:
devname will be used in the list of instances
2021-10-29 16:41:18 +02:00
Holger Vogt 01ed224896 A check to avoid multiple entries for the same node into the .save list
Scan the data base dbs (list of saves) before a new entry is generated.
2021-10-29 16:40:51 +02:00
Holger Vogt bde0639bc4 save within subcircuit
enable V(a,b) as v(a) v(b)
2021-10-29 16:40:34 +02:00
Holger Vogt e90b3e711b F.-request 85: save currents in subcircuits
Separate handling .ic/.nodeset and .save .
Add i(Vxx) to  address translation.
Vxx#branch is not supported.
2021-10-29 16:40:23 +02:00
Holger Vogt bd0113ea9a Feature request 85: Enable .save within subcircuits
inp.c: Add .save to wl_first only after subcircuit expansion
subckt.c: treat .save like .ic
2021-10-29 16:40:06 +02:00
Holger Vogt f9b743aa2a remove compiler warnings 2021-10-29 16:39:28 +02:00
Holger Vogt 7ce476c0ad Make optran standrad by calling com_optran during ngspice initialization. 2021-10-29 16:38:27 +02:00
Holger Vogt 36dd77f63e if step size in optran command is set to 0,
optran is deselected.
2021-10-29 16:38:08 +02:00
Holger Vogt 1eb15de584 remove optran command from spinit 2021-10-29 16:37:56 +02:00
Holger Vogt d6038ea43c Redo the transformation vswitch -> pswitch
Parsing takes default values into account, when
parameter is missing.
S vswitch --> pswitch code model
S_ST vswitch (with hysreresis) --> SW switch
S iswitch --> aswitch code model
S_ST iswitch (with hysreresis) --> CSW switch

Use string handling for replacements: allow parameter
equations in .model lines.
2021-10-29 16:37:19 +02:00
Holger Vogt bbccb4b63e Improved error message:
when argument out of range, name the term
2021-10-29 16:36:55 +02:00
Holger Vogt c895ca33f7 Pswitch: Fix a bug in resistance calculation when cntl_on < cntl_off
Correct setting of parens
2021-10-29 16:35:47 +02:00
Holger Vogt eee639d98d Rename the capacitor and inductor code models to capacitoric and inductoric
8e4db9109 ("adms bsimbulk and bsimcmg implementation based on work from Robert Larice", 2020-12-17)
changed inptypelk.c, line 37 from strcmp to strcasecmp.
Thus Capacitor (model for C) and code model capacitor are no longer
distinguished. Model parsing for the code models fails.

These code models are used very infrequently, thus renaming them
is a valid fix.
2021-10-29 16:28:25 +02:00
Holger Vogt 6b5bc9bcd8 There is no f (femto or Farad) in a resistor line 2021-10-05 18:07:32 +02:00
Holger Vogt a87b237bff is_a_modelname() to detect a model 1N4148, if compt LT is set.
Rewrite is_a_modelname(), when LT is set: only check element lines
beginning with r and c for RKM notation of a number.

So don't use a RKM number (e.g. 4k7) for naming a resistor model.
2021-10-05 18:01:53 +02:00
Holger Vogt 34c227815d RKM for C: Revert reading f, it is again femto
Examples files include expected results
2021-09-29 20:31:53 +02:00
Holger Vogt 7f981569d9 Update to RKM if ngbehavior=lt is set:
Reading C and R values follow the RKM convention with 2 exceptions:

    Upper case and lower case letters are not distinguished.

    Letters m, M denote milli (1e-3), letters Meg or meg denote 1e6.
2021-09-29 20:31:44 +02:00
Holger Vogt 6f6f2b8996 Remove double assigment to s[1]
Assignment Is either done in the loop or by *y = '\0';
2021-09-29 20:31:22 +02:00
Holger Vogt daa3609e58 Enable RKM notation for R and C, when ngbehavior LT is selected.
Add 2 evaluation functions specific for R and C respectively.
R has code letters L, R, K, M, G, T enabled. M here is Meg!
C has code letters p, n, u or µ, m, F. F here is unity, femto is
not available, m is still milli!
Two examples files show all cases.
2021-09-29 20:31:14 +02:00
Holger Vogt df5e7e36f6 When checking for µ, truncated the line, when shifted.
Enable R470, when newcompat LT is selected.
2021-09-29 20:30:53 +02:00
Holger Vogt 3dcc36c1c3 ngspice input deck may contain special characters like µ (mu).
Detect mu for ANSI and UTF-8 and translate it to u.
2021-09-29 20:30:35 +02:00
Holger Vogt 4ce4f52938 XSPICE d_source: prevent a crash when the input file is not found 2021-09-29 20:30:10 +02:00
Holger Vogt d4c559421e prevent crash if info.node_table has not been defined,
caused by some preceding error.
2021-09-29 20:29:54 +02:00
Holger Vogt 93f904fb0b Make 'speedcheck' also available in batch mode simulation. 2021-09-29 20:29:36 +02:00
Holger Vogt 5d116d1fb9 command listing: add option r (runable)
listing r > $inputdir/mycirc_runable.cir
will save the expanded netlist without line numbers,
ready to be sourced again and run in ngspice.
2021-09-29 20:29:26 +02:00
Keno Fischer 174f3d9cf9 Add missing rule for ngicon.rc 2021-09-29 20:29:13 +02:00
Brian Taylor 36313d59f3 Use the current point number as the single digit index for Cider 2D ascii save files. This conforms to the normal usage with other types of ascii rawfile. The numd parser table entry for ic.file now has the correct IF_STRING type. 2021-09-29 20:28:59 +02:00
Holger Vogt 3cf6857cfc Fix bug #557
Revise memory allocation for different analysis types
2021-09-29 20:28:43 +02:00
Holger Vogt 601287e949 Check V and I lines for dc and ac.
Allow ac without parameters, a default is set to ac ( 1 0 )
2021-09-29 20:28:15 +02:00
Brian Taylor 81df6ed772 Retaining the mixed case of Cider quoted string valued parameters. Limit searches for ic.file to D*, M*, and Q* device instantiation lines. Cider model (numos, numd, nbjt) detection is limited to .model lines. Continuation lines which do contain these tokens are not checked, but this should rarely happen. All of the examples/cider circuits meet these assumptions. Memory errors have been removed. 2021-09-29 20:27:29 +02:00
Holger Vogt 3599c189b6 re-enable lower-casing of tokens beginning with 'cd',
except for command 'cd' which is usually followed by a space.
2021-09-29 20:27:05 +02:00
Holger Vogt 0266bd5894 make PTparse error message more verbose:
include point in a line where parsing failed.
2021-09-29 20:26:42 +02:00
Brian Taylor abad190b38 Don't search for ic.file within comments. 2021-09-29 20:23:26 +02:00
Brian Taylor b3a99f0c6c Do not use non-portable strcasestr. 2021-09-29 20:23:08 +02:00
Brian Taylor 663a79dea8 Fix NAN error in numd2 area report and crashes when a doping file is missing. Update examples/cider so that the test circuits all run; add case sensitivity tests for rootfile and ic.file parameter strings enclosed in a single pair of double quotes. 2021-09-29 20:22:56 +02:00
Holger Vogt 68c5eb2d6b Add resistance sweep error message for failing optran 2021-09-29 20:22:34 +02:00
Holger Vogt 8708b6651b Optran may throw an error message while in temp sweep
and optran fails: message added (in addition prevent a crash)
2021-09-29 20:22:15 +02:00
Holger Vogt 1b3e192bfd errno needs to be nulled in Linux.
Its previous value will be returned after checking.
2021-09-29 20:21:39 +02:00
Holger Vogt e84c210876 'Option interp' and command 'stop' have been incompatible.
Allow both in a run.
Issue note (however not checked) that stop time data have to fit
the inpolated times.
2021-09-29 20:21:23 +02:00
Holger Vogt e35e3e3b33 prevent a crash, e.g. when incompatible 'option interp'
is set and 'stop' is called.
2021-09-29 20:20:52 +02:00
Holger Vogt a180eb60d5 command 'wrnodev'
Write current node voltages to file in format .ic=value
The file may be used to set initial conditions for another simulation,
e.g. ac at a specific time step of a transient simulation.
2021-09-29 20:20:27 +02:00
Holger Vogt 7f4fc2948b Add a line feed to make message more readable. 2021-09-29 20:20:00 +02:00
Holger Vogt fac1d3a79c ASRC (B-Source) error message is cryptic, as it does not tell
which B-Source failed.
Add a hint to the ASRC error message on the name of the
B-Source instance.
2021-09-29 20:19:38 +02:00
Holger Vogt 18478380ad Revise the SOA and add new parameters:
pd_max id_max idr_max te_max rth_ext derating
rth_ext is currently not used
2021-09-29 20:17:55 +02:00
Holger Vogt 3f322e1954 Add a check for sys/sysctrl.h, which has been declared deprecated,
and which may not be available (in the future) on some systems.
2021-09-29 20:17:23 +02:00
Holger Vogt 3b245ddd82 VDMOS, prepare SOA with new parameters
Model parameters pd_max, id_max, idr_max, and te_max
(power dissipated, drain current, drain reverse current, temperature)
2021-09-29 20:17:03 +02:00
Holger Vogt 4a1f7f950c spinit: add optran to the standard inits 2021-09-29 20:16:09 +02:00
Holger Vogt 7c84e3f993 SOA for bipolar
Replace pow_max by pd_max
2021-09-29 20:15:41 +02:00
Holger Vogt f06496c912 Enable command 'optran' in spinit or .spiceinit,
when the circuit is not yet loaded.
Then the optran data are stored in static variables,
until optran is called again with arg NULL from inp.c,
to set the data in ft_curckt->ci_defTask.
2021-09-29 20:15:13 +02:00
Holger Vogt a225ce2aaf List definition needs spaces between ( and next token,
and between token and )

Update to comment.
2021-09-29 20:14:45 +02:00
Holger Vogt 493cf73f7f optran is only selected when the 'optran' command has been processed.
If not, the call to the OPtran() function returns the previous
'converged' value.
2021-09-29 20:12:52 +02:00
Holger Vogt 7f1fdd3934 Don't do optran, if command optran is not given. 2021-09-29 20:12:31 +02:00
Holger Vogt 711157e85d Update comment: 0 is no initial iteration 2021-09-29 20:12:03 +02:00
Holger Vogt f0cb886af1 Add command 'write_ic'
Write out the right hand side status of the matrix in format
    .ic = V(node_xx)
    This may be possible at the end of a simulation or after a 'stop'
    of the simulation, which may be resumed again afterwars. This
    status may be used to start another simulation with these
    parameters by inluding into the netlist.
2021-09-29 20:11:45 +02:00
Holger Vogt 0e72287af7 Add command 'write_ic'
Write out the right hand side status of the matrix in format
.ic = V(node_xx)
This may be possible at the end of a simulation or after a 'stop'
of the simulation, which may be resumed again afterwars. This
status may be used to start another simulation with these
parameters by inluding into the netlist.
2021-09-29 20:11:13 +02:00
Holger Vogt 2ef3f66f96 if 'set ngdebug' print out transient initial conditions also with UIC set. 2021-09-29 20:10:25 +02:00
Holger Vogt 41ead284f3 make the error detection work properly 2021-09-29 20:10:02 +02:00
Holger Vogt 4e03efacb7 Use InpEvaluate() instead of strtod to enable ngspice numbers
with scale factors Meg k m u n p f etc.
2021-09-29 20:09:22 +02:00
Holger Vogt 3be5926f2c Reverse stepsize and finaltime in optran command,
stepsize first as in tran command.
2021-09-29 20:08:51 +02:00
Holger Vogt bca099ca29 prevent crash if first breakpoint is beyond optran max time 2021-09-29 20:08:28 +02:00
Holger Vogt b07a54b8e1 test of supply ramping 2021-09-29 20:07:42 +02:00
Holger Vogt 7de526237e upon finishing 'optran', restore old CKTstep
remove unused
2021-09-29 20:06:35 +02:00
Holger Vogt 0eafec254e safeguard command 'optran' against circuit no being loaded 2021-09-29 20:05:56 +02:00
Holger Vogt cf61e1e564 add missing header 2021-09-29 20:05:28 +02:00
Holger Vogt 83e223fafc header for optran 2021-09-29 20:05:08 +02:00
Holger Vogt a20afc54a5 When we sre ready, reset CKTmaxstep to its previous value 2021-09-29 20:04:26 +02:00
Holger Vogt 3956095484 set maxstepsize to stepsize 2021-09-29 20:04:08 +02:00
Holger Vogt ecdb3b9eb4 set the task values, not the ckt values,
because task is called only afterwards when
the simulation command is given.
2021-09-29 20:03:31 +02:00
Holger Vogt fd36eb552f set stepsize 2021-09-29 20:02:11 +02:00
Holger Vogt ab6224767b Add command 'optran' to set 6 flags for transient op 2021-09-29 20:01:44 +02:00
Holger Vogt df0792818f Transient op calculation added to the standard operating point code.
When standard iteration, gmin stepping and source stepping fail,
try a transient simulation (like tran with uic option) to
determine the op. Implemented for AC and Tran simulation.
2021-09-29 20:00:29 +02:00
Holger Vogt a08e6a0676 Add new SOA parameters (safe operating area) for BJT.
We now scan for max of Ic, Ib, power, taking into
account the max allowed temperature, using the thermal
resistance rth0 model parameter between juntion and ambient.

Two user options are there: If rth0 is given, we calculate
a derating of the max power allowed.
Without a constant max power according to model param pow_max
is assumed.

The new model parameters for the bipolar model are:
pow_max, ic_max, ib_max, te_max, and rth0, in addition
to the already existing vbe_max, vbc_max, adn vce_max.
2021-09-29 19:59:58 +02:00
Holger Vogt 1084b4205c Allow global .temp in addition to instance parameter 'temp'.
Update to comments.
2021-09-29 19:59:28 +02:00
Holger Vogt 9221df234c Patch to allow (and ignore) leading or trailing commas
when putting {} around tokens. Tested with PWL voltage source.

Patch has been suggested by Liqian Zhang
2021-09-29 19:58:36 +02:00
Holger Vogt 33571877dc Some update to SOA for a diode:
Limit output to four digits
Add power and temperature limits.
Derating with self-heating, or with fixed temperature,
or no derating at all, selectable by setting model parameters.
Example file: SOA plotted as frame, with diode current.
2021-09-29 19:58:11 +02:00
Holger Vogt 759f4f5f84 Make the output a little more verbose:
add terminal voltage to Id, Te, and Pd outputs.
Compare SOA data to terminal voltage, not (unknown) junction voltage.
2021-09-29 19:57:54 +02:00
Holger Vogt 9c8380a031 Enhance the SOA (safe operating area) operations
Parameters id_max, pd_max and te_max have been added
for current, power, and temperature to the already existing
fv_max and bv_max (max forward and backward volteges).
2021-09-29 19:57:34 +02:00
Holger Vogt e5fdb4c742 Patch sorts 1 byte vars in sequence,
to save some memory.
Patch #107 provided by Florian Ballenegger
2021-09-29 19:57:08 +02:00
Carsten Schoenert 2c2e21a80c Smal typo fixup s/currntly/currently 2021-08-08 11:56:30 +02:00
Holger Vogt 605f59b417 Fix a bug with the alter statement
lower case for device name, when sent from shared ngspice
or from interactive mode.
2021-08-08 10:21:22 +02:00
Holger Vogt 9a2d968577 When transferring boolean data over the ABI, keep them as boolean types, not integer
Replace the type of all boolean variables around the ABI by NG_BOOL.
NG_BOOL is typedefed to _Bool, when compiling shared ngspice. When
sharedspice.h is use externally NG_BOOL is typdefed to bool
2021-08-03 15:57:58 +02:00
Carsten Schoenert 61b5c0563b src/Makefile.am: Adopt used variables for lib versioning
A small adjustment so the configured ABI version from configure.ac will
get used for creating the libngspice library.
2021-08-03 15:56:02 +02:00
Holger Vogt 4258fe94b5 Add library versioning according to
https://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html#Libtool-versioning
Add package versioning with m4 macros
2021-08-03 15:55:16 +02:00
Holger Vogt 6aac403ab0 XSPICE delay: add some more safeguards 2021-08-03 15:53:42 +02:00
Holger Vogt 4feb43e067 Prepare ngspice-35 2021-07-22 20:38:08 +02:00
Holger Vogt 4dbd8b7f9a Preliminary fix for the 'interpolate' function.
Interpolation of 1D vectors is o.k. now,
multi-dimensional vectors are not (yet) supported.
2021-07-22 20:37:57 +02:00
Holger Vogt 1977128380 Prevent crash when CIDER diode models are used.
There is no third node in NUMD or NUMD2, so don't set
GENnode(fast)[i]. This patch fixes a bug introduced in
4895a4b5a ("Diode model with selfheating option", 2021-04-11)
2021-07-20 14:24:43 +02:00
Holger Vogt 9cc9c56cad Don't write past '\0', fixes a bug in commit
1c5e0d11d ("If there is a XSPICE code model .model line with
file input, keep quotes and case for the file path.", 2021-07-15)
2021-07-18 11:19:51 +02:00
Holger Vogt b7473a33a0 Check for double '{', replace the inner '{', '}' by '(', ')'
in .subckt or .model (which both may stem from external sources)
2021-07-18 10:29:16 +02:00
Holger Vogt 85b07e35bf Fixes bug 483
prevent crash when surface mobility (surfmob) has been
selected in 2D simulation.
The patch is provided by Brian Taylor (see
https://sourceforge.net/p/ngspice/mailman/ngspice-devel/thread/e6e921a3-677c-f513-7410-df8568c4bdad%40comcast.net/#msg37318450
)
2021-07-16 10:53:07 +02:00
Holger Vogt 1c5e0d11dd If there is a XSPICE code model .model line
with file input, keep quotes and case for the file path.
2021-07-16 10:52:54 +02:00
Holger Vogt 15a3ed87c0 Enable the m parameter in E, G, B, R behavioral source/devices 2021-07-16 10:52:21 +02:00
Holger Vogt 973a60b898 re-enable making the old help system for Linux/Cygwin
by --enable-help --enable-oldapps
2021-07-08 15:34:41 +02:00
Holger Vogt d34d1e7c7c Get immediate response into text window,
when requesting information on coordinates.
2021-07-07 19:50:50 +02:00
Holger Vogt 182a4d3f5f WinGUI: Push any remaining error message into text window
before emitting interactive error message window and exit.
2021-07-07 19:50:37 +02:00
Holger Vogt ae72677cc2 Remove a false read when curr_line has
already been invalidated.
2021-07-05 19:43:25 +02:00
Holger Vogt 0f25c25c7e Remove a memory leak
Make inp_rem_levels non-static
and use it to remove 'root' after it has been used.
2021-07-05 19:42:14 +02:00
Holger Vogt 54cbfb4138 Nodedamping: Make difference independent of the sign
of the difference
2021-07-05 14:32:57 +02:00
Holger Vogt c74321e0f5 JFET2: Add a link to literature 2021-07-05 14:32:47 +02:00
Holger Vogt 93ddc7a3eb Enhancement for E source with table, convert to B source with pwl:
Add G source
Allow 'table' also being part of a parameter name like 'table_something'
2021-07-05 14:32:34 +02:00
dwarning 0ece04cdc8 Add channel type determination belong nmos/pmos model parameter 2021-07-05 14:32:14 +02:00
Holger Vogt fe158341ba Don't show message for every iteration 2021-07-05 14:31:47 +02:00
Holger Vogt c38b8e3615 Fix a bug in the 'dc' progress report 2021-07-05 14:31:32 +02:00
Holger Vogt 8eeb924460 CIDER: Enable printing either binary or ascii data output to file.
Patch provided by Brian Taylor, see
(https://sourceforge.net/p/ngspice/mailman/message/37309841/)
2021-07-05 14:31:21 +02:00
Holger Vogt 9bb401d9cd Add a 'qsort' dummy according to current compiler standards.
Detected during the very rare condition of not finding a 'qsort'
during the ./configure step.
2021-07-05 14:31:08 +02:00
Holger Vogt 76eac5aa0f Make error message more verbode 2021-07-05 14:30:35 +02:00
Holger Vogt a4be66b9b0 Prevent crash if there is bad syntax in h, g, e, or f line 2021-07-05 14:30:26 +02:00
Holger Vogt 31fbf910af Crash when trying to delete root and netlist:
Revert the order of deletion: Firstly the root, then the netlist.
2021-07-05 14:30:08 +02:00
Holger Vogt 858689d206 Make syntax check for nesting of .subckt ... .ends more verbose:
Try to find out where .subckt/.ends may be doubled, or missing.
2021-07-05 14:29:50 +02:00
Holger Vogt 52b5e218c7 Add '\f' to characters to be replace by '+'
during the syntax check of an netlist input file.
2021-07-05 14:29:35 +02:00
Holger Vogt c061747f19 Add evaluating and using temp and dtemp
as ASRC instance parameters.
2021-07-05 14:29:10 +02:00
Holger Vogt ddcc6f6097 add a comment: we should use TNOM, but not a fixed 300.15.
TNOM still has to be added to the ASRC parameters.
2021-07-05 14:28:51 +02:00
Holger Vogt dcde7b590e Don't put brackets around dtemp and temp, when they denote
instance parameters and thus are on the left hand side of '='
2021-07-05 14:28:39 +02:00
Holger Vogt 945786fba7 Make PTcheck more verbose:
Send error message containing failed expression
2021-07-05 14:28:19 +02:00
Holger Vogt 7e01b800f0 add the parameter name to error message of missing or bad parameter 2021-07-05 14:28:07 +02:00
Holger Vogt 7eb791fe00 No parse tree submitted to IFeval:
Prevent segfault and emit error message
2021-07-05 14:27:46 +02:00
Holger Vogt 19abc83312 Make the choice of last commit mor obvious 2021-07-05 14:27:23 +02:00
Holger Vogt 87a9d87f7d Replace identifier by func not only after '=', but also '{'
Extension to commit
61e48f984 ("Start replacing identifiers by func only after the first '='", 2021-06-18)
2021-07-05 14:26:57 +02:00
Holger Vogt 68e51848a4 logic condition to check only 'x' lines had not been given 2021-07-05 14:26:46 +02:00
Holger Vogt d0ca6a4773 Start replacing identifiers by func only after the first '=' 2021-07-05 14:26:21 +02:00
Holger Vogt 36069467fb Clarify that 'scale set to ...'
is not a query, but a statement
by 'scale is set to ...'..
2021-07-05 14:25:49 +02:00
Holger Vogt 5d1dfdf34e Fix a comment 2021-07-05 14:25:26 +02:00
Holger Vogt 06136d2d02 Set the default line width for grid and graph to 1.
0 is possible but seems to be too thin for reasonable plots.
2021-07-05 14:25:13 +02:00
Holger Vogt 028dd0ab88 Remove unused
Add a delay of half a time step to reduce error
2021-07-05 14:24:46 +02:00
Holger Vogt abc6eb56f3 Plausibility checking
Enforce out=in when delay == 0
2021-07-05 14:24:29 +02:00
Holger Vogt fbab9a0fe2 Add an analog delay source for transient simulation
Internal circular memory of size tstop/tstep or user defined.
(aprox.) every tstep a value is stored.
Delay time in multiples of tstep, by control voltage or user defined.
Dc or ac sim will simply connect input to output.
2021-07-05 14:24:06 +02:00
Holger Vogt 0d2d034eb2 Add devices s and w to previous commit.
R and C are not yet covered here, due to the many
varieties available.
2021-07-05 14:23:52 +02:00
Holger Vogt c033298db9 Don't replace a device model name by a parameter, if both
have the same names.

This is an extension to commit
7706889a0 ("inpcom.c, fix bug no 384 do not quote fourth
token in f, h lines otherwise if dev name equals param
name parsing fails", 2018-12-08)

Fixes bug 327 reported by T. Edwards at
https://github.com/google/skywater-pdk/issues/327
2021-07-05 14:23:23 +02:00
Holger Vogt 03517ae86c Define the function DevFinalize as used in the previous commit. 2021-07-05 14:22:55 +02:00