Commit Graph

3452 Commits

Author SHA1 Message Date
Holger Vogt 696736b2b3 adding expressions in {} as pwl parameters
not complete, still requires caring about the FIXME above.
2022-04-25 21:28:52 +02:00
Holger Vogt 242a1d796a Remove the "type" declaration from a .model line 2022-04-25 21:28:32 +02:00
Holger Vogt 36868e0b0f Use #ifdef XSPICE to exclude findvec_alle() if
XSPICE is not selected.
2022-04-25 21:28:03 +02:00
Holger Vogt ed2d48756c exclude 'type=xxx' from model declaration 2022-04-25 21:27:53 +02:00
Holger Vogt f21255ef1b Fix regression bug #579
Accept numbers to ac statement in voltage (current) sources
also given as parameters.
2022-02-22 20:39:20 +01:00
Holger Vogt 20d5919e59 Terminal setting to X11 fails in macOS, and is not required
on Linux.
Setting terminal here is redundant, so remove this setting.
2022-02-22 15:22:21 +01:00
Holger Vogt 12a93c9fe6 Update to plotting of event nodes:
Distance is now 1.5, scaling and cutouts are possible
(with some lack of precision).

Still missing: y axis labeling (no numbers, but node names).
2022-02-21 20:19:56 +01:00
Holger Vogt 342a16d6e1 Add a flag 'alle' (all event nodes) to the plot command (and maybe others).
All event nodes with length greater than 1 are translated to vectors
with a common scale (named step) and are assembled in a new plot
named 'digital'. They may be plotted or otherwise used in a
.control section.
2022-02-21 20:16:20 +01:00
Holger Vogt 0557bc60bf Prevent crash if nsp is evaluated to 0 2022-02-21 16:56:16 +01:00
Holger Vogt 917dab9da7 new flag 'digitop' for the 'plot' command:
Plot digital (event nodes) vertically, separated by 0.1
The grid is adapted acordingly.
set xbrushwidth=3 will yield good results.
2022-02-19 17:25:57 +01:00
Alessio Cacciatori 2c10c4aebd S parameter simulation
Command '.sp'
arbitrary number of ports
ports made with modified VSRC

Patch provided by Alessio Cacciatori
https://sourceforge.net/p/ngspice/discussion/127605/thread/7a2655c86f/
2022-02-17 15:48:00 +01:00
Brian Taylor b774d03162 Change the y-axis direction for a 2d Cider gnuplot. The device surface is at the top and downwards is into the material, which is the normal presentation. Note that the x/y mesh commands in a Cider model also affect the orientation. 2022-02-17 15:45:28 +01:00
Holger Vogt 62f326b9d0 Fix a bug from previous commit: min -> MIN 2022-02-07 22:39:27 +01:00
Holger Vogt 0eb272243f Enable RKM notation also for inductors (e.g. 1u2 for 1.2u) 2022-02-07 16:00:29 +01:00
Holger Vogt 640fa7e17b bug 578 crash when scale is too short
Warning message if scale and vector length do not match.
Restrict number of points plotted to the smaller of both.
2022-02-07 15:59:43 +01:00
Holger Vogt 4f82a24df2 Add parameter 'isgrid' to plotting of arcs.
Smithgrid and polar plots could not discern between xgridwidth and
xbrushwidth. This is now available, similar to straight line plotting.
Tested also for PS and SVG.
2022-02-01 12:23:29 +01:00
Giles Atkinson 6494befb2f Request backing store for X11 plot windows. When supported by the X server
windows are redrawn vey quickly without replotting.
2022-01-28 12:24:58 +01:00
Giles Atkinson f4285384e7 Add code in graf.c to merge connected lines with the same slope before
plotting.  This speeds output and reduces file size when the vector
length is much larger than the number of pixels.  It should help with
Feature Request #58:
  "Graph plotting under windows redraw very slow and hard to work with",
but is not a full fix.
2022-01-28 12:24:51 +01:00
Holger Vogt ce9bc9fc64 The re-painting due to mouse-click under MS Windows is caused by line 561
of windisp.c. Upon left mouse button up the plot recangle is invalidated,
and a WM_PAINT message is generated (same on line 614 for right mouse
button up). If not re-pained, artifacts may be left on the canvas after
collecting coordinate data.

Shifting the command InvalidateRect to a place where it becomes active
only after the mouse has been moved, does the trick. Simple clicking
(right or left) will not cause a re-paint any more.
2022-01-28 12:11:39 +01:00
Kevin Zheng 857fbec985 Improve iteration limit options display 2022-01-17 12:06:35 +01:00
Holger Vogt ced2128f58 .measure results from batch mode may be saved in a file
(in addition to the printout)
Add command
set measoutfile=<path/filename>
to .spiceinit or to a .control section in the netlist
2022-01-15 23:28:06 +01:00
Holger Vogt 4ee0586cee Enable output redirection for meas command
replace printf("... by fprintf(mout, "...
mout is routinely set to cp_out, which then allows redirection by > and >>
2022-01-15 16:02:20 +01:00
Holger Vogt 018713cc43 Bug 572 Error message 'function 'xyz' currently not supported' was buggy.
xyz had not been set.
Copy function name to the heap and free accordingly.
2022-01-15 14:43:44 +01:00
Holger Vogt 632f8c033d Make numoparam error messages more user friendly.
Add line number of netlist to the message.

Original line number added to new lines in inpcom.c.
Internal error messages only when 'ngdebug' is set
2022-01-15 13:43:26 +01:00
Holger Vogt 1558c5abcb Add a suitable error message and fallback to default temperature
if an error in the temperature entry is found.
2022-01-13 14:48:35 +01:00
Holger Vogt 5a065c1657 Originally only '.temp 125' had been accepted.
There has not been any error message if '=' was used,
the temperature just had been set to 0°C.
Now also '.temp=125' or .temp='param' are accepted.
2022-01-13 10:06:27 +01:00
Giles Atkinson 23e9df0181 Fix for ticket #570: Interactive prompting is always active.
Control prompting with variable "interactive" and stop setting it by default.
Add code in main.c to set it for an interactve session.
2022-01-12 15:22:19 +01:00
Holger Vogt c4e94cd59b safeguard against a crash when the s line is buggy 2022-01-12 15:16:06 +01:00
Holger Vogt f0e9a35eb6 Add 'esave' command to save only specific event nodes.
Add a prompt for esave/eprint/eprvcd.
2022-01-09 10:58:38 +01:00
Carsten Schoenert 486dd587d0 spelling: Fix misspelled word Instnace 2022-01-02 13:51:44 +01:00
Holger Vogt 1a6a9e6bb6 Add com_wr_ic.h to their makefile.am
to have them as part of make dist.
2021-12-30 15:23:22 +01:00
Holger Vogt a8d8600faa plug a memory leak 2021-12-23 14:37:57 +01:00
Holger Vogt 4f73c27d86 Memory access error: don't free GENinst->GENname.
Use memcpy to overwrite old name by a (shorter) new name.
Compiler warnings are thus removed.
2021-12-16 08:04:54 +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
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 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 3f3936c728 Remove memory leaks 2021-12-13 21:34:07 +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
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 7ce476c0ad Make optran standrad by calling com_optran during ngspice initialization. 2021-10-29 16:38:27 +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 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 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 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 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
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
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 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 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 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 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 ab6224767b Add command 'optran' to set 6 flags for transient op 2021-09-29 20:01:44 +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 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 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 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 d34d1e7c7c Get immediate response into text window,
when requesting information on coordinates.
2021-07-07 19:50:50 +02:00