Commit Graph

3452 Commits

Author SHA1 Message Date
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 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
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 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 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 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 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 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 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 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 db5395032f Avoid model warning for C if compat flag lt is set. 2021-07-05 14:17:49 +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 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
Holger Vogt 3a908c76ef Prevent crash, refName may be NULL 2021-07-05 14:08:41 +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
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
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 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 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 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
Holger Vogt 9311674499 re-enable PostScript/SVG to file by pushbutton
on the ngspice plot window, avoid crash due to double freeing.
2021-03-19 15:07:33 +01:00
Holger Vogt e1ae8c7495 remove memory leak 2021-03-19 15:07:23 +01:00
Holger Vogt 9f6d550837 Remove memory leaks in the SVG code 2021-03-19 15:06:59 +01:00
Holger Vogt 74a615d5af Free tmalloced Cfg.strings[i] 2021-03-19 15:06:49 +01:00
Holger Vogt 02b4f06f2d variables like color1 may override thie svg_intopts and svg_stropts.
Unsetting the variables will reset to the default.
Malloced colors and cfg.strings will be freed again.
Examples do show more of the options.
2021-03-19 15:06:35 +01:00
Holger Vogt 4303534f91 Shift colorID evaluation to a place after svg_stropts is read.
Remove unused.
2021-03-16 11:01:54 +01:00
Holger Vogt 1ba168ff30 clarify call to gnuplot on Linux/Cygwin 2021-03-14 15:33:17 +01:00
Holger Vogt 7b9d1fb74a enable variable 'nolegend' for gnuplot 2021-03-14 15:33:10 +01:00
Holger Vogt f61ea3aa96 if 'set nounits' is given, plotting of the units is suppressed
(they may be added manually to the y and x labels for SI conformity).
2021-03-14 15:32:49 +01:00
Holger Vogt 43f3fceb75 enable svg also for console app on Windows 2021-03-14 15:32:31 +01:00
Holger Vogt f31ae08f0b remove unused args 2021-03-14 15:32:15 +01:00
Holger Vogt 1607b3a21f X11: Add a button for writing an SVG file to the plot window.
Update button texts.
Add a function hardcopySVG to write the SVG file, called by
clicking the SVG button.
2021-03-14 15:32:03 +01:00
Holger Vogt 43c44a8ca9 correct description 2021-03-14 15:31:57 +01:00
Holger Vogt 1f54a6add3 WinGUI: Make the text output from com_hardcopy available immediately
by call to function UpdateMainText.

