Commit Graph

4967 Commits

Author SHA1 Message Date
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