From 4e2f666b7effb831f844a3e09c176b025f6d0cc2 Mon Sep 17 00:00:00 2001 From: pnenzi Date: Fri, 26 Dec 2003 11:01:21 +0000 Subject: [PATCH] Added old code to jfetload.c ad updated documentation. --- ChangeLog | 6 ++- DEVICES | 1 + src/spicelib/devices/jfet/jfetload.c | 72 ++++++++++++++++++++++++++++ 3 files changed, 78 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 61426abcd..5e6a6b538 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,11 @@ 2003-12-26 Paolo Nenzi - * src/spicelibe/devices/jfet/*: Added parallel multiplier and + * src/spicelib/devices/jfet/*: Added parallel multiplier and "dtemp" parameter. + + * src/spicelib/devices/jfet/jfetload.c: reintroduces the old model + code, superseded by Sydney code (Parker Skellern). The code is + not useed but is left as reference. * DEVICES: Updated jfet status diff --git a/DEVICES b/DEVICES index 95cd80a8d..4c4b4a335 100644 --- a/DEVICES +++ b/DEVICES @@ -181,6 +181,7 @@ JFET - Junction Field Effect transistor Enhancements over the original model: + - Alan Gillespie's modified diode model - Parallel multiplier - Instance temperature as difference for circuit temperature diff --git a/src/spicelib/devices/jfet/jfetload.c b/src/spicelib/devices/jfet/jfetload.c index 954e8fcdd..641f5822e 100644 --- a/src/spicelib/devices/jfet/jfetload.c +++ b/src/spicelib/devices/jfet/jfetload.c @@ -322,6 +322,78 @@ JFETload(GENmodel *inModel, CKTcircuit *ckt) } } } + +#ifdef notdef + /* The original section is now commented out */ + /* end Sydney University mod */ + /* + * compute drain current and derivitives for normal mode + */ + if (vds >= 0) { + vgst=vgs-model->JFETthreshold; + /* + * normal mode, cutoff region + */ + if (vgst <= 0) { + cdrain=0; + gm=0; + gds=0; + } else { + betap=beta*(1+model->JFETlModulation*vds); + twob=betap+betap; + if (vgst <= vds) { + /* + * normal mode, saturation region + */ + cdrain=betap*vgst*vgst; + gm=twob*vgst; + gds=model->JFETlModulation*beta*vgst*vgst; + } else { + /* + * normal mode, linear region + */ + cdrain=betap*vds*(vgst+vgst-vds); + gm=twob*vds; + gds=twob*(vgst-vds)+model->JFETlModulation*beta* + vds*(vgst+vgst-vds); + } + } + } else { + /* + * compute drain current and derivitives for inverse mode + */ + vgdt=vgd-model->JFETthreshold; + if (vgdt <= 0) { + /* + * inverse mode, cutoff region + */ + cdrain=0; + gm=0; + gds=0; + } else { + /* + * inverse mode, saturation region + */ + betap=beta*(1-model->JFETlModulation*vds); + twob=betap+betap; + if (vgdt <= -vds) { + cdrain = -betap*vgdt*vgdt; + gm = -twob*vgdt; + gds = model->JFETlModulation*beta*vgdt*vgdt-gm; + } else { + /* + * inverse mode, linear region + */ + cdrain=betap*vds*(vgdt+vgdt+vds); + gm=twob*vds; + gds=twob*vgdt-model->JFETlModulation*beta*vds* + (vgdt+vgdt+vds); + } + } + } + /* end of original section, now deleted (replaced w/SU mod */ +#endif + /* * compute equivalent drain current source */