New Binding Method extended to HFETA/HFET1 device

This commit is contained in:
Francesco Lannutti 2013-04-01 22:32:51 +02:00
parent 177a7a43e6
commit 5bbfefd65e
2 changed files with 389 additions and 475 deletions

View File

@ -1,5 +1,5 @@
/********** /**********
Author: 2012 Francesco Lannutti Author: 2013 Francesco Lannutti
**********/ **********/
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
@ -7,376 +7,369 @@ Author: 2012 Francesco Lannutti
#include "hfetdefs.h" #include "hfetdefs.h"
#include "ngspice/sperror.h" #include "ngspice/sperror.h"
#include <stdlib.h>
static
int int
HFETAbindCSC(GENmodel *inModel, CKTcircuit *ckt) BindCompare (const void *a, const void *b)
{ {
HFETAmodel *model = (HFETAmodel *)inModel; BindElement *A, *B ;
int i ; A = (BindElement *)a ;
B = (BindElement *)b ;
/* loop through all the hfet models */ return ((int)(A->Sparse - B->Sparse)) ;
for( ; model != NULL; model = model->HFETAnextModel ) {
HFETAinstance *here;
/* loop through all the instances of the model */
for (here = model->HFETAinstances; here != NULL ;
here = here->HFETAnextInstance) {
i = 0 ;
if ((here->HFETAdrainNode != 0) && (here->HFETAdrainPrimeNode != 0)) {
while (here->HFETAdrainDrainPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
here->HFETAdrainDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAdrainPrimeNode != 0)) {
while (here->HFETAgatePrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
here->HFETAgatePrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAsourcePrimeNode != 0)) {
while (here->HFETAgatePrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
here->HFETAgatePrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAsourceNode != 0) && (here->HFETAsourcePrimeNode != 0)) {
while (here->HFETAsourceSourcePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
here->HFETAsourceSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAdrainNode != 0)) {
while (here->HFETAdrainPrimeDrainPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
here->HFETAdrainPrimeDrainPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAgatePrimeNode != 0)) {
while (here->HFETAdrainPrimeGatePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
here->HFETAdrainPrimeGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAsourcePrimeNode != 0)) {
while (here->HFETAdrainPrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
here->HFETAdrainPrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAgatePrimeNode != 0)) {
while (here->HFETAsourcePrimeGatePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
here->HFETAsourcePrimeGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAsourceNode != 0)) {
while (here->HFETAsourcePrimeSourcePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
here->HFETAsourcePrimeSourcePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAdrainPrimeNode != 0)) {
while (here->HFETAsourcePrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
here->HFETAsourcePrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAdrainNode != 0) && (here->HFETAdrainNode != 0)) {
while (here->HFETAdrainDrainPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
here->HFETAdrainDrainPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAgatePrimeNode != 0)) {
while (here->HFETAgatePrimeGatePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
here->HFETAgatePrimeGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAsourceNode != 0) && (here->HFETAsourceNode != 0)) {
while (here->HFETAsourceSourcePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
here->HFETAsourceSourcePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAdrainPrimeNode != 0)) {
while (here->HFETAdrainPrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
here->HFETAdrainPrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAsourcePrimeNode != 0)) {
while (here->HFETAsourcePrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
here->HFETAsourcePrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAdrainPrmPrmNode != 0)) {
while (here->HFETAdrainPrimeDrainPrmPrmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
here->HFETAdrainPrimeDrainPrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAdrainPrmPrmNode != 0) && (here->HFETAdrainPrimeNode != 0)) {
while (here->HFETAdrainPrmPrmDrainPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
here->HFETAdrainPrmPrmDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAdrainPrmPrmNode != 0) && (here->HFETAgatePrimeNode != 0)) {
while (here->HFETAdrainPrmPrmGatePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
here->HFETAdrainPrmPrmGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAdrainPrmPrmNode != 0)) {
while (here->HFETAgatePrimeDrainPrmPrmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
here->HFETAgatePrimeDrainPrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAdrainPrmPrmNode != 0) && (here->HFETAdrainPrmPrmNode != 0)) {
while (here->HFETAdrainPrmPrmDrainPrmPrmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
here->HFETAdrainPrmPrmDrainPrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAsourcePrmPrmNode != 0)) {
while (here->HFETAsourcePrimeSourcePrmPrmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
here->HFETAsourcePrimeSourcePrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAsourcePrmPrmNode != 0) && (here->HFETAsourcePrimeNode != 0)) {
while (here->HFETAsourcePrmPrmSourcePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
here->HFETAsourcePrmPrmSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAsourcePrmPrmNode != 0) && (here->HFETAgatePrimeNode != 0)) {
while (here->HFETAsourcePrmPrmGatePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
here->HFETAsourcePrmPrmGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAsourcePrmPrmNode != 0)) {
while (here->HFETAgatePrimeSourcePrmPrmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
here->HFETAgatePrimeSourcePrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAsourcePrmPrmNode != 0) && (here->HFETAsourcePrmPrmNode != 0)) {
while (here->HFETAsourcePrmPrmSourcePrmPrmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
here->HFETAsourcePrmPrmSourcePrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAgateNode != 0) && (here->HFETAgateNode != 0)) {
while (here->HFETAgateGatePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
here->HFETAgateGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAgateNode != 0) && (here->HFETAgatePrimeNode != 0)) {
while (here->HFETAgateGatePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
here->HFETAgateGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAgateNode != 0)) {
while (here->HFETAgatePrimeGatePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
here->HFETAgatePrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
}
}
return(OK);
} }
int int
HFETAbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt) HFETAbindCSC (GENmodel *inModel, CKTcircuit *ckt)
{ {
HFETAmodel *model = (HFETAmodel *)inModel; HFETAmodel *model = (HFETAmodel *)inModel ;
int i ; HFETAinstance *here ;
double *i ;
BindElement *matched, *BindStruct ;
size_t nz ;
/* loop through all the hfet models */ BindStruct = ckt->CKTmatrix->CKTbindStruct ;
for( ; model != NULL; model = model->HFETAnextModel ) { nz = (size_t)ckt->CKTmatrix->CKTklunz ;
HFETAinstance *here;
/* loop through all the HFETA models */
for ( ; model != NULL ; model = model->HFETAnextModel)
{
/* loop through all the instances of the model */ /* loop through all the instances of the model */
for (here = model->HFETAinstances; here != NULL ; for (here = model->HFETAinstances ; here != NULL ; here = here->HFETAnextInstance)
here = here->HFETAnextInstance) { {
if ((here->HFETAdrainNode != 0) && (here->HFETAdrainPrimeNode != 0))
{
i = here->HFETAdrainDrainPrimePtr ;
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
here->HFETAdrainDrainPrimeStructPtr = matched ;
here->HFETAdrainDrainPrimePtr = matched->CSC ;
}
i = 0 ; if ((here->HFETAgatePrimeNode != 0) && (here->HFETAdrainPrimeNode != 0))
if ((here->HFETAdrainNode != 0) && (here->HFETAdrainPrimeNode != 0)) { {
while (here->HFETAdrainDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ; i = here->HFETAgatePrimeDrainPrimePtr ;
here->HFETAdrainDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ; matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
} here->HFETAgatePrimeDrainPrimeStructPtr = matched ;
here->HFETAgatePrimeDrainPrimePtr = matched->CSC ;
}
i = 0 ; if ((here->HFETAgatePrimeNode != 0) && (here->HFETAsourcePrimeNode != 0))
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAdrainPrimeNode != 0)) { {
while (here->HFETAgatePrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ; i = here->HFETAgatePrimeSourcePrimePtr ;
here->HFETAgatePrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ; matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
} here->HFETAgatePrimeSourcePrimeStructPtr = matched ;
here->HFETAgatePrimeSourcePrimePtr = matched->CSC ;
}
i = 0 ; if ((here->HFETAsourceNode != 0) && (here->HFETAsourcePrimeNode != 0))
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAsourcePrimeNode != 0)) { {
while (here->HFETAgatePrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ; i = here->HFETAsourceSourcePrimePtr ;
here->HFETAgatePrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ; matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
} here->HFETAsourceSourcePrimeStructPtr = matched ;
here->HFETAsourceSourcePrimePtr = matched->CSC ;
}
i = 0 ; if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAdrainNode != 0))
if ((here->HFETAsourceNode != 0) && (here->HFETAsourcePrimeNode != 0)) { {
while (here->HFETAsourceSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ; i = here->HFETAdrainPrimeDrainPtr ;
here->HFETAsourceSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ; matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
} here->HFETAdrainPrimeDrainStructPtr = matched ;
here->HFETAdrainPrimeDrainPtr = matched->CSC ;
}
i = 0 ; if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAgatePrimeNode != 0))
if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAdrainNode != 0)) { {
while (here->HFETAdrainPrimeDrainPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ; i = here->HFETAdrainPrimeGatePrimePtr ;
here->HFETAdrainPrimeDrainPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ; matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
} here->HFETAdrainPrimeGatePrimeStructPtr = matched ;
here->HFETAdrainPrimeGatePrimePtr = matched->CSC ;
}
i = 0 ; if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAsourcePrimeNode != 0))
if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAgatePrimeNode != 0)) { {
while (here->HFETAdrainPrimeGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ; i = here->HFETAdrainPrimeSourcePrimePtr ;
here->HFETAdrainPrimeGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ; matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
} here->HFETAdrainPrimeSourcePrimeStructPtr = matched ;
here->HFETAdrainPrimeSourcePrimePtr = matched->CSC ;
}
i = 0 ; if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAgatePrimeNode != 0))
if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAsourcePrimeNode != 0)) { {
while (here->HFETAdrainPrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ; i = here->HFETAsourcePrimeGatePrimePtr ;
here->HFETAdrainPrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ; matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
} here->HFETAsourcePrimeGatePrimeStructPtr = matched ;
here->HFETAsourcePrimeGatePrimePtr = matched->CSC ;
}
i = 0 ; if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAsourceNode != 0))
if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAgatePrimeNode != 0)) { {
while (here->HFETAsourcePrimeGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ; i = here->HFETAsourcePrimeSourcePtr ;
here->HFETAsourcePrimeGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ; matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
} here->HFETAsourcePrimeSourceStructPtr = matched ;
here->HFETAsourcePrimeSourcePtr = matched->CSC ;
}
i = 0 ; if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAdrainPrimeNode != 0))
if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAsourceNode != 0)) { {
while (here->HFETAsourcePrimeSourcePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ; i = here->HFETAsourcePrimeDrainPrimePtr ;
here->HFETAsourcePrimeSourcePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ; matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
} here->HFETAsourcePrimeDrainPrimeStructPtr = matched ;
here->HFETAsourcePrimeDrainPrimePtr = matched->CSC ;
}
i = 0 ; if ((here->HFETAdrainNode != 0) && (here->HFETAdrainNode != 0))
if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAdrainPrimeNode != 0)) { {
while (here->HFETAsourcePrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ; i = here->HFETAdrainDrainPtr ;
here->HFETAsourcePrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ; matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
} here->HFETAdrainDrainStructPtr = matched ;
here->HFETAdrainDrainPtr = matched->CSC ;
}
i = 0 ; if ((here->HFETAgatePrimeNode != 0) && (here->HFETAgatePrimeNode != 0))
if ((here->HFETAdrainNode != 0) && (here->HFETAdrainNode != 0)) { {
while (here->HFETAdrainDrainPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ; i = here->HFETAgatePrimeGatePrimePtr ;
here->HFETAdrainDrainPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ; matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
} here->HFETAgatePrimeGatePrimeStructPtr = matched ;
here->HFETAgatePrimeGatePrimePtr = matched->CSC ;
}
i = 0 ; if ((here->HFETAsourceNode != 0) && (here->HFETAsourceNode != 0))
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAgatePrimeNode != 0)) { {
while (here->HFETAgatePrimeGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ; i = here->HFETAsourceSourcePtr ;
here->HFETAgatePrimeGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ; matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
} here->HFETAsourceSourceStructPtr = matched ;
here->HFETAsourceSourcePtr = matched->CSC ;
}
i = 0 ; if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAdrainPrimeNode != 0))
if ((here->HFETAsourceNode != 0) && (here->HFETAsourceNode != 0)) { {
while (here->HFETAsourceSourcePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ; i = here->HFETAdrainPrimeDrainPrimePtr ;
here->HFETAsourceSourcePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ; matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
} here->HFETAdrainPrimeDrainPrimeStructPtr = matched ;
here->HFETAdrainPrimeDrainPrimePtr = matched->CSC ;
}
i = 0 ; if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAsourcePrimeNode != 0))
if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAdrainPrimeNode != 0)) { {
while (here->HFETAdrainPrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ; i = here->HFETAsourcePrimeSourcePrimePtr ;
here->HFETAdrainPrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ; matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
} here->HFETAsourcePrimeSourcePrimeStructPtr = matched ;
here->HFETAsourcePrimeSourcePrimePtr = matched->CSC ;
}
i = 0 ; if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAdrainPrmPrmNode != 0))
if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAsourcePrimeNode != 0)) { {
while (here->HFETAsourcePrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ; i = here->HFETAdrainPrimeDrainPrmPrmPtr ;
here->HFETAsourcePrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ; matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
} here->HFETAdrainPrimeDrainPrmPrmStructPtr = matched ;
here->HFETAdrainPrimeDrainPrmPrmPtr = matched->CSC ;
}
i = 0 ; if ((here->HFETAdrainPrmPrmNode != 0) && (here->HFETAdrainPrimeNode != 0))
if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAdrainPrmPrmNode != 0)) { {
while (here->HFETAdrainPrimeDrainPrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ; i = here->HFETAdrainPrmPrmDrainPrimePtr ;
here->HFETAdrainPrimeDrainPrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ; matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
} here->HFETAdrainPrmPrmDrainPrimeStructPtr = matched ;
here->HFETAdrainPrmPrmDrainPrimePtr = matched->CSC ;
}
i = 0 ; if ((here->HFETAdrainPrmPrmNode != 0) && (here->HFETAgatePrimeNode != 0))
if ((here->HFETAdrainPrmPrmNode != 0) && (here->HFETAdrainPrimeNode != 0)) { {
while (here->HFETAdrainPrmPrmDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ; i = here->HFETAdrainPrmPrmGatePrimePtr ;
here->HFETAdrainPrmPrmDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ; matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
} here->HFETAdrainPrmPrmGatePrimeStructPtr = matched ;
here->HFETAdrainPrmPrmGatePrimePtr = matched->CSC ;
}
i = 0 ; if ((here->HFETAgatePrimeNode != 0) && (here->HFETAdrainPrmPrmNode != 0))
if ((here->HFETAdrainPrmPrmNode != 0) && (here->HFETAgatePrimeNode != 0)) { {
while (here->HFETAdrainPrmPrmGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ; i = here->HFETAgatePrimeDrainPrmPrmPtr ;
here->HFETAdrainPrmPrmGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ; matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
} here->HFETAgatePrimeDrainPrmPrmStructPtr = matched ;
here->HFETAgatePrimeDrainPrmPrmPtr = matched->CSC ;
}
i = 0 ; if ((here->HFETAdrainPrmPrmNode != 0) && (here->HFETAdrainPrmPrmNode != 0))
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAdrainPrmPrmNode != 0)) { {
while (here->HFETAgatePrimeDrainPrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ; i = here->HFETAdrainPrmPrmDrainPrmPrmPtr ;
here->HFETAgatePrimeDrainPrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ; matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
} here->HFETAdrainPrmPrmDrainPrmPrmStructPtr = matched ;
here->HFETAdrainPrmPrmDrainPrmPrmPtr = matched->CSC ;
}
i = 0 ; if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAsourcePrmPrmNode != 0))
if ((here->HFETAdrainPrmPrmNode != 0) && (here->HFETAdrainPrmPrmNode != 0)) { {
while (here->HFETAdrainPrmPrmDrainPrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ; i = here->HFETAsourcePrimeSourcePrmPrmPtr ;
here->HFETAdrainPrmPrmDrainPrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ; matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
} here->HFETAsourcePrimeSourcePrmPrmStructPtr = matched ;
here->HFETAsourcePrimeSourcePrmPrmPtr = matched->CSC ;
}
i = 0 ; if ((here->HFETAsourcePrmPrmNode != 0) && (here->HFETAsourcePrimeNode != 0))
if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAsourcePrmPrmNode != 0)) { {
while (here->HFETAsourcePrimeSourcePrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ; i = here->HFETAsourcePrmPrmSourcePrimePtr ;
here->HFETAsourcePrimeSourcePrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ; matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
} here->HFETAsourcePrmPrmSourcePrimeStructPtr = matched ;
here->HFETAsourcePrmPrmSourcePrimePtr = matched->CSC ;
}
i = 0 ; if ((here->HFETAsourcePrmPrmNode != 0) && (here->HFETAgatePrimeNode != 0))
if ((here->HFETAsourcePrmPrmNode != 0) && (here->HFETAsourcePrimeNode != 0)) { {
while (here->HFETAsourcePrmPrmSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ; i = here->HFETAsourcePrmPrmGatePrimePtr ;
here->HFETAsourcePrmPrmSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ; matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
} here->HFETAsourcePrmPrmGatePrimeStructPtr = matched ;
here->HFETAsourcePrmPrmGatePrimePtr = matched->CSC ;
}
i = 0 ; if ((here->HFETAgatePrimeNode != 0) && (here->HFETAsourcePrmPrmNode != 0))
if ((here->HFETAsourcePrmPrmNode != 0) && (here->HFETAgatePrimeNode != 0)) { {
while (here->HFETAsourcePrmPrmGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ; i = here->HFETAgatePrimeSourcePrmPrmPtr ;
here->HFETAsourcePrmPrmGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ; matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
} here->HFETAgatePrimeSourcePrmPrmStructPtr = matched ;
here->HFETAgatePrimeSourcePrmPrmPtr = matched->CSC ;
}
i = 0 ; if ((here->HFETAsourcePrmPrmNode != 0) && (here->HFETAsourcePrmPrmNode != 0))
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAsourcePrmPrmNode != 0)) { {
while (here->HFETAgatePrimeSourcePrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ; i = here->HFETAsourcePrmPrmSourcePrmPrmPtr ;
here->HFETAgatePrimeSourcePrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ; matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
} here->HFETAsourcePrmPrmSourcePrmPrmStructPtr = matched ;
here->HFETAsourcePrmPrmSourcePrmPrmPtr = matched->CSC ;
}
i = 0 ; if ((here->HFETAgateNode != 0) && (here->HFETAgateNode != 0))
if ((here->HFETAsourcePrmPrmNode != 0) && (here->HFETAsourcePrmPrmNode != 0)) { {
while (here->HFETAsourcePrmPrmSourcePrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ; i = here->HFETAgateGatePtr ;
here->HFETAsourcePrmPrmSourcePrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ; matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
} here->HFETAgateGateStructPtr = matched ;
here->HFETAgateGatePtr = matched->CSC ;
}
i = 0 ; if ((here->HFETAgateNode != 0) && (here->HFETAgatePrimeNode != 0))
if ((here->HFETAgateNode != 0) && (here->HFETAgateNode != 0)) { {
while (here->HFETAgateGatePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ; i = here->HFETAgateGatePrimePtr ;
here->HFETAgateGatePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ; matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
} here->HFETAgateGatePrimeStructPtr = matched ;
here->HFETAgateGatePrimePtr = matched->CSC ;
}
i = 0 ; if ((here->HFETAgatePrimeNode != 0) && (here->HFETAgateNode != 0))
if ((here->HFETAgateNode != 0) && (here->HFETAgatePrimeNode != 0)) { {
while (here->HFETAgateGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ; i = here->HFETAgatePrimeGatePtr ;
here->HFETAgateGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ; matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
} here->HFETAgatePrimeGateStructPtr = matched ;
here->HFETAgatePrimeGatePtr = matched->CSC ;
}
i = 0 ; }
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAgateNode != 0)) {
while (here->HFETAgatePrimeGatePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
here->HFETAgatePrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
}
}
} }
return(OK);
return (OK) ;
}
int
HFETAbindCSCComplex (GENmodel *inModel, CKTcircuit *ckt)
{
HFETAmodel *model = (HFETAmodel *)inModel ;
HFETAinstance *here ;
NG_IGNORE (ckt) ;
/* loop through all the HFETA models */
for ( ; model != NULL ; model = model->HFETAnextModel)
{
/* loop through all the instances of the model */
for (here = model->HFETAinstances ; here != NULL ; here = here->HFETAnextInstance)
{
if ((here->HFETAdrainNode != 0) && (here->HFETAdrainPrimeNode != 0))
here->HFETAdrainDrainPrimePtr = here->HFETAdrainDrainPrimeStructPtr->CSC_Complex ;
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAdrainPrimeNode != 0))
here->HFETAgatePrimeDrainPrimePtr = here->HFETAgatePrimeDrainPrimeStructPtr->CSC_Complex ;
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAsourcePrimeNode != 0))
here->HFETAgatePrimeSourcePrimePtr = here->HFETAgatePrimeSourcePrimeStructPtr->CSC_Complex ;
if ((here->HFETAsourceNode != 0) && (here->HFETAsourcePrimeNode != 0))
here->HFETAsourceSourcePrimePtr = here->HFETAsourceSourcePrimeStructPtr->CSC_Complex ;
if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAdrainNode != 0))
here->HFETAdrainPrimeDrainPtr = here->HFETAdrainPrimeDrainStructPtr->CSC_Complex ;
if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAgatePrimeNode != 0))
here->HFETAdrainPrimeGatePrimePtr = here->HFETAdrainPrimeGatePrimeStructPtr->CSC_Complex ;
if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAsourcePrimeNode != 0))
here->HFETAdrainPrimeSourcePrimePtr = here->HFETAdrainPrimeSourcePrimeStructPtr->CSC_Complex ;
if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAgatePrimeNode != 0))
here->HFETAsourcePrimeGatePrimePtr = here->HFETAsourcePrimeGatePrimeStructPtr->CSC_Complex ;
if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAsourceNode != 0))
here->HFETAsourcePrimeSourcePtr = here->HFETAsourcePrimeSourceStructPtr->CSC_Complex ;
if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAdrainPrimeNode != 0))
here->HFETAsourcePrimeDrainPrimePtr = here->HFETAsourcePrimeDrainPrimeStructPtr->CSC_Complex ;
if ((here->HFETAdrainNode != 0) && (here->HFETAdrainNode != 0))
here->HFETAdrainDrainPtr = here->HFETAdrainDrainStructPtr->CSC_Complex ;
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAgatePrimeNode != 0))
here->HFETAgatePrimeGatePrimePtr = here->HFETAgatePrimeGatePrimeStructPtr->CSC_Complex ;
if ((here->HFETAsourceNode != 0) && (here->HFETAsourceNode != 0))
here->HFETAsourceSourcePtr = here->HFETAsourceSourceStructPtr->CSC_Complex ;
if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAdrainPrimeNode != 0))
here->HFETAdrainPrimeDrainPrimePtr = here->HFETAdrainPrimeDrainPrimeStructPtr->CSC_Complex ;
if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAsourcePrimeNode != 0))
here->HFETAsourcePrimeSourcePrimePtr = here->HFETAsourcePrimeSourcePrimeStructPtr->CSC_Complex ;
if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAdrainPrmPrmNode != 0))
here->HFETAdrainPrimeDrainPrmPrmPtr = here->HFETAdrainPrimeDrainPrmPrmStructPtr->CSC_Complex ;
if ((here->HFETAdrainPrmPrmNode != 0) && (here->HFETAdrainPrimeNode != 0))
here->HFETAdrainPrmPrmDrainPrimePtr = here->HFETAdrainPrmPrmDrainPrimeStructPtr->CSC_Complex ;
if ((here->HFETAdrainPrmPrmNode != 0) && (here->HFETAgatePrimeNode != 0))
here->HFETAdrainPrmPrmGatePrimePtr = here->HFETAdrainPrmPrmGatePrimeStructPtr->CSC_Complex ;
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAdrainPrmPrmNode != 0))
here->HFETAgatePrimeDrainPrmPrmPtr = here->HFETAgatePrimeDrainPrmPrmStructPtr->CSC_Complex ;
if ((here->HFETAdrainPrmPrmNode != 0) && (here->HFETAdrainPrmPrmNode != 0))
here->HFETAdrainPrmPrmDrainPrmPrmPtr = here->HFETAdrainPrmPrmDrainPrmPrmStructPtr->CSC_Complex ;
if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAsourcePrmPrmNode != 0))
here->HFETAsourcePrimeSourcePrmPrmPtr = here->HFETAsourcePrimeSourcePrmPrmStructPtr->CSC_Complex ;
if ((here->HFETAsourcePrmPrmNode != 0) && (here->HFETAsourcePrimeNode != 0))
here->HFETAsourcePrmPrmSourcePrimePtr = here->HFETAsourcePrmPrmSourcePrimeStructPtr->CSC_Complex ;
if ((here->HFETAsourcePrmPrmNode != 0) && (here->HFETAgatePrimeNode != 0))
here->HFETAsourcePrmPrmGatePrimePtr = here->HFETAsourcePrmPrmGatePrimeStructPtr->CSC_Complex ;
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAsourcePrmPrmNode != 0))
here->HFETAgatePrimeSourcePrmPrmPtr = here->HFETAgatePrimeSourcePrmPrmStructPtr->CSC_Complex ;
if ((here->HFETAsourcePrmPrmNode != 0) && (here->HFETAsourcePrmPrmNode != 0))
here->HFETAsourcePrmPrmSourcePrmPrmPtr = here->HFETAsourcePrmPrmSourcePrmPrmStructPtr->CSC_Complex ;
if ((here->HFETAgateNode != 0) && (here->HFETAgateNode != 0))
here->HFETAgateGatePtr = here->HFETAgateGateStructPtr->CSC_Complex ;
if ((here->HFETAgateNode != 0) && (here->HFETAgatePrimeNode != 0))
here->HFETAgateGatePrimePtr = here->HFETAgateGatePrimeStructPtr->CSC_Complex ;
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAgateNode != 0))
here->HFETAgatePrimeGatePtr = here->HFETAgatePrimeGateStructPtr->CSC_Complex ;
}
}
return (OK) ;
} }
int int
@ -384,211 +377,101 @@ HFETAbindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
{ {
HFETAmodel *model = (HFETAmodel *)inModel ; HFETAmodel *model = (HFETAmodel *)inModel ;
HFETAinstance *here ; HFETAinstance *here ;
int i ;
/* loop through all the HfetA models */ NG_IGNORE (ckt) ;
/* loop through all the HFETA models */
for ( ; model != NULL ; model = model->HFETAnextModel) for ( ; model != NULL ; model = model->HFETAnextModel)
{ {
/* loop through all the instances of the model */ /* loop through all the instances of the model */
for (here = model->HFETAinstances ; here != NULL ; here = here->HFETAnextInstance) for (here = model->HFETAinstances ; here != NULL ; here = here->HFETAnextInstance)
{ {
i = 0 ;
if ((here->HFETAdrainNode != 0) && (here->HFETAdrainPrimeNode != 0)) if ((here->HFETAdrainNode != 0) && (here->HFETAdrainPrimeNode != 0))
{ here->HFETAdrainDrainPrimePtr = here->HFETAdrainDrainPrimeStructPtr->CSC ;
while (here->HFETAdrainDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
here->HFETAdrainDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAdrainPrimeNode != 0)) if ((here->HFETAgatePrimeNode != 0) && (here->HFETAdrainPrimeNode != 0))
{ here->HFETAgatePrimeDrainPrimePtr = here->HFETAgatePrimeDrainPrimeStructPtr->CSC ;
while (here->HFETAgatePrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
here->HFETAgatePrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAsourcePrimeNode != 0)) if ((here->HFETAgatePrimeNode != 0) && (here->HFETAsourcePrimeNode != 0))
{ here->HFETAgatePrimeSourcePrimePtr = here->HFETAgatePrimeSourcePrimeStructPtr->CSC ;
while (here->HFETAgatePrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
here->HFETAgatePrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAsourceNode != 0) && (here->HFETAsourcePrimeNode != 0)) if ((here->HFETAsourceNode != 0) && (here->HFETAsourcePrimeNode != 0))
{ here->HFETAsourceSourcePrimePtr = here->HFETAsourceSourcePrimeStructPtr->CSC ;
while (here->HFETAsourceSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
here->HFETAsourceSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAdrainNode != 0)) if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAdrainNode != 0))
{ here->HFETAdrainPrimeDrainPtr = here->HFETAdrainPrimeDrainStructPtr->CSC ;
while (here->HFETAdrainPrimeDrainPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
here->HFETAdrainPrimeDrainPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAgatePrimeNode != 0)) if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAgatePrimeNode != 0))
{ here->HFETAdrainPrimeGatePrimePtr = here->HFETAdrainPrimeGatePrimeStructPtr->CSC ;
while (here->HFETAdrainPrimeGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
here->HFETAdrainPrimeGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAsourcePrimeNode != 0)) if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAsourcePrimeNode != 0))
{ here->HFETAdrainPrimeSourcePrimePtr = here->HFETAdrainPrimeSourcePrimeStructPtr->CSC ;
while (here->HFETAdrainPrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
here->HFETAdrainPrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAgatePrimeNode != 0)) if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAgatePrimeNode != 0))
{ here->HFETAsourcePrimeGatePrimePtr = here->HFETAsourcePrimeGatePrimeStructPtr->CSC ;
while (here->HFETAsourcePrimeGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
here->HFETAsourcePrimeGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAsourceNode != 0)) if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAsourceNode != 0))
{ here->HFETAsourcePrimeSourcePtr = here->HFETAsourcePrimeSourceStructPtr->CSC ;
while (here->HFETAsourcePrimeSourcePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
here->HFETAsourcePrimeSourcePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAdrainPrimeNode != 0)) if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAdrainPrimeNode != 0))
{ here->HFETAsourcePrimeDrainPrimePtr = here->HFETAsourcePrimeDrainPrimeStructPtr->CSC ;
while (here->HFETAsourcePrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
here->HFETAsourcePrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAdrainNode != 0) && (here->HFETAdrainNode != 0)) if ((here->HFETAdrainNode != 0) && (here->HFETAdrainNode != 0))
{ here->HFETAdrainDrainPtr = here->HFETAdrainDrainStructPtr->CSC ;
while (here->HFETAdrainDrainPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
here->HFETAdrainDrainPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAgatePrimeNode != 0)) if ((here->HFETAgatePrimeNode != 0) && (here->HFETAgatePrimeNode != 0))
{ here->HFETAgatePrimeGatePrimePtr = here->HFETAgatePrimeGatePrimeStructPtr->CSC ;
while (here->HFETAgatePrimeGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
here->HFETAgatePrimeGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAsourceNode != 0) && (here->HFETAsourceNode != 0)) if ((here->HFETAsourceNode != 0) && (here->HFETAsourceNode != 0))
{ here->HFETAsourceSourcePtr = here->HFETAsourceSourceStructPtr->CSC ;
while (here->HFETAsourceSourcePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
here->HFETAsourceSourcePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAdrainPrimeNode != 0)) if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAdrainPrimeNode != 0))
{ here->HFETAdrainPrimeDrainPrimePtr = here->HFETAdrainPrimeDrainPrimeStructPtr->CSC ;
while (here->HFETAdrainPrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
here->HFETAdrainPrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAsourcePrimeNode != 0)) if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAsourcePrimeNode != 0))
{ here->HFETAsourcePrimeSourcePrimePtr = here->HFETAsourcePrimeSourcePrimeStructPtr->CSC ;
while (here->HFETAsourcePrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
here->HFETAsourcePrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAdrainPrmPrmNode != 0)) if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAdrainPrmPrmNode != 0))
{ here->HFETAdrainPrimeDrainPrmPrmPtr = here->HFETAdrainPrimeDrainPrmPrmStructPtr->CSC ;
while (here->HFETAdrainPrimeDrainPrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
here->HFETAdrainPrimeDrainPrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAdrainPrmPrmNode != 0) && (here->HFETAdrainPrimeNode != 0)) if ((here->HFETAdrainPrmPrmNode != 0) && (here->HFETAdrainPrimeNode != 0))
{ here->HFETAdrainPrmPrmDrainPrimePtr = here->HFETAdrainPrmPrmDrainPrimeStructPtr->CSC ;
while (here->HFETAdrainPrmPrmDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
here->HFETAdrainPrmPrmDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAdrainPrmPrmNode != 0) && (here->HFETAgatePrimeNode != 0)) if ((here->HFETAdrainPrmPrmNode != 0) && (here->HFETAgatePrimeNode != 0))
{ here->HFETAdrainPrmPrmGatePrimePtr = here->HFETAdrainPrmPrmGatePrimeStructPtr->CSC ;
while (here->HFETAdrainPrmPrmGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
here->HFETAdrainPrmPrmGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAdrainPrmPrmNode != 0)) if ((here->HFETAgatePrimeNode != 0) && (here->HFETAdrainPrmPrmNode != 0))
{ here->HFETAgatePrimeDrainPrmPrmPtr = here->HFETAgatePrimeDrainPrmPrmStructPtr->CSC ;
while (here->HFETAgatePrimeDrainPrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
here->HFETAgatePrimeDrainPrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAdrainPrmPrmNode != 0) && (here->HFETAdrainPrmPrmNode != 0)) if ((here->HFETAdrainPrmPrmNode != 0) && (here->HFETAdrainPrmPrmNode != 0))
{ here->HFETAdrainPrmPrmDrainPrmPrmPtr = here->HFETAdrainPrmPrmDrainPrmPrmStructPtr->CSC ;
while (here->HFETAdrainPrmPrmDrainPrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
here->HFETAdrainPrmPrmDrainPrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAsourcePrmPrmNode != 0)) if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAsourcePrmPrmNode != 0))
{ here->HFETAsourcePrimeSourcePrmPrmPtr = here->HFETAsourcePrimeSourcePrmPrmStructPtr->CSC ;
while (here->HFETAsourcePrimeSourcePrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
here->HFETAsourcePrimeSourcePrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAsourcePrmPrmNode != 0) && (here->HFETAsourcePrimeNode != 0)) if ((here->HFETAsourcePrmPrmNode != 0) && (here->HFETAsourcePrimeNode != 0))
{ here->HFETAsourcePrmPrmSourcePrimePtr = here->HFETAsourcePrmPrmSourcePrimeStructPtr->CSC ;
while (here->HFETAsourcePrmPrmSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
here->HFETAsourcePrmPrmSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAsourcePrmPrmNode != 0) && (here->HFETAgatePrimeNode != 0)) if ((here->HFETAsourcePrmPrmNode != 0) && (here->HFETAgatePrimeNode != 0))
{ here->HFETAsourcePrmPrmGatePrimePtr = here->HFETAsourcePrmPrmGatePrimeStructPtr->CSC ;
while (here->HFETAsourcePrmPrmGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
here->HFETAsourcePrmPrmGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAsourcePrmPrmNode != 0)) if ((here->HFETAgatePrimeNode != 0) && (here->HFETAsourcePrmPrmNode != 0))
{ here->HFETAgatePrimeSourcePrmPrmPtr = here->HFETAgatePrimeSourcePrmPrmStructPtr->CSC ;
while (here->HFETAgatePrimeSourcePrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
here->HFETAgatePrimeSourcePrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAsourcePrmPrmNode != 0) && (here->HFETAsourcePrmPrmNode != 0)) if ((here->HFETAsourcePrmPrmNode != 0) && (here->HFETAsourcePrmPrmNode != 0))
{ here->HFETAsourcePrmPrmSourcePrmPrmPtr = here->HFETAsourcePrmPrmSourcePrmPrmStructPtr->CSC ;
while (here->HFETAsourcePrmPrmSourcePrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
here->HFETAsourcePrmPrmSourcePrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAgateNode != 0) && (here->HFETAgateNode != 0)) if ((here->HFETAgateNode != 0) && (here->HFETAgateNode != 0))
{ here->HFETAgateGatePtr = here->HFETAgateGateStructPtr->CSC ;
while (here->HFETAgateGatePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
here->HFETAgateGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAgateNode != 0) && (here->HFETAgatePrimeNode != 0)) if ((here->HFETAgateNode != 0) && (here->HFETAgatePrimeNode != 0))
{ here->HFETAgateGatePrimePtr = here->HFETAgateGatePrimeStructPtr->CSC ;
while (here->HFETAgateGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
here->HFETAgateGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
i = 0 ;
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAgateNode != 0)) if ((here->HFETAgatePrimeNode != 0) && (here->HFETAgateNode != 0))
{ here->HFETAgatePrimeGatePtr = here->HFETAgatePrimeGateStructPtr->CSC ;
while (here->HFETAgatePrimeGatePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
here->HFETAgatePrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
}
} }
} }
return (OK) ; return (OK) ;
} }

