rlar
611596c916
PTpower
2018-05-18 17:06:14 +02:00
rlar
6ef2a5f81b
fix code to fit the derivation
2018-05-18 17:05:44 +02:00
rlar
e36ded8122
fix derivations in comments
2018-05-18 17:05:08 +02:00
Holger Vogt
af351eab5f
add a non-zero fudge factor to zero function argument
2018-05-18 16:55:31 +02:00
Holger Vogt
c1a64d9f49
make inp_compat_mode glabal
2018-05-18 16:54:52 +02:00
Holger Vogt
bb162de1d8
Parameter names in .model lines may be preceeded
...
by spaces, but also by '('
2018-05-18 16:43:12 +02:00
Holger Vogt
ff00ec3aed
allow '+' or '-' characters in device name
...
for current and voltage sources.
Maybe exrtended to all devices.
2018-05-18 16:12:55 +02:00
Holger Vogt
314ece2526
allow '-' in XSPICE model names
2018-05-18 16:01:58 +02:00
Holger Vogt
181e8746a6
allow hyphens '-' in model names
2018-05-18 16:01:35 +02:00
Holger Vogt
09590047fe
Check if model is a PSPICE resistor 'res'
2018-05-18 15:55:04 +02:00
Holger Vogt
53bac06d11
.model replacement in ako (a kind of) model descriptions
...
in first level .subckt and top level only
2018-05-18 15:37:26 +02:00
Holger Vogt
d9dbde0593
replace the E source TABLE function by a B source pwl
...
(used by ST OpAmps and comparators)
2018-05-18 15:31:47 +02:00
Holger Vogt
10c69b8d05
replace S1 D S DG GND SWN by
...
a1 %v(DG) %gd(D S) swa
2018-05-18 15:25:19 +02:00
Holger Vogt
f25a307886
get the area factor for diodes and bipolar devices
2018-05-18 15:20:06 +02:00
Holger Vogt
9d8148edae
replace T_ABS by temp and T_REL_GLOBAL by dtemp in .model cards
2018-05-18 15:17:45 +02:00
Holger Vogt
13ca544d15
replace & with && and | with || and *# with * #
2018-05-18 15:15:38 +02:00
Holger Vogt
ae9cc17aff
add predefined parameters TEMP, VT after each subckt call
2018-05-18 15:12:22 +02:00
Holger Vogt
77814b8618
add predefined params TEMP, VT, GMIN to beginning of deck
...
add funcs limit, pwr, pwrs, stp, if, int
2018-05-18 15:10:15 +02:00
Holger Vogt
5ace7ff1fd
exclude simple e and h sources from getting a series voltage source
...
by undoing the name conversion
2018-05-16 08:16:22 +02:00
Holger Vogt
cfa473ad96
don't print NULL (deallocated lines)
2018-05-16 00:19:46 +02:00
Holger Vogt
9908b39d2b
make inp_compat_mode global
2018-05-16 00:15:29 +02:00
Holger Vogt
98fe623ba4
add function prototype pspice_compat
...
to deal with compatibility issues during loading
a PSPICE library
2018-05-16 00:14:31 +02:00
Holger Vogt
4aff986ee8
fix a bug, missing ;
2018-05-15 23:36:16 +02:00
Holger Vogt
429326e139
Add current measurement for device XYZ using I(XYZ)
2018-05-15 23:16:22 +02:00
h_vogt
7dd81327ec
new command 'alterparam', to be used in conjunction with 'mc_source'
...
add command 'alterparam paramname=pvalue'
to change a global .param
add command 'alterparam subcktname pname=vpval'
to change a parameter inside of a subcircuit
2018-05-15 22:46:06 +02:00
h_vogt
5c3a6a3829
new command 'mc_source' to internally reload circuit
...
We store a copy of the whole deck in 'mc_deck'.
'mc_source' can be used to re-read this copy.
2018-05-15 22:45:29 +02:00
h_vogt
464f855d1d
subckt.c, introduce new function inp_deckcopy_oc()
...
copy a deck
without li_actual,
without comment lines
without .control section
2018-05-15 22:45:10 +02:00
rlar
dc604c75d5
inpcom.c, whitespace
2018-05-15 22:43:43 +02:00
rlar
0f1b75a95b
inpcom.c, abstraction, introduce bogus_find_subckt()
...
extracted from inp_fix_inst_calls_for_numparam().
This code is and was evil, as it does not respect scoping rules.
2018-05-15 22:43:23 +02:00
Holger Vogt
73db0477c0
vdmosdist.c, white spaces
2018-05-04 20:35:16 +02:00
Holger Vogt
68fbc49216
vdmos.c, sort parameters
2018-05-04 20:35:14 +02:00
Holger Vogt
285de59446
enable alternative weak inversion model if parameter subslope is given
2018-05-04 20:35:11 +02:00
Holger Vogt
93e34540b8
introduce parameter ksubthres, compatible to LTSPICE
2018-05-04 20:35:10 +02:00
Holger Vogt
a0867ff1a3
bugfix: collapse the correct nodes if RB is zero or not given
2018-05-04 20:35:09 +02:00
Holger Vogt
2474c28a54
Alternative simple weak inversion model
...
according to https://www.anasoft.co.uk/MOS1Model.htm .
Fits existing LTSPICE models by adapting the slope parameter.
2018-05-04 20:35:08 +02:00
Holger Vogt
0ece0d0c1c
make breakdown voltage internally always positive
2018-05-04 20:35:07 +02:00
Holger Vogt
63be243f72
Add a simple quasi saturation model according to V. d'Alessandro e.a., 2001
2018-05-04 20:35:07 +02:00
Holger Vogt
72e03e7eab
replace parameter name subthres by subslope
2018-05-04 20:35:06 +02:00
Holger Vogt
5ba25a8716
change parameter to scalef when calculating n empirical compromise between smooth curve and reduction of Id slightly above threshold
2018-05-04 20:35:05 +02:00
Holger Vogt
3ee3ab39a9
Choose better interpolation and default parameters
2018-05-04 20:35:04 +02:00
Holger Vogt
729eac4e84
cweakinv, add model parameter model->VDMOSsubshift
2018-05-04 20:35:03 +02:00
Holger Vogt
f0d131fb8a
cweakinv, introduce sine scaling fucntion scalef()
2018-05-04 20:35:02 +02:00
Holger Vogt
284f68765d
frontend/vectors.c, readability of warning message
2018-05-04 20:35:01 +02:00
Holger Vogt
68125ea3cf
allow reading LTSPICE ascii raw files with 'load' command
...
by discarding 'Offset:'
2018-05-04 20:35:00 +02:00
Holger Vogt
43a6339071
rename VDMOS_CGS, VDMOS_CGD, VDMOS_CDS to VDMOS_CAPGS, VDMOS_CAPGD, VDMOS_CAPDS C: current, CAP: capacitance, V: voltage, G: conductance, Q: charge
2018-05-04 20:34:59 +02:00
Holger Vogt
b4b6e3ebf8
Add the bulk diode to the ac calculation
2018-05-04 20:34:58 +02:00
Holger Vogt
87e8b366ad
Add gate resistor to AC calculation 2
...
Add matrix entries for gate resistor
2018-05-04 20:34:56 +02:00
Holger Vogt
5d6e3348c9
Add gate resistor to AC calculation 1
...
Replace g (gate) by gp (gate prime) in existing matrix loading
2018-05-04 20:34:54 +02:00
Holger Vogt
570aacbf02
Remove VDMOS_CBS, VDMOS_CBD, VDMOS_CB
2018-05-04 20:34:52 +02:00
Holger Vogt
2b444a3423
remove unused parameters VDMOS_VBS/VBD and VDMOS_CAPBD/BS/GS/GD/GB
2018-05-04 20:34:51 +02:00
Holger Vogt
33a68b7321
return only half of the capacitance cgs and cgd
2018-05-04 20:34:50 +02:00
Holger Vogt
62297b2450
add weak inversion current capability
...
calibration of parameter subthres with LTSPICE is still missing.
2018-05-04 20:34:47 +02:00
rlar
ce2e704f56
up, where to ? fixme, there are more ...
2018-05-04 20:34:45 +02:00
rlar
ede0fb1caa
cleanup
2018-05-04 20:34:44 +02:00
Holger Vogt
4a3c707036
add parallel resistor rds (between outer drain and source nodes, parallel to bulk diode)
2018-05-04 20:34:42 +02:00
Holger Vogt
b7c6145f5e
rename the device multiplier m to mu, not to mix it up with the Body diode grading coefficient m
2018-05-04 20:34:41 +02:00
Holger Vogt
c5f47d3c1b
Error message and exit if a vdmos device instance
...
has different source and bulk node (have to be the same).
2018-05-04 20:34:40 +02:00
Holger Vogt
b13675ea44
remove unused code to calculate bulk-source and bulk-drain capacitors has been replaced already by capacitor from parallel bulk diode
2018-05-04 20:34:39 +02:00
Holger Vogt
f9b66af074
add the mtriode parameter scale the triode region independently from saturation current
2018-05-04 20:34:36 +02:00
Holger Vogt
40fe11db07
Body diode grading coefficient is m, not mj
2018-05-04 20:34:34 +02:00
Holger Vogt
2f719f7401
function 'inp_vdmos_model' to process vdmos model lines towards ngspice compatibility
2018-05-04 20:34:32 +02:00
Holger Vogt
f3478d7f13
re-format code
2018-05-04 20:34:31 +02:00
Holger Vogt
9d00a9e28d
re-format code (whitespace only)
2018-05-04 20:34:31 +02:00
Holger Vogt
45f52c859b
enable breakdown capability of parallel bulk diode
2018-05-04 20:34:30 +02:00
Holger Vogt
2bf70fa259
add matrix entries for bulk diode
2018-05-04 20:34:29 +02:00
Holger Vogt
bfec119e5b
Use better name for some parameters, cosmetics
2018-05-04 20:34:27 +02:00
Holger Vogt
4ac7a641ec
diode model for bulk diode added code taken from dio.c etc. capacitance calculation for vdmos bulk cap removed, is now completely with the diode. An internal node added for series diode resistance RB
...
matrix entries not yet done!
2018-05-04 20:34:26 +02:00
Holger Vogt
1ce7fef519
missing model parameters added
2018-05-04 20:34:25 +02:00
Holger Vogt
a4dc84ae35
missing model parameters added
2018-05-04 20:34:24 +02:00
Holger Vogt
0dc0aa06c4
re-introdeuce parameter phi Resulting temperature dependency of vto still not available
2018-05-04 20:34:24 +02:00
Holger Vogt
5b8c8072f3
mobility and substrate related parameters and equations removed
2018-05-04 20:34:22 +02:00
Holger Vogt
9df45731e9
depl cap calculation removed
2018-05-04 20:34:21 +02:00
Holger Vogt
0a213bea1a
more on removing the sidewall capacitance
2018-05-04 20:34:20 +02:00
Holger Vogt
ef547eb8ff
sidewall capacitance calculation removed
2018-05-04 20:34:19 +02:00
Holger Vogt
7df59a750e
useful parameter declarations moved to stay
2018-05-04 20:34:18 +02:00
Holger Vogt
0ebb7348ca
remove drain and source resistance contributions
2018-05-04 20:34:18 +02:00
Holger Vogt
84005efe8b
lateral diffusion and overlap capacitance removed
2018-05-04 20:34:17 +02:00
Holger Vogt
e0ddc38519
default transconductance parameter kp set to 1
2018-05-04 20:34:16 +02:00
Holger Vogt
e9e621de07
remove effective channel length, replace by l
2018-05-04 20:34:15 +02:00
Holger Vogt
47ef2bfaff
remove unused parameters VDMOS_MOD_VTO
2018-05-04 20:34:14 +02:00
Holger Vogt
d1497d8270
rename parameter "pb" --> "vj"
2018-05-04 20:34:13 +02:00
Holger Vogt
9c1b403f79
remove Gate.*OverlapCap
2018-05-04 20:34:12 +02:00
Holger Vogt
dee9dc370f
default m, W, L = 1
2018-05-04 20:34:11 +02:00
Holger Vogt
1aa3196ed9
another re-formatting for better readability (whitespace only)
2018-05-04 20:34:10 +02:00
Holger Vogt
d63123a269
gate resistance und gate conductance added, prime gate node added, not yet o.k. when rg is set, probably wrong signedness
2018-05-04 20:34:09 +02:00
Holger Vogt
40b9b18b01
gate conductance added
2018-05-04 20:34:09 +02:00
Holger Vogt
e0734a3ade
re-format for better readability
2018-05-04 20:34:08 +02:00
Holger Vogt
5abe8a759b
re-format for better readability, (whitespace only)
2018-05-04 20:34:07 +02:00
Holger Vogt
c0c3470dff
add the simple vdmos capacitance model instead of Meyer's model
2018-05-04 20:34:06 +02:00
Holger Vogt
389c888948
capacitance parameters cgdmin, cgdmax, a, cgs completely installed
2018-05-04 20:34:05 +02:00
Holger Vogt
eb1df52743
remove unused VDMOS_CAPZEROBIASBD/BDSW/BS/BSSW aka VDMOSCbd/bdsw/bs/bssw
2018-05-04 20:34:04 +02:00
Holger Vogt
f7b66ded9d
comment
2018-05-04 20:34:03 +02:00
Holger Vogt
f4853e85ca
add vdmos to the parameter list and search
2018-05-04 20:34:02 +02:00
rlar
b07661786f
move arround
2018-05-04 20:34:01 +02:00
Holger Vogt
8473c8e03c
remove empty VMOSdelete() function
2018-05-04 20:34:00 +02:00
Holger Vogt
b87f5c0563
remove never used sensitivity analysis code
2018-05-04 20:33:59 +02:00
Holger Vogt
b6a8613427
remove unused old sensitivity functions
2018-05-04 20:33:58 +02:00
Holger Vogt
1c4cb49478
CAPBYPASS removed
2018-05-04 20:33:57 +02:00
rlar
306e46359d
whitespace
2018-05-04 20:33:56 +02:00
rlar
5008d495ce
untabify
2018-05-04 20:33:55 +02:00
Holger Vogt
3e6a46826b
add src/spicelib/devices/vdmos to ngspice
2018-05-04 20:33:54 +02:00
Holger Vogt
d9bc4a5b41
add src/spicelib/devices/vdmos to ngspice
2018-05-04 20:33:53 +02:00
rlar
572bf10ebd
execute vdmos-1.el
2018-05-04 20:33:46 +02:00
rlar
45a70b3a53
rewrite, use enum instead of #define sequences
...
see branch "rewrite-defines2enum"
2018-04-30 19:23:18 +02:00
Francesco Lannutti
3a7e9411c3
drop #ifdef MUTUAL
2018-04-22 22:10:43 +02:00
rlar
bcf00ade06
cpl/cplsetup.c, cleanup VECTOR_ALLOC and MATRIX_ALLOC
...
swap first two arguments for readability
2018-04-22 22:04:45 +02:00
rlar
04dc62ef13
devices/*, move kind of `enum' defines out of struct definition
2018-04-15 15:05:02 +02:00
rlar
3b0e8cb8f1
vsrc/isrc, use an explicit #ifdef "PULSE_FUN_TYPES" guard
...
to avoid duplicate definition
2018-04-15 15:05:02 +02:00
rlar
a729c2860c
sensitivity, drop redundant #defines SENS_LIN/OCT/DEC/DEFPERT
...
use SENS_LINEAR/OCTAVE/DECADE/DEFPERTUB instead
2018-04-15 15:05:02 +02:00
rlar
a9439dc7dd
sensitivity, use numStates and numSenStates instead of hardcoded literals
2018-04-15 15:04:57 +02:00
rlar
d3f13edd4a
devices/vbic/vbicsetup.c, bug fix, incorrect states allocation
...
VBICnumSenStates is 10 not 8
2018-04-15 08:42:02 +02:00
rlar
d981fb331b
spicelib/devices/*, drop empty destroy functions
2018-04-15 07:13:06 +02:00
rlar
e725d728fc
res/restemp.c, avoid temporary NaN value, (simplify debugging)
...
RESupdate_conduct() may be called several times before all
parameters have been set via RESparam() invocations,
or finally being set to default values in RESsetup()
Especially RESscale might still be 0.0 as well as RESm
thus temporarily creating a NaN in RESupdate_conduct.
This would unnecessarily complicate debugging with enabled
floating point exceptions.
2018-03-17 18:36:12 +01:00
rlar
ead6dc4816
spicelib/devices/{sw,csw}, unify CKTstates[] access
...
do it the same way as the other devices do
access CKTstates[][slot] via device specific descriptive macros
access CKTstates[] via CKTstate0 CKTstate1 macros
this patch has been checked for object file in-variance with gcc
2018-03-08 19:40:53 +01:00
rlar
bcecc19e8b
spicelib/devices/{sw,csw}, cleanup for readability
...
This change is functional invariant, and has been checked
with gcc for object file in-variance.
For the details see the "rewrite-sw" branch
2018-03-08 18:24:49 +01:00
h_vogt
3dd2115291
frontend/subckt.c, do not put model names into numparam hash table
...
nobody seems to make use of these entries.
see nupa_type which shrinks to four enum's
2018-03-01 18:13:01 +01:00
rlar
b803b294b4
frontend/parser/lexical.c, cp_lexer(), allow # and * comment
...
Both, whether interactive or not.
Especially for command scripts.
2018-02-26 19:41:04 +01:00
rlar
6903584e99
asrc/asrcacld.c, bug fix, reciproc tc coefficient
2018-02-25 21:59:15 +01:00
Holger Vogt
b1aa6cfc87
xspice/enh/enhtrans.c, two2three_translate(), plug a memory leak
2018-02-25 20:05:15 +01:00
rlar
878c9645c7
frontend/outitf.c, drop /* ARGSUSED */ comments
2018-02-22 21:56:05 +01:00
Holger Vogt
edc690e26f
frontend/outitf.c, plug a memory leak when `.option interp'
2018-02-22 21:55:23 +01:00
rlar
cd1bbf2003
rewrite, use designated initializer for SPICEdev initialisation
2018-02-21 20:02:00 +01:00
rlar
95ef5e79d9
numparam/*, use `pscopy()'
2018-02-20 21:34:06 +01:00
rlar
9ad63cc2c0
numparam/*, plug memory leaks
2018-02-20 21:33:55 +01:00
rlar
ea1b83698f
numparam/*, drop case conversions
...
inpcom.c is supposed to convert everything to lower case.
Thus we can work case sensitive in numparam,
which is easier compared to a whole set of local case conversions.
2018-02-20 21:33:32 +01:00
rlar
0200d5c7e9
numparam/*, drop "old style" '&' syntax
...
Probably an artefact of the external preprocessor implementation
of numparam.
This syntax seems to have been a non spice macro expansion facility.
2018-02-20 21:30:52 +01:00
rlar
8022aa09a6
spicenum.c, cleanup dicoS usage
2018-02-20 21:30:41 +01:00
rlar
aa0dbd20ad
spicenum.c, drop putlogfile()
2018-02-20 21:30:15 +01:00
rlar
15c00a9d42
spicenum.c, drop dologfileS, logfileS and nblogS
...
which are never set
2018-02-20 21:29:50 +01:00
rlar
112f35cc96
nupa_copy(), use skip_back_ws()
2018-02-20 21:29:29 +01:00
rlar
9218b76583
nupa_copy(), cleanup
2018-02-20 21:28:56 +01:00
rlar
ec24c1ded7
nupa_copy(), fix lvalue
2018-02-20 21:28:03 +01:00
rlar
06708f1ed1
nupa_copy(), ls ==> s_end - (const) s
2018-02-20 21:27:38 +01:00
rlar
751d377d3e
pscopy(), pscopy_up(), use `char *stop' argument
...
instead of `int length' argument
2018-02-20 21:13:16 +01:00
rlar
e21d48a267
pscopy(), pscopy_up(), use _spice_dstring_setlength() return value
...
instead of invoking spice_dstring_value()
2018-02-20 21:13:05 +01:00
rlar
2ce91b0821
pscopy(), pscopy_up(), expand spice_dstring_reinit() macro
...
and inline the resulting spice_dstring_setlength() invocation
2018-02-20 21:12:56 +01:00
rlar
2cb579cd9f
pscopy(), pscopy_up(), drop `start' argument
...
which is always zero
2018-02-20 21:12:44 +01:00
rlar
3bd9c1c858
scopyd(), return void
2018-02-20 20:51:30 +01:00
rlar
5164c16a1b
numparam/mystring.c, drop unused nadd(), cins(), sins() and spos_()
2018-02-17 19:15:55 +01:00
rlar
468f7580ad
nupa_subcktcall(), cleanup using skip_ws()
2018-02-17 19:15:55 +01:00
rlar
a38b19bc0e
nupa_subcktcall(), reintroduce search for last occurence of the subckt name
2018-02-17 19:15:55 +01:00
rlar
c2f519c191
nupa_subcktcall(), drop `p_subname'
2018-02-17 19:15:55 +01:00
rlar
3f5ea23c71
nupa_subcktcall(), drop `ls_ptr'
...
valid because
neither `jp' nor `gp' will ever be incremented beyond end of string
2018-02-17 19:15:55 +01:00
rlar
437f92385a
nupa_subcktcall(), avoid `jp' pointing beyond end of string
...
The skip whitespace loop in the following line shall
safely swallow the delimiting space instead
2018-02-17 19:15:55 +01:00
rlar
bb9689139b
nupa_subcktcall(), drop `parsebuf' and `buf'
2018-02-17 19:15:55 +01:00
rlar
8b1e4fc32c
nupa_subcktcall(), introduce search_isolated_identifier()
...
the functionality is a bit different though,
because the previous code searched for the *last* occurence of the identifier
yet the new code searches for the first occurence.
2018-02-17 19:15:55 +01:00
rlar
6a57023ced
nupa_subcktcall(), drop `hp'
2018-02-17 19:15:55 +01:00
rlar
b16a61fb7c
nupa_subcktcall(), use skip_non_ws()
2018-02-17 19:15:55 +01:00
rlar
71ac5bccc2
nupa_subcktcall(), swap `hp' and `kp'
...
neither `hp' nor `kp' will be used any more behind this body
2018-02-17 19:15:55 +01:00
rlar
07112d62fb
nupa_subcktcall(), simplify
2018-02-17 19:15:55 +01:00
rlar
e4a2106cfe
nupa_subcktcall(), simplify
2018-02-17 19:15:55 +01:00
rlar
1298eacdb2
nupa_subcktcall(), simplify
2018-02-17 19:15:55 +01:00
rlar
1157142dfd
nupa_subcktcall(), simplify
2018-02-17 19:15:55 +01:00
rlar
6ca336af85
nupa_subcktcall(), pscopy transform
2018-02-17 19:15:55 +01:00
rlar
7d40920bd6
nupa_subcktcall(), cleanup
2018-02-17 19:15:55 +01:00
rlar
70cec5e9e3
nupa_subcktcall(), fix lvalue
2018-02-17 19:15:55 +01:00
rlar
ec9636e078
nupa_subcktcall(), ls ==> ls_ptr - (const) t_p
2018-02-17 19:15:55 +01:00
rlar
701dcad9a4
nupa_subcktcall(), fix lvalue
2018-02-17 19:15:55 +01:00
rlar
a773601b84
nupa_subcktcall(), g ==> gp - (const) t_p
2018-02-17 19:15:55 +01:00
rlar
3267bf8d63
nupa_subcktcall(), fix lvalue
2018-02-17 19:15:55 +01:00
rlar
0a149819a5
nupa_subcktcall(), h ==> hp - (const) t_p
2018-02-17 19:15:55 +01:00
rlar
47f1e7b1fa
nupa_subcktcall(), fix lvalue
2018-02-17 19:15:55 +01:00
rlar
cc932725ac
nupa_subcktcall(), k ==> kp - (const) t_p
2018-02-17 19:15:55 +01:00
rlar
d991296b82
nupa_subcktcall(), split personality of `k'
2018-02-17 19:15:55 +01:00
rlar
b9750ee59f
nupa_subcktcall(), fix lvalue
2018-02-17 19:15:55 +01:00
rlar
84c22e656a
nupa_subcktcall(), j ==> jp - (const) t_p
2018-02-17 19:15:55 +01:00
rlar
0f53656412
nupa_subcktcall(), split personality of `j'
2018-02-17 19:15:55 +01:00
rlar
80701652fc
nupa_subcktcall(), cleanup getexpress() usage
...
# Conflicts:
# src/frontend/numparam/xpressn.c
2018-02-17 19:15:55 +01:00
rlar
742f34f596
nupa_subcktcall(), spice_dstring_value(&tstr) ==> t_p
...
t_p is const and tstr hasn't been modified either,
thus still the same value.
2018-02-17 19:15:55 +01:00
rlar
cb4dfa13d8
nupa_subcktcall(), reduce scope of some locals
2018-02-17 19:15:55 +01:00
rlar
9670af0d4e
nupa_subcktcall(), drop `i', use a pointer instead
2018-02-17 19:15:55 +01:00
rlar
6e5ef92fd2
nupa_subcktcall(), transform pscopy(,x,y,) --> pscopy(,x+y,y-y,) (requirement strlen(x) >= y to be verified later)
2018-02-17 19:15:55 +01:00
rlar
53adeee1d3
nupa_subcktcall(), drop j1 and t_p1, use a pointer instead
2018-02-17 19:15:55 +01:00
rlar
c133f21ef7
nupa_subcktcall(), split personality of `t_p'
2018-02-17 19:15:55 +01:00
rlar
f17521fa4c
nupa_subcktcall(), split personality of `ls'
2018-02-17 19:15:55 +01:00
rlar
81e02154be
nupa_subcktcall(), split personality of `j'
2018-02-17 19:15:55 +01:00
rlar
13d9ecd517
nupa_subcktcall(), some constness
2018-02-17 19:15:55 +01:00
rlar
06b71fe2d2
nupa_subcktcall(), use skip_non_ws()
2018-02-17 19:15:55 +01:00
rlar
fa1c710f68
nupa_subcktcall(), move code down to a better place
2018-02-17 19:15:55 +01:00
rlar
1987559e89
nupa_subcktcall(), drop redundant initialisation for `narg'
...
and delay its incrementation a bit
2018-02-17 19:15:55 +01:00
rlar
b8f4b3e27e
nupa_subcktcall(), fix excess length in pscopy argument
2018-02-17 19:15:55 +01:00
rlar
8190ba3fca
nupa_subcktcall(), fix, honour end of string
2018-02-17 19:15:55 +01:00
rlar
4859f7d8df
findsubname(), cleanup and use isspace_c()
2018-02-17 19:15:55 +01:00
rlar
784ad14d60
findsubname(), drop `ls_ptr'
2018-02-17 19:15:55 +01:00
rlar
d647a84e66
findsubname(), just truncate it
2018-02-17 19:15:55 +01:00
rlar
5e6fe75db6
findsubname(), collect decrement operations
2018-02-17 19:15:55 +01:00
rlar
31ad5ca970
findsubname(), decrement later
2018-02-17 19:15:55 +01:00
rlar
01eb593ca4
findsubname(), explicit break out of the loop
2018-02-17 19:15:55 +01:00
rlar
cbd38fdc9c
findsubname(), use skip_back_ws()
2018-02-17 19:15:55 +01:00
rlar
270e0b6154
findsubname(), cleanup
2018-02-17 19:15:55 +01:00
rlar
a5c743d48c
findsubname(), fix lvalues
2018-02-17 19:15:55 +01:00
rlar
21d3f04659
findsubname(), h ==> p_end - (const) s
2018-02-17 19:15:55 +01:00
rlar
8881aead44
findsubname(), cleanup
2018-02-17 19:15:55 +01:00
rlar
c8340f2b4c
findsubname(), fix lvalues
2018-02-17 19:15:55 +01:00
rlar
90bb7cc289
findsubname(), j ==> t - (const) s
2018-02-17 19:15:55 +01:00
rlar
1778b608d8
findsubname(), cleanup
2018-02-17 19:15:55 +01:00
rlar
8df5717017
findsubname(), fix lvalues
2018-02-17 19:15:55 +01:00
rlar
a7c2253c8a
findsubname(), k ==> p - (const) s - 1
2018-02-17 19:15:55 +01:00
rlar
623436c9f9
findsubname(), fix lvalues
2018-02-17 19:15:55 +01:00
rlar
521fee88a6
findsubname(), ls ==> ls_ptr - (const) s
2018-02-17 19:15:55 +01:00
rlar
4ca87d6b0b
findsubname(), reorder and add some constness
2018-02-17 19:15:55 +01:00
rlar
ab152c99fc
findsubname(), local scope for `nest' `j' and `h'
2018-02-17 19:15:55 +01:00
rlar
45f3749bb1
findsubname(), drop `found', which is constantly 0
...
because of the previous commit
2018-02-17 19:15:55 +01:00
rlar
f0cead24b8
findsubname(), duplicate function epilogue and return early
2018-02-17 19:15:55 +01:00
rlar
4986df1baf
findsubname(), signature, drop unused return value
2018-02-17 19:15:55 +01:00
rlar
af78917b98
stripbraces(), whitespace
2018-02-17 19:15:55 +01:00
rlar
11e024753a
stripbraces(), cleanup
2018-02-17 19:15:55 +01:00
rlar
13be771308
stripbraces(), s + i ==> p
2018-02-17 19:15:55 +01:00
rlar
ab15f0b7bb
stripbraces(), group `s + i'
2018-02-17 19:15:55 +01:00
rlar
0101db946b
stripbraces(), s0 ==> s
2018-02-17 19:15:55 +01:00
rlar
e4e408d656
stripbraces(), unuse local `s'
...
`s0' does not change in the area of interest and has the same value
2018-02-17 19:15:55 +01:00
rlar
cb859060e0
stripbraces(), drop `i_ptr'
2018-02-17 19:15:55 +01:00
rlar
951517250b
stripbraces(), fix lvalue and cleanup
2018-02-17 19:15:55 +01:00
rlar
d4dad0f10c
stripbraces(), i ==> i_ptr - (const) s
2018-02-17 19:15:55 +01:00
rlar
186352b7e5
stripbraces(), fix lvalue and cleanup
2018-02-17 19:15:55 +01:00
rlar
686329dcaf
stripbraces(), j ==> j_ptr - (const) s
2018-02-17 19:15:55 +01:00
rlar
fc45b3addf
stripbraces(), make `s' constant in the region of interest
2018-02-17 19:15:55 +01:00
rlar
170aa84f47
stripbraces(), drop `ls'
2018-02-17 19:15:55 +01:00
rlar
e2c2140a52
stripbraces(), drop `t_p', which points to a copy of `s'
2018-02-17 19:15:55 +01:00
rlar
8d0df0d024
stripbraces(), fix split personality of `i'
2018-02-17 19:15:55 +01:00
rlar
98ec9c2fa3
stripbraces(), use `strchr()'
2018-02-17 19:15:55 +01:00
rlar
26ff93abd9
stripbraces(), simplify
2018-02-17 19:15:55 +01:00
rlar
1721407359
transform(), use `strstr()' instead of `spos_()'
2018-02-17 19:15:55 +01:00
rlar
e28169d62c
transform(), reduce scope of `tstr'
2018-02-17 19:15:55 +01:00
rlar
f776a24ea7
transform(), ci_prefix() is case insensitive
...
thus can use `s' instead of `t'
and ci_prefix() does return a boolean
2018-02-17 19:15:55 +01:00
rlar
6500aeb132
transform(), drop local `n'
2018-02-17 19:15:55 +01:00
rlar
7cf4338981
transform(), drop unused argument `u_p'
2018-02-17 19:15:55 +01:00
rlar
ea6290f666
nupa_substitute(), cleanup and a fixme
...
the '&' sequences, which are hopefully nowhere announced and advertised,
might increment char pointers beyond the terminating '\0' causing havoc.
2018-02-17 19:15:55 +01:00
rlar
abb16c288b
nupa_substitute(), cleanup
2018-02-17 19:15:55 +01:00
rlar
0d3c0dfd78
nupa_substitute(), rename r_ --> r
2018-02-17 19:15:55 +01:00
rlar
a34703f748
nupa_substitute(), verify `r' beeing unused now
2018-02-17 19:15:55 +01:00
rlar
b0e5fc267c
nupa_substitute(), cleanup
2018-02-17 19:15:55 +01:00
rlar
cc02b9ae2d
nupa_substitute(), fix lvalue and cleanup
2018-02-17 19:15:55 +01:00
rlar
ac59410602
nupa_substitute(), ir ==> r_ - (const) r
2018-02-17 19:15:55 +01:00
rlar
0fd1e2323c
nupa_substitute(), express some constness
2018-02-17 19:15:55 +01:00
rlar
6c1d3ba34a
nupa_substitute(), whitespace
2018-02-17 19:15:55 +01:00
rlar
6b5606edc1
nupa_substitute(), cleanup return on error
2018-02-17 19:15:55 +01:00
rlar
cba740f88d
nupa_substitute(), postpone `s' incrementation
2018-02-17 19:15:55 +01:00
rlar
ad1eeeb410
nupa_substitute(), postpone `s' incrementation
2018-02-17 19:15:55 +01:00
rlar
39b544aba1
nupa_substitute(), cleanup
2018-02-17 19:15:55 +01:00
rlar
6a003e52d1
nupa_substitute(), cleanup for loops
2018-02-17 19:15:55 +01:00
rlar
ad603be96f
nupa_substitute(), cleanup for loops
2018-02-17 19:15:55 +01:00
rlar
c06dddc4db
nupa_substitute(), break sooner
2018-02-17 19:15:55 +01:00
rlar
baf76512b3
nupa_substitute(), reduce scope of d
2018-02-17 19:15:55 +01:00
rlar
55e7fa269a
nupa_substitute(), at the end of the loop d === *kptr
2018-02-17 19:15:55 +01:00
rlar
571909b8b6
nupa_substitute(), postpone kptr incrementation
2018-02-17 19:15:55 +01:00
rlar
d38804d7c0
nupa_substitute(), move final kptr incrementation out of the loop
2018-02-17 19:15:55 +01:00
rlar
f5448025a8
nupa_substitute(), postpone kptr incrementation
2018-02-17 19:15:55 +01:00
rlar
0aff4dfaa6
nupa_substitute(), transform while loop
2018-02-17 19:15:55 +01:00
rlar
ef1d896cee
nupa_substitute(), reduce scope of local variabes
2018-02-17 19:15:55 +01:00
rlar
bd335cb5be
nupa_substitute(), delay kptr assignment
2018-02-17 19:15:55 +01:00
rlar
ca84d10d0a
stripsomespace(), drop `ls'
2018-02-17 19:15:55 +01:00
rlar
cc05c0c05b
formula(), postpone kptr incrementation
2018-02-17 19:15:55 +01:00
rlar
abe572237f
formula(), postpone arg2 and arg3 incrementation
2018-02-17 19:15:55 +01:00
rlar
a35a2fd3db
formula(), cleanup for(;;) loop
2018-02-17 19:15:55 +01:00
rlar
3136f45229
formula(), move final kptr incrementation out of the loop
2018-02-17 19:15:55 +01:00
rlar
2010e6b4fb
formula(), kptr++ to the for loop epilogue
2018-02-17 19:15:55 +01:00
rlar
c761b4432a
formula(), transform while loop
2018-02-17 19:15:55 +01:00
rlar
11adf9f62c
findsubckt(), cleanup
2018-02-17 19:15:55 +01:00
rlar
6a9248f111
findsubckt(), use skip_back_ws()
2018-02-17 19:15:55 +01:00
rlar
9bccda5450
findsubckt(), cleanup
2018-02-17 19:15:55 +01:00
rlar
9e1a6b85ff
findsubckt(), swap name_b and name_e in the prolog
2018-02-17 19:15:55 +01:00
rlar
61f3ecffd6
findsubckt(), rename k_ptr --> name_b
2018-02-17 19:15:55 +01:00
rlar
23b741868b
findsubckt(), cleanup
2018-02-17 19:15:55 +01:00
rlar
51405f8ee7
findsubckt(), fix lvalue
2018-02-17 19:15:55 +01:00
rlar
b3c40a77cf
findsubckt(), j_ptr --> name_e - 1
2018-02-17 19:15:55 +01:00
rlar
3d9a76d342
findsubckt(), drop k_ptr--, use k_ptr - 1 instead
2018-02-17 19:15:55 +01:00
rlar
8cd136c6bd
findsubckt(), move k_ptr-- beyond the loop
2018-02-17 19:15:55 +01:00
rlar
b0b4551d68
findsubckt(), move k_ptr-- to the front of the next loop
2018-02-17 19:15:54 +01:00
rlar
d2dac0ea9d
findsubckt(), move k_ptr-- beyond the loop
2018-02-17 19:15:54 +01:00
rlar
e1f5609568
findsubckt(), exclude the terminating '\0' from the search
2018-02-17 19:15:54 +01:00
rlar
a0f9b2bf0f
findsubckt(), cleanup
2018-02-17 19:15:54 +01:00
rlar
f4bd03a00f
findsubckt(), transform pscopy(,x,y,) --> pscopy(,x+y,y-y,) (requirement strlen(x) >= y to be verified later)
2018-02-17 19:15:54 +01:00
rlar
c486218e33
findsubckt(), cleanup
2018-02-17 19:15:54 +01:00
rlar
a9c2f81878
findsubckt(), fix lvalue
2018-02-17 19:15:54 +01:00
rlar
940eb2a258
findsubckt(), j ==> j_ptr - (const) s
2018-02-17 19:15:54 +01:00
rlar
cd05eb1d50
findsubckt(), fix lvalue
2018-02-17 19:15:54 +01:00
rlar
78147c2bd9
findsubckt(), k ==> k_ptr - (const) s
2018-02-17 19:15:54 +01:00
rlar
81b60b7367
findsubckt(), constness
2018-02-17 19:15:54 +01:00
rlar
849d12b18a
defsubckt(), rename j_ptr ==> s_end
2018-02-17 19:15:54 +01:00
rlar
948352a2ed
defsubckt(), drop i_ptr, use s instead
2018-02-17 19:15:54 +01:00
rlar
82d4f8544c
defsubckt(), check `s' beeing nowhere used anymore
2018-02-17 19:15:54 +01:00
rlar
a46e1113d0
defsubckt(), drop `ls_ptr'
2018-02-17 19:15:54 +01:00
rlar
10e9760f13
defsubckt(), transform pscopy(,x,y,) --> pscopy(,x+y,y-y,) (requirement strlen(x) >= y to be verified later)
2018-02-17 19:15:54 +01:00
rlar
44a17a14f7
defsubckt(), cleanup
2018-02-17 19:15:54 +01:00
rlar
9a64579db6
defsubckt(), fix lvalue
2018-02-17 19:15:54 +01:00
rlar
d73a265c45
defsubckt(), j ==> j_ptr - (const) s
2018-02-17 19:15:54 +01:00
rlar
1a44e4fb42
defsubckt(), fix lvalue
2018-02-17 19:15:54 +01:00
rlar
6d285d927a
defsubckt(), i ==> i_ptr - (const) s
2018-02-17 19:15:54 +01:00
rlar
deca1a05ed
defsubckt(), fix lvalue
2018-02-17 19:15:54 +01:00
rlar
4e89b80a75
defsubckt(), ls ==> ls_ptr - (const) s
2018-02-17 19:15:54 +01:00
rlar
dbcbf62012
defsubckt(), constness
2018-02-17 19:15:54 +01:00
rlar
27884d2512
nupa_assignment(), postpone p++
2018-02-17 19:15:54 +01:00
rlar
f0fa06ea26
nupa_assignment(), whitespace
2018-02-17 19:15:54 +01:00
rlar
0624584370
nupa_assignment(), simplify error processing
2018-02-17 19:15:54 +01:00
rlar
66433eda0b
nupa_assignment(), cleanup
2018-02-17 19:15:54 +01:00
rlar
8bded8b878
nupa_assignment(), cleanup
2018-02-17 19:15:54 +01:00
rlar
8f9f03c457
nupa_assignment(), fix lvalues
2018-02-17 19:15:54 +01:00
rlar
0e6ece4370
nupa_assignment(), ls ==> s_end - (const) s
2018-02-17 19:15:54 +01:00
rlar
410e70b9b9
nupa_assignment(), express some constness
2018-02-17 19:15:54 +01:00
rlar
5f0958026b
nupa_assignment(), cleanup
2018-02-17 19:15:54 +01:00
rlar
ba2c95243f
nupa_assignment(), fix lvalues
2018-02-17 19:15:54 +01:00
rlar
8300021c7a
nupa_assignment(), i ==> p - (const) s
2018-02-17 19:15:54 +01:00
rlar
f595db7619
nupa_assignment(), express some constness
2018-02-17 19:15:54 +01:00
rlar
35524f7e48
getexpress(), rename ls_ptr --> s_end
2018-02-17 19:15:54 +01:00
rlar
043a04b775
getexpress(), simplify usage
2018-02-17 19:15:54 +01:00
rlar
830b5faf0e
getexpress(), return one less
2018-02-17 19:15:54 +01:00
rlar
33b8936a3b
getexpress(), drop `c' and cleanup
2018-02-17 19:15:54 +01:00
rlar
f8fc4edf52
getexpress(), remove const, `pi' and rename xia_ptr --> s
2018-02-17 19:15:54 +01:00
rlar
9494f8d9af
getexpress(), change signature, return char * to continue with
2018-02-17 19:15:54 +01:00
rlar
0c363d7b4f
getexpress(), return `tpe' per reference
2018-02-17 19:15:54 +01:00
rlar
49bdcc3e3d
getexpress(), drop first argument `ls_ptr'
2018-02-17 19:15:54 +01:00
rlar
4bbff47518
getexpress(), first arg s ==> s + strlen(s)
2018-02-17 19:15:54 +01:00
rlar
7fc7202bdf
getexpress(), `p' doesn't need to be initialised here
2018-02-17 19:15:54 +01:00
rlar
4a6c7db226
getexpress(), break early
...
instead of doing nothing and then breaking
2018-02-17 19:15:54 +01:00
rlar
8a3871a0ef
getexpress(), transform loop
2018-02-17 19:15:54 +01:00
rlar
92eb2b0437
getexpress(), break early
...
instead of doing nothing and then breaking anyway
2018-02-17 19:15:54 +01:00
rlar
2f24e6e563
getexpress(), local scope for `c' and `d'
2018-02-17 19:15:54 +01:00
rlar
86ef4b8cb1
getexpress(), transform loop
2018-02-17 19:15:54 +01:00
rlar
1df1e69f5d
getexpress(), d == ')' is automatically true
...
when level has been decremented to level <= 0
2018-02-17 19:15:54 +01:00
rlar
1e6a44af27
getexpress(), transform
2018-02-17 19:15:54 +01:00
rlar
0cc72ae3c1
getexpress(), always true
2018-02-17 19:15:54 +01:00
rlar
f87c629e1b
getexpress(), break
2018-02-17 19:15:54 +01:00
rlar
9ace8b161f
getexpress(), scope
2018-02-17 19:15:54 +01:00
rlar
f2013088a6
getexpress(), transform `<' etc comparisons
2018-02-17 19:15:54 +01:00
rlar
d1b25d59bb
getexpress(), cleanup
2018-02-17 19:15:54 +01:00
rlar
a913def4d7
getexpress(), cleanup
2018-02-17 19:15:54 +01:00
rlar
ec68ee7b94
getexpress(), fix lvalues
2018-02-17 19:15:54 +01:00
rlar
9ff93246b6
getexpress(), ia_ptr ==> xiaptr + 1
2018-02-17 19:15:54 +01:00
rlar
47db566181
getexpress(), cleanup
2018-02-17 19:15:54 +01:00
rlar
4402686c69
getexpress(), fix lvalues
2018-02-17 19:15:54 +01:00
rlar
6da6f6a4fd
getexpress(), iptr ==> p + 1
2018-02-17 19:15:54 +01:00
rlar
7509fa17da
getexpress(), transform pscopy(,x,y,) --> pscopy(,x+y,y-y,) (requirement strlen(x) >= y to be verified later)
2018-02-17 19:15:54 +01:00
rlar
0f00fd3043
getexpress(), cleanup
2018-02-17 19:15:54 +01:00
rlar
a47348526c
getexpress(), fix lvalues
2018-02-17 19:15:54 +01:00
rlar
dc8eb2b956
getexpress(), ia ==> ia_ptr - (const) s
2018-02-17 19:15:54 +01:00
rlar
44c5410490
getexpress(), fix lvalue
2018-02-17 19:15:54 +01:00
rlar
632829575b
getexpress(), ls ==> ls_ptr - (const) s
2018-02-17 19:15:54 +01:00
rlar
f19ddf6090
getexpress(), fix lvalues
2018-02-17 19:15:54 +01:00
rlar
c351f2f19b
getexpress(), i ==> iptr - (const) s
2018-02-17 19:15:54 +01:00
rlar
d4098d454b
getexpress(), third argument, `char **pi' instead of `int *pi'
2018-02-17 19:15:54 +01:00
rlar
57b822e0e9
getexpress(), express some constness
2018-02-17 19:15:54 +01:00
rlar
d9a2cec430
getword(), drop s_end argument, which is always == s + strlen(s)
2018-02-17 19:15:54 +01:00
rlar
c5966489c9
getword(), return one less
2018-02-17 19:15:54 +01:00
rlar
f5d686e23c
getword(), cleanup
2018-02-17 19:15:54 +01:00
rlar
51c9f93b7a
getword(), substitue s = s - 1
2018-02-17 19:15:54 +01:00
rlar
f96eb16255
getword(), (s < x) ==> (s - 1 < x - 1)
2018-02-17 19:15:54 +01:00
rlar
cc452a4c90
getword(), transform while loop
2018-02-17 19:15:54 +01:00
rlar
d6801c0cf1
getword(), substitute s = s - 1
2018-02-17 19:15:54 +01:00
rlar
68b0be8caa
getword(), (s <= x) --> (s - 1 < x)
2018-02-17 19:15:54 +01:00
rlar
10aaa7bcc0
getword(), rename variables
2018-02-17 19:15:54 +01:00
rlar
ba4d81b2d9
getword(), reorder args
2018-02-17 19:15:54 +01:00
rlar
6ca0c74cbf
getword(), pass s_end instead of s
2018-02-17 19:15:54 +01:00
rlar
3f24aa4ea0
getword(), cleanup
2018-02-17 19:15:54 +01:00
rlar
d17bcbc276
getword(), change signature
2018-02-17 19:15:54 +01:00
rlar
d3d966b027
getword(), cleanup
2018-02-17 19:15:54 +01:00
rlar
52ec0a262c
getword(), fix lvalue
2018-02-17 19:15:54 +01:00
rlar
2514664f7a
getword(), ls ==> ls_ptr - (const) s
2018-02-17 19:15:54 +01:00
rlar
d5893cd1cb
getword(), fix lvalues
2018-02-17 19:15:54 +01:00
rlar
51dc7037d3
getword(), i ==> iptr - (const) s
2018-02-17 19:15:54 +01:00
rlar
051c3f4137
getword(), third argument, `char **pi' instead of `int *pi'
2018-02-17 19:15:54 +01:00
rlar
6ba5a05905
getword(), drop `after' argument which is identical to `*pi'
2018-02-17 19:15:54 +01:00
rlar
cf9c3fc4f8
getword(), express some constness
2018-02-17 19:15:54 +01:00
rlar
6a72c09b5f
insertnumber(), return char pointer instead of integer index
2018-02-17 19:15:54 +01:00
rlar
34e37f393c
insertnumber(), rename s_ ==> s
2018-02-17 19:15:54 +01:00
rlar
1f15329745
insertnumber(), drop second argument
2018-02-17 19:15:54 +01:00
rlar
9f6173cd0b
insertnumber(), add second arg on invocation
2018-02-17 19:15:54 +01:00
rlar
a2ddc6bf2a
insertnumber(), express some constness
2018-02-17 19:15:54 +01:00
rlar
b41b8e7138
insertnumber(), add `i' on invocation
2018-02-17 19:15:54 +01:00
rlar
160529cf59
insertnumber(), express some constness
2018-02-17 19:15:54 +01:00
rlar
e8bc7df5c3
insertnumber(), emphasize return i + ...
2018-02-17 19:15:54 +01:00
rlar
06501162e5
nupa_substitute(), make use of the transformations
2018-02-17 19:15:54 +01:00
rlar
2a446c2119
nupa_substitute(), use `strncasecmp()'
2018-02-17 19:15:54 +01:00
rlar
c036fa0519
nupa_substitute(), cleanup
2018-02-17 19:15:54 +01:00
rlar
81cb1ed674
nupa_substitute(), drop s_
2018-02-17 19:15:54 +01:00
rlar
5416ecaab9
nupa_substitute(), rename iptr --> s
2018-02-17 19:15:54 +01:00
rlar
18f69116e8
nupa_substitute(), verify `s' beeing unused now
2018-02-17 19:15:54 +01:00
rlar
03abdc65f5
nupa_substitute(), cleanup
2018-02-17 19:15:54 +01:00
rlar
53b23cf4b6
nupa_substitute(), transform pscopy(,x,y,) --> pscopy(,x+y,y-y,) (requirement strlen(x) >= y to be verified later)
2018-02-17 19:15:54 +01:00
rlar
8e69f7e70a
nupa_substitute(), cleanup
2018-02-17 19:15:54 +01:00
rlar
0bea4987c4
nupa_substitute(), fix lvalues
2018-02-17 19:15:54 +01:00
rlar
b47123ac6a
nupa_substitute(), i ==> iptr - (const) s
2018-02-17 19:15:54 +01:00
rlar
b832578f0e
nupa_substitute(), fix lvalues
2018-02-17 19:15:54 +01:00
rlar
ccf34637b3
nupa_substitute(), k ==> kptr - (const) s
2018-02-17 19:15:54 +01:00
rlar
551aae4b05
nupa_substitute(), drop ls
2018-02-17 19:15:54 +01:00
rlar
4af5a78bb5
nupa_substitute(), ls ==> s_end - (const) s
2018-02-17 19:15:54 +01:00
rlar
fb3a1be6a5
nupa_substitute(), express some constness
2018-02-17 19:15:54 +01:00
rlar
aa5d48da3b
nupa_substitute(), drop unused argument `err'
2018-02-17 19:15:54 +01:00
rlar
e212566176
evaluate_variable(), change signature, pass substring instead of string
...
side effect:
string `t' is no longer globally upcased, which is is of no consequence
for the single place where evaluate_variable() is invoked
2018-02-17 19:15:54 +01:00
rlar
3f7951d187
evaluate_expr(), change signature, pass substring instead of string
2018-02-17 19:15:54 +01:00
rlar
7aa3664157
numparam, drop some typedefs
2018-02-17 19:15:54 +01:00
rlar
fa14255fc9
numparam, use `strtoupper()', drop `stupcase()'
2018-02-17 19:15:54 +01:00
rlar
a0a3f48227
numparam/xpressn.c, remove an artifact
2018-02-17 19:15:54 +01:00
rlar
7b175dd1c4
numparam, drop unused `srcfile'
2018-02-17 19:15:54 +01:00
rlar
4f8bef997d
numparam, nupa_signal(), drop useless return value
2018-02-17 19:15:54 +01:00
rlar
5b194f1679
numparam, drop unused stuff
2018-02-17 19:15:54 +01:00
rlar
15e8fab975
numparam, use `trunc()'
2018-02-17 19:15:54 +01:00
rlar
31ca73a6f0
numparam, use `isdigit_c()'
2018-02-17 19:15:54 +01:00
rlar
e88e75a8d4
numparam, use `toupper_c()'
2018-02-17 19:15:54 +01:00
rlar
6d5b968464
numparam, use `tolower_c()'
2018-02-17 19:15:54 +01:00
rlar
3b0a595ecf
numparam/mystring.c, drop defect and unused `ccopy()'
2018-02-17 19:15:54 +01:00
rlar
db8f8fc062
numparam/mystring.c, fix `pscopy()' and `pscopy_up()'
2018-02-17 19:15:54 +01:00
rlar
6a328ef609
numparam, drop `length()'
2018-02-17 19:15:54 +01:00
rlar
15dd80c0e7
numparam, drop `cpos()'
2018-02-17 19:15:54 +01:00
rlar
e324e4aac3
numparam/spicenum.c, use type `bool'
2018-02-17 19:15:54 +01:00
rlar
cd260cf45a
numparam/spicenum.c, stripsomespace(), cleanup
2018-02-17 19:15:54 +01:00
rlar
a9a8afa12d
numparam/xpressn.c, split `evaluate()' into two functions
2018-02-17 19:15:54 +01:00
rlar
6da961c3f1
numparam/xpressn.c, evaluate(), drop local `numeric'
...
and return instantly when formula() reports an error
2018-02-17 19:15:54 +01:00
rlar
7549b3409e
numparam/xpressn.c, abstraction, introduce `double_to_string()'
2018-02-17 19:15:54 +01:00
rlar
6d4fc501bd
numparam/xpressn.c, evaluate_variable(), cleanup `for' loop
2018-02-17 19:15:54 +01:00
rlar
fdfaf0c84a
numparam/xpressn.c, don't mess the case of quoted strings
...
and drop `dico_t.option' which is nowhere set
2018-02-17 19:15:54 +01:00
rlar
23f6d51c67
numparam/xpressn.c, evaluate(), drop local `done' and `lq'
...
no longer limit the length of a quoted string parameter
2018-02-17 19:15:54 +01:00
rlar
e970e8c4ea
numparam/xpressn.c, evaluate(), drop `dt'
2018-02-17 19:15:54 +01:00
rlar
00c3d2f79e
numparam/xpressn.c, drop `getidtype()'
2018-02-17 19:15:54 +01:00
rlar
34040a592d
numparam, #3/3, remove global `nupa_inst_name'
2018-02-17 19:15:54 +01:00
rlar
1bf2590caa
numparam, #2/3, avoid global `nupa_inst_name'
2018-02-17 19:15:53 +01:00
rlar
ca4278685d
numparam, #1/3, avoid global `nupa_inst_name'
2018-02-17 19:15:53 +01:00
rlar
495eef349d
numparam/xpressn.c, nupa_subcktcall(), drop unused `err' argument
2018-02-17 19:15:53 +01:00
rlar
979175fbc6
numparam/xpressn.c, findsubckt(), drop unused `subname' argument
2018-02-17 19:15:53 +01:00
rlar
f42c8d60b4
numparam/spicenum.c, use `copy_substring()'
2018-02-17 19:15:53 +01:00
rlar
49e03cdcb2
numparam, entry_type, #5/5, rewrite to get rid of 'NUPA_SPACE'
...
use fact: 'entry' !== NULL
2018-02-17 19:15:53 +01:00
rlar
c761c74a22
numparam, entry_type, #4/5, drop 'nolookup' which has known value here
2018-02-17 19:15:53 +01:00
rlar
b7b6d9ace3
numparam, entry_type, #3/5, drop unused 'NUPA_POINTER'
...
'NUPA_POINTER' is nowhere assigned to storage
thus 'nupa_type' variables can never have this value
2018-02-17 19:15:53 +01:00
rlar
09d92ba692
numparam, entry_type, #2/5, use a type-checked enum for 'nupa_type'
2018-02-17 19:15:53 +01:00
rlar
6a1c9f934c
numparam, entry_type, #1/5, introduce typedef 'nupa_type'
2018-02-17 19:15:53 +01:00
rlar
21f2187530
numparam/xpressn.c, #5/5, drop unused assignment
2018-02-17 19:15:53 +01:00
rlar
1820f5547f
numparam/xpressn.c, #4/5, use a local 'c' instead of 'dt'
2018-02-17 19:15:53 +01:00
rlar
85f48726ea
numparam/xpressn.c, #3/5, whitespace
2018-02-17 19:15:53 +01:00
rlar
146ca72153
numparam/xpressn.c, #2/5, cleanup, drop 'err' and return early
2018-02-17 19:15:53 +01:00
rlar
303d78f616
numparam/xpressn.c, #1/5, cleanup, rewrite upside down
...
and use known variable values to instantly 'return'
instead of skipping some 'if' bodies
2018-02-17 19:15:53 +01:00
rlar
bc0782aba1
numparam, #4/4, defsubckt(), use struct card * argument
2018-02-17 19:15:53 +01:00
rlar
2a149d7541
numparam, #3/4, nupa_scan(), use struct card * argument
2018-02-17 19:15:53 +01:00
rlar
77da3c6f26
numparam, #2/2, nupa_copy(), use struct card * argument
2018-02-17 19:15:53 +01:00
rlar
19dfaf03f3
numparam, #1/2, nupa_eval(), use struct card * argument
2018-02-17 19:15:53 +01:00
rlar
ee489599cb
struct card, #6/6, drop some redundant casts
2018-02-17 19:15:53 +01:00
rlar
4ec2717079
struct card, #5/6, rewrite from type "card" to "struct card"
2018-02-17 19:15:53 +01:00
rlar
10a353ebf4
struct card, #4/6, drop typedef card
...
For readability and to allow variables to have the name "card"
(avoid name collision with typedef "card")
2018-02-17 19:15:53 +01:00
rlar
511cdd7188
struct card, #3/6, rename members from struct line to struct card
2018-02-17 19:15:53 +01:00
rlar
981fed70ca
struct card, #2/6, drop struct line
...
struct line is an overlay of struct card.
2018-02-17 19:15:53 +01:00
rlar
8d93511a96
struct card, #1/6, minor cleanup
2018-02-17 19:15:53 +01:00
rlar
121a46f9cb
frontend/com_alias.c, asubst(), bug fix
...
wl_word can not be incremented,
this is a pointer to malloc'ed space
and will eventually be free'ed
2018-02-17 15:30:06 +01:00
rlar
41c0ee45a2
introduce GENinstanceFree() and GENmodelFree()
...
To abstract away the business of releasing the memory
of a struct GENmodel or struct GENinstance.
2018-02-17 11:53:07 +01:00
rlar
8c7d7051ae
GENmodel, GENinstance, change layout, #4/4, complete the change
...
currently each and every device specific instance and model structure
duplicates the memory layout of a struct GENmodel / GENinstance
further the first structure elements behind a GENinstance header
are reinterpreted as a sort of a generic "node" array.
This business is very error prone, and makes it difficult to
extend struct GENmodel / struct GENinstance.
This patch makes this business much more bearable.
2018-02-17 11:53:06 +01:00
rlar
2c9bfecbad
GENmodel, GENinstance, change layout, #3/4, coccinelle semantic patch
2018-02-17 11:53:05 +01:00
rlar
c25aea6815
GENmodel, GENinstance, change layout, #2/4, complete the change
...
fix the .xml files too
2018-02-17 11:53:03 +01:00
rlar
2dcb79d09c
GENmodel, GENinstance, change layout, #1/4, coccinelle semantic patch
2018-02-17 11:53:01 +01:00
rlar
4748c92de9
DEVdestroy(), change API, #2/2, complete the change, inclusive CKTdestroy()
...
loop over DEVmodDelete() and DEVdelete() in CKTdestroy()
instead of doing this business in the DEVdestroy() functions.
As a consequence, most DEVdestroy() functions
collapse completely.
2018-02-17 11:52:59 +01:00
rlar
1befa488f6
DEVdestroy(), change API, #1/2, coccinelle semantic patch
2018-02-17 11:52:58 +01:00
rlar
b29ad51a6c
DEVdestroy(), move code over to DEVmodDelete() and DEVdelete()
...
This patch itself is not valid until all invokers of DEVdestroy()
(currently this is CKTdestroy() exclusively)
are rewritten to invoke DEVmodDelete() and DEVdelete()
2018-02-17 11:52:55 +01:00
rlar
3cd81295a8
DEVmodDelete(), change API, #2/2, complete the change
...
Instead of searching and then deleting a given device-model,
just delete the given model.
The search shall be done somewhere else.
Don't free the model struct itself,
this shall be done by the invoker himself.
Don't free the device instrance list,
this shall be done by the invoker himself.
As a consequence, most DEVmodDelete() functions
collapse almost completely.
This change is of no consequence,
because DEVmodDelete() is currently nowhere used.
2018-02-17 11:52:53 +01:00
rlar
b17ee71576
DEVmodDelete(), change API, #1/2, coccinelle semantic patch
2018-02-17 11:52:51 +01:00
rlar
50e9a8c3b6
DEVmodDelete(), extend ASRCdelete() and use it in ASRCmDelete()
...
rip instance specific cleanup business from the ASRCmDelete() function.
move this to ASRCdelete()
2018-02-17 11:52:49 +01:00
rlar
c3ed42f486
DEVdelete(), change API, #2/2, complete the change
...
Instead of searching and then deleting a given device-instance,
just delete the given instance.
The search shall be done somewhere else.
Don't free the instance struct itself,
this shall be done by the invoker.
As a consequence most DEVdelete() functions
collapse almost completely.
This change is of no consequence,
because DEVdelete() is currently nowhere used.
2018-02-17 11:52:46 +01:00
rlar
e0f1e5a3de
DEVdelete(), change API, #1/2, coccinelle semantic patch
2018-02-17 11:52:44 +01:00
rlar
a8e440eabe
whitespace cleanup, comments cleanup, line wrap
2018-02-14 18:53:30 +01:00
rlar
ec4b7ffecd
adms/admst/ngspiceMODULE*.c.xml, drop "register" declaration
2018-02-12 17:56:00 +01:00
rlar
57f9804db6
devices/adms/admst/ngspiceMODULEdel.c.xml, bug fix, endless loop
...
A missing update of "prev" would cause endless looping
when searching for a device instance.
introduced in commit:
> commit 38e68869a2
> Date: Wed Mar 1 14:30:24 2006 +0000
>
> Added mdel, del and dest functions to interface.
2018-02-12 17:55:59 +01:00
rlar
cd95ad62f2
devices/ndev/ndevdel.c, remove a redundant `return'
2018-02-12 17:55:58 +01:00
rlar
efbb7badbc
extend commit: spicelib/devcies/*dest.c, rewrite DEVdestroy() functions
...
rewrite admst/ngspiceMODULEdest.c.xml too, see commit
> commit 4d79617cf1
> Date: Fri Jul 29 22:22:16 2016 +0200
>
> spicelib/devcies/*dest.c, rewrite DEVdestroy() functions
2018-02-12 17:55:57 +01:00
rlar
88c50afcd9
parser/inpdpar.c, #6/6, cleanup, introduce find_instance_parameter()
2018-02-03 17:54:15 +01:00
rlar
cf0c9eac06
parser/inpdpar.c, #5/6, cleanup, use a local `IFparm *'
2018-02-03 17:54:06 +01:00
rlar
f88cfa5d55
parser/inpdpar.c, #4/6, cleanup, use a local `IFdevice *'
2018-02-03 17:53:57 +01:00
rlar
36f3263727
parser/inpdpar.c, #3/6, cleanup, whitespace
2018-02-03 17:53:48 +01:00
rlar
4140af6d29
parser/inpdpar.c, #2/6, cleanup, use a 'switch'
2018-02-03 17:53:38 +01:00
rlar
eb86a66146
parser/inpdpar.c, #1/6, cleanup, search, break then process
2018-02-03 17:53:28 +01:00
rlar
bdf6091da7
parser/inpgmod.c, #6/6, cleanup, introduce find_model_parameter()
2018-02-03 17:29:33 +01:00
rlar
45e98db44c
parser/inpgmod.c, #5/6, cleanup, loop with a `IFparm *'
2018-02-03 17:29:32 +01:00
rlar
b75aba17a4
parser/inpgmod.c, #4/6, cleanup, use a local `IFdevice *'
2018-02-03 17:29:32 +01:00
rlar
63df147cdb
parser/inpgmod.c, #3/6, cleanup, local variables
2018-02-03 17:29:32 +01:00
rlar
ac34d19c94
parser/inpgmod.c, #2/6, cleanup, fuse the if's
2018-02-03 17:29:32 +01:00
rlar
edceabbb54
parser/inpgmod.c, #1/6, cleanup, search, break then process
2018-02-03 17:29:30 +01:00
rlar
6c71fef6f6
parser/inpgmod.c, create_model(), drop obfuscated 'txl' processing
...
Dependent on given R and L parameter values,
"txl" models might be transformed to "cpl" models in INPdomodel().
This would cause a "unrecognized parameter" warning in create_model()
when searching for the "txl" flag in the "cpl" model,
which is avoided with some awkward extra processing in inpgmod.c
This commit removes this special processing
by addition of an "alias" parameter "txl" to the
"cpl" module parameter description CPLmPTable[] in "cpl.c"
Note,
setModelParm() is a no-op for "cpl" and "txl"
see case CPL_MOD_R in
function CPLmParam()
and case TXL_MOD_R in
function TXLmParam()
2018-02-03 15:55:22 +01:00
rlar
aa27c8969c
parser/inpgmod.c, fix an almost bug, (level=...)
...
When 'level' is a valid model parameter,
then it was processed like any other parameter,
but additionally the
`if (strcmp(parm, "level") == 0)'
invoked INPgetValue() a second time.
This special processing is meant to allow "level" for all models
whether they make use of it or not.
The excess invocation of INPgetValue() didn't cause harm,
merely because the next token after the "level=number"
almost necessarily is a string (the beginning "name=" of the next assignment)
thus not a parse-able number,
thus the second INPgetValue() didn't modify the 'line' pointer.
To sanitise the code invoke the "level" skipping only if "level"
is not recognised as a valid model parameter.
2018-02-03 15:39:20 +01:00
rlar
668123ae44
analysis/cktpname.c, #4/4, cleanup
2018-02-03 13:17:17 +01:00
rlar
30550370fb
analysis/cktpname.c, #3/4, cleanup obfuscated loop termination
2018-02-03 13:16:40 +01:00
rlar
d85ceb85cb
analysis/cktpname.c, #2/4, cleanup, use a local `IFparm *'
2018-02-03 13:16:12 +01:00
rlar
1d60387617
analysis/cktpname.c, #1/4, cleanup, use a local `IFdevice *'
2018-02-03 13:16:01 +01:00
rlar
fbc1f37b36
mif/mifdelete.c, fix commit: xspice, implement "CALLBACK"
...
MIFdelete() might be called with third arg being NULL,
searching for the instance to be deleted by name only.
Need to invoke the callback in this case too.
2018-02-03 12:20:23 +01:00
rlar
e311096429
gendef.h, get rid of awkward counted GENnode macros
2018-02-03 11:46:24 +01:00
rlar
018a2d0e2f
devices/*, unify, add missing instance struct member 'GENstate'
...
to the generic part of all instance structs, even when actually unused.
see GENstate in "gendefs.h"
2018-02-03 11:46:24 +01:00
rlar
9f68d8cd68
devices/*, fix spelling of some struct members
2018-02-03 09:46:13 +01:00
rlar
f53384da70
devices/*, USE_OMP, cleanup 'InstanceArray' usage
...
store 'InstanceArray' in the very first module only,
NULL it in any other.
FREE() it in every module to treat them all the same in XXXdestroy()
2018-02-02 23:03:55 +01:00
rlar
93b62297d8
devices/mos6, add missing files mos6del.c and mos6mdel.c
...
this is a plain copy from mos3
2018-02-02 22:53:43 +01:00
rlar
fb6b4adaa5
devices/bsimsoi/b4soidest.c, fix commit: "OpenMP for B4SOI version 4.3.1"
...
> commit 39c98ad798
> Date: Fri Jul 2 09:35:05 2010 +0000
>
> OpenMP for B4SOI version 4.3.1
2018-02-02 22:35:59 +01:00
rlar
3763f9914e
devices/nbjt/nbjtdefs.h, fix commit: "mark end of struct GENmodel overlay"
...
> commit 3794c1eb20
> Date: Sat Jun 22 18:40:48 2013 +0200
>
> mark end of struct GENmodel overlay
2018-02-02 22:24:10 +01:00
rlar
caf3115733
cleanup, emphasise CKTrhs being an array
...
when accessing slot [0]
2018-01-29 19:51:13 +01:00
Holger Vogt
560cb6e970
plotting/grid.c, bug fix, avoid string buffer overflow
...
Prevent a crash of example/FFT_test.cir.
Buffer 'buf' in function drawlingrid() has been too small.
Increase 'buf' size, and add some protection.
The example file examples/plot/test-small-plot.cir
shows the limits of plotting:
difference in two numbers at digit 14 is plotted well.
at digit 15 is plotted with bugs.
at digit 16 is reduced to integer.
consider compiling with
-O1 -D_FORTIFY_SOURCE=2
for gcc, and
/GS
for visual studio.
2018-01-27 21:58:15 +01:00
rlar
c892b2d460
analysis/acan.c, check for valid startfreq
...
an 'ac dec' or 'ac oct' can not have a startfreq <= 0
2018-01-20 10:55:26 +01:00
rlar
c5d8ad792e
analysis/acsetp.c, ac analysis, allow frequency=0
2018-01-15 19:04:52 +01:00
rlar
57a0a5dec0
devices/bjt/bjttemp.c, bug fix, capacity temperature dependency
...
Fix a very old bug in the implementation of the
gummel-poon model formulas for the junction capacities.
(already in spice3f4)
For unknown reasons, the same formulas in the
diode mos1 mos2 mos6 jfet models
have been implemented correctly right from the beginning,
the typo was bjt specific.
Many Thanks for the concise and precise Bug Report
provided by Schabo Rumanus on the ngspice-users mailing list
> To: ngspice-users@lists.sourceforge.net
> Subject: [Ngspice-users] Temperatursimulation von Sperrschichtkapazitäten
Many Thanks to Dietmar Warning for his thorough verification
of this commit.
2017-12-20 18:02:13 +01:00
rlar
f0159cbd0b
numparam/spicenum.c, stripbraces(), bug fix
...
overwriting SPICE_DSTRING `dstr_p' may invalidate `s'
This bug was injected with the introduction of SPICE_DSTRING in :
> commit 76feebbbfa
> Date: Thu Feb 25 21:43:03 2010 +0000
> various bug fixes
2017-11-13 20:36:49 +01:00
rlar
84761c125f
fix erfc() usage in cider
...
cider relied on our broken ngspice variant of erfc() which behaved as
erfc_ngspice(x) = erfc(fabs(x))
Note:
apart from cider, erfc is used in
devices/ltra/ltramisc.c
always with positive argument
and
src/frontend/spec.c
again always with positive argument
Thus, the difference in implementation
never mathered anywhere except in cider
2017-10-28 12:38:36 +02:00
rlar
c900cc8824
drop ngspice internal implementation of erfc()
...
which these days is guaranteed to be provided by <math.h>
note,
our own implementation was incorrect anyway.
it evaluated to
erfc_ngspice(x) = erfc(fabs(x))
2017-10-28 12:38:32 +02:00
rlar
ca57447f6c
fix commit "devices/bsim3v32: apply Area Calculation Method (ACM) to the bsim3v3.2.4 model"
...
which moved processing of several parameters into a new function
ACM_SourceDrainResistances()
but did so incompletely.
As a consequence the matrix footprint was not correctly modified
when source or drainresistance is zero
Thanks for the bug report by "Sto" in message
> bug: mosfet models with deliberate NRD=0 (ngspice-27)
https://sourceforge.net/p/ngspice/discussion/133842/thread/fa39228d
2017-10-21 20:22:43 +02:00
Holger Vogt
f868418d13
ACM_SourceDrainResistances(), fix misleading signature
...
This function does return resistance, not conductance.
2017-10-21 20:21:34 +02:00
rlar
57f3d35ddc
devices/res, #6/6, rename variables back to their original names
...
strip the X in RESconductX, REScurrentX, RESacConductX
2017-10-21 19:05:28 +02:00
rlar
93ab0fb0e0
devices/res, #5/6, RESconduct, include RESm
...
Henceforward RESconduct (renamed to RESconductX) shall include factor RESm.
That's a mere rewrite and doesn't change functionality.
2017-10-21 19:05:28 +02:00
rlar
afd5147f98
devices/res, #4/6, RESacConduct, include RESm
...
Henceforward RESacConduct (renamed to RESacConductX) shall include factor RESm.
That's a mere rewrite and doesn't change functionality.
2017-10-21 19:05:28 +02:00
rlar
6941c43673
devices/res, #3/6, RESacConduct, collect RESm
...
Reshape the sourcecode to emphasize the RESm * RESacConduct affiliation.
That's a mere rewrite and doesn't change functionality.
2017-10-21 19:05:28 +02:00
rlar
7edd241e96
devices/res, #2/6, RESconduct, collect RESm
...
Reshape the sourcecode to emphasize the RESm * RESconduct affiliation.
That's a mere rewrite and doesn't change functionality.
2017-10-21 19:05:28 +02:00
rlar
5b23f0c684
devices/res, #1/6, REScurrent, include RESm
...
Henceforward REScurrent (renamed to REScurrentX) shall include factor RESm.
That's a mere rewrite and doesn't change functionality.
2017-10-21 19:05:28 +02:00
rlar
f73a353d6b
devices/res/resnoise.c, cleanup using pow()
2017-10-21 19:05:28 +02:00
rlar
abb07c4306
devices/res/restemp.c, RESupdate_conduct(), avoid excess warnings
...
This function is invoked several times during initialisation,
possibly with yet incomplete model and instance parameter settings.
And it might be invoked many times during dc sweep.
2017-10-21 19:05:28 +02:00
rlar
cffab98882
devices/res/resparam.c, bug fix, alter resistance not honoured when resuming a transient simulation
...
When "alter" is invoked after a break-point stopped a transient simulation,
then it might be necessary to update RESconductance
before continuing the transient simulation.
Thanks for the bug report to An Zou
in message "alter resistor value" on the ngspice-users forum
https://sourceforge.net/p/ngspice/discussion/133842/thread/33ce6855/
2017-10-21 19:05:28 +02:00
rlar
0e1294b3b5
devices/res/resparam.c, whitespace and parenthesis
2017-10-21 19:05:27 +02:00
rlar
0a48e6f2a7
devices/res, introduce RESupdate_conduct()
...
which will be usefull later
2017-10-21 19:05:27 +02:00
rlar
0af576a7d8
devices/res/resask.c, bug fix, set and query of RESresist and RESacResist shall comute
...
Note:
RESresist and RESacResist are device parameters
they do not reflect effective resistance when "ask"'ed
(don't reflect tc1, tc2, tce, m, scale, temp ...)
RESconduct and RESacConduct are "query-only" parameters
these report the effective conductance when "ask"'ed
(including tc1, tc2, tce, m, scale, temp ...)
2017-10-21 19:05:27 +02:00
rlar
1c5e954b47
devices/res, bug fix, semantics of "short" and "narrow", aka "dlr" and "dw"
...
These need to be subtracted from both sides
2017-10-21 19:05:27 +02:00
Fabio Rossi
4c503c1e47
src/tclspice.c, bug fix, broken trimming of the "spice::" namespace
...
Due to a missing break in the for(;;) loop,
causing the loop to walk beyond end of string argv[0],
causing random behaviour.
2017-10-19 17:58:02 +02:00
rlar
91c60c28df
whitespace change, avoid gcc warnings due to missleading indentation
2017-09-16 20:38:27 +02:00
h_vogt
b3827f6488
gnuplot.c, correct the setting of limits in log plots
2017-09-16 20:37:24 +02:00
dwarning
2fd3c4d94f
fix the still existing wrong array access in psd smooth routine
2017-09-05 11:28:14 +02:00
h_vogt
ca3a9bb648
com_fft.c, correct scaling and filtering for PSD
2017-09-01 23:16:25 +02:00
dwarning
0ef666ea26
com_psd: Correct the special handling of dc and nyquist component in fftw branch
2017-08-26 17:20:19 +02:00
dwarning
2377d3a64f
fix wrong write and read in not allocated memory
2017-08-22 11:53:20 +02:00
dwarning
b8a9ca9df4
correct the fft scaling for real input and complex output vector
2017-08-16 21:35:41 +02:00
h_vogt
060e0037f8
main.c, add USERPROFILE to search path for .spiceinit
...
search sequence: current directory, HOME, USERPROFILE
2017-08-12 18:27:11 +02:00
h_vogt
3814201d13
Add function read_initialisation_file().
...
extend search path for .spiceinit, search sequence now is:
current directory, user HOME directory, user USERPROFILE directory
2017-08-12 18:03:54 +02:00
h_vogt
07ea6466ad
configure option --enable-relpath
...
add relative path ../lib to spinit for codemodels
and search path in ivars.c, independently from
install path which has to be an absolute path
2017-08-12 17:37:19 +02:00
dwarning
a1d27b4257
dio, introduce qd as an alias for diode charge to get the right unit in plotting
2017-08-03 17:03:10 +02:00
dwarning
14fc59b83d
bjt, jfet, vbic, dio: allow plotting of small signal parameter like charges, capacitances and conductances in dc sweeps
2017-08-03 17:03:01 +02:00
rlar
0db861e4a6
device.c, bug fix commit "device.c, #8/19, use parent wordlist ..."
...
This commit did rely on the existence of a parent 'wordlist' element,
usually guranteed by a leading "alter" or "altermod" command word.
But 'inp_evaluate_temper()' passes a wordlist without any parent word
when invoking 'com_altermod()'
2017-07-30 12:17:43 +02:00
rlar
5542f2ec10
dio/diotemp.c, drop DIOgradingCoeff limit
...
Used to be limited to a maximum of 0.9
Varactors may need much larger values.
Thanks to Wang You for hinting to this ancient relict.
2017-07-29 19:15:40 +02:00
dwarning
998495c11b
prevent wrong version selection if model parameter is given in exponential format
2017-07-13 09:25:04 +02:00
rlar
043d3b4f6d
device.c, #19/19, whitespace
2017-07-06 17:56:23 +02:00
rlar
aa50718573
device.c, #18/19, polish comments
2017-07-06 17:56:22 +02:00
rlar
b4b32e2b93
device.c, #17/19, drop unused assignment to 'eqword'
2017-07-06 17:56:22 +02:00
rlar
fac04193e5
device.c, #16/19, shrink scope of variable 'p'
2017-07-06 17:56:22 +02:00
rlar
3eda944db5
device.c, #15/19, make use of 'wl_find()'
2017-07-06 17:56:22 +02:00
rlar
20c303eb8b
device.c, #14/19, drop variable 'wl2', can use 'wl' instead
2017-07-06 17:56:22 +02:00
rlar
e8ebfb115e
device.c, #13/19, drop artificial rewind to the beginning of the list
2017-07-06 17:56:22 +02:00
rlar
79cc996a93
device.c, #12/19, shrink scope of variable 'wlen' and 'maxelem'
2017-07-06 17:56:22 +02:00
rlar
c2c4683b4b
device.c, #11/19, shrink scope of variable 'wlin'
2017-07-06 17:56:22 +02:00
rlar
b817ca8cf7
device.c, #10/19, drop unused assignment to 'wl2'
2017-07-06 17:56:21 +02:00
rlar
9085084ccb
device.c, #9/19, drop variable 'rhs'
2017-07-06 17:56:21 +02:00
rlar
1ff0500117
device.c, #8/19, use parent wordlist to restore beginning of the list
2017-07-06 17:56:21 +02:00
rlar
01039f81a2
device.c, #7/19, use a local wordlist *wn
2017-07-06 17:56:21 +02:00
rlar
50dd15093e
device.c, #6/19, this 'wl2' wont be used anywhere
2017-07-06 17:56:21 +02:00
rlar
26f7a0e04e
device.c, #5/19, drop 'eqfound', equivalent to 'wl != NULL'
2017-07-06 17:56:21 +02:00
rlar
3f09ab6634
device.c, #4/19, loop wont be executed, and 'step' wont be used any more
2017-07-06 17:56:21 +02:00
rlar
3baaa57d18
device.c, #3/19, move some code up
2017-07-06 17:56:21 +02:00
rlar
670d87a589
device.c, #2/19, 'wl' will not be used any more
2017-07-06 17:56:21 +02:00
rlar
1eca384a94
device.c, #1/19, can 'break' here, because 'wl' is NULL
2017-07-06 17:56:04 +02:00
h_vogt
761f3915f5
device.c, 'alter', don't insert empty "" token
...
when entering ' =' or '= ' in interactive mode
2017-07-06 17:55:06 +02:00
h_vogt
d06f39f67d
device.c, bug #342 , prevent crash when using 'alter'
...
#342 SegFault alter command
https://sourceforge.net/p/ngspice/bugs/342/
2017-07-06 17:55:02 +02:00
rlar
9ddd1d7d40
fix commit: inp2q.c, #18/23, rewrite, combine two 'for' loop's
...
which replaced a INPgetNetTok() by INPgetTok()
causing a bug when handling special node names
for example this case
q1 /c /c 0 npnmodel
2017-07-05 21:09:30 +02:00
rlar
2b17f3292d
inpcom.c, inp_add_control_section(), upside down for readability
2017-06-25 14:37:13 +02:00
rlar
76bbaf4ac3
inpcom.c, inp_sort_params(), use insert_deck()
2017-06-25 14:37:13 +02:00
rlar
a26ec804cb
inpcom.c, inp_reorder_params_subckt(), introduce insert_deck()
2017-06-25 14:37:13 +02:00
rlar
c285602105
inpcom.c, inp_reorder_params_subckt(), reorder
2017-06-25 14:37:13 +02:00
rlar
bc62407226
inpcom.c, drop unused artefact xx_new_line()
2017-06-25 13:40:01 +02:00
rlar
1afa04b2d1
inpcom.c, insert_new_line(), inline xx_new_line()
2017-06-25 13:39:56 +02:00
rlar
5c7c278c3d
inpcom.c, inp_fix_subckt(), #4/4, drop redundant initialisations
2017-06-25 13:39:48 +02:00
rlar
c3e2c920ef
inpcom.c, inp_fix_subckt(), #3/4, drop 'last_param_card'
2017-06-25 13:39:41 +02:00
rlar
2aafc50608
inpcom.c, inp_fix_subckt(), #2/4, use insert_new_line()
2017-06-25 13:39:34 +02:00
rlar
dda35ef2a5
inpcom.c, inp_fix_subckt(), #1/4, rewrite 'append'
2017-06-25 13:39:27 +02:00
rlar
e75f48d91f
inpcom.c, insert_new_line(), allow NULL head
2017-06-25 13:00:39 +02:00
rlar
5ff5839296
inpcom.c, inp_stitch_continuation_lines(), rewrite for the following commit
2017-06-25 12:58:50 +02:00
rlar
420c023f56
inpcom.c, introduce insert_new_line()
...
use it to replace this pattern
foo = bar->li_next = xx_new_line(bar->li_next, ...);
with
foo = insert_newline(bar, ...);
2017-06-25 12:57:18 +02:00
rlar
38183b6167
inpcom.c, expand_section_ref(), #7/7, cleanup
2017-06-25 12:10:01 +02:00
rlar
dd155dd83e
inpcom.c, expand_section_ref(), #6/7, drop 'rest'
2017-06-25 12:09:21 +02:00
rlar
0f8fb4cf51
inpcom.c, expand_section_ref(), #5/7, drop 'newl'
2017-06-25 12:04:16 +02:00
rlar
a77db80a85
inpcom.c, expand_section_ref(), #4/7, drop 'cend', use 'c' instead
2017-06-25 12:03:39 +02:00
rlar
0c94a651ee
inpcom.c, expand_section_ref(), #3/7, simplify
2017-06-25 12:02:26 +02:00
rlar
26d878748d
inpcom.c, expand_section_ref(), #2/7, t == section_def ==> cend == c
2017-06-25 12:01:34 +02:00
rlar
7f2cf192b6
inpcom.c, expand_section_ref(), #1/7, cend != NULL === t != section_def
2017-06-25 12:00:07 +02:00
rlar
a51c1aba2c
inpcom.c, inp_read(), #2/2, rewrite xx_new_line() insertion
...
using the fact
end->li_next === NULL
2017-06-24 22:03:03 +02:00
rlar
5c3dac41d9
inpcom.c, inp_read(), #1/2, rewrite 'append' to 'end'
2017-06-24 22:01:03 +02:00
rlar
ed39305da0
inpcom.c, inp_add_series_resistor(), simplify xx_new_line() insertion
2017-06-24 20:30:04 +02:00
rlar
9eddd1d80f
inpcom.c, inp_add_control_section(), #2/2, rewrite xx_new_line() insertion
2017-06-24 20:15:02 +02:00
rlar
4ad53f0de8
inpcom.c, inp_add_control_section(), #1/2, emphasise two assertions
2017-06-24 20:12:55 +02:00
rlar
4ff9c0c166
inpcom.c, inp_chk_for_multi_in_vcvs(), #6/6, drop 'model_card'
2017-06-24 19:44:35 +02:00
rlar
d773b73f76
inpcom.c, inp_chk_for_multi_in_vcvs(), #5/6, drop 'next_card', deploy its value temporarily in the new line's li_next slot
2017-06-24 19:44:11 +02:00
rlar
3b55d2af40
inpcom.c, inp_chk_for_multi_in_vcvs(), #4/6, drop 'a_card', reuse the unused 'c' instead
2017-06-24 19:43:34 +02:00
rlar
634b012492
inpcom.c, inp_chk_for_multi_in_vcvs(), #3/6, xx_new_line() shall fill the li_next slot
2017-06-24 19:40:48 +02:00
rlar
e9e9e5d55e
inpcom.c, inp_chk_for_multi_in_vcvs(), #2/6, move code downwards
2017-06-24 19:40:38 +02:00
rlar
c83b0544de
inpcom.c, inp_chk_for_multi_in_vcvs(), #1/6, skip lines
2017-06-24 19:40:27 +02:00
rlar
e81560de1a
inpcom.c, drop the local 'new_line' variable
2017-06-24 19:11:22 +02:00
rlar
b21b4170b2
inpcom.c, simplify the insertion of new lines/decks quite a bit
2017-06-24 19:11:21 +02:00
rlar
2972953336
inpcom.c, reorder initialisation
...
initialise param_beg and param_end before they will be used,
instead of "afterwards" in preparation for the next following usage.
and move the "comment out" up some lines, think that way:
comment out original line, append new line, ...
2017-06-24 18:16:48 +02:00
h_vogt
5d82d1b04a
misccoms.c, com_quit(), don't free memory, unless shared ngspice
...
Traversing all linked memory structures to free their memory
can be a somewhat lengthy business, especially in xspice,
which is not worth the effort when we simply want to exit()
Long delays have been reported in certain cases.
For developers and for the usage of such tools as valgrind,
we still free all the memory if 'set ngdebug' is given.
2017-06-24 17:55:26 +02:00
rlar
b2621174d3
inpgmod.c, plug a memory hole
...
Reported and fixed by Marek Bielik in message:
Subject: [Ngspice-devel] Memory leaks fix
Date: Tue, 18 Apr 2017 16:16:21 +0000
2017-06-24 17:49:07 +02:00
h_vogt
7489a37973
inpgval.c, inpdpar.c, beautify the code
2017-06-06 17:05:22 +02:00
h_vogt
fa6e21dd3a
inpgval.c, INPgetValue(), use INPgetNetTok() instead of INPgetTok()
...
To fix a bug reported by Clyde Shappee in
Subject: Problem with pole zero analysis and net names
https://sourceforge.net/p/ngspice/discussion/127605/thread/14338e7e/
When using node names with a leading slash '/'
on the "pz" analysis command line.
2017-06-06 16:51:32 +02:00
rlar
a6a3d884ee
fix commit "mifsetup.c, MIFunsetup(), #1/3 delete broken code"
...
which silently dropped the
here->initialized = MIF_FALSE
aspect of the MIFunsetup() function
which caused segfault in testcase
examples/memristor/memristor_x.sp
2017-06-06 16:42:32 +02:00
Tim Edwards
fd79197fc0
xspice/icm/digital, introduce d_genlut
...
a digital n-input x m-output look-up table gate
2017-05-01 22:11:24 +02:00
Tim Edwards
8ae3b84c7c
xspice/icm/digital, introduce d_lut
...
a digital n-input look-up table gate
2017-05-01 22:11:04 +02:00
h_vogt
37fe5308d3
xspice/icm/table, introduce table2d/table3d
...
which allows to model devices based upon linear interpolation
2017-04-30 17:00:15 +02:00
rlar
a7cc37b2e2
ifparm, fix numdev too
2017-04-19 19:18:13 +02:00
h_vogt
cc8fb86411
diotemp.c, set lower limit of saturation current 'is' to epsmin
2017-04-19 18:57:20 +02:00
h_vogt
c82ee9d949
introduce option "epsmin"
...
To define a minimum argument for some log() function invocations.
(most notably for the diode saturation current 'is')
2017-04-19 18:56:00 +02:00
dwarning
78cc48575b
prevent warnings for double declared variables
2017-04-17 20:53:30 +02:00
rlar
2f329bd8b4
N_MXVLNTH, drop noise variable name limitation
2017-04-15 17:21:24 +02:00
h_vogt
306ada7dd0
inpcom.c, get_model_type(), use gettok_noparens() to extract model type
...
Takes care of model descriptions in parentheses like
d(...)
2017-04-12 22:00:07 +02:00
h_vogt
1ffb957e6c
inpcom.c, inp_fix_subckt_multiplier(), cleanup, using strchr()
2017-04-12 21:48:13 +02:00
rlar
2f1219811e
src/spicelib/devices/*/*set.c, XXXunsetup(), reset local node variables unconditionally
...
and use a more robust test for local node numbers.
That is, transform this pattern :
if (here->Node && ...) {
CKTdltNNum(ckt, here->Node);
here->Node = 0;
}
into this :
if (here->Node > 0 && ...)
CKTdltNNum(ckt, here->Node);
here->Node = 0;
The change of "!= 0" ==> "> 0" accounts for rare cases where "Node"
might have been set to -1, (meaning "unconnected")
The unconditional execution of the zero assignment is for those cases
where "Node" might have been assigned to some external or other local Node.
If so, the variable would not be set to zero, confusing the "guarding" if's
in the corresponding XXXsetup() routine.
The Pattern to follow is:
1) unset and delete *all* local Nodes in XXXunsetup()
2) allocate all of them again in a re-invocation of XXXsetup(),
exactly the same way as in the very first invocation.
2017-04-12 21:34:05 +02:00
rlar
00c743c37d
src/spicelib/devices/*/*def*.h, declare external node variables const
...
for almost all other external nodes (notable exception "txl")
src/spicelib/devices/*/*def*.h, declare external node variables const
1) The compiler shall emit an error message if we still mess around
with external node numbers.
2) To mark which elements of the instance struct are meant to be set
externally when parsing the netlist
These "external" node variables are exclusively set via the
overlay struct GENinstance, member GENnode[]
We shall not mess around with these "external" node variables
because it would get rather difficult to avoid bugs considering
re-invocation of the XXXsetup() routine.
This gets interesting for devices with optional ports,
which get copied around depending on the amount of connected ports.
2017-04-12 21:34:02 +02:00
rlar
0e9576cb34
src/spicelib/devices/*/*set.c, missing CKTdltNNum() invocations, complex cases
...
All locally created nodes (CKTmk..() invocations in XXXsetup())
must be deleted in XXXunsetup()
Otherwise CKTmk..() invocations during a following CKTsetup()
will re-emit still used node numbers,
thus accidentally shorting nodes.
This patch fixes the complex cases,
which are external node variables (ports of the instance),
which might be moved over to other external node variables
to cope with optional port connections.
This is fixed by copying the node numbers to local shadow variables
to avoid messing with the external nodes.
Otherwise a following CKTsetup() might again meddle with the external
node variables, at least causing considerable confusion, probably causing
hard to find bugs.
2017-04-12 21:34:00 +02:00
rlar
c0921250b7
src/spicelib/devices/*/*set.c, missing CKTdltNNum() invocations, medium cases
...
All locally created nodes (CKTmk..() invocations in XXXsetup())
must be deleted in XXXunsetup()
Otherwise CKTmk..() invocations during a following CKTsetup()
will re-emit still used node numbers,
thus accidentally shorting nodes.
This patch fixes a little bit more complex cases,
which are local node variables which will start with value 0
and eventually be set with the result of a CKTmk..() invocations,
but might as well receive a node number from another node variable.
Here CKTdltNNum() must not be invoked if the node number is merely
a copy from another node variable.
2017-04-12 21:33:59 +02:00
rlar
1fd14fa2ee
src/spicelib/devices/*/*set.c, missing CKTdltNNum() invocations, simple cases
...
All locally created nodes (CKTmk..() invocations in XXXsetup())
must be deleted in XXXunsetup()
Otherwise CKTmk..() invocations during a following CKTsetup()
will re-emit still used node numbers,
thus accidentally shorting nodes.
This patch fixes the simple cases,
which are local node variables which will start with value 0
and eventually be set with the result of a CKTmk..() invocation.
More complex cases evolve, if such a local variable might receive
a node number which origins from another node, or the netlist itself.
2017-04-12 21:33:58 +02:00