update bsim4soi to vers. 4.3.1
This commit is contained in:
parent
4e6bc6590a
commit
a633a0d50f
|
|
@ -1,3 +1,12 @@
|
|||
2010-06-03 Holger Vogt
|
||||
* src\spicelib\devices\bsim3soi
|
||||
b4soi.c b4soiacld.c b4soiask.c b4soicheck.c b4soicvtest.c
|
||||
b4soidef.h b4soidel.c b4soidest.c b4soiext.h b4soigetic.c
|
||||
b4soiinit.c b4soiinit.h b4soiitf.h b4soild.c b4soimask.c
|
||||
b4soimdel.c b4soimpar.c b4soinoi.c b4soipar.c b4soipzld.c
|
||||
b4soiset.c b4soitemp.c b4soitrunc.c:
|
||||
update to BSIM4SOI vers. 4.3.1
|
||||
|
||||
2010-05-30 Holger Vogt
|
||||
* xgraph/dialog.c: fcn getline renamed to getline_xgraph
|
||||
* Makefile.am, frontend/Makefile.am include/Makefile.am
|
||||
|
|
|
|||
2
DEVICES
2
DEVICES
|
|
@ -752,7 +752,7 @@ will be updated every time the device specific code is altered or changed to ref
|
|||
|
||||
12.4 BSIMSOI - Berkeley SOI model (partially/full depleted devices)
|
||||
|
||||
Ver: 4.3
|
||||
Ver: 4.3.1
|
||||
Class: M
|
||||
Level: 10 & 58
|
||||
Dir: devices/bsim3soi
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
|
||||
/*** B4SOI 12/31/2009 Released by Tanvir Morshed ***/
|
||||
/*** B4SOI 04/27/2010 Released by Tanvir Morshed ***/
|
||||
|
||||
static char rcsid[] = "$Id$";
|
||||
|
||||
/**********
|
||||
* Copyright 2009 Regents of the University of California. All rights reserved.
|
||||
* Copyright 2010 Regents of the University of California. All rights reserved.
|
||||
* Authors: 1998 Samuel Fung, Dennis Sinitsky and Stephen Tang
|
||||
* Authors: 1999-2004 Pin Su, Hui Wan, Wei Jin, b3soi.c
|
||||
* Authors: 2005- Hui Wan, Xuemei Xi, Ali Niknejad, Chenming Hu.
|
||||
|
|
@ -16,6 +17,7 @@
|
|||
**********/
|
||||
|
||||
#include "ngspice.h"
|
||||
|
||||
#include "devdefs.h"
|
||||
#include "b4soidef.h"
|
||||
#include "suffix.h"
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
/*** B4SOI 12/31/2009 Released by Tanvir Morshed ***/
|
||||
/*** B4SOI 04/27/2010 Released by Tanvir Morshed ***/
|
||||
|
||||
static char rcsid[] = "$Id$";
|
||||
|
||||
/**********
|
||||
* Copyright 2009 Regents of the University of California. All rights reserved.
|
||||
* Copyright 2010 Regents of the University of California. All rights reserved.
|
||||
* Authors: 1998 Samuel Fung, Dennis Sinitsky and Stephen Tang
|
||||
* Authors: 1999-2004 Pin Su, Hui Wan, Wei Jin, b3soiacld.c
|
||||
* Authors: 2005- Hui Wan, Xuemei Xi, Ali Niknejad, Chenming Hu.
|
||||
|
|
@ -11,10 +12,10 @@
|
|||
* Modified by Hui Wan, Xuemei Xi 11/30/2005
|
||||
* Modified by Wenwei Yang, Chung-Hsun Lin, Darsen Lu 03/06/2009
|
||||
* Modified by Tanvir Morshed 09/22/2009
|
||||
* Modified by Tanvir Morshed 12/31/2009
|
||||
**********/
|
||||
|
||||
#include "ngspice.h"
|
||||
|
||||
#include "cktdefs.h"
|
||||
#include "b4soidef.h"
|
||||
#include "sperror.h"
|
||||
|
|
@ -22,9 +23,7 @@
|
|||
|
||||
|
||||
int
|
||||
B4SOIacLoad(
|
||||
GENmodel *inModel,
|
||||
CKTcircuit *ckt)
|
||||
B4SOIacLoad(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
register B4SOImodel *model = (B4SOImodel*)inModel;
|
||||
register B4SOIinstance *here;
|
||||
|
|
@ -59,7 +58,7 @@ double gcrgd, gcrgg, gcrgs, gcrgb, gcrg;
|
|||
double xcgmgmb, xcgmdb, xcgmsb, xcgmeb, xcdgmb, xcsgmb, xcegmb;
|
||||
double geltd;
|
||||
double gigg, gigd, gigs, gigb, gige, gigT;
|
||||
double gigpg=0.0, gigpp=0.0;
|
||||
double gigpg, gigpp;
|
||||
|
||||
/* v3.1.1 bug fix */
|
||||
double gIstotg, gIstotd, gIstotb, gIstots;
|
||||
|
|
@ -80,9 +79,6 @@ double m;
|
|||
for (here = model->B4SOIinstances; here!= NULL;
|
||||
here = here->B4SOInextInstance)
|
||||
{
|
||||
if (here->B4SOIowner != ARCHme)
|
||||
continue;
|
||||
|
||||
selfheat = (model->B4SOIshMod == 1) && (here->B4SOIrth0 != 0.0);
|
||||
if (here->B4SOImode >= 0)
|
||||
{ Gm = here->B4SOIgm;
|
||||
|
|
@ -273,6 +269,9 @@ double m;
|
|||
gigd = here->B4SOIgigs; /* v3.1.1 bug fix */
|
||||
gigT = model->B4SOItype * here->B4SOIgigT;
|
||||
|
||||
gigpg = here->B4SOIgigpg;/* bugfix_snps for setting gigpg gigpp*/
|
||||
gigpp = here->B4SOIgigpp;
|
||||
|
||||
gbbg = -here->B4SOIgbgs;
|
||||
gbbb = -here->B4SOIgbbs;
|
||||
gbbp = -here->B4SOIgbps;
|
||||
|
|
@ -556,19 +555,19 @@ double m;
|
|||
geltd = here->B4SOIgrgeltd;
|
||||
if (here->B4SOIrgateMod == 1)
|
||||
{
|
||||
*(here->B4SOIGEgePtr) += m * geltd;
|
||||
*(here->B4SOIGEgePtr) += m * geltd;
|
||||
*(here->B4SOIGgePtr) -= m * geltd;
|
||||
*(here->B4SOIGEgPtr) -= m * geltd;
|
||||
*(here->B4SOIGgPtr) += m * (geltd + gigg + gIgtotg); /* v3.1.1 bug fix */
|
||||
*(here->B4SOIGdpPtr) += m * (gigd + gIgtotd); /* v3.1.1 bug fix */
|
||||
*(here->B4SOIGspPtr) += m * (gigs + gIgtots); /* v3.1.1 bug fix */
|
||||
if (here->B4SOIsoiMod != 2) /* v3.2 */
|
||||
*(here->B4SOIGbPtr) -= m * (-gigb - gIgtotb); /* v3.1.1 bug fix */
|
||||
if (here->B4SOIsoiMod != 2) /* v3.2 */
|
||||
*(here->B4SOIGbPtr) -= m * (-gigb - gIgtotb); /* v3.1.1 bug fix */
|
||||
}
|
||||
|
||||
else if (here->B4SOIrgateMod == 2)
|
||||
{
|
||||
*(here->B4SOIGEgePtr) += m * gcrg;
|
||||
*(here->B4SOIGEgePtr) += m * gcrg;
|
||||
*(here->B4SOIGEgPtr) += m * gcrgg;
|
||||
*(here->B4SOIGEdpPtr) += m * gcrgd;
|
||||
*(here->B4SOIGEspPtr) += m * gcrgs;
|
||||
|
|
@ -585,7 +584,7 @@ double m;
|
|||
|
||||
else if (here->B4SOIrgateMod == 3)
|
||||
{
|
||||
*(here->B4SOIGEgePtr) += m * geltd;
|
||||
*(here->B4SOIGEgePtr) += m * geltd;
|
||||
*(here->B4SOIGEgmPtr) -= m * geltd;
|
||||
*(here->B4SOIGMgePtr) -= m * geltd;
|
||||
*(here->B4SOIGMgmPtr) += m * (geltd + gcrg);
|
||||
|
|
@ -666,7 +665,7 @@ double m;
|
|||
/* *(here->B4SOIDPbPtr +1) -= xcdgb + xcddb + xcdsb + xcdeb;
|
||||
+ xcdgmb; */
|
||||
|
||||
*(here->B4SOIDPbPtr +1) -= m * -xcdbb; /* v4.0 */
|
||||
*(here->B4SOIDPbPtr +1) -= m * -xcdbb; /* v4.0 */
|
||||
|
||||
/* *(here->B4SOISPbPtr +1) -= xcsgb + xcsdb + xcssb + xcseb
|
||||
+ xcsgmb; */
|
||||
|
|
@ -725,7 +724,7 @@ double m;
|
|||
*(here->B4SOIBgPtr) += m * (gbbg - gigg); /* v3.1 bug fix */
|
||||
*(here->B4SOIBdpPtr) += m * (gbbdp - gigd); /* v3.1 bug fix */
|
||||
*(here->B4SOIBspPtr) += m * (gbbsp - gigs); /* v3.1 bug fix */
|
||||
*(here->B4SOIBbPtr) += m * (gbbb - gigb); /* v3.1 bug fix */
|
||||
*(here->B4SOIBbPtr) += m * (gbbb - gigb); /* v3.1 bug fix */
|
||||
*(here->B4SOISPbPtr) -= m * (Gmbs - gsspb + gIstotb + gstotb);
|
||||
/* v4.0 */
|
||||
*(here->B4SOIDPbPtr) -= m * ((-gddpb - Gmbs) + gIdtotb + gdtotb);
|
||||
|
|
@ -780,6 +779,7 @@ double m;
|
|||
}
|
||||
|
||||
|
||||
|
||||
/* v4.0 */
|
||||
if (here->B4SOIrbodyMod)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
/*** B4SOI 12/31/2009 Released by Tanvir Morshed ***/
|
||||
/*** B4SOI 04/27/2010 Released by Tanvir Morshed ***/
|
||||
|
||||
static char rcsid[] = "$Id$";
|
||||
|
||||
/**********
|
||||
* Copyright 2009 Regents of the University of California. All rights reserved.
|
||||
* Copyright 2010 Regents of the University of California. All rights reserved.
|
||||
* Authors: 1998 Samuel Fung, Dennis Sinitsky and Stephen Tang
|
||||
* Authors: 1999-2004 Pin Su, Hui Wan, Wei Jin, b3soiask.c
|
||||
* Authors: 2005- Hui Wan, Xuemei Xi, Ali Niknejad, Chenming Hu.
|
||||
|
|
@ -15,20 +16,18 @@
|
|||
**********/
|
||||
|
||||
#include "ngspice.h"
|
||||
|
||||
#include "ifsim.h"
|
||||
#include "cktdefs.h"
|
||||
#include "devdefs.h"
|
||||
#include "b4soidef.h"
|
||||
#include "sperror.h"
|
||||
|
||||
#include "suffix.h"
|
||||
|
||||
int
|
||||
B4SOIask(
|
||||
CKTcircuit *ckt,
|
||||
GENinstance *inst,
|
||||
int which,
|
||||
IFvalue *value,
|
||||
IFvalue *select)
|
||||
B4SOIask(CKTcircuit *ckt, GENinstance *inst, int which, IFvalue *value, IFvalue *select)
|
||||
|
||||
{
|
||||
B4SOIinstance *here = (B4SOIinstance*)inst;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
/*** B4SOI 12/31/2009 Released by Tanvir Morshed ***/
|
||||
/*** B4SOI 04/27/2010 Released by Tanvir Morshed ***/
|
||||
|
||||
static char rcsid[] = "$Id$";
|
||||
|
||||
/**********
|
||||
* Copyright 2009 Regents of the University of California. All rights reserved.
|
||||
* Copyright 2010 Regents of the University of California. All rights reserved.
|
||||
* Authors: 1998 Samuel Fung, Dennis Sinitsky and Stephen Tang
|
||||
* Authors: 1999-2004 Pin Su, Hui Wan, Wei Jin, b3soicheck.c
|
||||
* Authors: 2005- Hui Wan, Xuemei Xi, Ali Niknejad, Chenming Hu.
|
||||
|
|
@ -24,10 +25,8 @@
|
|||
#include "suffix.h"
|
||||
|
||||
int
|
||||
B4SOIcheckModel(
|
||||
B4SOImodel *model,
|
||||
B4SOIinstance *here,
|
||||
CKTcircuit *ckt)
|
||||
B4SOIcheckModel(B4SOImodel *model, B4SOIinstance *here, CKTcircuit *ckt)
|
||||
|
||||
{
|
||||
struct b4soiSizeDependParam *pParam;
|
||||
int Fatal_Flag = 0;
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
/*** B4SOI 12/31/2009 Released by Tanvir Morshed ***/
|
||||
/*** B4SOI 04/27/2010 Released by Tanvir Morshed ***/
|
||||
|
||||
static char rcsid[] = "$Id$";
|
||||
|
||||
/**********
|
||||
* Copyright 2009 Regents of the University of California. All rights reserved.
|
||||
* Copyright 2010 Regents of the University of California. All rights reserved.
|
||||
* Authors: 1998 Samuel Fung, Dennis Sinitsky and Stephen Tang
|
||||
* Authors: 1999-2004 Pin Su, Hui Wan, Wei Jin, b3soicvtest.c
|
||||
* Authors: 2005- Hui Wan, Xuemei Xi, Ali Niknejad, Chenming Hu.
|
||||
|
|
@ -15,6 +16,7 @@
|
|||
**********/
|
||||
|
||||
#include "ngspice.h"
|
||||
|
||||
#include "cktdefs.h"
|
||||
#include "b4soidef.h"
|
||||
#include "trandefs.h"
|
||||
|
|
@ -25,9 +27,8 @@
|
|||
|
||||
|
||||
int
|
||||
B4SOIconvTest(
|
||||
GENmodel *inModel,
|
||||
CKTcircuit *ckt)
|
||||
B4SOIconvTest(GENmodel *inModel, CKTcircuit *ckt)
|
||||
|
||||
{
|
||||
register B4SOImodel *model = (B4SOImodel*)inModel;
|
||||
register B4SOIinstance *here;
|
||||
|
|
@ -39,10 +40,7 @@ double cbd, cbhat, cbs, cd, cdhat, tol, vgd, vgdo, vgs;
|
|||
{ /* loop through all the instances of the model */
|
||||
for (here = model->B4SOIinstances; here != NULL ;
|
||||
here=here->B4SOInextInstance)
|
||||
{
|
||||
if (here->B4SOIowner != ARCHme)
|
||||
continue;
|
||||
vbs = model->B4SOItype
|
||||
{ vbs = model->B4SOItype
|
||||
* (*(ckt->CKTrhsOld+here->B4SOIbNode)
|
||||
- *(ckt->CKTrhsOld+here->B4SOIsNodePrime));
|
||||
vgs = model->B4SOItype
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/**********
|
||||
Copyright 2009 Regents of the University of California. All rights reserved.
|
||||
Copyright 2010 Regents of the University of California. All rights reserved.
|
||||
Author: 1998 Samuel Fung
|
||||
authors:1999-2004 Pin Su, Hui Wan b3soidef.h
|
||||
Authors:2005- Hui Wan, Jane Xi
|
||||
|
|
@ -363,8 +363,8 @@ typedef struct sB4SOIinstance
|
|||
|
||||
unsigned B4SOIlGiven :1;
|
||||
unsigned B4SOIwGiven :1;
|
||||
unsigned B4SOImGiven :1;
|
||||
|
||||
unsigned B4SOImGiven :1;
|
||||
unsigned B4SOIdrainAreaGiven :1;
|
||||
unsigned B4SOIsourceAreaGiven :1;
|
||||
unsigned B4SOIdrainSquaresGiven :1;
|
||||
|
|
@ -1110,7 +1110,7 @@ typedef struct sB4SOImodel
|
|||
double B4SOIegisl;
|
||||
double B4SOIagisl;
|
||||
double B4SOIbgisl;
|
||||
double B4SOIcgisl;
|
||||
double B4SOIcgisl;
|
||||
double B4SOIrgisl;
|
||||
double B4SOIkgisl;
|
||||
double B4SOIfgisl;
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
/*** B4SOI 12/31/2009 Released by Tanvir Morshed ***/
|
||||
/*** B4SOI 04/27/2010 Released by Tanvir Morshed ***/
|
||||
|
||||
static char rcsid[] = "$Id$";
|
||||
|
||||
/**********
|
||||
* Copyright 2009 Regents of the University of California. All rights reserved.
|
||||
* Copyright 2010 Regents of the University of California. All rights reserved.
|
||||
* Authors: 1998 Samuel Fung, Dennis Sinitsky and Stephen Tang
|
||||
* Authors: 1999-2004 Pin Su, Hui Wan, Wei Jin, b3soidel.c
|
||||
* Authors: 2005- Hui Wan, Xuemei Xi, Ali Niknejad, Chenming Hu.
|
||||
|
|
@ -15,6 +16,7 @@
|
|||
**********/
|
||||
|
||||
#include "ngspice.h"
|
||||
|
||||
#include "b4soidef.h"
|
||||
#include "sperror.h"
|
||||
#include "gendefs.h"
|
||||
|
|
@ -22,10 +24,8 @@
|
|||
|
||||
|
||||
int
|
||||
B4SOIdelete(
|
||||
GENmodel *inModel,
|
||||
IFuid name,
|
||||
GENinstance **inInst)
|
||||
B4SOIdelete(GENmodel *inModel, IFuid name, GENinstance **inInst)
|
||||
|
||||
{
|
||||
B4SOIinstance **fast = (B4SOIinstance**)inInst;
|
||||
B4SOImodel *model = (B4SOImodel*)inModel;
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
/*** B4SOI 12/31/2009 Released by Tanvir Morshed ***/
|
||||
/*** B4SOI 04/27/2010 Released by Tanvir Morshed ***/
|
||||
|
||||
static char rcsid[] = "$Id$";
|
||||
|
||||
/**********
|
||||
* Copyright 2009 Regents of the University of California. All rights reserved.
|
||||
* Copyright 2010 Regents of the University of California. All rights reserved.
|
||||
* Authors: 1998 Samuel Fung, Dennis Sinitsky and Stephen Tang
|
||||
* Authors: 1999-2004 Pin Su, Hui Wan, Wei Jin, b3soidest.c
|
||||
* Authors: 2005- Hui Wan, Xuemei Xi, Ali Niknejad, Chenming Hu.
|
||||
|
|
@ -15,12 +16,13 @@
|
|||
**********/
|
||||
|
||||
#include "ngspice.h"
|
||||
|
||||
#include "b4soidef.h"
|
||||
#include "suffix.h"
|
||||
|
||||
void
|
||||
B4SOIdestroy(
|
||||
GENmodel **inModel)
|
||||
B4SOIdestroy(GENmodel **inModel)
|
||||
|
||||
{
|
||||
B4SOImodel **model = (B4SOImodel**)inModel;
|
||||
B4SOIinstance *here;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/**********
|
||||
Copyright 2009 Regents of the University of California. All rights reserved.
|
||||
Copyright 2010 Regents of the University of California. All rights reserved.
|
||||
Author: 2005 Hui Wan (based on Samuel Fung's b3soiext.h)
|
||||
Authors: 2009- Wenwei Yang, Chung-Hsun Lin, Ali Niknejad, Chenming Hu.
|
||||
Authors: 2009- Tanvir Morshed, Ali Niknejad, Chenming Hu.
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
/*** B4SOI 12/31/2009 Released by Tanvir Morshed ***/
|
||||
/*** B4SOI 04/27/2010 Released by Tanvir Morshed ***/
|
||||
|
||||
static char rcsid[] = "$Id$";
|
||||
|
||||
/**********
|
||||
* Copyright 2009 Regents of the University of California. All rights reserved.
|
||||
* Copyright 2010 Regents of the University of California. All rights reserved.
|
||||
* Authors: 1998 Samuel Fung, Dennis Sinitsky and Stephen Tang
|
||||
* Authors: 1999-2004 Pin Su, Hui Wan, Wei Jin, b3soigetic.c
|
||||
* Authors: 2005- Hui Wan, Xuemei Xi, Ali Niknejad, Chenming Hu.
|
||||
|
|
@ -15,6 +16,7 @@
|
|||
**********/
|
||||
|
||||
#include "ngspice.h"
|
||||
|
||||
#include "cktdefs.h"
|
||||
#include "b4soidef.h"
|
||||
#include "sperror.h"
|
||||
|
|
@ -22,19 +24,15 @@
|
|||
|
||||
|
||||
int
|
||||
B4SOIgetic(
|
||||
GENmodel *inModel,
|
||||
CKTcircuit *ckt)
|
||||
B4SOIgetic(GENmodel *inModel, CKTcircuit *ckt)
|
||||
|
||||
{
|
||||
B4SOImodel *model = (B4SOImodel*)inModel;
|
||||
B4SOIinstance *here;
|
||||
|
||||
for (; model ; model = model->B4SOInextModel)
|
||||
{ for (here = model->B4SOIinstances; here; here = here->B4SOInextInstance)
|
||||
{
|
||||
if (here->B4SOIowner != ARCHme)
|
||||
continue;
|
||||
if(!here->B4SOIicVBSGiven)
|
||||
{ if(!here->B4SOIicVBSGiven)
|
||||
{ here->B4SOIicVBS = *(ckt->CKTrhs + here->B4SOIbNode)
|
||||
- *(ckt->CKTrhs + here->B4SOIsNode);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
SPICEdev B4SOIinfo = {
|
||||
{ "B4SOI",
|
||||
"Berkeley SOI MOSFET model version 4.3",
|
||||
"Berkeley SOI MOSFET model version 4.3.1",
|
||||
|
||||
&B4SOInSize,
|
||||
&B4SOInSize,
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,8 +1,9 @@
|
|||
/*** B4SOI 12/31/2009 Released by Tanvir Morshed ***/
|
||||
/** B4SOI 04/27/2010 Released by Tanvir Morshed ***/
|
||||
|
||||
static char rcsid[] = "$Id$";
|
||||
|
||||
/**********
|
||||
* Copyright 2009 Regents of the University of California. All rights reserved.
|
||||
* Copyright 2010 Regents of the University of California. All rights reserved.
|
||||
* Authors: 1998 Samuel Fung, Dennis Sinitsky and Stephen Tang
|
||||
* Authors: 1999-2004 Pin Su, Hui Wan, Wei Jin, b3soimask.c
|
||||
* Authors: 2005- Hui Wan, Xuemei Xi, Ali Niknejad, Chenming Hu.
|
||||
|
|
@ -1232,10 +1233,10 @@ IFvalue *value)
|
|||
value->iValue = model->B4SOIrgateMod;
|
||||
return(OK);
|
||||
case B4SOI_MOD_XRCRG1:
|
||||
value->rValue = model->B4SOIxrcrg1;
|
||||
value->iValue = model->B4SOIxrcrg1; /* FIXME rValue to iValue ? */
|
||||
return(OK);
|
||||
case B4SOI_MOD_XRCRG2:
|
||||
value->rValue = model->B4SOIxrcrg2;
|
||||
value->iValue = model->B4SOIxrcrg2; /* FIXME rValue to iValue ? */
|
||||
return(OK);
|
||||
case B4SOI_MOD_RSHG:
|
||||
value->rValue = model->B4SOIrshg;
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
/*** B4SOI 12/31/2009 Released by Tanvir Morshed ***/
|
||||
/*** B4SOI 04/27/2010 Released by Tanvir Morshed ***/
|
||||
|
||||
static char rcsid[] = "$Id$";
|
||||
|
||||
/**********
|
||||
* Copyright 2009 Regents of the University of California. All rights reserved.
|
||||
* Copyright 2010 Regents of the University of California. All rights reserved.
|
||||
* Authors: 1998 Samuel Fung, Dennis Sinitsky and Stephen Tang
|
||||
* Authors: 1999-2004 Pin Su, Hui Wan, Wei Jin, b3soimdel.c
|
||||
* Authors: 2005- Hui Wan, Xuemei Xi, Ali Niknejad, Chenming Hu.
|
||||
|
|
@ -15,6 +16,7 @@
|
|||
**********/
|
||||
|
||||
#include "ngspice.h"
|
||||
|
||||
#include "b4soidef.h"
|
||||
#include "sperror.h"
|
||||
#include "suffix.h"
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
/*** B4SOI 12/31/2009 Released by Tanvir Morshed ***/
|
||||
/*** B4SOI 04/27/2010 Released by Tanvir Morshed ***/
|
||||
|
||||
static char rcsid[] = "$Id$";
|
||||
|
||||
/**********
|
||||
* Copyright 2009 Regents of the University of California. All rights reserved.
|
||||
* Copyright 2010 Regents of the University of California. All rights reserved.
|
||||
* Authors: 1998 Samuel Fung, Dennis Sinitsky and Stephen Tang
|
||||
* Authors: 1999-2004 Pin Su, Hui Wan, Wei Jin, b3soimpar.c
|
||||
* Authors: 2005- Hui Wan, Xuemei Xi, Ali Niknejad, Chenming Hu.
|
||||
|
|
@ -15,6 +16,7 @@
|
|||
**********/
|
||||
|
||||
#include "ngspice.h"
|
||||
|
||||
#include "b4soidef.h"
|
||||
#include "ifsim.h"
|
||||
#include "sperror.h"
|
||||
|
|
@ -228,13 +230,13 @@ GENmodel *inMod)
|
|||
mod->B4SOInsd = value->rValue;
|
||||
mod->B4SOInsdGiven = TRUE;
|
||||
/* if (mod->B4SOInsd > 1.0e23)
|
||||
mod->B4SOInsd *= 1.0e-6; */ /* Bug # 22 Jul09 Proper limiting conditions are specified in the B4SOIcheck.c file*/
|
||||
mod->B4SOInsd *= 1.0e-6; */ /* Bug # 22 Jul09 Proper limiting conditions are specified in the B4SOIcheck.c file*/
|
||||
break;
|
||||
case B4SOI_MOD_NGATE:
|
||||
mod->B4SOIngate = value->rValue;
|
||||
mod->B4SOIngateGiven = TRUE;
|
||||
/* if (mod->B4SOIngate > 1.0e23)
|
||||
mod->B4SOIngate *= 1.0e-6; */ /* Bug # 22 Jul09 Proper limiting conditions are specified in the B4SOIcheck.c file*/
|
||||
mod->B4SOIngate *= 1.0e-6; */ /* Bug # 22 Jul09 Proper limiting conditions are specified in the B4SOIcheck.c file*/
|
||||
break;
|
||||
case B4SOI_MOD_GAMMA1:
|
||||
mod->B4SOIgamma1 = value->rValue;
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
/*** B4SOI 12/31/2009 Released by Tanvir Morshed ***/
|
||||
/** B4SOI 04/27/2010 Released by Tanvir Morshed ***/
|
||||
|
||||
static char rcsid[] = "$Id$";
|
||||
|
||||
/**********
|
||||
* Copyright 2009 Regents of the University of California. All rights reserved.
|
||||
* Copyright 2010 Regents of the University of California. All rights reserved.
|
||||
* Authors: 1998 Samuel Fung, Dennis Sinitsky and Stephen Tang
|
||||
* Authors: 1999-2004 Pin Su, Hui Wan, Wei Jin, b3soinoi.c
|
||||
* Authors: 2005- Hui Wan, Xuemei Xi, Ali Niknejad, Chenming Hu.
|
||||
|
|
@ -153,10 +154,7 @@ int i;
|
|||
for (; model != NULL; model = model->B4SOInextModel)
|
||||
{ for (here = model->B4SOIinstances; here != NULL;
|
||||
here = here->B4SOInextInstance)
|
||||
{
|
||||
if (here->B4SOIowner != ARCHme)
|
||||
continue;
|
||||
pParam = here->pParam;
|
||||
{ pParam = here->pParam;
|
||||
switch (operation)
|
||||
{ case N_OPEN:
|
||||
/* see if we have to to produce a summary report */
|
||||
|
|
@ -294,17 +292,17 @@ int i;
|
|||
here->B4SOIsNodePrime, here->B4SOIsNode,
|
||||
gspr * tempRatioSH * here->B4SOIm); /* v4.2 self-heating temp */
|
||||
|
||||
/* v4.2 bugfix: implement correct thermal noise model (bsim4.6.0)*/
|
||||
/* v4.2 bugfix: implement correct thermal noise model (bsim4.6.0)*/
|
||||
/* if ((here->B4SOIrgateMod == 1) ||
|
||||
(here->B4SOIrgateMod == 2)) */
|
||||
if (here->B4SOIrgateMod == 1)
|
||||
if (here->B4SOIrgateMod == 1)
|
||||
{ NevalSrc(&noizDens[B4SOIRGNOIZ],
|
||||
&lnNdens[B4SOIRGNOIZ], ckt, THERMNOISE,
|
||||
here->B4SOIgNode,
|
||||
here->B4SOIgNodeExt,
|
||||
here->B4SOIgrgeltd * tempRatioSH * here->B4SOIm); /* v4.2 self-heating temp */
|
||||
}
|
||||
else if (here->B4SOIrgateMod == 2) /*v4.2*/
|
||||
else if (here->B4SOIrgateMod == 2) /*v4.2*/
|
||||
{
|
||||
T0 = 1.0 + here->B4SOIgrgeltd/here->B4SOIgcrg;
|
||||
T1 = T0 * T0;
|
||||
|
|
@ -529,10 +527,11 @@ int i;
|
|||
here->B4SOIdNodePrime, here->B4SOIbNode,
|
||||
model->B4SOInoif * fabs(here->B4SOIibd)); */ /*v4.2*/
|
||||
|
||||
NevalSrc(&noizDens[B4SOIFB_IBDNOIZ],
|
||||
NevalSrc(&noizDens[B4SOIFB_IBDNOIZ],
|
||||
&lnNdens[B4SOIFB_IBDNOIZ], ckt, SHOTNOISE,
|
||||
here->B4SOIdNodePrime, here->B4SOIbNode,
|
||||
model->B4SOInoif * (here->B4SOIibd) * here->B4SOIm); /*v4.2 extra fabs()removed */
|
||||
|
||||
model->B4SOInoif * (here->B4SOIibd) * here->B4SOIm); /*v4.2 extra fabs()removed */
|
||||
|
||||
noizDens[B4SOITOTNOIZ] = noizDens[B4SOIRDNOIZ]
|
||||
+ noizDens[B4SOIRSNOIZ]
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
/*** B4SOI 12/31/2009 Released by Tanvir Morshed ***/
|
||||
/*** B4SOI 04/27/2010 Released by Tanvir Morshed ***/
|
||||
|
||||
static char rcsid[] = "$Id$";
|
||||
|
||||
/**********
|
||||
* Copyright 2009 Regents of the University of California. All rights reserved.
|
||||
* Copyright 2010 Regents of the University of California. All rights reserved.
|
||||
* Authors: 1998 Samuel Fung, Dennis Sinitsky and Stephen Tang
|
||||
* Authors: 1999-2004 Pin Su, Hui Wan, Wei Jin, b3soipar.c
|
||||
* Authors: 2005- Hui Wan, Xuemei Xi, Ali Niknejad, Chenming Hu.
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
/*** B4SOI 12/31/2009 Released by Tanvir Morshed ***/
|
||||
/*** B4SOI 04/27/2010 Released by Tanvir Morshed ***/
|
||||
|
||||
static char rcsid[] = "$Id$";
|
||||
|
||||
/**********
|
||||
* Copyright 2009 Regents of the University of California. All rights reserved.
|
||||
* Copyright 2010 Regents of the University of California. All rights reserved.
|
||||
* Authors: 1998 Samuel Fung, Dennis Sinitsky and Stephen Tang
|
||||
* Authors: 1999-2004 Pin Su, Hui Wan, Wei Jin, b3soipzld.c
|
||||
* Authors: 2005- Hui Wan, Xuemei Xi, Ali Niknejad, Chenming Hu.
|
||||
|
|
@ -24,8 +25,8 @@
|
|||
int
|
||||
B4SOIpzLoad(
|
||||
GENmodel *inModel,
|
||||
CKTcircuit *ckt,
|
||||
SPcomplex *s)
|
||||
register CKTcircuit *ckt,
|
||||
register SPcomplex *s)
|
||||
{
|
||||
register B4SOImodel *model = (B4SOImodel*)inModel;
|
||||
register B4SOIinstance *here;
|
||||
|
|
@ -36,18 +37,12 @@ double GSoverlapCap, GDoverlapCap, GBoverlapCap=0.0;
|
|||
double FwdSum, RevSum, Gm, Gmbs;
|
||||
|
||||
double m;
|
||||
|
||||
for (; model != NULL; model = model->B4SOInextModel)
|
||||
{ for (here = model->B4SOIinstances; here!= NULL;
|
||||
here = here->B4SOInextInstance)
|
||||
{
|
||||
if (here->B4SOImode >= 0)
|
||||
{
|
||||
|
||||
if (here->B4SOIowner != ARCHme)
|
||||
continue;
|
||||
|
||||
Gm = here->B4SOIgm;
|
||||
{ Gm = here->B4SOIgm;
|
||||
Gmbs = here->B4SOIgmbs;
|
||||
FwdSum = Gm + Gmbs;
|
||||
RevSum = 0.0;
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
/*** B4SOI 12/31/2009 Released by Tanvir Morshed ***/
|
||||
/*** B4SOI 04/27/2010 Released by Tanvir Morshed ***/
|
||||
|
||||
|
||||
static char rcsid[] = "$Id$";
|
||||
|
||||
/**********
|
||||
* Copyright 2009 Regents of the University of California. All rights reserved.
|
||||
* Copyright 2010 Regents of the University of California. All rights reserved.
|
||||
* Authors: 1998 Samuel Fung, Dennis Sinitsky and Stephen Tang
|
||||
* Authors: 1999-2004 Pin Su, Hui Wan, Wei Jin, b3soiset.c
|
||||
* Authors: 2005- Hui Wan, Xuemei Xi, Ali Niknejad, Chenming Hu.
|
||||
|
|
@ -12,6 +14,7 @@
|
|||
* Modified by Wenwei Yang, Chung-Hsun Lin, Darsen Lu 03/06/2009
|
||||
* Modified by Tanvir Morshed 09/22/2009
|
||||
* Modified by Tanvir Morshed 12/31/2009
|
||||
* Modified by Tanvir Morshed 04/27/2010
|
||||
**********/
|
||||
|
||||
#include "ngspice.h"
|
||||
|
|
@ -43,7 +46,6 @@ register B4SOImodel *model = (B4SOImodel*)inModel;
|
|||
register B4SOIinstance *here;
|
||||
int error;
|
||||
CKTnode *tmp;
|
||||
|
||||
double Cboxt;
|
||||
|
||||
/* v3.2 */
|
||||
|
|
@ -112,7 +114,7 @@ double Vbs0t, Qsi;
|
|||
if (!model->B4SOIshModGiven)
|
||||
model->B4SOIshMod = 0;
|
||||
if (!model->B4SOIversionGiven)
|
||||
model->B4SOIversion = 4.3;
|
||||
model->B4SOIversion = 4.31;
|
||||
if (!model->B4SOItoxGiven)
|
||||
model->B4SOItox = 100.0e-10;
|
||||
/*model->B4SOIcox = 3.453133e-11 / model->B4SOItox;*/
|
||||
|
|
@ -2192,14 +2194,15 @@ double Vbs0t, Qsi;
|
|||
printf("Warning: soiMod has been set to its global value %d.\n", model->B4SOIsoiMod);
|
||||
}
|
||||
|
||||
if (here->B4SOIsoiMod == 3) { /* auto selection */
|
||||
if (here->B4SOIsoiMod == 3) {/* auto selection */
|
||||
if (Vbs0t > model->B4SOIvbs0fd)
|
||||
here->B4SOIsoiMod = 2; /* ideal FD mode */
|
||||
else
|
||||
else {
|
||||
if (Vbs0t < model->B4SOIvbs0pd)
|
||||
here->B4SOIsoiMod = 0; /* BSIMPD */
|
||||
else
|
||||
here->B4SOIsoiMod = 1;
|
||||
}
|
||||
}
|
||||
|
||||
here->B4SOIfloat = 0;
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
/*** B4SOI 12/31/2009 Released by Tanvir Morshed ***/
|
||||
/*** B4SOI 05/14/2010 Released by Tanvir Morshed ***/
|
||||
|
||||
static char rcsid[] = "$Id$";
|
||||
|
||||
/**********
|
||||
* Copyright 2009 Regents of the University of California. All rights reserved.
|
||||
* Copyright 2010 Regents of the University of California. All rights reserved.
|
||||
* Authors: 1998 Samuel Fung, Dennis Sinitsky and Stephen Tang
|
||||
* Authors: 1999-2004 Pin Su, Hui Wan, Wei Jin, b3soitemp.c
|
||||
* Authors: 2005- Hui Wan, Xuemei Xi, Ali Niknejad, Chenming Hu.
|
||||
|
|
@ -12,6 +13,7 @@
|
|||
* Modified by Wenwei Yang, Chung-Hsun Lin, Darsen Lu 03/06/2009
|
||||
* Modified by Tanvir Morshed 09/22/2009
|
||||
* Modified by Tanvir Morshed 12/31/2009
|
||||
* Modified by Tanvir Morshed 05/14/2010
|
||||
**********/
|
||||
|
||||
/* Lmin, Lmax, Wmin, Wmax */
|
||||
|
|
@ -46,8 +48,8 @@
|
|||
B = exp(A); \
|
||||
} \
|
||||
}
|
||||
/* ARGSUSED */
|
||||
int
|
||||
|
||||
int
|
||||
B4SOItemp(
|
||||
GENmodel *inModel,
|
||||
CKTcircuit *ckt)
|
||||
|
|
@ -72,12 +74,14 @@ B4SOItemp(
|
|||
double Theta0,Delt_vth,DeltVthw;
|
||||
double niter,toxpf,toxpi, Tcen;
|
||||
double n0;
|
||||
|
||||
double eggdep, agbc2n, agbc2p, bgbc2n, bgbc2p, sqrt2qeps; /* v4.3.1 bugfix for mtrlMod=1 -Tanvir */
|
||||
|
||||
|
||||
/* v2.0 release */
|
||||
double tmp3, T7;
|
||||
/*4.1*/
|
||||
double epsrox, toxe, epssub;
|
||||
|
||||
|
||||
/* loop through all the B4SOI device models */
|
||||
for (; model != NULL; model = model->B4SOInextModel)
|
||||
|
|
@ -97,14 +101,26 @@ B4SOItemp(
|
|||
epsrox = 3.9;
|
||||
toxe = model->B4SOIeot;
|
||||
epssub = EPS0 * model->B4SOIepsrsub;
|
||||
|
||||
sqrt2qeps = sqrt(2.0 * 1.0e6 * Charge_q * epssub); /* bugfix 4.3.1 */
|
||||
/* bugfix v4.3.1 following constants should be replaced with model params -Tanvir */
|
||||
agbc2n = 3.42537e-7;
|
||||
agbc2p = 4.97232e-7;
|
||||
bgbc2n = 1.16645e12;
|
||||
bgbc2p = 7.45669e11;
|
||||
eggdep = 1.12;
|
||||
}
|
||||
else
|
||||
{
|
||||
epsrox = model->B4SOIepsrox;
|
||||
toxe = model->B4SOItox;
|
||||
epssub = EPSSI;
|
||||
|
||||
sqrt2qeps = 5.753e-12; /* constant from v4.3.0 and earlier */
|
||||
/* bugfix v4.3.1 following constants are valid for mtrlMod=0 -Tanvir */
|
||||
agbc2n = 3.42537e-7;
|
||||
agbc2p = 4.97232e-7;
|
||||
bgbc2n = 1.16645e12;
|
||||
bgbc2p = 7.45669e11;
|
||||
eggdep = 1.12;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1253,8 +1269,8 @@ B4SOItemp(
|
|||
|
||||
/* Phi & Gamma */
|
||||
SDphi = 2.0*model->B4SOIvtm*log(fabs(pParam->B4SOInsub) / ni);
|
||||
SDgamma = 5.753e-12 * sqrt(fabs(pParam->B4SOInsub))
|
||||
/ model->B4SOIcbox;
|
||||
SDgamma = sqrt2qeps * sqrt(fabs(pParam->B4SOInsub))
|
||||
/ model->B4SOIcbox; /* bugfix v4.3.1*/
|
||||
|
||||
if (!model->B4SOIvsdthGiven)
|
||||
{
|
||||
|
|
@ -1330,8 +1346,10 @@ B4SOItemp(
|
|||
/ (model->B4SOItoxqm * pParam->B4SOIpoxedge)))
|
||||
/ model->B4SOItoxqm / model->B4SOItoxqm
|
||||
/ pParam->B4SOIpoxedge / pParam->B4SOIpoxedge;
|
||||
pParam->B4SOIAechvb = (model->B4SOItype == NMOS) ? 4.97232e-7 : 3.42537e-7;
|
||||
pParam->B4SOIBechvb = (model->B4SOItype == NMOS) ? 7.45669e11 : 1.16645e12;
|
||||
/* pParam->B4SOIAechvb = (model->B4SOItype == NMOS) ? 4.97232e-7 : 3.42537e-7;
|
||||
pParam->B4SOIBechvb = (model->B4SOItype == NMOS) ? 7.45669e11 : 1.16645e12; */
|
||||
pParam->B4SOIAechvb = (model->B4SOItype == NMOS) ? agbc2p : agbc2n; /* bugfix 4.3.1 -Tanvir */
|
||||
pParam->B4SOIBechvb = (model->B4SOItype == NMOS) ? bgbc2p : bgbc2n; /* bugfix v4.3.1 -Tanvir */
|
||||
// The edge should have a contribution from psbcp & pdbcp. Need s & d terms.
|
||||
// There is no NF correction because psbcp & pdbcp are "per finger" in manual.
|
||||
pParam->B4SOIAechvbEdges = pParam->B4SOIAechvb
|
||||
|
|
@ -1376,23 +1394,27 @@ B4SOItemp(
|
|||
fprintf(stdout, "Warning: gamma2 is ignored because k1 or k2 is given.\n");
|
||||
}
|
||||
else
|
||||
{ if (!model->B4SOIvbxGiven)
|
||||
pParam->B4SOIvbx = pParam->B4SOIphi - 7.7348e-4
|
||||
{ if (!model->B4SOIvbxGiven){
|
||||
if (model->B4SOImtrlMod)
|
||||
T0 = Charge_q / 2.0 / epssub * 1.0e6;
|
||||
else
|
||||
T0 = 7.7348e-4;
|
||||
pParam->B4SOIvbx = pParam->B4SOIphi - T0
|
||||
* pParam->B4SOInpeak
|
||||
* pParam->B4SOIxt * pParam->B4SOIxt;
|
||||
* pParam->B4SOIxt * pParam->B4SOIxt;} /* bugfix 4.3.1 */
|
||||
if (pParam->B4SOIvbx > 0.0)
|
||||
pParam->B4SOIvbx = -pParam->B4SOIvbx;
|
||||
if (pParam->B4SOIvbm > 0.0)
|
||||
pParam->B4SOIvbm = -pParam->B4SOIvbm;
|
||||
|
||||
if (!model->B4SOIgamma1Given)
|
||||
pParam->B4SOIgamma1 = 5.753e-12
|
||||
pParam->B4SOIgamma1 = sqrt2qeps
|
||||
* sqrt(pParam->B4SOInpeak)
|
||||
/ model->B4SOIcox;
|
||||
/ model->B4SOIcox; /* bugfix 4.3.1 */
|
||||
if (!model->B4SOIgamma2Given)
|
||||
pParam->B4SOIgamma2 = 5.753e-12
|
||||
pParam->B4SOIgamma2 = sqrt2qeps
|
||||
* sqrt(pParam->B4SOInsub)
|
||||
/ model->B4SOIcox;
|
||||
/ model->B4SOIcox; /* bugfix 4.3.1 */
|
||||
|
||||
T0 = pParam->B4SOIgamma1 - pParam->B4SOIgamma2;
|
||||
T1 = sqrt(pParam->B4SOIphi - pParam->B4SOIvbx)
|
||||
|
|
@ -1697,9 +1719,11 @@ B4SOItemp(
|
|||
T4 = sqrt(1.0 + 2.0 * (vddeot - T0) / T1);
|
||||
T2 = T1 * (T4 - 1.0);
|
||||
T3 = 0.5 * T2 * T2 / T1; /* T3 = Vpoly */
|
||||
T7 = 1.12 - T3 - 0.05;
|
||||
/* T7 = 1.12 - T3 - 0.05; */
|
||||
T7 = eggdep - T3 - 0.05; /* bugfix v4.3.1 -Tanvir */
|
||||
T6 = sqrt(T7 * T7 + 0.224);
|
||||
T5 = 1.12 - 0.5 * (T7 + T6);
|
||||
/* T5 = 1.12 - 0.5 * (T7 + T6); */
|
||||
T5 = eggdep - 0.5 * (T7 + T6); /* bugfix v4.3.1 -Tanvir */
|
||||
Vgs_eff = vddeot - T5;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
/*** B4SOI 12/31/2009 Released by Tanvir Morshed ***/
|
||||
/*** B4SOI 04/27/2010 Released by Tanvir Morshed ***/
|
||||
|
||||
static char rcsid[] = "$Id$";
|
||||
|
||||
/**********
|
||||
* Copyright 2009 Regents of the University of California. All rights reserved.
|
||||
* Copyright 2010 Regents of the University of California. All rights reserved.
|
||||
* Authors: 1998 Samuel Fung, Dennis Sinitsky and Stephen Tang
|
||||
* Authors: 1999-2004 Pin Su, Hui Wan, Wei Jin, b3soitrunc.c
|
||||
* Authors: 2005- Hui Wan, Xuemei Xi, Ali Niknejad, Chenming Hu.
|
||||
|
|
@ -24,7 +25,7 @@
|
|||
int
|
||||
B4SOItrunc(
|
||||
GENmodel *inModel,
|
||||
CKTcircuit *ckt,
|
||||
register CKTcircuit *ckt,
|
||||
double *timeStep)
|
||||
{
|
||||
register B4SOImodel *model = (B4SOImodel*)inModel;
|
||||
|
|
@ -38,8 +39,6 @@ register B4SOIinstance *here;
|
|||
{ for (here = model->B4SOIinstances; here != NULL;
|
||||
here = here->B4SOInextInstance)
|
||||
{
|
||||
if (here->B4SOIowner != ARCHme)
|
||||
continue;
|
||||
#ifdef STEPDEBUG
|
||||
debugtemp = *timeStep;
|
||||
#endif /* STEPDEBUG */
|
||||
|
|
|
|||
Loading…
Reference in New Issue