From 39026d1d249158b5d5adfcad83380daf5d262fa8 Mon Sep 17 00:00:00 2001 From: dwarning Date: Thu, 19 May 2011 19:05:56 +0000 Subject: [PATCH] correct mulu0 entry place --- ChangeLog | 4 ++++ src/spicelib/devices/bsim3v32/b3v32temp.c | 18 +++++++++++------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0062b7abc..387e38f26 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2011-05-19 Dietmar Warning + * spicelib/devices/bsim3v32/b3v32temp.c: move the mulu0 entry outside + the size dependent section, like delvto + 2011-05-19 Robert Larice * autogen.sh : update --adms3 diff --git a/src/spicelib/devices/bsim3v32/b3v32temp.c b/src/spicelib/devices/bsim3v32/b3v32temp.c index 4b80733cf..d127edb84 100644 --- a/src/spicelib/devices/bsim3v32/b3v32temp.c +++ b/src/spicelib/devices/bsim3v32/b3v32temp.c @@ -233,14 +233,14 @@ int Size_Not_Found; if (Size_Not_Found) { pParam = TMALLOC(struct bsim3SizeDependParam, 1); if (pLastKnot == NULL) - model->pSizeDependParamKnot = pParam; + model->pSizeDependParamKnot = pParam; else - pLastKnot->pNext = pParam; + pLastKnot->pNext = pParam; pParam->pNext = NULL; here->pParam = pParam; - Ldrn = here->BSIM3v32l; - Wdrn = here->BSIM3v32w; + Ldrn = here->BSIM3v32l; + Wdrn = here->BSIM3v32w; pParam->Length = Ldrn; pParam->Width = Wdrn; @@ -667,11 +667,9 @@ int Size_Not_Found; pParam->BSIM3v32uc = pParam->BSIM3v32uc + pParam->BSIM3v32uc1 * T0; if (pParam->BSIM3v32u0 > 1.0) pParam->BSIM3v32u0 = pParam->BSIM3v32u0 / 1.0e4; - pParam->BSIM3v32u0 *= here->BSIM3v32mulu0; /* Low field mobility multiplier */ pParam->BSIM3v32u0temp = pParam->BSIM3v32u0 * pow(TRatio, pParam->BSIM3v32ute); - here->BSIM3v32u0temp = pParam->BSIM3v32u0temp; pParam->BSIM3v32vsattemp = pParam->BSIM3v32vsat - pParam->BSIM3v32at * T0; pParam->BSIM3v32rds0 = (pParam->BSIM3v32rdsw + pParam->BSIM3v32prt * T0) @@ -692,7 +690,7 @@ int Size_Not_Found; pParam->BSIM3v32cgbo = model->BSIM3v32cgbo * pParam->BSIM3v32leffCV; T0 = pParam->BSIM3v32leffCV * pParam->BSIM3v32leffCV; - here->BSIM3v32tconst = here->BSIM3v32u0temp * pParam->BSIM3v32elm / (model->BSIM3v32cox + pParam->BSIM3v32tconst = pParam->BSIM3v32u0temp * pParam->BSIM3v32elm / (model->BSIM3v32cox * pParam->BSIM3v32weffCV * pParam->BSIM3v32leffCV * T0); if (!model->BSIM3v32npeakGiven && model->BSIM3v32gamma1Given) @@ -872,6 +870,12 @@ int Size_Not_Found; here->BSIM3v32vfb = pParam->BSIM3v32vfb + model->BSIM3v32type * here->BSIM3v32delvto; here->BSIM3v32vfbzb = pParam->BSIM3v32vfbzb + model->BSIM3v32type * here->BSIM3v32delvto; + /* low field mobility multiplier */ + here->BSIM3v32u0temp = pParam->BSIM3v32u0temp * here->BSIM3v32mulu0; + + here->BSIM3v32tconst = here->BSIM3v32u0temp * pParam->BSIM3v32elm / (model->BSIM3v32cox + * pParam->BSIM3v32weffCV * pParam->BSIM3v32leffCV * T0); + /* process source/drain series resistance */ /* acm model */ if (model->BSIM3v32acmMod == 0)