Brian Taylor
499bef097e
Better estimates of rise/fall delays in PINDLYs with outputs separated by CASE.
2022-12-11 15:17:51 +01:00
Brian Taylor
a01edf2f36
Fix visualc compiler warnings.
2022-12-11 15:17:33 +01:00
Brian Taylor
22a3af8a1e
Improve delay estimates for pindly output buffers.
2022-12-11 15:17:17 +01:00
Brian Taylor
64c2c1ee05
Initial handling of PINDLY. Output buffers without rise/fall delay estimates.
2022-12-11 15:16:57 +01:00
Brian Taylor
62aab3885d
Move f_logicexp, f_pindly calls to u_process_instance. Use u_add_instance to copy gate instances and models to the replacement cards.
2022-12-11 15:16:37 +01:00
Brian Taylor
7c699a599f
Fix potential memory leak.
2022-12-11 15:16:20 +01:00
Brian Taylor
a54aa4d1f7
Initial logicexp parser and gate generator.
2022-12-11 15:16:02 +01:00
Brian Taylor
4a904cdf18
Add drive 0/1 for $d_lo/$d_hi.
2022-12-11 15:15:44 +01:00
Holger Vogt
4b15632f9b
Function ngSpice_Circ() may receive empty lines.
...
Skip these lines while setting the netlist.
2022-10-26 22:24:52 +02:00
Holger Vogt
97ee2d8047
Fix typo
2022-10-26 17:48:34 +02:00
Holger Vogt
a6c28e44ff
Add info on shared library
2022-10-24 17:04:45 +02:00
Giles Atkinson
9801d06795
Fix XSPICE's node prefix '~' when PSPICE compatability is used.
2022-10-14 13:52:17 +02:00
Holger Vogt
933b1fdb2b
Add some comment
2022-10-14 13:50:20 +02:00
Brian Taylor
150839dd1a
Remove VisualC compile warnings.
2022-10-09 10:21:51 +02:00
Holger Vogt
2547115eeb
Prevent Visual Studio compiler warnings
2022-10-09 10:21:06 +02:00
Holger Vogt
ffc09208bf
send error message to stderr, not to stdout
2022-10-08 16:51:02 +02:00
Holger Vogt
7bb581b1b3
Remove parameter noiseless in simple diode model.
...
The model is noiseless anyway.
2022-10-08 16:50:26 +02:00
Brian Taylor
266d944745
Remove unnecessary hierarchical level check.
2022-10-08 16:50:15 +02:00
Brian Taylor
bd00738a49
Fix memory leaks in ff/latch code.
2022-10-08 16:50:03 +02:00
Brian Taylor
e2652d813d
If ps_udevice_msgs >= 2, print complete line of unsupported PSpice instance. For debugging purposes.
2022-10-08 16:49:38 +02:00
Giles Atkinson
c704854b3c
Fix bug reported by Anant Devi in user discussion 22/9/22.
...
A function call, vi(v) was misparsed as the special token i(vsource)
for the current in a voltage source.
2022-10-08 16:49:02 +02:00
Giles Atkinson
8cc9d8522f
Fix bug #602 "Warning message trying to linearize a transient analysis vector"
...
by changing the way "ngspice -a" (autorun option) works. The inserted code
now checks whether a simulation has already run by examining $curplot
before forcing "run". Also at most one simulation is forced to run.
2022-10-08 16:47:30 +02:00
Holger Vogt
56d07aab31
Transfer i(xx) to xxx#branch only when i is the first
...
character of the token or preceeded by a space.
2022-10-08 16:46:51 +02:00
Holger Vogt
92ba8ac88e
Just to notify that this might need a better solution
2022-10-08 16:46:18 +02:00
Holger Vogt
f832380dc9
FIXME: This is a hack to re-enable 'make check'
...
Do not print warning if in batch mode.
2022-10-08 16:46:01 +02:00
Holger Vogt
6037450952
Warning message, when 'run' is called without job
...
(tran, op, ac etc.) is defined.
2022-10-08 16:44:48 +02:00
Holger Vogt
3af627db44
Change error messages to warning messages, because simulator moves on
...
and command is ignored.
Make messages more verbose (which command?).
2022-10-08 16:44:30 +02:00
Holger Vogt
1bcbe8e6d8
Don't send error message to stdout, but to stderr.
2022-10-08 16:44:01 +02:00
Brian Taylor
e703bd9142
Add comment about ps_udevice_msgs variable. Set to 1 will print PSpice instance names and types which are not supported and are found when processing a subckt.
2022-10-07 13:48:37 +02:00
Brian Taylor
e9855be595
If variable ps_port_directions >= 2, also show the translated Xspice statements.
2022-10-07 13:48:05 +02:00
Holger Vogt
0754ea7657
Make the Error message a Warning message,
...
because ngspice may move on
2022-10-07 13:38:20 +02:00
Holger Vogt
43c5ffaae8
Add special savecurrents options:
...
options savecurrents_bsim3, savecurrents_bsim4, and savecurrents_mos1
will save all device currents as listed in chapts 31.6.1, .8 and .9
of the ngspice manual. Pure savecurrents will yield a subset of MOS1
currents, as seen before.
2022-10-07 13:24:12 +02:00
Holger Vogt
2126230b64
Prevent crashes when nodes or tables are not available,
...
e.g. due to missing input file.
2022-10-07 13:22:59 +02:00
Holger Vogt
037293c81e
Improved error message: more info on the bad set form
2022-10-07 13:22:43 +02:00
Giles Atkinson
b1341c8e30
Insert XSPICE bridging devices automatically when an analogue node
...
has the same name as an XSPICE event node (including digital nodes).
The function Evtcheck_nodes() is replaced by a new version in its
own file.
2022-10-07 13:19:59 +02:00
Holger Vogt
d39c60542d
Enable power measurement for W switch
2022-10-07 13:18:51 +02:00
Holger Vogt
79bb8edc90
Allow individual current measurements in switches or
...
linear dependent sources.
2022-10-07 13:18:15 +02:00
Holger Vogt
7e610c8487
.probe alli improved:
...
* Enable current mesurement for I source
* Look at only the first 2 nodes of S and W switches
and F and G controlled current sources, measure current
with = voltage source added to second node. So we get
I(Fx), I(Gx), I(Sx), and I(Wx).
2022-10-07 13:17:30 +02:00
Giles Atkinson
04445e42ea
Make FROM/TO work in TRIG/TARG and WHEN variants of .meas/meas command.
...
Discussion at
https://sourceforge.net/p/ngspice/discussion/133842/thread/973e152274/
2022-10-07 13:16:28 +02:00
Holger Vogt
a1dd1f5563
Check for tran at first when linearize is called.
2022-10-07 13:16:03 +02:00
Brian Taylor
3ca91aa1ac
Make a trivial change to support (n)and3a, (n)or3a, (n)xor3a types. These are not used in any of the Micro Cap libraries. Completes support for Pspice tristate gate types.
2022-10-07 13:15:45 +02:00
Brian Taylor
abd4af1ae6
Ignore IO models in a subckt. Setting variable ps_port_directions to a non-zero int prints the directions (IN, OUT, INOUT) of subckt ports.
2022-10-07 13:14:58 +02:00
Brian Taylor
2d9f86c742
Check for name collisions between nodes generated during translation from Pspice to Xspice and instance pin or subckt port names. These are reported as ERRRORs.
2022-10-07 13:14:35 +02:00
Holger Vogt
b94ef139dd
Avoid an endless loop: Safeguard function
...
search_plain_identifier(char *str, const char *identifier)
against identifiers being an empty string.
2022-10-07 13:12:30 +02:00
Holger Vogt
5b0b328186
If a node name to be plotted ends by ':power', its type is set to POWER.
...
Thus 'settype power nodename(s)' in the examples is no longer necessary.
2022-10-07 13:12:04 +02:00
Holger Vogt
fc0bf595f2
Update to .probe command:
...
If no .save or save command given by the user, add '.save all' internally.
To do so, check for .save or save.
Update to the .probe p command (power measurement)
Add probe_int_ to internal nodes and instance names, where appropriate.
These nodes will be disregarded when setting up the plot structure.
2022-10-07 13:11:42 +02:00
Holger Vogt
3da97fa277
Handle .if ... .else ... .endif before .csparam is executed,
...
thus allowing parameter entry to .control section being dependent
on .if
2022-10-07 13:10:31 +02:00
Holger Vogt
0e885bc3a9
Function guess_type may yield the wrong type, because
...
it does not cover all of the the many, many options possible.
This commit fixes bug597, where [current] was interpreted as
capacitance.
2022-10-07 13:06:29 +02:00
Holger Vogt
7f65a68ad6
Improve (a little) the plotting of digital data with plot option digiplot:
...
Repair scaling on MS Windows:
Suppress y axis lettering and unit:
Allow or dis-allow grid.
2022-10-07 13:05:56 +02:00
Holger Vogt
8a097c020e
Make error message more verbose: Instead of only "no such parameter on this device",
...
give name of bad parameter and respective line in netlist.
2022-10-07 13:05:10 +02:00
Holger Vogt
73ee9e452d
Prevent crash when ca or d are not defined. May happen when
...
.endc is missing.
2022-10-07 13:04:50 +02:00
Holger Vogt
9e1eac0613
Correct comment: Command circbyline is not involved,
...
we are sending the netlist as an array.
2022-10-07 13:03:18 +02:00
Holger Vogt
a597c6a295
Suppress I/O redirection for command 'circbyline'.
...
This enables sending commands like
circbyline btest testnode 0 v=((v(in1) - v(in2)) < 0.1 ? 0.111 : v(in1))
2022-10-07 13:02:39 +02:00
Holger Vogt
c26e4c990a
Move evaluation of statistical functions inside of a B source
...
to after numparam expansion, thus allow parameters in functions agauss etc.
Replace gettok by new gettok_np to ignore characters ( ) ,
which may be left over after parameter expansion.
This fixes bug 593.
2022-10-07 13:01:33 +02:00
Holger Vogt
ab6e273a5e
Remove inner couple {...} from {{...}} only when instance is not
...
a behavioral source which will be translated to a B source.
2022-10-07 13:01:07 +02:00
Brian Taylor
b6db33f472
There needs to be 2 variants of d0_gff. One for d_dlatch, the other for d_srlatch.
2022-10-07 12:56:37 +02:00
Brian Taylor
a8f103eebc
Clean out dead code in model processing.
2022-10-07 12:56:14 +02:00
Brian Taylor
1a00a30f18
Add support for srff.
2022-10-07 12:55:59 +02:00
Brian Taylor
7f38ce4ebb
Remove debug code.
2022-10-07 12:55:42 +02:00
Brian Taylor
648218d5a8
Remove invalid check.
2022-10-07 12:55:25 +02:00
Brian Taylor
6a067378cb
Add optional debug code to check for name collisions. Connector nodes between gates now have a con_ prefix.
2022-10-07 12:55:06 +02:00
Brian Taylor
5b3862ebc7
Prevent multiple d_zero_inv99 models per subckt.
2022-10-07 12:54:54 +02:00
Brian Taylor
9361e9ae6c
Follow convention, use eq() macro. Show replacement cards when ngdebug=TRUE.
2022-10-07 12:54:32 +02:00
Brian Taylor
e38e1099b5
Create pin and port lists only when variable ps_pins_and_ports is set != 0.
2022-10-07 12:54:17 +02:00
Brian Taylor
ac9559db76
Remove optional:, params:, text: before generating a ports list.
2022-10-07 12:54:03 +02:00
Brian Taylor
528c50dc46
Retain the param: section after removing the optional: section from a Pspice subckt declaration.
2022-10-07 12:53:41 +02:00
Brian Taylor
5a50868264
Add more comments. Move incompatible input name checks to add_..._inout_timing_model() functions for dff, jkff, dltch.
2022-10-07 12:53:22 +02:00
Brian Taylor
e8dfd16cb2
Add counter test. Check for usage of $d_lo, $d_hi, $d_nc usage with dff, jkff, dltch which will not translate to Xspice.
2022-10-07 12:52:39 +02:00
Brian Taylor
ecf4ea8978
Get rid of -Wpedantic warnings.
2022-10-07 12:52:04 +02:00
Brian Taylor
4ce9add137
Remove debugging asserts.
2022-10-07 12:51:51 +02:00
Brian Taylor
bc8d67d5fa
Generate lists of subckt ports indicating direction (in, out, inout.)
2022-10-07 12:51:33 +02:00
Brian Taylor
1fb533a3d4
Stopped memory leak in continuation cards when removing old cards.
2022-10-07 12:51:18 +02:00
Brian Taylor
89c698d4ea
Slight cleanup. Some work ensuring that generated names do not collide may be necessary.
2022-10-07 12:51:03 +02:00
Brian Taylor
219ca23635
For debug tracing, list the cards before and after udevice replacements.
2022-10-07 12:50:51 +02:00
Brian Taylor
18e17cefdf
Add pullup/down. Skip spurious '*' line.
2022-10-07 12:50:30 +02:00
Brian Taylor
813c73966d
Add support for oa/oai compound gates.
2022-10-07 12:50:10 +02:00
Brian Taylor
7b5c780043
Fix a memory leak. Cleanup the code a bit. All-digital Pspice subckts with U* devices for most used gates/ff can be handled. More extensive test cases are necessary. Also, interfacing subckts with analog ports is not implemented.
2022-10-07 12:49:46 +02:00
Brian Taylor
96a1b528fd
Replace Pspice U* and .model cards with their Xspice equivalent statements. There are still memory leaks which will be plugged next. The .subckts have only digital ports, which will need to addressed for mixed A/D designs.
2022-10-07 12:49:29 +02:00
Brian Taylor
2c3c632349
Add translation of ao/aoi compound gates.
2022-10-07 12:49:06 +02:00
Brian Taylor
a2fd346b1a
Trial run at scanning cards for Pspice U* devices and models. #define INTEGRATE_UDEVICES to turn it on. No new cards are created yet, just lots of debugging info.
2022-10-07 12:48:51 +02:00
Brian Taylor
9bbcf20584
Add brief usage notes and makefile. asserts will need to be removed after integration is complete.
2022-10-07 12:48:36 +02:00
Brian Taylor
b367434c78
Add default zero delay models d0_gate, d0_eff, d0_gff, d0_tgate. Use tprintf.
2022-10-07 12:48:21 +02:00
Brian Taylor
620c15a981
Initial files for translating Pspice u.. instances and timing models into Xspice equivalents. Standard gates, tristate gates, dff, jkff, dlatch are supported. Compound gates and pullup/down are not done. Makefile and frontend/inpcom.c changes have not been finished. These modifications will be needed to complete integration.
2022-10-07 12:47:59 +02:00
Holger Vogt
360b7dc7ed
Make warning message on missing init file more verbose.
2022-10-07 12:38:38 +02:00
Holger Vogt
f1d944e4c4
remove typo
2022-10-07 12:38:02 +02:00
Holger Vogt
f698ce6281
Write out the current in the old fashion
...
1 v1#branch current
when keep#branch is set in .spiceinit.
To make the raw file compatible with ICCAP.
2022-10-07 11:39:18 +02:00
Holger Vogt
c76efd47ed
If the 'source' command fails, fall back to the input
...
only if in interactive mode. Otherwise exit.
2022-10-07 11:36:07 +02:00
Holger Vogt
1e304c6e53
Prevent a crash when line is empty
2022-10-07 11:34:39 +02:00
Holger Vogt
e460b18f97
Allow 'nulltype', which returns NULL pointer.
...
Thus prevent a crash in cieq.
2022-10-07 11:34:25 +02:00
Holger Vogt
fc83328952
Rename the internal circuit nodes generated by .probe
...
to probe_int_xxx to make it probe specific.
Don't save these nodes.
2022-10-07 11:34:04 +02:00
Holger Vogt
9619b52180
Don't save the internal device node collCX, added
...
for a new quasi-saturation model of bjt
2022-10-07 11:33:46 +02:00
Holger Vogt
d93295136b
When plotting the phase, standard now is "Radiant".
...
Only with 'set units=degrees" we plot with unit Degree.
2022-10-07 11:33:24 +02:00
Holger Vogt
eb79e91175
This is a fix to bug report 589 by Bohdan Tkhir:
...
Remove only mfg=something, icrating=, vceo=, type=,
not any combination of text like net_type=... .
Restrict this removal to compatibility modes ps or lt.
2022-10-07 11:32:56 +02:00
Holger Vogt
a2beac6741
not only de-allocate the vector, but also remove it from the list.
...
This is to prevent a crash when after simulating with a buggy input like:
save all @q1[nonesense] (non-existing parameter) a command 'print all'
is given.
2022-10-07 11:32:30 +02:00
Giles Atkinson
aaa6798950
Fix bugs found while investigating Bug #585 (convergence failure only
...
on Linux). In dctran.c make it impossible for a transient simulation
to run far past its end time and fix an infinite loop attempting to remove
the automatically-inserted ending breakpoint. In outitf.c fix memory
corruption if the simulation does over-run (change suggested by Holger Vogt).
2022-10-07 11:32:02 +02:00
Holger Vogt
838ad2b10c
Add multiplier flag 'm' to behavioral capacitor and inductor
2022-10-07 11:30:25 +02:00
Holger Vogt
7e8e9ef001
Update copyright info to 2022
2022-05-14 16:32:01 +02:00
Giles Atkinson
40c2419a43
Two memory leaks found interactively with valgrind with safe fixes.
2022-05-10 15:30:08 +02:00
Giles Atkinson
7511bef7d4
Fix memory leak found by valgrind/paranoia.
2022-05-10 15:29:59 +02:00
Giles Atkinson
8c7b7789d9
Suppress warning from gcc 10.2.1.
2022-05-10 15:29:43 +02:00
Giles Atkinson
88481d4bfb
Further change for #578 "Crash while plotting single complex vector".
...
Move the check on vector lengths to ensure all cases are covered.
2022-05-09 10:07:33 +02:00
Giles Atkinson
dc978a4193
Suppress warnings from function pointer casts seen with gcc 10.2.1.
2022-05-01 10:29:43 +02:00
Holger Vogt
d805674a94
Set {} to remove compiler warning (VS)
2022-05-01 10:28:51 +02:00
Holger Vogt
764a651b73
Add a note that wrs2p currently is limited to two ports only.
2022-04-29 07:29:24 +02:00
Holger Vogt
129893b399
S-parameters: Replace S11 by S_1_1 etc. to avoid ambiguity
...
when more than 10 ports are measured.
Update to S-parameter script and command wr2sp
2022-04-29 07:29:14 +02:00
Holger Vogt
67726f7f8b
Add new flags to command devhelp:
...
-type (show parameter types)
-flags (show parameter flags)
Patches provided by Mikolaj Wielgus
2022-04-28 09:29:02 +02:00
Giles Atkinson
41e48b954d
Rename a variable so that it does not clash with one in outer scope.
2022-04-26 10:37:28 +02:00
Holger Vogt
b6abcb0436
Searching for params: as plain identifier
2022-04-26 10:37:19 +02:00
Holger Vogt
6153f2c887
Remove the special handling of X... device names.
...
Subcircuit devices are saved with leading X in their names.
2022-04-26 10:37:03 +02:00
Giles Atkinson
519915202f
Fix Bug #577 "Zooming iplot drops vectors" and three crashes when
...
the iplot window is closed during simulation.
2022-04-26 10:36:55 +02:00
Holger Vogt
0be163d8d8
Search for "off" token in device instance lines not with
...
C standard fcn strstr, but with search_plain_identifier().
Thus allow model names that contain "off" (like offset)
2022-04-26 10:36:24 +02:00
Holger Vogt
08a12b5355
Add a function itoa10 and use it
...
instead of non-standard itoa.
2022-04-26 10:36:10 +02:00
Holger Vogt
d04445e085
When calculating power, we need to exclude thermal nodes
...
of devices like diodes (d) and MOS (m)
2022-04-26 10:35:56 +02:00
Holger Vogt
2fabc53f4f
Add flag 'power' to fcn setallvsources()
...
Add code to calculate the power dissipation in a device
(top level instances, including X (subcircuit) invocations).
2022-04-26 10:35:44 +02:00
Holger Vogt
a165556088
revert polarity of current mesurements:
...
current positive when flowing into device, e.g.
Ic, Ib of a positively biased npn.
Add current measurement for all nodes of a device,
e.g. .probe i(Q1) will measure Ic, Ib, Ie (and Is)
2022-04-26 10:35:29 +02:00
Giles Atkinson
39b837a405
Fix Bug #402 "Crash related to aliases". Do not return freed pointer.
2022-04-26 10:34:45 +02:00
Holger Vogt
16f619818e
Remove a conflict between the text variable substitution like
...
set text = "mytext"
set newtext = new.{$text}
echo $newtext
and the command circbyline, which may have to process strings
containing braces {...} without any change to the string.
Do not call cp_doglob() when command circbyline is executed.
2022-04-26 10:34:35 +02:00
Holger Vogt
b798076415
make comment more verbose
2022-04-26 10:34:21 +02:00
Holger Vogt
597bc9edd0
Remove a typo: runable --> runnable
2022-04-26 10:34:11 +02:00
Holger Vogt
287406459a
Make error message more verbose
2022-04-26 10:33:41 +02:00
Giles Atkinson
c65155880c
Make "nogrid" plotting option work. The deleted code was in the original
...
commit, so the reason for it can not be traced.
2022-04-26 10:32:39 +02:00
Alessio Cacciatori
4ebf4901b9
S-parameters in ngspice
...
With this commit the patch provided by Alessio Cacchiatori the S-parameter is completed:
Noise simulation added with C matrix output
Y and Z matrix output enabled
To allow compiling with gcc, the dense.h inline functions have been put into denseinlines.h
2022-04-25 21:31:28 +02:00
Holger Vogt
b1e73370ed
We start not at 0, but use the mean value (given in PARAM2) as
...
start value
2022-04-25 21:31:00 +02:00
Vadim Kuznetsov
b73939e379
Patch allowing call to S parameter simulation also from .control section by using command 'sp'
2022-04-25 21:30:52 +02:00
Holger Vogt
99f2414caf
Prevent a segfault when the parameter to command 'repeat' is given,
...
but cannot be evaluetd to a number.
2022-04-25 21:30:27 +02:00
Holger Vogt
56a3771d9a
.probe: replace (all) by alli (we only measure all currents)
2022-04-25 21:29:39 +02:00
Holger Vogt
4cc6222230
Make function search_plain_identifier non-static
...
Declare info on the compatibility mode as a 'Note'.
2022-04-25 21:29:25 +02:00
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
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