update bsim4soi to vers. 4.3.1

This commit is contained in:
h_vogt 2010-06-03 22:11:20 +00:00
parent 4e6bc6590a
commit a633a0d50f
23 changed files with 1661 additions and 590 deletions

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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)
{

View File

@ -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;

View File

@ -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;

View File

@ -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

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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.

View File

@ -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);
}

View File

@ -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

View File

@ -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;

View File

@ -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"

View File

@ -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;

View File

@ -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]

View File

@ -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.

View File

@ -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;

View File

@ -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;

View File

@ -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;
}

View File

@ -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 */