Commit Graph

6193 Commits

Author SHA1 Message Date
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
Holger Vogt 5e8ae680db Don't do gr_redraw twice (for non-X11 is already
done in gr_resize)
Add a function DevFinalize() to add the closings in SVG or PS
files ("/> or "stroke"), when files are generated by the
plot window in MS Windows.
2021-07-05 14:22:33 +02:00
Holger Vogt a6079781ea Fix previous commit, enable name upgrade for Linux and other non-Win OSs 2021-07-05 14:22:10 +02:00
Holger Vogt 1176bdb0b0 Bug: Plot window switching did not change the plot content.
Enable plotting the current graph to svg or ps by selecting
the graph from the current plot window.
2021-07-05 14:21:47 +02:00
Holger Vogt 604c4624d1 Within a single run, allow multiple plots with different names:
Add an increasing number to the id file name.
2021-07-05 14:21:16 +02:00
Holger Vogt 0f4d953950 Open mrdump file not in append, but in write mode 2021-07-05 14:20:55 +02:00
Holger Vogt 273b773280 New pswitch is not compatible to iswitch
Keep the old aswitch until a modified pswitch is available.
2021-07-05 14:20:31 +02:00
Holger Vogt 93f6a50553 New author 2021-07-05 14:20:14 +02:00
Holger Vogt 22a516bc4d New author 2021-07-05 14:19:56 +02:00
Holger Vogt d36fcaf34c Neew pswitch with patch 0001-pswitch-fix.patch from Jube 3rd, 21 at
https://sourceforge.net/p/ngspice/discussion/127605/thread/d55d2322f2/#c966/b802/4764/2540/3b3f/04a4/bc51/3a68

Input resistance, numerically computed derivatives with auto-partial, reasonable limits.
2021-07-05 14:19:43 +02:00
Holger Vogt 5cc5e351f1 prepare for the new pswitch with g, gd input 2021-07-05 14:19:28 +02:00
Holger Vogt 9abb61d6ac Bug fix for %i(node1) in an A instance.
Don't do i() replacement in an A instance as shown above.
2021-07-05 14:19:12 +02:00
Holger Vogt e0d5d98b33 Just a reminder that truncation is currently diabled for CSW 2021-07-05 14:18:40 +02:00
Holger Vogt c46676d06e If compatmode PS is set, translate vswitch and iswitch to pswitch.
This reverts commit 025a9fe59 ("Partially undo commit [ab778d] : revert to aswitch as vswitch replacement", 2020-11-22)
Successful OpAmp tests vote for pswitch.
Enable iswitch.
2021-07-05 14:18:30 +02:00
Holger Vogt f12592871a Set derivative d out/d contrl to 0 if outside of switching range.
Disable auto derivatives.
Enable algorithmic derivatives.
2021-07-05 14:18:08 +02:00
Holger Vogt db5395032f Avoid model warning for C if compat flag lt is set. 2021-07-05 14:17:49 +02:00
Holger Vogt 1266225cdb For C and R device enable value tokens like 4k7 or 1u2
in addition to 4.7k and 1.2u.

Valid for
R1 1 0 47k
C2 3 6 1u2
only. Does not interfere with other value tokens in params etc.
2021-07-05 14:17:31 +02:00
Holger Vogt 14402ffc96 Update to
6034c2bcd ("Internal global variable Infile_Path
is a file search path made available for the code models.
It is set when command 'source' is used.", 2021-04-17)
Correct path to variable.h
2021-07-05 14:17:01 +02:00
Holger Vogt 6d9876229c Fixes bug #331
Bug detected and analysed by Arsen Liash
Patch provided by Yurii Demchyna
2021-07-05 14:16:35 +02:00
Holger Vogt c75e4129f4 Plug another memory leak in LTRA transmission line 2021-07-05 14:16:17 +02:00
Holger Vogt 5d39ff2d8c Plug memory leaks in transmission line LTRA 2021-07-05 14:15:20 +02:00
Holger Vogt d2ac525f52 Plug some more memory leak in TXL transmission line. 2021-07-05 14:14:38 +02:00
Markus Mueller 74ba5c1f96 found non-initialized value! 2021-07-05 14:14:15 +02:00
Markus Mueller 5c71349bad remove dead assign statements, yet just commented them out for the time
being
2021-07-05 14:14:00 +02:00
Holger Vogt c0bd7ca6e2 Plug a memory leak in TXL transmissiom line (y device) 2021-07-05 14:13:44 +02:00
Holger Vogt b5054cc9f1 Plug a memory leak
Add function HICUMdelete() to remove model->HICUMversion
2021-07-05 14:12:46 +02:00
Holger Vogt 7dd96c241c PSPICE MC parameters are not (yet) supported, so remove them
from .model (lot, dev) and netlist (.distribution)

Triggered by Patch #104 by Giles Atkinson
2021-07-05 14:12:09 +02:00
Holger Vogt 58bdf9e0e6 Remove 'goto end' and 'end:' statements. 2021-07-05 14:11:48 +02:00
Holger Vogt c2d11728c4 enable usage of parameters in .options lines. 2021-07-05 14:11:26 +02:00
Holger Vogt 78eee72b36 .temp could not apply params like
.ttemp {tmpparam}:
move evaluation of .temp to a later stage
2021-07-05 14:11:03 +02:00
Holger Vogt d0da4bebd3 make variable 'dir' local 2021-07-05 14:10:44 +02:00
Holger Vogt 11d3188e19 fix typo 2021-07-05 14:10:20 +02:00
Holger Vogt 4fd7de9e34 Partially re-introduce and improve code that has been
inadvertently deleted in commit

83592c456 ("unify the evaluation of '.options scale=xx'
.option in a netlist will override 'options' from spinit,
.spiceinit or a script '.options scalm=xx' yields a warning,
it is not supported.", 2021-04-05)

The code transforms the option statements and adds them
to the current circuit.
2021-07-05 14:09:56 +02:00
dwarning 6bafdf70d5 sub-coll junction calculation only if ISS given 2021-07-05 14:09:35 +02:00
Holger Vogt 3a908c76ef Prevent crash, refName may be NULL 2021-07-05 14:08:41 +02:00
Holger Vogt 98f8a4fcb2 Improve error message, if occuring during op 2021-07-05 14:08:25 +02:00
dwarning 4ca4b43801 simplify while loop for subckt diode and bjt models 2021-07-05 14:08:02 +02:00
Holger Vogt c8db059144 Use 'm' and 'multi' correctly in PDKs
If there is alraedy m=xx in a subcircuit instance line,
replace it by m='m*xx' to aknowledge the additional m.

Tested with an (old) TSMC PDK and with Skywater PDK.
2021-07-05 14:07:46 +02:00
dwarning 1f95e12142 Value stored to vsub is never read 2021-07-05 14:07:26 +02:00
dwarning 52f4244345 fix Vcrit calculation for coll-subs junction and correct tlev=3 temperature model 2021-07-05 14:07:14 +02:00
dwarning b00fa921ac rm depreciated storage class 2021-07-05 14:06:52 +02:00
dwarning e14dc3aaa3 few style cleanings 2021-07-05 14:06:28 +02:00
Holger Vogt 109e33f127 Improve font selection for Win GUI plot window
Font Names from
https://docs.microsoft.com/en-us/typography/fonts/windows_10_font_list
without option or with Bold or Italic are supported, e.g.
setcs wfont="Cambria Bold Italic".
2021-07-05 14:06:06 +02:00
Holger Vogt 80e5f67466 Reduce wchar_t string length to minimum required
(to be NULL-terminated for CreateWindowW)
2021-07-05 14:05:33 +02:00
Holger Vogt c9a19c7569 Fix for bug 547
Reduce length of wchar_t strings to the minimum required
for conversion

Check if Bold or Italic is given in the font name, set
corresponding variable
2021-07-05 14:04:09 +02:00
dwarning 45e397727b rm dead assignments 2021-07-05 14:03:38 +02:00
Holger Vogt d2f6ad239f If the input file path contains ANSI-encoded special characters,
utf-8 conversion and thus file opening will fail.

This patch then in addition tries opening the file with standard fopen.
2021-07-05 14:03:21 +02:00
Holger Vogt ba262eaa5f Internal global variable Infile_Path is a file search path made
available for the code models. It is set when command 'source' is used.

This patch makes the first entry in var 'sourcepath' available to
the code models as well by setting Infile_Path, when 'sourcepath'
is set in .spiceinit.
2021-07-05 14:02:51 +02:00
dwarning a08f120518 TEMPFORMAT has already leading / in defines.h 2021-07-05 14:02:21 +02:00
dwarning 64c407332d rm dead assignemnts 2021-07-05 14:02:04 +02:00
dwarning 9b2f3cfd5e iter value never read - prevent compiler warning 2021-07-05 14:01:26 +02:00
dwarning 4e86cfa352 diode cbv only needed for tracing - prevent compiler warning 2021-07-05 14:01:09 +02:00
dwarning 2b2e40793e correct indentation 2021-07-05 14:00:44 +02:00
Holger Vogt 741cab390f Prevent a crash when the number of models exceeds MODNUMBERS
Raise MODNUMBERS to 2048

https://github.com/kicad-spice-library/KiCad-Spice-Library/issues/16
2021-07-05 13:59:53 +02:00
Holger Vogt 66cbac3f4e Fixes a bug introduced by commit [4895a4]
Re-enables R with .model like
.model R_NOISELESS RES (TCE=0 T_ABS=-273.15)
R77 1 0 R_NOISELESS 100
2021-07-05 13:59:24 +02:00
dwarning b1bf7ea0ad Diode model with selfheating option 2021-07-05 13:58:51 +02:00
Holger Vogt 48acb10929 Remove compiler warnings 2021-07-02 11:58:30 +02:00
Holger Vogt e91ec306ba Remove some compiler warnings 2021-07-02 11:58:10 +02:00
Holger Vogt 2536b78acb Allow tailing '\0'
Remove potentially user induced buffer overflow by replacing
sprintf by snprintf.
2021-07-02 11:57:30 +02:00
Holger Vogt 053e8c5a04 remove compiler warning 2021-07-02 11:56:29 +02:00
Holger Vogt d5fd9c8625 correct function prototype 2021-07-02 11:56:14 +02:00
Holger Vogt 45c171635a Remove compile error which may occur with specific settings 2021-07-02 11:55:28 +02:00
Holger Vogt 19ddeb8fe6 formatting (not complete) 2021-07-02 11:54:59 +02:00
Holger Vogt 545d2f9177 Report an error when trying to define ports
'v', 'vd', 'i', and 'id' as 'inout'
Parch 105 provided by  Giles Atkinson
2021-07-02 11:54:34 +02:00
Holger Vogt bc74caca2f Don't create cat2strings if on VS2019 2021-07-02 11:54:06 +02:00
Holger Vogt d19c8e7f41 Efficiency: Remove setting the random seed to behind the options selection
Evaluate '.options cshunt=xx' earlier to allow the following:
Set the option by calling INPpas4() during parsing the circuit,
before .ic is set.
Ckt and Task cshunt are still set, but their values are available
only too late for INPpas4(), but may be used by command 'option'
(w/o parameters) for assessing the options and their values.
2021-07-02 11:53:42 +02:00
Holger Vogt 911b50fa8f Adding capacitors, one per voltage node 2021-07-02 11:52:45 +02:00
Holger Vogt f8357dad88 Prepare Cshunt: add a cpacitor to each voltage node
Function inppas4() will add the extra caps, to be done.
2021-07-02 11:52:15 +02:00
Holger Vogt db5c6cd0ec Add some comments for inppas1,2,3 2021-07-02 11:51:57 +02:00
Holger Vogt d07fab904c Speed enhancement while reading large PDKs:
Line concatenation used tprintf, which uses vsnprintf,
which is very inefficient in Linux, MINGW, but efficient
using MSVC. Thus for the others a function cat2strings() is
introduced, which uses memccpy().
2021-07-02 11:51:18 +02:00
Holger Vogt e2cf397b6d Restrict the limit for exp function (linear growth when exponent
is larger than 14, commit [93a76d]) to the PSPICE compatibility
mode.
2021-07-02 11:50:42 +02:00
Holger Vogt 8da2f3c16d unify the evaluation of '.options scale=xx'
.option in a netlist will override 'options'
from spinit, .spiceinit or a script
'.options scalm=xx' yields a warning, it is not supported.
2021-07-02 11:50:17 +02:00
dwarning 8a04d049ab Correct scaling for area and pj geometry scaled diode (level=3) 2021-07-02 11:49:35 +02:00
dwarning a7cf70e615 Introduce element parameter handling for geometry scaled diode (level=3) 2021-07-02 11:49:21 +02:00
dwarning 56c8a24dd7 Correct parameter handling for geometry scaled diode (level=3) 2021-07-02 11:48:53 +02:00
dwarning 2a55f50192 First attempt for geometry scaled diode (level=3) 2021-07-02 11:48:04 +02:00
Holger Vogt 4bee26b8b9 Remove unused prototype 2021-07-02 11:45:11 +02:00