Enable color for postscript output.
2021-03-14 15:31:45 +01:00
Holger Vogt 683ef77955 Separate color and b&w
b&w in the plot window is not(yet) supported.
2021-03-14 15:31:07 +01:00
Holger Vogt 6d388e1679 Select black&white, if appropriate
Return colorID to previous values after hardcopying.
2021-03-14 15:30:59 +01:00
Holger Vogt 391822b558 use colorN as for normal plots
color0 is background
svg_intops and svg_stropts may set all parameters
2021-03-14 15:30:33 +01:00
Holger Vogt bc678baaca modified from Giles Atkinson's patch:
use hardcopy entries to set variables
maybe overridden by stropts and intopts list variables
2021-03-14 15:30:24 +01:00
Holger Vogt 6b4d2a9241 separate svg and postscript handling 2021-03-14 15:30:13 +01:00
Holger Vogt dacd727d87 separate svg and postscript
suitable text placement for svg
2021-03-14 15:30:06 +01:00
Holger Vogt 87b59d22a5 add generation of svg graphics file
based on patch no. 97 by Giles Atkinson
2021-03-14 15:29:53 +01:00
Holger Vogt b86c85f85b Safeguard against usage of --with-readline or --with-editline
Some package maintainers have erroneously used the above ./configure
flags during compiling libngspice-0.so. This has led to an unresolved
symbol history_file with ngspice-34.
2021-02-21 16:49:00 +01:00
Holger Vogt 8076e2b4cf Check for double '{{ }}', replace the inner '{', '}' by '(', ')'
in .model lines, if compat mode ps is set. Enables use of some On-Semi
power transistor models.
2021-02-21 16:48:53 +01:00
Holger Vogt a77b529928 set the locale to "C" locally, if shared ngspice 2021-01-29 10:44:28 +01:00
Holger Vogt 5747982ae8 Re-enable devices like E2 1 0 (2,3) 1
Add a new function nexttok_noparens(const char *s) which
skips tokens. Characters , ( and ) are treated like spaces.
2021-01-28 17:06:02 +01:00
Holger Vogt 433a76a1f2 Guard against vector "time" not being available 2021-01-28 17:01:30 +01:00
Holger Vogt c8a7b69190 re-enable setting options when 'set ngbehavior=hs' is set. 2021-01-27 16:29:15 +01:00
Holger Vogt ca26364a7a Remove "incompatible pointer" warning 2021-01-26 18:18:28 +01:00
Holger Vogt 8de513e8e9 ngspice.exe and .dll (.so): seperate the main files:
main.c now belongs to exe, sharedspice.c to dll (so)
2021-01-26 18:17:59 +01:00
Holger Vogt fb8e974ac4 i-sweep sall become a current vector (SV_CURRENT) 2021-01-20 16:49:14 +01:00
Holger Vogt 939410874a Info "No circuit loaded!" is added. 2021-01-20 16:49:05 +01:00
Holger Vogt d239a523e0 remove memory leak 2021-01-20 16:48:46 +01:00
Holger Vogt ed15d6f975 replace controlles_exit by error return,
delete netlist cc when returning upon error.
2021-01-20 16:48:27 +01:00
Holger Vogt 058f474f90 Prevent crash if netlist input is something like
H n1
2021-01-20 16:48:08 +01:00
Holger Vogt a86a500b07 checkspeed: use startclock instead of lastclock to ensure
Linux compatibility.
2021-01-20 16:47:48 +01:00
Holger Vogt 2a2a488f7d If 'set ngdebug', and if transient simulation,
create a vector speedcheck in the tran plot
which contains the real time versus simulated time,
to check for obstacles during the course of the
transient simulation. If command 'save' is given,
one has to add speedcheck to obtain this vector.
2021-01-20 16:47:27 +01:00
Holger Vogt c891bf846c reduce precision to avoid false rounding 2021-01-20 16:46:59 +01:00
Holger Vogt c9eeb0ceea Modify get_number_terminals() and make it non-static.
Use modified function to replace fixed node number.
2021-01-20 16:46:37 +01:00
Holger Vogt b640e57c39 re-enable getting correct node numbers for bipolar
using TSMC cv018bcd
2021-01-20 16:46:27 +01:00
Holger Vogt 273b0fb4a3 fix a plotting bug with xlog axis and ylabels 2021-01-20 16:45:54 +01:00
Holger Vogt 822a63974f Unused binning models are removed.
Flag 'nf', when given on the x lines, is
recognized.
Tested with TSMC, Skywater, and X-Fab model
files.
2021-01-20 16:44:57 +01:00
Holger Vogt e601325149 Avoid any buffer overflow if user provides a large TABLE:
Replace fixed length strings and fcn 'cat' by dstrings.
2021-01-20 16:44:19 +01:00
Holger Vogt 059e869754 free the wordlist wle to avoid memory leaks 2021-01-20 16:42:33 +01:00
Holger Vogt 02630c0af2 fix a bug in printing the compatibility status 2021-01-20 16:41:53 +01:00
Holger Vogt 5af7f0ff78 sort instance list entries: RHS numbers (like nf=2) come first,
expression then follow.
2021-01-20 16:41:25 +01:00
Holger Vogt 4a6fff05b6 typo 2021-01-05 23:11:50 +01:00
Holger Vogt 0d4685f459 preliminarily turn off fcn nlist_model_find()
to avoid compiler warning
2021-01-02 23:29:35 +01:00
Holger Vogt 94eac89749 Remove 'comment out any unused models' for now, it
has been working, but led to spurious error messages.
Has to be checked more thoroughly.

