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.
 
 
 
 
 
 

214 lines
6.7 KiB

/**********
Copyright 1999 Regents of the University of California. All rights reserved.
Author: 1998 Samuel Fung, Dennis Sinitsky and Stephen Tang
File: b3soifdask.c 98/5/01
**********/
#include "ngspice.h"
#include <stdio.h>
#include <math.h>
#include "ifsim.h"
#include "cktdefs.h"
#include "devdefs.h"
#include "b3soifddef.h"
#include "sperror.h"
#include "suffix.h"
int
B3SOIFDask(ckt,inst,which,value,select)
CKTcircuit *ckt;
GENinstance *inst;
int which;
IFvalue *value;
IFvalue *select;
{
B3SOIFDinstance *here = (B3SOIFDinstance*)inst;
switch(which)
{ case B3SOIFD_L:
value->rValue = here->B3SOIFDl;
return(OK);
case B3SOIFD_W:
value->rValue = here->B3SOIFDw;
return(OK);
case B3SOIFD_AS:
value->rValue = here->B3SOIFDsourceArea;
return(OK);
case B3SOIFD_AD:
value->rValue = here->B3SOIFDdrainArea;
return(OK);
case B3SOIFD_PS:
value->rValue = here->B3SOIFDsourcePerimeter;
return(OK);
case B3SOIFD_PD:
value->rValue = here->B3SOIFDdrainPerimeter;
return(OK);
case B3SOIFD_NRS:
value->rValue = here->B3SOIFDsourceSquares;
return(OK);
case B3SOIFD_NRD:
value->rValue = here->B3SOIFDdrainSquares;
return(OK);
case B3SOIFD_OFF:
value->rValue = here->B3SOIFDoff;
return(OK);
case B3SOIFD_BJTOFF:
value->iValue = here->B3SOIFDbjtoff;
return(OK);
case B3SOIFD_RTH0:
value->rValue = here->B3SOIFDrth0;
return(OK);
case B3SOIFD_CTH0:
value->rValue = here->B3SOIFDcth0;
return(OK);
case B3SOIFD_NRB:
value->rValue = here->B3SOIFDbodySquares;
return(OK);
case B3SOIFD_IC_VBS:
value->rValue = here->B3SOIFDicVBS;
return(OK);
case B3SOIFD_IC_VDS:
value->rValue = here->B3SOIFDicVDS;
return(OK);
case B3SOIFD_IC_VGS:
value->rValue = here->B3SOIFDicVGS;
return(OK);
case B3SOIFD_IC_VES:
value->rValue = here->B3SOIFDicVES;
return(OK);
case B3SOIFD_IC_VPS:
value->rValue = here->B3SOIFDicVPS;
return(OK);
case B3SOIFD_DNODE:
value->iValue = here->B3SOIFDdNode;
return(OK);
case B3SOIFD_GNODE:
value->iValue = here->B3SOIFDgNode;
return(OK);
case B3SOIFD_SNODE:
value->iValue = here->B3SOIFDsNode;
return(OK);
case B3SOIFD_BNODE:
value->iValue = here->B3SOIFDbNode;
return(OK);
case B3SOIFD_ENODE:
value->iValue = here->B3SOIFDeNode;
return(OK);
case B3SOIFD_DNODEPRIME:
value->iValue = here->B3SOIFDdNodePrime;
return(OK);
case B3SOIFD_SNODEPRIME:
value->iValue = here->B3SOIFDsNodePrime;
return(OK);
case B3SOIFD_SOURCECONDUCT:
value->rValue = here->B3SOIFDsourceConductance;
return(OK);
case B3SOIFD_DRAINCONDUCT:
value->rValue = here->B3SOIFDdrainConductance;
return(OK);
case B3SOIFD_VBD:
value->rValue = *(ckt->CKTstate0 + here->B3SOIFDvbd);
return(OK);
case B3SOIFD_VBS:
value->rValue = *(ckt->CKTstate0 + here->B3SOIFDvbs);
return(OK);
case B3SOIFD_VGS:
value->rValue = *(ckt->CKTstate0 + here->B3SOIFDvgs);
return(OK);
case B3SOIFD_VES:
value->rValue = *(ckt->CKTstate0 + here->B3SOIFDves);
return(OK);
case B3SOIFD_VDS:
value->rValue = *(ckt->CKTstate0 + here->B3SOIFDvds);
return(OK);
case B3SOIFD_CD:
value->rValue = here->B3SOIFDcd;
return(OK);
case B3SOIFD_CBS:
value->rValue = here->B3SOIFDcjs;
return(OK);
case B3SOIFD_CBD:
value->rValue = here->B3SOIFDcjd;
return(OK);
case B3SOIFD_GM:
value->rValue = here->B3SOIFDgm;
return(OK);
case B3SOIFD_GMID:
value->rValue = here->B3SOIFDgm/here->B3SOIFDcd;
return(OK);
case B3SOIFD_GDS:
value->rValue = here->B3SOIFDgds;
return(OK);
case B3SOIFD_GMBS:
value->rValue = here->B3SOIFDgmbs;
return(OK);
case B3SOIFD_GBD:
value->rValue = here->B3SOIFDgjdb;
return(OK);
case B3SOIFD_GBS:
value->rValue = here->B3SOIFDgjsb;
return(OK);
case B3SOIFD_QB:
value->rValue = *(ckt->CKTstate0 + here->B3SOIFDqb);
return(OK);
case B3SOIFD_CQB:
value->rValue = *(ckt->CKTstate0 + here->B3SOIFDcqb);
return(OK);
case B3SOIFD_QG:
value->rValue = *(ckt->CKTstate0 + here->B3SOIFDqg);
return(OK);
case B3SOIFD_CQG:
value->rValue = *(ckt->CKTstate0 + here->B3SOIFDcqg);
return(OK);
case B3SOIFD_QD:
value->rValue = *(ckt->CKTstate0 + here->B3SOIFDqd);
return(OK);
case B3SOIFD_CQD:
value->rValue = *(ckt->CKTstate0 + here->B3SOIFDcqd);
return(OK);
case B3SOIFD_CGG:
value->rValue = here->B3SOIFDcggb;
return(OK);
case B3SOIFD_CGD:
value->rValue = here->B3SOIFDcgdb;
return(OK);
case B3SOIFD_CGS:
value->rValue = here->B3SOIFDcgsb;
return(OK);
case B3SOIFD_CDG:
value->rValue = here->B3SOIFDcdgb;
return(OK);
case B3SOIFD_CDD:
value->rValue = here->B3SOIFDcddb;
return(OK);
case B3SOIFD_CDS:
value->rValue = here->B3SOIFDcdsb;
return(OK);
case B3SOIFD_CBG:
value->rValue = here->B3SOIFDcbgb;
return(OK);
case B3SOIFD_CBDB:
value->rValue = here->B3SOIFDcbdb;
return(OK);
case B3SOIFD_CBSB:
value->rValue = here->B3SOIFDcbsb;
return(OK);
case B3SOIFD_VON:
value->rValue = here->B3SOIFDvon;
return(OK);
case B3SOIFD_VDSAT:
value->rValue = here->B3SOIFDvdsat;
return(OK);
case B3SOIFD_QBS:
value->rValue = *(ckt->CKTstate0 + here->B3SOIFDqbs);
return(OK);
case B3SOIFD_QBD:
value->rValue = *(ckt->CKTstate0 + here->B3SOIFDqbd);
return(OK);
default:
return(E_BADPARM);
}
/* NOTREACHED */
}