View File

@ -122,6 +122,37 @@ typedef struct sHFETAinstance {
double HFETAfgds; double HFETAfgds;
double HFETAggrwl; double HFETAggrwl;
#ifdef KLU
BindElement *HFETAdrainDrainPrimeStructPtr ;
BindElement *HFETAgatePrimeDrainPrimeStructPtr ;
BindElement *HFETAgatePrimeSourcePrimeStructPtr ;
BindElement *HFETAsourceSourcePrimeStructPtr ;
BindElement *HFETAdrainPrimeDrainStructPtr ;
BindElement *HFETAdrainPrimeGatePrimeStructPtr ;
BindElement *HFETAdrainPrimeSourcePrimeStructPtr ;
BindElement *HFETAsourcePrimeGatePrimeStructPtr ;
BindElement *HFETAsourcePrimeSourceStructPtr ;
BindElement *HFETAsourcePrimeDrainPrimeStructPtr ;
BindElement *HFETAdrainDrainStructPtr ;
BindElement *HFETAgatePrimeGatePrimeStructPtr ;
BindElement *HFETAsourceSourceStructPtr ;
BindElement *HFETAdrainPrimeDrainPrimeStructPtr ;
BindElement *HFETAsourcePrimeSourcePrimeStructPtr ;
BindElement *HFETAdrainPrimeDrainPrmPrmStructPtr ;
BindElement *HFETAdrainPrmPrmDrainPrimeStructPtr ;
BindElement *HFETAdrainPrmPrmGatePrimeStructPtr ;
BindElement *HFETAgatePrimeDrainPrmPrmStructPtr ;
BindElement *HFETAdrainPrmPrmDrainPrmPrmStructPtr ;
BindElement *HFETAsourcePrimeSourcePrmPrmStructPtr ;
BindElement *HFETAsourcePrmPrmSourcePrimeStructPtr ;
BindElement *HFETAsourcePrmPrmGatePrimeStructPtr ;
BindElement *HFETAgatePrimeSourcePrmPrmStructPtr ;
BindElement *HFETAsourcePrmPrmSourcePrmPrmStructPtr ;
BindElement *HFETAgateGateStructPtr ;
BindElement *HFETAgateGatePrimeStructPtr ;
BindElement *HFETAgatePrimeGateStructPtr ;
#endif
} HFETAinstance ; } HFETAinstance ;