Add a ngbehaviour setting 'mc', needed for running
'make check'. It will unset all other compatibility modes
and suppress the note on compatibility settings which
led to a 'make check' failure just due to its printout.
2021-01-02 19:12:26 +01:00
Holger Vogt 1234c3bdf8 Update to the compatibility mode:
Rename new_compat_mode() to set_compat_mode().
Add fcn print_compat_mode() to print out
the selected compatibility mode.
2021-01-02 19:11:44 +01:00
Holger Vogt 164d3dd20c Enable models with parens by using gettok_parens() like
.model NP NPN(BF=125 Cje=.5p Cjc=.5p Rb=500)
2021-01-02 19:11:29 +01:00
Holger Vogt 9485a51928 Re-enable the 'hardcopy' command
Fixes support-requests #53 by Paolo M.
2021-01-02 19:10:30 +01:00
Holger Vogt 70d1647cfa Update to ps .model selection for MOS,
add support for bipolar (Mextram, lateral pnp),
enable 'level = nn' (with spaces).
2021-01-02 19:07:16 +01:00
Holger Vogt 3c354092ff Line endings from \r\n to \n 2021-01-02 19:06:58 +01:00
Holger Vogt 8602915942 level for ekv2.6 is 44 2021-01-02 19:06:17 +01:00
Holger Vogt 50ec89e284 PS compatibility: select appropriate level for MOS models 2021-01-02 19:05:41 +01:00
Holger Vogt a147a3b190 If we encounter tc1= or tc2= (temp coeffs.) or m= (multiplier),
the expression is done, thus keeping the brackets as is.
Enables tcx={} or m={} with their own expressions, dealt with
by numparam.
2021-01-02 19:02:44 +01:00
Holger Vogt 98eb5bf475 bug #537: remove memcopy with overlapping strings
Bug reported by Ronan BARZIC
2021-01-02 19:02:29 +01:00
Holger Vogt 86f5a9b819 Only print the devices that are really used in the circuit
(don't print the 0 occurencies).
2021-01-02 19:02:07 +01:00
Holger Vogt e8aea4967c Remove some compiler warnings 2021-01-02 19:00:48 +01:00
Holger Vogt 2359f28812 Remove compiler warning
cast between incompatible function types from
‘void (*)(int,  int)’ to ‘void (*)(int)’
2021-01-02 19:00:29 +01:00
Holger Vogt 7bd12a60a6 Enable multiplier 'm' for behavioral resistor
(R using a B source).
2020-12-22 17:56:19 +01:00
Holger Vogt 014dfe1b7b The old inp_deckcopy() is a safer way of copying, while retaining
the correct line numbers for parameter substitution.
2020-12-22 17:56:19 +01:00
Holger Vogt b1d062668c When there is no model found, and we have an m devices,
set the number of nodes to 4. This has to be fixed (find
a way to detect the number of nodes automatically).
2020-12-22 17:56:19 +01:00
Holger Vogt b0a2ab5729 A FIXME: The number of nodes is fixed to 4!
Better make this flexible, but how to detect this number safely?
2020-12-22 17:56:19 +01:00
Holger Vogt 5366f946eb Remove more compiler warnings 2020-12-22 17:56:19 +01:00
Holger Vogt 238f8d393a Suppress some compiler warnings 2020-12-22 17:56:19 +01:00
Holger Vogt 3c2f6585e0 Add some comment. 2020-12-22 17:56:19 +01:00
Holger Vogt e1eb851ec4 Add function rem_unused_mos_models()
Netlist is flat at this stage, all numbers expanded,
but not yet parsed into the circuit structure.
So again try to remove unused MOS models.
All binning models are still here when w or l have been
determined by an expression from within the PDK.
2020-12-22 17:56:18 +01:00
Holger Vogt 19fb3ec38f make some functions non-ststic to support function
rem_unused_mos_models() in inps.c
2020-12-22 17:56:18 +01:00
Holger Vogt 5ee6a98e4b Add a comment 2020-12-22 17:56:18 +01:00
Holger Vogt 043634b60e Jump over the HSPICE-specific key words 2020-12-22 17:56:18 +01:00
Holger Vogt 8c253524af With the new inp_deckcopy_ln treat the first line
in the deck equal to all other lines.
2020-12-22 17:56:18 +01:00
Holger Vogt 8b376b4581 Remove dot lines somewhat later. 2020-12-22 17:56:18 +01:00
Holger Vogt 777cfcf477 Reduce the memory requirements if there is a PDK with
a lot of binning models.
This is a hack and needs testing!
inpcom.c: If an x line, add w and l to the netlist card,
if available.
subckt.c: select a suitable model bin, discard the rest
for each subcircuit, depending on w and l from above.
inpgmod.c: less restrictive equal for real numbers,
allow both min and max boundaries (problem of equating
real numbers), when the selected device has w or l on
the boundary between two model bins.
2020-12-22 17:56:18 +01:00
Holger Vogt 79d6f27d74 fix a typo 2020-12-22 17:56:18 +01:00
Holger Vogt 9072f40b9a bug 535: re-enale tc1, tc2 even if tokens tc1 or tc2
may be part of other tokens as well.
2020-12-22 17:56:18 +01:00
Holger Vogt aee35e6ef3 No brackets around instance parameters dtemp, temp 2020-12-22 17:56:18 +01:00
Holger Vogt fe24a4135c spice2g6 poly(19 compat:
When counting token, count an expression {...} for the
gain as a single token, even if it contains spaces.
2020-12-22 17:56:18 +01:00
Holger Vogt c43c6f6ca4 improve comment 2020-12-22 17:56:18 +01:00
Holger Vogt d24aa7134c E_constant Vconst 0 TABLE {Max(V(DP)-V(GN),0)}=((20,120))
Allow such strange construct, where a single pair x,y will
simplay return a constant y (120 in the above example).
This is used in external devices models and aknowledged
by other simulators.
2020-12-22 17:56:18 +01:00
Holger Vogt 025a9fe599 Partially undo commit [ab778d] :
revert to aswitch as vswitch replacement
2020-12-22 17:56:18 +01:00
Holger Vogt 87751ad073 Make the ngSpice_Circ(char** circa) more robust:
Error message when .end card is missing
Reset if .end card is missing, to allow loading
a netlist again.
NULL as last element is no longer required, but .end card
(this has been implicitedly assumed).
Remove a bug that skippoed the last line (the .end card).
2020-12-22 17:56:18 +01:00
Holger Vogt 2d34cbddf8 re-write and simplify the tc1, tc2 code for behavioral
R, L, C lines invoking the B source.
Enable parameterization of the TCs.
Create a tc string in an extra function, add this string
to the new R, L, C line.
2020-12-22 17:56:18 +01:00
Holger Vogt 1ef4115578 In a command 'meas tran teval when v(2)=1' the rhs
should be treated as a number '1', not as a vector v(1)
2020-12-22 17:56:18 +01:00
Holger Vogt 6055fda73d spaces 2020-12-22 17:56:18 +01:00
Holger Vogt 5c4af54be1 Windows.h -> windows.h 2020-12-22 17:56:18 +01:00
Holger Vogt 44b8498d63 prevent a crash when e,g,f,h sources do not have enough paramaters. 2020-12-22 17:56:18 +01:00
Holger Vogt d0a8e6ac51 update to the limit function for ps compatibility.
The output will stay between the two limits given.
Tere is no prescription which of the two is upper
or lower.
This function will not solve all PS-Spice
compatible model convergence issues. We better look
for a built-in function with smooth, steadily
differentiable corners.
2020-12-22 17:56:18 +01:00
Vogt bb8cdb2e2d enable the use of either single or double quotes
for file path names (was mixed up, becaus isquote()
aknowledges both types).
2020-12-22 17:56:18 +01:00
dwarning 03cd512e7f separate and correct capacitor charge formula transformation 2020-12-22 17:56:18 +01:00
Holger Vogt 95754d29c1 Introduce variacle 'plainlet' which allow simple copying
of vectors, even if the right hand side vector name
contain forbidden characters (like math characters).

set plainlet
let newvec = v(/out)
unset plainlet
2020-12-22 17:56:18 +01:00
dwarning 450ec47a3e rm unused quote.h in vngspice_fftw 2020-12-22 17:56:18 +01:00
Holger Vogt aa0d0abe34 Fix a bug in the limit() function (PSPICE compat mode) 2020-12-22 11:11:59 +01:00
Holger Vogt 9276f9fb0e Use the pwl LIMIT=TRUE flag when replacing
G1 2 3 TABLE ... or E2 4 5 TABLE ... by code model pwl
2020-12-22 11:11:23 +01:00
Holger Vogt d06ff2abab New variable 'plainwrite' added. Allows 'write' with node names
containing characters like + - /. Function are the disabled.
This replaces the automatic selection of this mode by compat flags,
which is not transparent enough to the user.
2020-12-22 11:09:40 +01:00
Holger Vogt 36e2a9af4d Add variable 'plainplot' to allow plotting without
function support, but with node names incl chatacters like + - /.
Flag to command 'plot' is renamed to plainplot.
Error message added if vector not found.
Example file added.
2020-12-22 11:09:27 +01:00
Holger Vogt b76ac6be1c Add writing all vectors if compat mode eg or ki is selected. 2020-12-22 11:09:09 +01:00
Holger Vogt f0090508b0 If new parameter 'plain' is added to the 'plot' command,
all expression handling is skipped, vectors are plotting as is.
This allows nodes names with vectors like v(+vs) or /out
to be plotted without need resorting to double quotes.
2020-12-22 11:08:57 +01:00
Holger Vogt 84d3d8c143 Don't add v(...) around output vector if compat mode 'eg' is set. 2020-12-22 11:08:22 +01:00
Holger Vogt c90230b43f If the compatibility flags ki or eg are set, the 'write' command
will not use function parsing and evaluation, but simply plot
the listed vectors. vec1 vs vec2 is also not supported.
This option is useful if node names vs+ or /mynode are used and
have to be written into a raw file, as may be used by KiCad or EAGLE.
2020-12-22 11:08:03 +01:00
Holger Vogt 19a688513c add compatibility mode eg for EAGLE
clarify mode a for 'whole netlist' and ll for 'all'
2020-12-22 11:07:31 +01:00
Holger Vogt dd86bdee46 Enlarge the buffer size for command 'listing' from 512 to 4096 bytes. 2020-12-22 11:07:14 +01:00
Holger Vogt 3e98cecd56 enable paths with spaces for finding 'spinit' 2020-12-22 11:07:02 +01:00
Holger Vogt c67da190ef If function 'db' is evaluated, set
v_type to SV_DB.
2020-12-22 11:05:33 +01:00
Holger Vogt 97db844944 Prevent raw file entries (by the 'write' command) like
6	i(i(v_vsupply2))	current
2020-12-22 11:05:21 +01:00
Holger Vogt f49922c1f1 If a new vector is created by the functions cph or ph,
its type should be 'phase', not voltage. Thus prevent
raw file entries (created by the 'write' command like
	4	v(cph(vout2))	voltage
2020-12-22 11:05:10 +01:00
dwarning f12dfc6e7b prevent garbage output of X11 plotting function 2020-12-22 11:04:24 +01:00
Holger Vogt 7360d8aa66 Fix a typo 2020-12-22 11:03:44 +01:00
Holger Vogt 4796face12 Make message more verbose by printing the scale value 2020-12-22 11:03:22 +01:00
Holger Vogt 28861739f8 allow writing character '%' 2020-10-16 18:12:31 +02:00
Holger Vogt af99beb6a2 Allow simple copying from start time to end time 2020-10-15 17:45:08 +02:00
Holger Vogt 013c74918f Command 'cutout': Don't add the scale vector to nv->v_scale.
So the new plot with its vectors copied resembles the old plot.
2020-10-15 17:44:30 +02:00
Holger Vogt a836f81d62 This is a quick fix to the Windows printing function.
Tested with pdf and a color laser printer.
Still some bugs: the grid needs to be fixed.
2020-10-15 17:41:58 +02:00
Holger Vogt 51df9aaa55 remove non ascii character §, which leads to compiler warnings 2020-10-11 21:12:29 +02:00
Holger Vogt fdc143ce16 Add a limit capability to the code model aswitch
Example switch-oscillators_inc.cir showed currents up to 3GA
2020-10-10 13:53:36 +02:00
Holger Vogt 4bcacb310d enable XSPICE %vnam in subcircuits.
The token following after %vnam has to be
tranlated as an instance during subcircuit expansion.
2020-10-10 13:53:10 +02:00
Holger Vogt 14ef4e74ec Add PSPICE compatible ISWITCH
Translates iswitch either to csw or to aswitch models
2020-10-10 13:53:02 +02:00
Holger Vogt 2f1d3df8c7 add a Spectre compatibility mode 2020-10-10 12:19:49 +02:00
Holger Vogt 990d87bf1c replace gettok by gettok_node to ignore parentheses when reading
a .model line in the altermod ... file ... command.
2020-10-10 12:19:32 +02:00
Holger Vogt b0a790a463 proper size_t to int conversion 2020-10-10 12:12:59 +02:00
Holger Vogt 8ea8ddcc03 simplify the previous commit, single step warp if multibyte utf-8 character 2020-10-10 12:12:37 +02:00
Holger Vogt f911758e4b X11: re-enable writing text to a graph if libxft is used 2020-10-10 12:12:21 +02:00
Holger Vogt 445c6f2d32 fix a bug that occurs when xspice is not selected
missing function parameter has been introduced in previous commit
2020-10-10 12:11:41 +02:00
Holger Vogt 602baf68e6 spice2g6 allows to omit the poly(n) statement, if the
polynomial is one-dimensional (n==1).
For compatibility with the XSPIXE code, we have to add
poly(1) appropriately.
2020-10-10 12:11:14 +02:00
Holger Vogt 60dfe836f4 If ps is enabled, .dc TEMP -15 75 5 will have been
modified to .dc (TEMPER) -15 75 5.
So we repair it here with a preliminary fix.
2020-10-10 12:10:43 +02:00
Holger Vogt ca27319213 no forcing lower-case letters for command 'cd' 2020-10-10 12:09:25 +02:00
Holger Vogt a0389bb547 In PS compatibility mode:
In subcircuit .subckt and X lines with 'params:' statement
replace comma separator by space. Do nothing if comma is inside of {}.
2020-08-20 15:49:32 +02:00
Holger Vogt 26a4a32b8b avoid some compiler warnings 'referencing a NULL pointer' 2020-08-20 15:49:05 +02:00
Holger Vogt 458411b2e1 more precise freeing the wordlist, depending on exit point 2020-08-20 15:48:45 +02:00
Holger Vogt e3aad7849c remove vceo= and icrating= from bjt model cards 2020-08-20 15:47:49 +02:00
Holger Vogt 23ceaabf83 fix a memory leak
Reported in bug report 504 by Ferdy
2020-08-20 15:41:39 +02:00
Holger Vogt a04c909a23 Don't add copied scale vector as new vector, but as new scale vector,
thus preventing crash after pushing X11 'Hardcopy' twice or
pushing 'quit' after 'Hardcopy'.
Scale vector was deleted two times, then crashimg ngsoice.
2020-08-20 15:41:15 +02:00
Holger Vogt c68940712d prevent writing beyond end of buffer 2020-08-20 15:39:55 +02:00
Holger Vogt ebb1e953fe Streamline the compatibility flag generation 2020-08-20 15:39:19 +02:00
Holger Vogt f03a32287f If 'set ngbehavior=ki' in .spiceinit or flag 'kicad' on the plot line:
Add " around vector names containing character /
Numerical ivision in plot line then requires spaces around /
2020-08-20 15:39:00 +02:00
Holger Vogt c112279555 new compatibility handling with struct compat newcompat:
simplify the compatibility handling, better readability
make it easily extendable
add new flag 'ki' for KiCad compatibility
2020-08-20 15:38:43 +02:00
Holger Vogt 0caeaccdd3 fix typo 2020-08-20 15:38:18 +02:00
caand 6907d17985 add missing get_sysmem() when no info available 2020-08-20 15:29:49 +02:00
Holger Vogt a406af26d6 bug fix 'extern int sh_vecinit()', not void
See patch #96, thanks to Balazs Kovacs
2020-08-20 15:29:42 +02:00
Holger Vogt c8c58b9f5b Print out the netlist sent to ngspice by caller via 'circbyline'
or ngSpice_Circ
2020-08-20 15:29:12 +02:00
Holger Vogt 71e65b75b0 Syntax check: If the first character in a netlist
or .control line is one of =[]?()&%$§\"!:, then ngspice
replaces it by '*' and issues a warning.
'set strict_errorhandling' will force ngspice existing.
2020-08-20 15:28:59 +02:00
Holger Vogt fe28feae4e Cut out part of each vector of the current tran plot,
from times cut-tstart to cut-tstop and copy these
into a new tran plot. A new scale vector 'time' will be
generated as well. Vectors that are shorter than the
new scale vector will not be copied.
2020-08-20 15:28:48 +02:00
Holger Vogt 71338c3271 replace 'noiseless' only if it is an unconnected token 2020-08-20 15:28:32 +02:00
Holger Vogt ba1945d685 enable flags xdelta, ydelta for gnuplot command 2020-08-20 15:27:46 +02:00
Holger Vogt 2c0729e8de Print also the bool value 'off'.
Do not abort ngspice when vector LIST cannot be printed,
just skip printing and continue.
2020-08-20 15:26:38 +02:00