You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

166 lines
4.3 KiB

/**********
Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1998 Samuel Fung, Dennis Sinitsky and Stephen Tang
File: b3soipdpar.c 98/5/01
Modified by Pin Su 99/2/15
**********/
#include "ngspice.h"
#include <stdio.h>
#include "ifsim.h"
#include "b3soipddef.h"
#include "sperror.h"
#include "suffix.h"
int
B3SOIPDparam (param, value, inst, select)
int param;
IFvalue *value;
GENinstance *inst;
IFvalue *select;
{
B3SOIPDinstance *here = (B3SOIPDinstance *) inst;
switch (param)
{
case B3SOIPD_W:
here->B3SOIPDw = value->rValue;
here->B3SOIPDwGiven = TRUE;
break;
case B3SOIPD_L:
here->B3SOIPDl = value->rValue;
here->B3SOIPDlGiven = TRUE;
break;
case B3SOIPD_AS:
here->B3SOIPDsourceArea = value->rValue;
here->B3SOIPDsourceAreaGiven = TRUE;
break;
case B3SOIPD_AD:
here->B3SOIPDdrainArea = value->rValue;
here->B3SOIPDdrainAreaGiven = TRUE;
break;
case B3SOIPD_PS:
here->B3SOIPDsourcePerimeter = value->rValue;
here->B3SOIPDsourcePerimeterGiven = TRUE;
break;
case B3SOIPD_PD:
here->B3SOIPDdrainPerimeter = value->rValue;
here->B3SOIPDdrainPerimeterGiven = TRUE;
break;
case B3SOIPD_NRS:
here->B3SOIPDsourceSquares = value->rValue;
here->B3SOIPDsourceSquaresGiven = TRUE;
break;
case B3SOIPD_NRD:
here->B3SOIPDdrainSquares = value->rValue;
here->B3SOIPDdrainSquaresGiven = TRUE;
break;
case B3SOIPD_OFF:
here->B3SOIPDoff = value->iValue;
here->B3SOIPDoffGiven = TRUE;
break;
case B3SOIPD_IC_VBS:
here->B3SOIPDicVBS = value->rValue;
here->B3SOIPDicVBSGiven = TRUE;
break;
case B3SOIPD_IC_VDS:
here->B3SOIPDicVDS = value->rValue;
here->B3SOIPDicVDSGiven = TRUE;
break;
case B3SOIPD_IC_VGS:
here->B3SOIPDicVGS = value->rValue;
here->B3SOIPDicVGSGiven = TRUE;
break;
case B3SOIPD_IC_VES:
here->B3SOIPDicVES = value->rValue;
here->B3SOIPDicVESGiven = TRUE;
break;
case B3SOIPD_IC_VPS:
here->B3SOIPDicVPS = value->rValue;
here->B3SOIPDicVPSGiven = TRUE;
break;
case B3SOIPD_BJTOFF:
here->B3SOIPDbjtoff = value->iValue;
here->B3SOIPDbjtoffGiven = TRUE;
break;
case B3SOIPD_DEBUG:
here->B3SOIPDdebugMod = value->iValue;
here->B3SOIPDdebugModGiven = TRUE;
break;
case B3SOIPD_RTH0:
here->B3SOIPDrth0 = value->rValue;
here->B3SOIPDrth0Given = TRUE;
break;
case B3SOIPD_CTH0:
here->B3SOIPDcth0 = value->rValue;
here->B3SOIPDcth0Given = TRUE;
break;
case B3SOIPD_NRB:
here->B3SOIPDbodySquares = value->rValue;
here->B3SOIPDbodySquaresGiven = TRUE;
break;
/* v2.0 release */
case B3SOIPD_NBC:
here->B3SOIPDnbc = value->rValue;
here->B3SOIPDnbcGiven = TRUE;
break;
case B3SOIPD_NSEG:
here->B3SOIPDnseg = value->rValue;
here->B3SOIPDnsegGiven = TRUE;
break;
case B3SOIPD_PDBCP:
here->B3SOIPDpdbcp = value->rValue;
here->B3SOIPDpdbcpGiven = TRUE;
break;
case B3SOIPD_PSBCP:
here->B3SOIPDpsbcp = value->rValue;
here->B3SOIPDpsbcpGiven = TRUE;
break;
case B3SOIPD_AGBCP:
here->B3SOIPDagbcp = value->rValue;
here->B3SOIPDagbcpGiven = TRUE;
break;
case B3SOIPD_AEBCP:
here->B3SOIPDaebcp = value->rValue;
here->B3SOIPDaebcpGiven = TRUE;
break;
case B3SOIPD_VBSUSR:
here->B3SOIPDvbsusr = value->rValue;
here->B3SOIPDvbsusrGiven = TRUE;
break;
case B3SOIPD_TNODEOUT:
here->B3SOIPDtnodeout = value->iValue;
here->B3SOIPDtnodeoutGiven = TRUE;
break;
case B3SOIPD_IC:
switch (value->v.numValue)
{
case 5:
here->B3SOIPDicVPS = *(value->v.vec.rVec + 4);
here->B3SOIPDicVPSGiven = TRUE;
case 4:
here->B3SOIPDicVES = *(value->v.vec.rVec + 3);
here->B3SOIPDicVESGiven = TRUE;
case 3:
here->B3SOIPDicVBS = *(value->v.vec.rVec + 2);
here->B3SOIPDicVBSGiven = TRUE;
case 2:
here->B3SOIPDicVGS = *(value->v.vec.rVec + 1);
here->B3SOIPDicVGSGiven = TRUE;
case 1:
here->B3SOIPDicVDS = *(value->v.vec.rVec);
here->B3SOIPDicVDSGiven = TRUE;
break;
default:
return (E_BADPARM);
}
break;
default:
return (E_BADPARM);
}
return (OK);
}