Commit Graph

7918 Commits

Author SHA1 Message Date
Holger Vogt 79bb8edc90 Allow individual current measurements in switches or
linear dependent sources.
2022-10-07 13:18:15 +02:00
Holger Vogt f1eb8d3955 examples for .probe alli or .probe i(xx) 2022-10-07 13:17:55 +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
Holger Vogt 3dbfc934bb set colors for grids and data 2022-10-07 13:17:06 +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 4706c3dea5 Add 74xx283 4-bit adder example from the Micro Cap digital example circuits. Pspice primitives are translated to Xspice and a waveform is displayed using GTKWave. This is a digital-only test. 2022-10-07 13:15:23 +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 e9b5a9a957 aswitch needs two input nodes because gd has been selected for input. 2022-10-07 13:13:38 +02:00
Holger Vogt c8ed9590b7 Handle the case when control voltages on and off are equal.
Update the linear switch: add the limits to resistance ron, roff
Update the log switch: correct the resistance calculation for
von < voff
Add some examples for the pswitch.
2022-10-07 13:12:56 +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 2deefe1fbc New tables for MOS devices 2022-10-07 13:11:18 +02:00
Holger Vogt 765d2e8a0e Return data to input directory. 2022-10-07 13:10:51 +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 a69dd1bcde Simplify the NMOS or PMOS selection by setting only one parameter
'mostype'
ngspice-37+ is required.
2022-10-07 13:10:06 +02:00
Giles Atkinson 8038021369 Remove some dead code in the dec_bridge code model. 2022-10-07 13:09:36 +02:00
Giles Atkinson 88d5e723ed Fix double free in XSPICE CALLBACK functions as desribed here:
https://sourceforge.net/p/ngspice/mailman/message/37677362/
and add missing CALLBACKs in models that use STATIC_VARs with
pointer values.
2022-10-07 13:09:15 +02:00
Giles Atkinson 10d3e1b754 Extend the output and partial derivatives of the output from the 2/3-D
table lookup models (XSPICE) continuously outside the defined
rectangle or cube, as it may help convergence and avoid ambiguity caused
by rounding at the boundaries.  See bug #591 "Wrong 2D table model output".
The value is that of the nearest point in the region while the reported
derivative is ramped to zero outside the boundaries.
Also fixes incorrect output at the upper limit in each dimension.
2022-10-07 13:09:00 +02:00
Giles Atkinson 8ef2d8dec8 Fix memory leak by moving the state transition table to a STATIC_VAR
whose memory can be recovered by a call back.  Also make cfunc.mod
less ugly.
2022-10-07 13:08:42 +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 9e290a3461 tabs to spaces 2022-10-07 13:05:30 +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 b9014068e7 WinGUI: Add a button 'Stop' to stop a simulation in intercative
or control mode. ngspice enters interactive mode and waits for user
commands. Simulation result vectors are available up to the
(time) point of stopping. Simulation may continue by command
'resume', however now in interactive mode, a control flow stays
interrupted.
2022-10-07 13:04:25 +02:00
Holger Vogt 5cf6c23db8 Add udevices.c to project 2022-10-07 13:03:52 +02:00
Holger Vogt d1cbcb080c Re-format cktdojob.c 2022-10-07 13:03:35 +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 f073fb5c05 Consecutive tran and ac simulation may lead to gross errors
when TC or scale is used on the instance line of C and L.
Reason is the missing reset when CKTtemp is called once during each
simulation command. TC or scale is then applied again and again,
a reset is missing.

This patch adds a reset, i.e. the capacitance or inductance is
reset to its instance value in a call to *temp. It fixes bug#594.

Command 'alter' has been tested.

Resistance has not been tackled by this bug, because the line
here->RESconduct = here->RESm / (here->RESresist * factor * here->RESscale);
differs from
here->CAPcapac = here->CAPcapac * factor * here->CAPscale;
in that there is no accumulation of correction factors with here->RESconduct
2022-10-07 13:02:12 +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
Holger Vogt 1329942865 Add a new function char* gettok_np(char** s)
which finds a token, while scanning over (), like
they were white spaces. It also proceeds with s while
still finding (), (which gettok_noparens does not do).
2022-10-07 13:00:44 +02:00
Holger Vogt 3d1e560828 Add configure flag --enable-shortcheck to enable a shortened make check
Only BSIM3 and BSIM4 are tested, when selected.
2022-10-07 13:00:30 +02:00
Holger Vogt d46b4030fb Avoid jump in phase when crossing 90° boundaries.
Code similar to cx_cph in cmath1.c
2022-10-07 13:00:02 +02:00
Holger Vogt 9b056c0c2f enable compiling with VS 2019 2022-10-07 12:57:04 +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