diff --git a/ChangeLog b/ChangeLog index ef8daa6fc..c086db195 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2010-11-06 Robert Larice + * src/spicelib/devices/bsim1/b1.c , + * src/spicelib/devices/bsim1/b1dset.c , + * src/spicelib/devices/bsim1/b1eval.c , + * src/spicelib/devices/bsim1/b1mpar.c , + * src/spicelib/devices/bsim1/bsim1def.h : + change the bsim1 `xpart' model parameter from IF_REAL to IF_FLAG + which has been used internaly as boolean anyway. + 2010-11-06 Robert Larice * src/spicelib/devices/nbjt/nbjt.c , * src/spicelib/devices/nbjt/nbjtparm.c , @@ -13,6 +22,7 @@ * src/spicelib/devices/urc/urcparam.c : change some model parameters from IF_REAL to IF_INTEGER which have been internaly integers anyway. + (model parameters `save' `print' and urc `n'==`number of lumps') 2010-11-06 Dietmar Warning * configure.ac, visualc/include/config.h, frontend/miscoms.c, mos1-9/*.c diff --git a/src/spicelib/devices/bsim1/b1.c b/src/spicelib/devices/bsim1/b1.c index 9f7e58efa..90697d695 100644 --- a/src/spicelib/devices/bsim1/b1.c +++ b/src/spicelib/devices/bsim1/b1.c @@ -102,7 +102,7 @@ IFparm B1mPTable[] = { /* model parameters */ "Gate drain overlap capacitance per unit channel width(m)"), IOPA( "cgbo", BSIM1_MOD_CGBO, IF_REAL, "Gate bulk overlap capacitance per unit channel length(m)"), - IOP( "xpart", BSIM1_MOD_XPART, IF_REAL, + IOP( "xpart", BSIM1_MOD_XPART, IF_FLAG, "Flag for channel charge partitioning"), IOP( "rsh", BSIM1_MOD_RSH, IF_REAL, "Source drain diffusion sheet resistance in ohm per square"), diff --git a/src/spicelib/devices/bsim1/b1dset.c b/src/spicelib/devices/bsim1/b1dset.c index 57d68cf09..048f00164 100644 --- a/src/spicelib/devices/bsim1/b1dset.c +++ b/src/spicelib/devices/bsim1/b1dset.c @@ -574,7 +574,7 @@ if (here->B1owner != ARCHme) continue; /*Arg = 1 + Ugs * VgsVth;*/ Phi = MAX( 0.1, Phi);/*const*/ - if( model->B1channelChargePartitionFlag >= 1 ) { + if( model->B1channelChargePartitionFlag ) { /*0/100 partitioning for drain/source chArges at the saturation region*/ Vth0 = Vfb + Phi + K1 * SqrtVpb; diff --git a/src/spicelib/devices/bsim1/b1eval.c b/src/spicelib/devices/bsim1/b1eval.c index 333a12c3e..2051a0bdd 100644 --- a/src/spicelib/devices/bsim1/b1eval.c +++ b/src/spicelib/devices/bsim1/b1eval.c @@ -360,7 +360,7 @@ ChargeComputation: dAdVbs = 0.25 * K1 / SqrtVpb *(2*dGdVbs + G/Vpb); Phi = MAX( 0.1, Phi); - if( model->B1channelChargePartitionFlag >= 1 ) { + if( model->B1channelChargePartitionFlag ) { /*0/100 partitioning for drain/source chArges at the saturation region*/ Vth0 = Vfb + Phi + K1 * SqrtVpb; diff --git a/src/spicelib/devices/bsim1/b1mpar.c b/src/spicelib/devices/bsim1/b1mpar.c index 027604959..518141c4e 100644 --- a/src/spicelib/devices/bsim1/b1mpar.c +++ b/src/spicelib/devices/bsim1/b1mpar.c @@ -282,7 +282,7 @@ B1mParam(int param, IFvalue *value, GENmodel *inMod) mod->B1gateBulkOverlapCapGiven = TRUE; break; case BSIM1_MOD_XPART : - mod->B1channelChargePartitionFlag = value->rValue; + mod->B1channelChargePartitionFlag = value->iValue ? 1 : 0; mod->B1channelChargePartitionFlagGiven = TRUE; break; case BSIM1_MOD_RSH : diff --git a/src/spicelib/devices/bsim1/bsim1def.h b/src/spicelib/devices/bsim1/bsim1def.h index 970905b28..25a856daa 100644 --- a/src/spicelib/devices/bsim1/bsim1def.h +++ b/src/spicelib/devices/bsim1/bsim1def.h @@ -391,7 +391,7 @@ typedef struct sBSIM1model { /* model structure for a resistor */ double B1gateSourceOverlapCap; double B1gateDrainOverlapCap; double B1gateBulkOverlapCap; - double B1channelChargePartitionFlag; + unsigned B1channelChargePartitionFlag :1; double B1sheetResistance; double B1jctSatCurDensity;