almost all devices now support KLU
This commit is contained in:
parent
190a4a4601
commit
765711c13d
|
|
@ -0,0 +1,336 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "bjtdefs.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
BJTbindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
BJTmodel *model = (BJTmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the bjt models */
|
||||
for( ; model != NULL; model = model->BJTnextModel ) {
|
||||
BJTinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->BJTinstances; here != NULL ;
|
||||
here = here->BJTnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTcolNode != 0) && (here->BJTcolPrimeNode != 0)) {
|
||||
while (here->BJTcolColPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BJTcolColPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTbaseNode != 0) && (here->BJTbasePrimeNode != 0)) {
|
||||
while (here->BJTbaseBasePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BJTbaseBasePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTemitNode != 0) && (here->BJTemitPrimeNode != 0)) {
|
||||
while (here->BJTemitEmitPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BJTemitEmitPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTcolPrimeNode != 0) && (here->BJTcolNode != 0)) {
|
||||
while (here->BJTcolPrimeColPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BJTcolPrimeColPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTcolPrimeNode != 0) && (here->BJTbasePrimeNode != 0)) {
|
||||
while (here->BJTcolPrimeBasePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BJTcolPrimeBasePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTcolPrimeNode != 0) && (here->BJTemitPrimeNode != 0)) {
|
||||
while (here->BJTcolPrimeEmitPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BJTcolPrimeEmitPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTbasePrimeNode != 0) && (here->BJTbaseNode != 0)) {
|
||||
while (here->BJTbasePrimeBasePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BJTbasePrimeBasePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTbasePrimeNode != 0) && (here->BJTcolPrimeNode != 0)) {
|
||||
while (here->BJTbasePrimeColPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BJTbasePrimeColPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTbasePrimeNode != 0) && (here->BJTemitPrimeNode != 0)) {
|
||||
while (here->BJTbasePrimeEmitPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BJTbasePrimeEmitPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTemitPrimeNode != 0) && (here->BJTemitNode != 0)) {
|
||||
while (here->BJTemitPrimeEmitPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BJTemitPrimeEmitPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTemitPrimeNode != 0) && (here->BJTcolPrimeNode != 0)) {
|
||||
while (here->BJTemitPrimeColPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BJTemitPrimeColPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTemitPrimeNode != 0) && (here->BJTbasePrimeNode != 0)) {
|
||||
while (here->BJTemitPrimeBasePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BJTemitPrimeBasePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTcolNode != 0) && (here->BJTcolNode != 0)) {
|
||||
while (here->BJTcolColPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BJTcolColPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTbaseNode != 0) && (here->BJTbaseNode != 0)) {
|
||||
while (here->BJTbaseBasePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BJTbaseBasePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTemitNode != 0) && (here->BJTemitNode != 0)) {
|
||||
while (here->BJTemitEmitPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BJTemitEmitPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTcolPrimeNode != 0) && (here->BJTcolPrimeNode != 0)) {
|
||||
while (here->BJTcolPrimeColPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BJTcolPrimeColPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTbasePrimeNode != 0) && (here->BJTbasePrimeNode != 0)) {
|
||||
while (here->BJTbasePrimeBasePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BJTbasePrimeBasePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTemitPrimeNode != 0) && (here->BJTemitPrimeNode != 0)) {
|
||||
while (here->BJTemitPrimeEmitPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BJTemitPrimeEmitPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTsubstNode != 0) && (here->BJTsubstNode != 0)) {
|
||||
while (here->BJTsubstSubstPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BJTsubstSubstPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
if (model -> BJTsubs == LATERAL) {
|
||||
here -> BJTsubstConNode = here -> BJTbasePrimeNode;
|
||||
here -> BJTsubstConSubstConPtr = here -> BJTbasePrimeBasePrimePtr;
|
||||
} else {
|
||||
here -> BJTsubstConNode = here -> BJTcolPrimeNode;
|
||||
here -> BJTsubstConSubstConPtr = here -> BJTcolPrimeColPrimePtr;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTsubstConNode != 0) && (here->BJTsubstNode != 0)) {
|
||||
while (here->BJTsubstConSubstPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BJTsubstConSubstPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTsubstNode != 0) && (here->BJTsubstConNode != 0)) {
|
||||
while (here->BJTsubstSubstConPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BJTsubstSubstConPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTbaseNode != 0) && (here->BJTcolPrimeNode != 0)) {
|
||||
while (here->BJTbaseColPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BJTbaseColPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTcolPrimeNode != 0) && (here->BJTbaseNode != 0)) {
|
||||
while (here->BJTcolPrimeBasePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BJTcolPrimeBasePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
BJTbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
BJTmodel *model = (BJTmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the bjt models */
|
||||
for( ; model != NULL; model = model->BJTnextModel ) {
|
||||
BJTinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->BJTinstances; here != NULL ;
|
||||
here = here->BJTnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTcolNode != 0) && (here->BJTcolPrimeNode != 0)) {
|
||||
while (here->BJTcolColPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BJTcolColPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTbaseNode != 0) && (here->BJTbasePrimeNode != 0)) {
|
||||
while (here->BJTbaseBasePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BJTbaseBasePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTemitNode != 0) && (here->BJTemitPrimeNode != 0)) {
|
||||
while (here->BJTemitEmitPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BJTemitEmitPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTcolPrimeNode != 0) && (here->BJTcolNode != 0)) {
|
||||
while (here->BJTcolPrimeColPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BJTcolPrimeColPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTcolPrimeNode != 0) && (here->BJTbasePrimeNode != 0)) {
|
||||
while (here->BJTcolPrimeBasePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BJTcolPrimeBasePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTcolPrimeNode != 0) && (here->BJTemitPrimeNode != 0)) {
|
||||
while (here->BJTcolPrimeEmitPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BJTcolPrimeEmitPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTbasePrimeNode != 0) && (here->BJTbaseNode != 0)) {
|
||||
while (here->BJTbasePrimeBasePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BJTbasePrimeBasePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTbasePrimeNode != 0) && (here->BJTcolPrimeNode != 0)) {
|
||||
while (here->BJTbasePrimeColPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BJTbasePrimeColPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTbasePrimeNode != 0) && (here->BJTemitPrimeNode != 0)) {
|
||||
while (here->BJTbasePrimeEmitPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BJTbasePrimeEmitPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTemitPrimeNode != 0) && (here->BJTemitNode != 0)) {
|
||||
while (here->BJTemitPrimeEmitPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BJTemitPrimeEmitPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTemitPrimeNode != 0) && (here->BJTcolPrimeNode != 0)) {
|
||||
while (here->BJTemitPrimeColPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BJTemitPrimeColPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTemitPrimeNode != 0) && (here->BJTbasePrimeNode != 0)) {
|
||||
while (here->BJTemitPrimeBasePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BJTemitPrimeBasePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTcolNode != 0) && (here->BJTcolNode != 0)) {
|
||||
while (here->BJTcolColPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BJTcolColPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTbaseNode != 0) && (here->BJTbaseNode != 0)) {
|
||||
while (here->BJTbaseBasePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BJTbaseBasePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTemitNode != 0) && (here->BJTemitNode != 0)) {
|
||||
while (here->BJTemitEmitPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BJTemitEmitPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTcolPrimeNode != 0) && (here->BJTcolPrimeNode != 0)) {
|
||||
while (here->BJTcolPrimeColPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BJTcolPrimeColPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTbasePrimeNode != 0) && (here->BJTbasePrimeNode != 0)) {
|
||||
while (here->BJTbasePrimeBasePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BJTbasePrimeBasePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTemitPrimeNode != 0) && (here->BJTemitPrimeNode != 0)) {
|
||||
while (here->BJTemitPrimeEmitPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BJTemitPrimeEmitPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTsubstNode != 0) && (here->BJTsubstNode != 0)) {
|
||||
while (here->BJTsubstSubstPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BJTsubstSubstPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
if (model -> BJTsubs == LATERAL) {
|
||||
here -> BJTsubstConNode = here -> BJTbasePrimeNode;
|
||||
here -> BJTsubstConSubstConPtr = here -> BJTbasePrimeBasePrimePtr;
|
||||
} else {
|
||||
here -> BJTsubstConNode = here -> BJTcolPrimeNode;
|
||||
here -> BJTsubstConSubstConPtr = here -> BJTcolPrimeColPrimePtr;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTsubstConNode != 0) && (here->BJTsubstNode != 0)) {
|
||||
while (here->BJTsubstConSubstPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BJTsubstConSubstPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTsubstNode != 0) && (here->BJTsubstConNode != 0)) {
|
||||
while (here->BJTsubstSubstConPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BJTsubstSubstConPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTbaseNode != 0) && (here->BJTcolPrimeNode != 0)) {
|
||||
while (here->BJTbaseColPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BJTbaseColPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTcolPrimeNode != 0) && (here->BJTbaseNode != 0)) {
|
||||
while (here->BJTcolPrimeBasePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BJTcolPrimeBasePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -0,0 +1,308 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "bsim1def.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
B1bindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
B1model *model = (B1model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the b1 models */
|
||||
for( ; model != NULL; model = model->B1nextModel ) {
|
||||
B1instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->B1instances; here != NULL ;
|
||||
here = here->B1nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1dNode != 0) && (here-> B1dNode != 0)) {
|
||||
while (here->B1DdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B1DdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1gNode != 0) && (here-> B1gNode != 0)) {
|
||||
while (here->B1GgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B1GgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1sNode != 0) && (here-> B1sNode != 0)) {
|
||||
while (here->B1SsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B1SsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1bNode != 0) && (here-> B1bNode != 0)) {
|
||||
while (here->B1BbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B1BbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1dNodePrime != 0) && (here-> B1dNodePrime != 0)) {
|
||||
while (here->B1DPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B1DPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1sNodePrime != 0) && (here-> B1sNodePrime != 0)) {
|
||||
while (here->B1SPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B1SPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1dNode != 0) && (here-> B1dNodePrime != 0)) {
|
||||
while (here->B1DdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B1DdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1gNode != 0) && (here-> B1bNode != 0)) {
|
||||
while (here->B1GbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B1GbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1gNode != 0) && (here-> B1dNodePrime != 0)) {
|
||||
while (here->B1GdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B1GdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1gNode != 0) && (here-> B1sNodePrime != 0)) {
|
||||
while (here->B1GspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B1GspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1sNode != 0) && (here-> B1sNodePrime != 0)) {
|
||||
while (here->B1SspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B1SspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1bNode != 0) && (here-> B1dNodePrime != 0)) {
|
||||
while (here->B1BdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B1BdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1bNode != 0) && (here-> B1sNodePrime != 0)) {
|
||||
while (here->B1BspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B1BspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1dNodePrime != 0) && (here-> B1sNodePrime != 0)) {
|
||||
while (here->B1DPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B1DPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1dNodePrime != 0) && (here-> B1dNode != 0)) {
|
||||
while (here->B1DPdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B1DPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1bNode != 0) && (here-> B1gNode != 0)) {
|
||||
while (here->B1BgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B1BgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1dNodePrime != 0) && (here-> B1gNode != 0)) {
|
||||
while (here->B1DPgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B1DPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1sNodePrime != 0) && (here-> B1gNode != 0)) {
|
||||
while (here->B1SPgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B1SPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1sNodePrime != 0) && (here-> B1sNode != 0)) {
|
||||
while (here->B1SPsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B1SPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1dNodePrime != 0) && (here-> B1bNode != 0)) {
|
||||
while (here->B1DPbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B1DPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1sNodePrime != 0) && (here-> B1bNode != 0)) {
|
||||
while (here->B1SPbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B1SPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1sNodePrime != 0) && (here-> B1dNodePrime != 0)) {
|
||||
while (here->B1SPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B1SPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
B1bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
B1model *model = (B1model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the b1 models */
|
||||
for( ; model != NULL; model = model->B1nextModel ) {
|
||||
B1instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->B1instances; here != NULL ;
|
||||
here = here->B1nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1dNode != 0) && (here-> B1dNode != 0)) {
|
||||
while (here->B1DdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B1DdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1gNode != 0) && (here-> B1gNode != 0)) {
|
||||
while (here->B1GgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B1GgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1sNode != 0) && (here-> B1sNode != 0)) {
|
||||
while (here->B1SsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B1SsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1bNode != 0) && (here-> B1bNode != 0)) {
|
||||
while (here->B1BbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B1BbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1dNodePrime != 0) && (here-> B1dNodePrime != 0)) {
|
||||
while (here->B1DPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B1DPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1sNodePrime != 0) && (here-> B1sNodePrime != 0)) {
|
||||
while (here->B1SPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B1SPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1dNode != 0) && (here-> B1dNodePrime != 0)) {
|
||||
while (here->B1DdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B1DdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1gNode != 0) && (here-> B1bNode != 0)) {
|
||||
while (here->B1GbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B1GbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1gNode != 0) && (here-> B1dNodePrime != 0)) {
|
||||
while (here->B1GdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B1GdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1gNode != 0) && (here-> B1sNodePrime != 0)) {
|
||||
while (here->B1GspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B1GspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1sNode != 0) && (here-> B1sNodePrime != 0)) {
|
||||
while (here->B1SspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B1SspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1bNode != 0) && (here-> B1dNodePrime != 0)) {
|
||||
while (here->B1BdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B1BdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1bNode != 0) && (here-> B1sNodePrime != 0)) {
|
||||
while (here->B1BspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B1BspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1dNodePrime != 0) && (here-> B1sNodePrime != 0)) {
|
||||
while (here->B1DPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B1DPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1dNodePrime != 0) && (here-> B1dNode != 0)) {
|
||||
while (here->B1DPdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B1DPdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1bNode != 0) && (here-> B1gNode != 0)) {
|
||||
while (here->B1BgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B1BgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1dNodePrime != 0) && (here-> B1gNode != 0)) {
|
||||
while (here->B1DPgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B1DPgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1sNodePrime != 0) && (here-> B1gNode != 0)) {
|
||||
while (here->B1SPgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B1SPgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1sNodePrime != 0) && (here-> B1sNode != 0)) {
|
||||
while (here->B1SPsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B1SPsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1dNodePrime != 0) && (here-> B1bNode != 0)) {
|
||||
while (here->B1DPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B1DPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1sNodePrime != 0) && (here-> B1bNode != 0)) {
|
||||
while (here->B1SPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B1SPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B1sNodePrime != 0) && (here-> B1dNodePrime != 0)) {
|
||||
while (here->B1SPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B1SPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -0,0 +1,308 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "bsim2def.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
B2bindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
B2model *model = (B2model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the b2 models */
|
||||
for( ; model != NULL; model = model->B2nextModel ) {
|
||||
B2instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->B2instances; here != NULL ;
|
||||
here = here->B2nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2dNode != 0) && (here-> B2dNode != 0)) {
|
||||
while (here->B2DdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B2DdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2gNode != 0) && (here-> B2gNode != 0)) {
|
||||
while (here->B2GgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B2GgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2sNode != 0) && (here-> B2sNode != 0)) {
|
||||
while (here->B2SsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B2SsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2bNode != 0) && (here-> B2bNode != 0)) {
|
||||
while (here->B2BbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B2BbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2dNodePrime != 0) && (here-> B2dNodePrime != 0)) {
|
||||
while (here->B2DPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B2DPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2sNodePrime != 0) && (here-> B2sNodePrime != 0)) {
|
||||
while (here->B2SPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B2SPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2dNode != 0) && (here-> B2dNodePrime != 0)) {
|
||||
while (here->B2DdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B2DdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2gNode != 0) && (here-> B2bNode != 0)) {
|
||||
while (here->B2GbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B2GbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2gNode != 0) && (here-> B2dNodePrime != 0)) {
|
||||
while (here->B2GdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B2GdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2gNode != 0) && (here-> B2sNodePrime != 0)) {
|
||||
while (here->B2GspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B2GspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2sNode != 0) && (here-> B2sNodePrime != 0)) {
|
||||
while (here->B2SspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B2SspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2bNode != 0) && (here-> B2dNodePrime != 0)) {
|
||||
while (here->B2BdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B2BdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2bNode != 0) && (here-> B2sNodePrime != 0)) {
|
||||
while (here->B2BspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B2BspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2dNodePrime != 0) && (here-> B2sNodePrime != 0)) {
|
||||
while (here->B2DPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B2DPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2dNodePrime != 0) && (here-> B2dNode != 0)) {
|
||||
while (here->B2DPdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B2DPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2bNode != 0) && (here-> B2gNode != 0)) {
|
||||
while (here->B2BgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B2BgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2dNodePrime != 0) && (here-> B2gNode != 0)) {
|
||||
while (here->B2DPgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B2DPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2sNodePrime != 0) && (here-> B2gNode != 0)) {
|
||||
while (here->B2SPgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B2SPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2sNodePrime != 0) && (here-> B2sNode != 0)) {
|
||||
while (here->B2SPsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B2SPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2dNodePrime != 0) && (here-> B2bNode != 0)) {
|
||||
while (here->B2DPbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B2DPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2sNodePrime != 0) && (here-> B2bNode != 0)) {
|
||||
while (here->B2SPbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B2SPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2sNodePrime != 0) && (here-> B2dNodePrime != 0)) {
|
||||
while (here->B2SPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B2SPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
B2bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
B2model *model = (B2model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the b2 models */
|
||||
for( ; model != NULL; model = model->B2nextModel ) {
|
||||
B2instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->B2instances; here != NULL ;
|
||||
here = here->B2nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2dNode != 0) && (here-> B2dNode != 0)) {
|
||||
while (here->B2DdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B2DdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2gNode != 0) && (here-> B2gNode != 0)) {
|
||||
while (here->B2GgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B2GgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2sNode != 0) && (here-> B2sNode != 0)) {
|
||||
while (here->B2SsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B2SsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2bNode != 0) && (here-> B2bNode != 0)) {
|
||||
while (here->B2BbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B2BbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2dNodePrime != 0) && (here-> B2dNodePrime != 0)) {
|
||||
while (here->B2DPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B2DPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2sNodePrime != 0) && (here-> B2sNodePrime != 0)) {
|
||||
while (here->B2SPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B2SPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2dNode != 0) && (here-> B2dNodePrime != 0)) {
|
||||
while (here->B2DdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B2DdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2gNode != 0) && (here-> B2bNode != 0)) {
|
||||
while (here->B2GbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B2GbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2gNode != 0) && (here-> B2dNodePrime != 0)) {
|
||||
while (here->B2GdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B2GdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2gNode != 0) && (here-> B2sNodePrime != 0)) {
|
||||
while (here->B2GspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B2GspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2sNode != 0) && (here-> B2sNodePrime != 0)) {
|
||||
while (here->B2SspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B2SspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2bNode != 0) && (here-> B2dNodePrime != 0)) {
|
||||
while (here->B2BdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B2BdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2bNode != 0) && (here-> B2sNodePrime != 0)) {
|
||||
while (here->B2BspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B2BspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2dNodePrime != 0) && (here-> B2sNodePrime != 0)) {
|
||||
while (here->B2DPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B2DPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2dNodePrime != 0) && (here-> B2dNode != 0)) {
|
||||
while (here->B2DPdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B2DPdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2bNode != 0) && (here-> B2gNode != 0)) {
|
||||
while (here->B2BgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B2BgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2dNodePrime != 0) && (here-> B2gNode != 0)) {
|
||||
while (here->B2DPgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B2DPgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2sNodePrime != 0) && (here-> B2gNode != 0)) {
|
||||
while (here->B2SPgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B2SPgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2sNodePrime != 0) && (here-> B2sNode != 0)) {
|
||||
while (here->B2SPsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B2SPsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2dNodePrime != 0) && (here-> B2bNode != 0)) {
|
||||
while (here->B2DPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B2DPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2sNodePrime != 0) && (here-> B2bNode != 0)) {
|
||||
while (here->B2SPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B2SPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B2sNodePrime != 0) && (here-> B2dNodePrime != 0)) {
|
||||
while (here->B2SPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B2SPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -0,0 +1,416 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "bsim3def.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
BSIM3bindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
BSIM3model *model = (BSIM3model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the b3 models */
|
||||
for( ; model != NULL; model = model->BSIM3nextModel ) {
|
||||
BSIM3instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->BSIM3instances; here != NULL ;
|
||||
here = here->BSIM3nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3dNode != 0) && (here-> BSIM3dNode != 0)) {
|
||||
while (here->BSIM3DdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3DdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3gNode != 0) && (here-> BSIM3gNode != 0)) {
|
||||
while (here->BSIM3GgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3GgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3sNode != 0) && (here-> BSIM3sNode != 0)) {
|
||||
while (here->BSIM3SsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3SsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3bNode != 0) && (here-> BSIM3bNode != 0)) {
|
||||
while (here->BSIM3BbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3BbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3dNodePrime != 0) && (here-> BSIM3dNodePrime != 0)) {
|
||||
while (here->BSIM3DPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3DPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3sNodePrime != 0) && (here-> BSIM3sNodePrime != 0)) {
|
||||
while (here->BSIM3SPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3SPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3dNode != 0) && (here-> BSIM3dNodePrime != 0)) {
|
||||
while (here->BSIM3DdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3DdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3gNode != 0) && (here-> BSIM3bNode != 0)) {
|
||||
while (here->BSIM3GbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3GbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3gNode != 0) && (here-> BSIM3dNodePrime != 0)) {
|
||||
while (here->BSIM3GdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3GdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3gNode != 0) && (here-> BSIM3sNodePrime != 0)) {
|
||||
while (here->BSIM3GspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3GspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3sNode != 0) && (here-> BSIM3sNodePrime != 0)) {
|
||||
while (here->BSIM3SspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3SspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3bNode != 0) && (here-> BSIM3dNodePrime != 0)) {
|
||||
while (here->BSIM3BdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3BdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3bNode != 0) && (here-> BSIM3sNodePrime != 0)) {
|
||||
while (here->BSIM3BspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3BspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3dNodePrime != 0) && (here-> BSIM3sNodePrime != 0)) {
|
||||
while (here->BSIM3DPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3DPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3dNodePrime != 0) && (here-> BSIM3dNode != 0)) {
|
||||
while (here->BSIM3DPdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3DPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3bNode != 0) && (here-> BSIM3gNode != 0)) {
|
||||
while (here->BSIM3BgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3BgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3dNodePrime != 0) && (here-> BSIM3gNode != 0)) {
|
||||
while (here->BSIM3DPgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3DPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3sNodePrime != 0) && (here-> BSIM3gNode != 0)) {
|
||||
while (here->BSIM3SPgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3SPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3sNodePrime != 0) && (here-> BSIM3sNode != 0)) {
|
||||
while (here->BSIM3SPsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3SPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3dNodePrime != 0) && (here-> BSIM3bNode != 0)) {
|
||||
while (here->BSIM3DPbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3DPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3sNodePrime != 0) && (here-> BSIM3bNode != 0)) {
|
||||
while (here->BSIM3SPbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3SPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3sNodePrime != 0) && (here-> BSIM3dNodePrime != 0)) {
|
||||
while (here->BSIM3SPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3SPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3qNode != 0) && (here-> BSIM3qNode != 0)) {
|
||||
while (here->BSIM3QqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3QqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3qNode != 0) && (here-> BSIM3dNodePrime != 0)) {
|
||||
while (here->BSIM3QdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3QdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3qNode != 0) && (here-> BSIM3sNodePrime != 0)) {
|
||||
while (here->BSIM3QspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3QspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3qNode != 0) && (here-> BSIM3gNode != 0)) {
|
||||
while (here->BSIM3QgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3QgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3qNode != 0) && (here-> BSIM3bNode != 0)) {
|
||||
while (here->BSIM3QbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3QbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3dNodePrime != 0) && (here-> BSIM3qNode != 0)) {
|
||||
while (here->BSIM3DPqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3DPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3sNodePrime != 0) && (here-> BSIM3qNode != 0)) {
|
||||
while (here->BSIM3SPqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3SPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3gNode != 0) && (here-> BSIM3qNode != 0)) {
|
||||
while (here->BSIM3GqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3GqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3bNode != 0) && (here-> BSIM3qNode != 0)) {
|
||||
while (here->BSIM3BqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3BqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
BSIM3bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
BSIM3model *model = (BSIM3model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the b3 models */
|
||||
for( ; model != NULL; model = model->BSIM3nextModel ) {
|
||||
BSIM3instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->BSIM3instances; here != NULL ;
|
||||
here = here->BSIM3nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3dNode != 0) && (here-> BSIM3dNode != 0)) {
|
||||
while (here->BSIM3DdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3DdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3gNode != 0) && (here-> BSIM3gNode != 0)) {
|
||||
while (here->BSIM3GgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3GgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3sNode != 0) && (here-> BSIM3sNode != 0)) {
|
||||
while (here->BSIM3SsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3SsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3bNode != 0) && (here-> BSIM3bNode != 0)) {
|
||||
while (here->BSIM3BbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3BbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3dNodePrime != 0) && (here-> BSIM3dNodePrime != 0)) {
|
||||
while (here->BSIM3DPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3DPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3sNodePrime != 0) && (here-> BSIM3sNodePrime != 0)) {
|
||||
while (here->BSIM3SPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3SPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3dNode != 0) && (here-> BSIM3dNodePrime != 0)) {
|
||||
while (here->BSIM3DdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3DdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3gNode != 0) && (here-> BSIM3bNode != 0)) {
|
||||
while (here->BSIM3GbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3GbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3gNode != 0) && (here-> BSIM3dNodePrime != 0)) {
|
||||
while (here->BSIM3GdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3GdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3gNode != 0) && (here-> BSIM3sNodePrime != 0)) {
|
||||
while (here->BSIM3GspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3GspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3sNode != 0) && (here-> BSIM3sNodePrime != 0)) {
|
||||
while (here->BSIM3SspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3SspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3bNode != 0) && (here-> BSIM3dNodePrime != 0)) {
|
||||
while (here->BSIM3BdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3BdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3bNode != 0) && (here-> BSIM3sNodePrime != 0)) {
|
||||
while (here->BSIM3BspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3BspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3dNodePrime != 0) && (here-> BSIM3sNodePrime != 0)) {
|
||||
while (here->BSIM3DPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3DPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3dNodePrime != 0) && (here-> BSIM3dNode != 0)) {
|
||||
while (here->BSIM3DPdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3DPdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3bNode != 0) && (here-> BSIM3gNode != 0)) {
|
||||
while (here->BSIM3BgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3BgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3dNodePrime != 0) && (here-> BSIM3gNode != 0)) {
|
||||
while (here->BSIM3DPgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3DPgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3sNodePrime != 0) && (here-> BSIM3gNode != 0)) {
|
||||
while (here->BSIM3SPgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3SPgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3sNodePrime != 0) && (here-> BSIM3sNode != 0)) {
|
||||
while (here->BSIM3SPsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3SPsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3dNodePrime != 0) && (here-> BSIM3bNode != 0)) {
|
||||
while (here->BSIM3DPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3DPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3sNodePrime != 0) && (here-> BSIM3bNode != 0)) {
|
||||
while (here->BSIM3SPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3SPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3sNodePrime != 0) && (here-> BSIM3dNodePrime != 0)) {
|
||||
while (here->BSIM3SPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3SPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3qNode != 0) && (here-> BSIM3qNode != 0)) {
|
||||
while (here->BSIM3QqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3QqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3qNode != 0) && (here-> BSIM3dNodePrime != 0)) {
|
||||
while (here->BSIM3QdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3QdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3qNode != 0) && (here-> BSIM3sNodePrime != 0)) {
|
||||
while (here->BSIM3QspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3QspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3qNode != 0) && (here-> BSIM3gNode != 0)) {
|
||||
while (here->BSIM3QgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3QgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3qNode != 0) && (here-> BSIM3bNode != 0)) {
|
||||
while (here->BSIM3QbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3QbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3dNodePrime != 0) && (here-> BSIM3qNode != 0)) {
|
||||
while (here->BSIM3DPqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3DPqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3sNodePrime != 0) && (here-> BSIM3qNode != 0)) {
|
||||
while (here->BSIM3SPqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3SPqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3gNode != 0) && (here-> BSIM3qNode != 0)) {
|
||||
while (here->BSIM3GqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3GqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3bNode != 0) && (here-> BSIM3qNode != 0)) {
|
||||
while (here->BSIM3BqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3BqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,852 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "b3soipddef.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
B3SOIPDbindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
B3SOIPDmodel *model = (B3SOIPDmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the b3soipd models */
|
||||
for( ; model != NULL; model = model->B3SOIPDnextModel ) {
|
||||
B3SOIPDinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->B3SOIPDinstances; here != NULL ;
|
||||
here = here->B3SOIPDnextInstance) {
|
||||
|
||||
if ((model->B3SOIPDshMod == 1) && (here->B3SOIPDrth0!=0.0)) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDtempNode != 0) && (here-> B3SOIPDtempNode != 0)) {
|
||||
while (here->B3SOIPDTemptempPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDTemptempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDtempNode != 0) && (here-> B3SOIPDdNodePrime != 0)) {
|
||||
while (here->B3SOIPDTempdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDTempdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDtempNode != 0) && (here-> B3SOIPDsNodePrime != 0)) {
|
||||
while (here->B3SOIPDTempspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDTempspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDtempNode != 0) && (here-> B3SOIPDgNode != 0)) {
|
||||
while (here->B3SOIPDTempgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDTempgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDtempNode != 0) && (here-> B3SOIPDbNode != 0)) {
|
||||
while (here->B3SOIPDTempbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDTempbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDgNode != 0) && (here-> B3SOIPDtempNode != 0)) {
|
||||
while (here->B3SOIPDGtempPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDGtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDdNodePrime != 0) && (here-> B3SOIPDtempNode != 0)) {
|
||||
while (here->B3SOIPDDPtempPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDDPtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDsNodePrime != 0) && (here-> B3SOIPDtempNode != 0)) {
|
||||
while (here->B3SOIPDSPtempPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDSPtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDeNode != 0) && (here-> B3SOIPDtempNode != 0)) {
|
||||
while (here->B3SOIPDEtempPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDEtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDbNode != 0) && (here-> B3SOIPDtempNode != 0)) {
|
||||
while (here->B3SOIPDBtempPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDBtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
if (here->B3SOIPDbodyMod == 1) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDpNode != 0) && (here-> B3SOIPDtempNode != 0)) {
|
||||
while (here->B3SOIPDPtempPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDPtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
} /* IF */
|
||||
} /* IF */
|
||||
|
||||
if (here->B3SOIPDbodyMod == 2) {
|
||||
}
|
||||
else if (here->B3SOIPDbodyMod == 1) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDbNode != 0) && (here-> B3SOIPDpNode != 0)) {
|
||||
while (here->B3SOIPDBpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDBpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDpNode != 0) && (here-> B3SOIPDbNode != 0)) {
|
||||
while (here->B3SOIPDPbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDpNode != 0) && (here-> B3SOIPDpNode != 0)) {
|
||||
while (here->B3SOIPDPpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDPpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
} /* ELSE */
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDeNode != 0) && (here-> B3SOIPDbNode != 0)) {
|
||||
while (here->B3SOIPDEbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDEbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDgNode != 0) && (here-> B3SOIPDbNode != 0)) {
|
||||
while (here->B3SOIPDGbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDGbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDdNodePrime != 0) && (here-> B3SOIPDbNode != 0)) {
|
||||
while (here->B3SOIPDDPbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDDPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDsNodePrime != 0) && (here-> B3SOIPDbNode != 0)) {
|
||||
while (here->B3SOIPDSPbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDSPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDbNode != 0) && (here-> B3SOIPDeNode != 0)) {
|
||||
while (here->B3SOIPDBePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDBePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDbNode != 0) && (here-> B3SOIPDgNode != 0)) {
|
||||
while (here->B3SOIPDBgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDBgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDbNode != 0) && (here-> B3SOIPDdNodePrime != 0)) {
|
||||
while (here->B3SOIPDBdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDBdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDbNode != 0) && (here-> B3SOIPDsNodePrime != 0)) {
|
||||
while (here->B3SOIPDBspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDBspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDbNode != 0) && (here-> B3SOIPDbNode != 0)) {
|
||||
while (here->B3SOIPDBbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDBbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDeNode != 0) && (here-> B3SOIPDgNode != 0)) {
|
||||
while (here->B3SOIPDEgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDEgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDeNode != 0) && (here-> B3SOIPDdNodePrime != 0)) {
|
||||
while (here->B3SOIPDEdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDEdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDeNode != 0) && (here-> B3SOIPDsNodePrime != 0)) {
|
||||
while (here->B3SOIPDEspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDEspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDgNode != 0) && (here-> B3SOIPDeNode != 0)) {
|
||||
while (here->B3SOIPDGePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDGePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDdNodePrime != 0) && (here-> B3SOIPDeNode != 0)) {
|
||||
while (here->B3SOIPDDPePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDDPePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDsNodePrime != 0) && (here-> B3SOIPDeNode != 0)) {
|
||||
while (here->B3SOIPDSPePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDSPePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDeNode != 0) && (here-> B3SOIPDbNode != 0)) {
|
||||
while (here->B3SOIPDEbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDEbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDeNode != 0) && (here-> B3SOIPDeNode != 0)) {
|
||||
while (here->B3SOIPDEePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDEePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDgNode != 0) && (here-> B3SOIPDgNode != 0)) {
|
||||
while (here->B3SOIPDGgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDGgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDgNode != 0) && (here-> B3SOIPDdNodePrime != 0)) {
|
||||
while (here->B3SOIPDGdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDGdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDgNode != 0) && (here-> B3SOIPDsNodePrime != 0)) {
|
||||
while (here->B3SOIPDGspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDGspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDdNodePrime != 0) && (here-> B3SOIPDgNode != 0)) {
|
||||
while (here->B3SOIPDDPgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDDPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDdNodePrime != 0) && (here-> B3SOIPDdNodePrime != 0)) {
|
||||
while (here->B3SOIPDDPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDDPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDdNodePrime != 0) && (here-> B3SOIPDsNodePrime != 0)) {
|
||||
while (here->B3SOIPDDPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDDPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDdNodePrime != 0) && (here-> B3SOIPDdNode != 0)) {
|
||||
while (here->B3SOIPDDPdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDDPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDsNodePrime != 0) && (here-> B3SOIPDgNode != 0)) {
|
||||
while (here->B3SOIPDSPgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDSPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDsNodePrime != 0) && (here-> B3SOIPDdNodePrime != 0)) {
|
||||
while (here->B3SOIPDSPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDSPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDsNodePrime != 0) && (here-> B3SOIPDsNodePrime != 0)) {
|
||||
while (here->B3SOIPDSPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDSPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDsNodePrime != 0) && (here-> B3SOIPDsNode != 0)) {
|
||||
while (here->B3SOIPDSPsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDSPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDdNode != 0) && (here-> B3SOIPDdNode != 0)) {
|
||||
while (here->B3SOIPDDdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDDdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDdNode != 0) && (here-> B3SOIPDdNodePrime != 0)) {
|
||||
while (here->B3SOIPDDdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDDdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDsNode != 0) && (here-> B3SOIPDsNode != 0)) {
|
||||
while (here->B3SOIPDSsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDSsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDsNode != 0) && (here-> B3SOIPDsNodePrime != 0)) {
|
||||
while (here->B3SOIPDSspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDSspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
if (here->B3SOIPDdebugMod != 0) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDvbsNode != 0) && (here-> B3SOIPDvbsNode != 0)) {
|
||||
while (here->B3SOIPDVbsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDVbsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDidsNode != 0) && (here-> B3SOIPDidsNode != 0)) {
|
||||
while (here->B3SOIPDIdsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDIdsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDicNode != 0) && (here-> B3SOIPDicNode != 0)) {
|
||||
while (here->B3SOIPDIcPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDIcPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDibsNode != 0) && (here-> B3SOIPDibsNode != 0)) {
|
||||
while (here->B3SOIPDIbsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDIbsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDibdNode != 0) && (here-> B3SOIPDibdNode != 0)) {
|
||||
while (here->B3SOIPDIbdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDIbdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDiiiNode != 0) && (here-> B3SOIPDiiiNode != 0)) {
|
||||
while (here->B3SOIPDIiiPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDIiiPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDigNode != 0) && (here-> B3SOIPDigNode != 0)) {
|
||||
while (here->B3SOIPDIgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDIgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDgiggNode != 0) && (here-> B3SOIPDgiggNode != 0)) {
|
||||
while (here->B3SOIPDGiggPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDGiggPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDgigdNode != 0) && (here-> B3SOIPDgigdNode != 0)) {
|
||||
while (here->B3SOIPDGigdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDGigdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDgigbNode != 0) && (here-> B3SOIPDgigbNode != 0)) {
|
||||
while (here->B3SOIPDGigbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDGigbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDigidlNode != 0) && (here-> B3SOIPDigidlNode != 0)) {
|
||||
while (here->B3SOIPDIgidlPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDIgidlPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDitunNode != 0) && (here-> B3SOIPDitunNode != 0)) {
|
||||
while (here->B3SOIPDItunPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDItunPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDibpNode != 0) && (here-> B3SOIPDibpNode != 0)) {
|
||||
while (here->B3SOIPDIbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDIbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDcbbNode != 0) && (here-> B3SOIPDcbbNode != 0)) {
|
||||
while (here->B3SOIPDCbbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDCbbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDcbdNode != 0) && (here-> B3SOIPDcbdNode != 0)) {
|
||||
while (here->B3SOIPDCbdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDCbdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDcbgNode != 0) && (here-> B3SOIPDcbgNode != 0)) {
|
||||
while (here->B3SOIPDCbgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDCbgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDqbfNode != 0) && (here-> B3SOIPDqbfNode != 0)) {
|
||||
while (here->B3SOIPDQbfPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDQbfPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDqjsNode != 0) && (here-> B3SOIPDqjsNode != 0)) {
|
||||
while (here->B3SOIPDQjsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDQjsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDqjdNode != 0) && (here-> B3SOIPDqjdNode != 0)) {
|
||||
while (here->B3SOIPDQjdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->B3SOIPDQjdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
} /* IF */
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
B3SOIPDbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
B3SOIPDmodel *model = (B3SOIPDmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the b3soipd models */
|
||||
for( ; model != NULL; model = model->B3SOIPDnextModel ) {
|
||||
B3SOIPDinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->B3SOIPDinstances; here != NULL ;
|
||||
here = here->B3SOIPDnextInstance) {
|
||||
|
||||
if ((model->B3SOIPDshMod == 1) && (here->B3SOIPDrth0!=0.0)) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDtempNode != 0) && (here-> B3SOIPDtempNode != 0)) {
|
||||
while (here->B3SOIPDTemptempPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDTemptempPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDtempNode != 0) && (here-> B3SOIPDdNodePrime != 0)) {
|
||||
while (here->B3SOIPDTempdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDTempdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDtempNode != 0) && (here-> B3SOIPDsNodePrime != 0)) {
|
||||
while (here->B3SOIPDTempspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDTempspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDtempNode != 0) && (here-> B3SOIPDgNode != 0)) {
|
||||
while (here->B3SOIPDTempgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDTempgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDtempNode != 0) && (here-> B3SOIPDbNode != 0)) {
|
||||
while (here->B3SOIPDTempbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDTempbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDgNode != 0) && (here-> B3SOIPDtempNode != 0)) {
|
||||
while (here->B3SOIPDGtempPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDGtempPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDdNodePrime != 0) && (here-> B3SOIPDtempNode != 0)) {
|
||||
while (here->B3SOIPDDPtempPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDDPtempPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDsNodePrime != 0) && (here-> B3SOIPDtempNode != 0)) {
|
||||
while (here->B3SOIPDSPtempPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDSPtempPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDeNode != 0) && (here-> B3SOIPDtempNode != 0)) {
|
||||
while (here->B3SOIPDEtempPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDEtempPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDbNode != 0) && (here-> B3SOIPDtempNode != 0)) {
|
||||
while (here->B3SOIPDBtempPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDBtempPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
if (here->B3SOIPDbodyMod == 1) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDpNode != 0) && (here-> B3SOIPDtempNode != 0)) {
|
||||
while (here->B3SOIPDPtempPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDPtempPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
} /* IF */
|
||||
} /* IF */
|
||||
|
||||
if (here->B3SOIPDbodyMod == 2) {
|
||||
}
|
||||
else if (here->B3SOIPDbodyMod == 1) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDbNode != 0) && (here-> B3SOIPDpNode != 0)) {
|
||||
while (here->B3SOIPDBpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDBpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDpNode != 0) && (here-> B3SOIPDbNode != 0)) {
|
||||
while (here->B3SOIPDPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDpNode != 0) && (here-> B3SOIPDpNode != 0)) {
|
||||
while (here->B3SOIPDPpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDPpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
} /* ELSE */
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDeNode != 0) && (here-> B3SOIPDbNode != 0)) {
|
||||
while (here->B3SOIPDEbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDEbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDgNode != 0) && (here-> B3SOIPDbNode != 0)) {
|
||||
while (here->B3SOIPDGbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDGbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDdNodePrime != 0) && (here-> B3SOIPDbNode != 0)) {
|
||||
while (here->B3SOIPDDPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDDPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDsNodePrime != 0) && (here-> B3SOIPDbNode != 0)) {
|
||||
while (here->B3SOIPDSPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDSPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDbNode != 0) && (here-> B3SOIPDeNode != 0)) {
|
||||
while (here->B3SOIPDBePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDBePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDbNode != 0) && (here-> B3SOIPDgNode != 0)) {
|
||||
while (here->B3SOIPDBgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDBgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDbNode != 0) && (here-> B3SOIPDdNodePrime != 0)) {
|
||||
while (here->B3SOIPDBdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDBdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDbNode != 0) && (here-> B3SOIPDsNodePrime != 0)) {
|
||||
while (here->B3SOIPDBspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDBspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDbNode != 0) && (here-> B3SOIPDbNode != 0)) {
|
||||
while (here->B3SOIPDBbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDBbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDeNode != 0) && (here-> B3SOIPDgNode != 0)) {
|
||||
while (here->B3SOIPDEgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDEgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDeNode != 0) && (here-> B3SOIPDdNodePrime != 0)) {
|
||||
while (here->B3SOIPDEdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDEdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDeNode != 0) && (here-> B3SOIPDsNodePrime != 0)) {
|
||||
while (here->B3SOIPDEspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDEspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDgNode != 0) && (here-> B3SOIPDeNode != 0)) {
|
||||
while (here->B3SOIPDGePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDGePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDdNodePrime != 0) && (here-> B3SOIPDeNode != 0)) {
|
||||
while (here->B3SOIPDDPePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDDPePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDsNodePrime != 0) && (here-> B3SOIPDeNode != 0)) {
|
||||
while (here->B3SOIPDSPePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDSPePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDeNode != 0) && (here-> B3SOIPDbNode != 0)) {
|
||||
while (here->B3SOIPDEbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDEbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDeNode != 0) && (here-> B3SOIPDeNode != 0)) {
|
||||
while (here->B3SOIPDEePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDEePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDgNode != 0) && (here-> B3SOIPDgNode != 0)) {
|
||||
while (here->B3SOIPDGgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDGgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDgNode != 0) && (here-> B3SOIPDdNodePrime != 0)) {
|
||||
while (here->B3SOIPDGdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDGdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDgNode != 0) && (here-> B3SOIPDsNodePrime != 0)) {
|
||||
while (here->B3SOIPDGspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDGspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDdNodePrime != 0) && (here-> B3SOIPDgNode != 0)) {
|
||||
while (here->B3SOIPDDPgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDDPgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDdNodePrime != 0) && (here-> B3SOIPDdNodePrime != 0)) {
|
||||
while (here->B3SOIPDDPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDDPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDdNodePrime != 0) && (here-> B3SOIPDsNodePrime != 0)) {
|
||||
while (here->B3SOIPDDPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDDPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDdNodePrime != 0) && (here-> B3SOIPDdNode != 0)) {
|
||||
while (here->B3SOIPDDPdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDDPdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDsNodePrime != 0) && (here-> B3SOIPDgNode != 0)) {
|
||||
while (here->B3SOIPDSPgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDSPgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDsNodePrime != 0) && (here-> B3SOIPDdNodePrime != 0)) {
|
||||
while (here->B3SOIPDSPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDSPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDsNodePrime != 0) && (here-> B3SOIPDsNodePrime != 0)) {
|
||||
while (here->B3SOIPDSPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDSPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDsNodePrime != 0) && (here-> B3SOIPDsNode != 0)) {
|
||||
while (here->B3SOIPDSPsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDSPsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDdNode != 0) && (here-> B3SOIPDdNode != 0)) {
|
||||
while (here->B3SOIPDDdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDDdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDdNode != 0) && (here-> B3SOIPDdNodePrime != 0)) {
|
||||
while (here->B3SOIPDDdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDDdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDsNode != 0) && (here-> B3SOIPDsNode != 0)) {
|
||||
while (here->B3SOIPDSsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDSsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDsNode != 0) && (here-> B3SOIPDsNodePrime != 0)) {
|
||||
while (here->B3SOIPDSspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDSspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
if (here->B3SOIPDdebugMod != 0) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDvbsNode != 0) && (here-> B3SOIPDvbsNode != 0)) {
|
||||
while (here->B3SOIPDVbsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDVbsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDidsNode != 0) && (here-> B3SOIPDidsNode != 0)) {
|
||||
while (here->B3SOIPDIdsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDIdsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDicNode != 0) && (here-> B3SOIPDicNode != 0)) {
|
||||
while (here->B3SOIPDIcPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDIcPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDibsNode != 0) && (here-> B3SOIPDibsNode != 0)) {
|
||||
while (here->B3SOIPDIbsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDIbsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDibdNode != 0) && (here-> B3SOIPDibdNode != 0)) {
|
||||
while (here->B3SOIPDIbdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDIbdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDiiiNode != 0) && (here-> B3SOIPDiiiNode != 0)) {
|
||||
while (here->B3SOIPDIiiPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDIiiPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDigNode != 0) && (here-> B3SOIPDigNode != 0)) {
|
||||
while (here->B3SOIPDIgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDIgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDgiggNode != 0) && (here-> B3SOIPDgiggNode != 0)) {
|
||||
while (here->B3SOIPDGiggPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDGiggPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDgigdNode != 0) && (here-> B3SOIPDgigdNode != 0)) {
|
||||
while (here->B3SOIPDGigdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDGigdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDgigbNode != 0) && (here-> B3SOIPDgigbNode != 0)) {
|
||||
while (here->B3SOIPDGigbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDGigbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDigidlNode != 0) && (here-> B3SOIPDigidlNode != 0)) {
|
||||
while (here->B3SOIPDIgidlPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDIgidlPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDitunNode != 0) && (here-> B3SOIPDitunNode != 0)) {
|
||||
while (here->B3SOIPDItunPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDItunPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDibpNode != 0) && (here-> B3SOIPDibpNode != 0)) {
|
||||
while (here->B3SOIPDIbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDIbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDcbbNode != 0) && (here-> B3SOIPDcbbNode != 0)) {
|
||||
while (here->B3SOIPDCbbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDCbbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDcbdNode != 0) && (here-> B3SOIPDcbdNode != 0)) {
|
||||
while (here->B3SOIPDCbdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDCbdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDcbgNode != 0) && (here-> B3SOIPDcbgNode != 0)) {
|
||||
while (here->B3SOIPDCbgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDCbgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDqbfNode != 0) && (here-> B3SOIPDqbfNode != 0)) {
|
||||
while (here->B3SOIPDQbfPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDQbfPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDqjsNode != 0) && (here-> B3SOIPDqjsNode != 0)) {
|
||||
while (here->B3SOIPDQjsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDQjsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> B3SOIPDqjdNode != 0) && (here-> B3SOIPDqjdNode != 0)) {
|
||||
while (here->B3SOIPDQjdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->B3SOIPDQjdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
} /* IF */
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -0,0 +1,416 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "bsim3v0def.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
BSIM3v0bindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
BSIM3v0model *model = (BSIM3v0model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the b3v0 models */
|
||||
for( ; model != NULL; model = model->BSIM3v0nextModel ) {
|
||||
BSIM3v0instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->BSIM3v0instances; here != NULL ;
|
||||
here = here->BSIM3v0nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0dNode != 0) && (here-> BSIM3v0dNode != 0)) {
|
||||
while (here->BSIM3v0DdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0DdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0gNode != 0) && (here-> BSIM3v0gNode != 0)) {
|
||||
while (here->BSIM3v0GgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0GgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0sNode != 0) && (here-> BSIM3v0sNode != 0)) {
|
||||
while (here->BSIM3v0SsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0SsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0bNode != 0) && (here-> BSIM3v0bNode != 0)) {
|
||||
while (here->BSIM3v0BbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0BbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0dNodePrime != 0) && (here-> BSIM3v0dNodePrime != 0)) {
|
||||
while (here->BSIM3v0DPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0DPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0sNodePrime != 0) && (here-> BSIM3v0sNodePrime != 0)) {
|
||||
while (here->BSIM3v0SPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0SPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0dNode != 0) && (here-> BSIM3v0dNodePrime != 0)) {
|
||||
while (here->BSIM3v0DdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0DdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0gNode != 0) && (here-> BSIM3v0bNode != 0)) {
|
||||
while (here->BSIM3v0GbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0GbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0gNode != 0) && (here-> BSIM3v0dNodePrime != 0)) {
|
||||
while (here->BSIM3v0GdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0GdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0gNode != 0) && (here-> BSIM3v0sNodePrime != 0)) {
|
||||
while (here->BSIM3v0GspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0GspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0sNode != 0) && (here-> BSIM3v0sNodePrime != 0)) {
|
||||
while (here->BSIM3v0SspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0SspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0bNode != 0) && (here-> BSIM3v0dNodePrime != 0)) {
|
||||
while (here->BSIM3v0BdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0BdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0bNode != 0) && (here-> BSIM3v0sNodePrime != 0)) {
|
||||
while (here->BSIM3v0BspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0BspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0dNodePrime != 0) && (here-> BSIM3v0sNodePrime != 0)) {
|
||||
while (here->BSIM3v0DPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0DPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0dNodePrime != 0) && (here-> BSIM3v0dNode != 0)) {
|
||||
while (here->BSIM3v0DPdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0DPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0bNode != 0) && (here-> BSIM3v0gNode != 0)) {
|
||||
while (here->BSIM3v0BgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0BgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0dNodePrime != 0) && (here-> BSIM3v0gNode != 0)) {
|
||||
while (here->BSIM3v0DPgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0DPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0sNodePrime != 0) && (here-> BSIM3v0gNode != 0)) {
|
||||
while (here->BSIM3v0SPgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0SPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0sNodePrime != 0) && (here-> BSIM3v0sNode != 0)) {
|
||||
while (here->BSIM3v0SPsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0SPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0dNodePrime != 0) && (here-> BSIM3v0bNode != 0)) {
|
||||
while (here->BSIM3v0DPbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0DPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0sNodePrime != 0) && (here-> BSIM3v0bNode != 0)) {
|
||||
while (here->BSIM3v0SPbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0SPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0sNodePrime != 0) && (here-> BSIM3v0dNodePrime != 0)) {
|
||||
while (here->BSIM3v0SPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0SPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0qNode != 0) && (here-> BSIM3v0qNode != 0)) {
|
||||
while (here->BSIM3v0QqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0QqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0qNode != 0) && (here-> BSIM3v0dNodePrime != 0)) {
|
||||
while (here->BSIM3v0QdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0QdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0qNode != 0) && (here-> BSIM3v0sNodePrime != 0)) {
|
||||
while (here->BSIM3v0QspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0QspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0qNode != 0) && (here-> BSIM3v0gNode != 0)) {
|
||||
while (here->BSIM3v0QgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0QgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0qNode != 0) && (here-> BSIM3v0bNode != 0)) {
|
||||
while (here->BSIM3v0QbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0QbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0dNodePrime != 0) && (here-> BSIM3v0qNode != 0)) {
|
||||
while (here->BSIM3v0DPqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0DPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0sNodePrime != 0) && (here-> BSIM3v0qNode != 0)) {
|
||||
while (here->BSIM3v0SPqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0SPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0gNode != 0) && (here-> BSIM3v0qNode != 0)) {
|
||||
while (here->BSIM3v0GqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0GqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0bNode != 0) && (here-> BSIM3v0qNode != 0)) {
|
||||
while (here->BSIM3v0BqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v0BqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
BSIM3v0bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
BSIM3v0model *model = (BSIM3v0model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the b3v0 models */
|
||||
for( ; model != NULL; model = model->BSIM3v0nextModel ) {
|
||||
BSIM3v0instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->BSIM3v0instances; here != NULL ;
|
||||
here = here->BSIM3v0nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0dNode != 0) && (here-> BSIM3v0dNode != 0)) {
|
||||
while (here->BSIM3v0DdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0DdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0gNode != 0) && (here-> BSIM3v0gNode != 0)) {
|
||||
while (here->BSIM3v0GgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0GgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0sNode != 0) && (here-> BSIM3v0sNode != 0)) {
|
||||
while (here->BSIM3v0SsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0SsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0bNode != 0) && (here-> BSIM3v0bNode != 0)) {
|
||||
while (here->BSIM3v0BbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0BbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0dNodePrime != 0) && (here-> BSIM3v0dNodePrime != 0)) {
|
||||
while (here->BSIM3v0DPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0DPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0sNodePrime != 0) && (here-> BSIM3v0sNodePrime != 0)) {
|
||||
while (here->BSIM3v0SPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0SPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0dNode != 0) && (here-> BSIM3v0dNodePrime != 0)) {
|
||||
while (here->BSIM3v0DdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0DdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0gNode != 0) && (here-> BSIM3v0bNode != 0)) {
|
||||
while (here->BSIM3v0GbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0GbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0gNode != 0) && (here-> BSIM3v0dNodePrime != 0)) {
|
||||
while (here->BSIM3v0GdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0GdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0gNode != 0) && (here-> BSIM3v0sNodePrime != 0)) {
|
||||
while (here->BSIM3v0GspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0GspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0sNode != 0) && (here-> BSIM3v0sNodePrime != 0)) {
|
||||
while (here->BSIM3v0SspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0SspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0bNode != 0) && (here-> BSIM3v0dNodePrime != 0)) {
|
||||
while (here->BSIM3v0BdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0BdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0bNode != 0) && (here-> BSIM3v0sNodePrime != 0)) {
|
||||
while (here->BSIM3v0BspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0BspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0dNodePrime != 0) && (here-> BSIM3v0sNodePrime != 0)) {
|
||||
while (here->BSIM3v0DPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0DPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0dNodePrime != 0) && (here-> BSIM3v0dNode != 0)) {
|
||||
while (here->BSIM3v0DPdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0DPdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0bNode != 0) && (here-> BSIM3v0gNode != 0)) {
|
||||
while (here->BSIM3v0BgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0BgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0dNodePrime != 0) && (here-> BSIM3v0gNode != 0)) {
|
||||
while (here->BSIM3v0DPgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0DPgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0sNodePrime != 0) && (here-> BSIM3v0gNode != 0)) {
|
||||
while (here->BSIM3v0SPgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0SPgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0sNodePrime != 0) && (here-> BSIM3v0sNode != 0)) {
|
||||
while (here->BSIM3v0SPsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0SPsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0dNodePrime != 0) && (here-> BSIM3v0bNode != 0)) {
|
||||
while (here->BSIM3v0DPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0DPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0sNodePrime != 0) && (here-> BSIM3v0bNode != 0)) {
|
||||
while (here->BSIM3v0SPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0SPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0sNodePrime != 0) && (here-> BSIM3v0dNodePrime != 0)) {
|
||||
while (here->BSIM3v0SPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0SPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0qNode != 0) && (here-> BSIM3v0qNode != 0)) {
|
||||
while (here->BSIM3v0QqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0QqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0qNode != 0) && (here-> BSIM3v0dNodePrime != 0)) {
|
||||
while (here->BSIM3v0QdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0QdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0qNode != 0) && (here-> BSIM3v0sNodePrime != 0)) {
|
||||
while (here->BSIM3v0QspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0QspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0qNode != 0) && (here-> BSIM3v0gNode != 0)) {
|
||||
while (here->BSIM3v0QgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0QgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0qNode != 0) && (here-> BSIM3v0bNode != 0)) {
|
||||
while (here->BSIM3v0QbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0QbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0dNodePrime != 0) && (here-> BSIM3v0qNode != 0)) {
|
||||
while (here->BSIM3v0DPqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0DPqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0sNodePrime != 0) && (here-> BSIM3v0qNode != 0)) {
|
||||
while (here->BSIM3v0SPqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0SPqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0gNode != 0) && (here-> BSIM3v0qNode != 0)) {
|
||||
while (here->BSIM3v0GqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0GqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v0bNode != 0) && (here-> BSIM3v0qNode != 0)) {
|
||||
while (here->BSIM3v0BqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v0BqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -0,0 +1,416 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "bsim3v1def.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
BSIM3v1bindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
BSIM3v1model *model = (BSIM3v1model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the b3v1 models */
|
||||
for( ; model != NULL; model = model->BSIM3v1nextModel ) {
|
||||
BSIM3v1instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->BSIM3v1instances; here != NULL ;
|
||||
here = here->BSIM3v1nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1dNode != 0) && (here-> BSIM3v1dNode != 0)) {
|
||||
while (here->BSIM3v1DdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1DdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1gNode != 0) && (here-> BSIM3v1gNode != 0)) {
|
||||
while (here->BSIM3v1GgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1GgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1sNode != 0) && (here-> BSIM3v1sNode != 0)) {
|
||||
while (here->BSIM3v1SsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1SsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1bNode != 0) && (here-> BSIM3v1bNode != 0)) {
|
||||
while (here->BSIM3v1BbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1BbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1dNodePrime != 0) && (here-> BSIM3v1dNodePrime != 0)) {
|
||||
while (here->BSIM3v1DPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1DPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1sNodePrime != 0) && (here-> BSIM3v1sNodePrime != 0)) {
|
||||
while (here->BSIM3v1SPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1SPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1dNode != 0) && (here-> BSIM3v1dNodePrime != 0)) {
|
||||
while (here->BSIM3v1DdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1DdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1gNode != 0) && (here-> BSIM3v1bNode != 0)) {
|
||||
while (here->BSIM3v1GbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1GbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1gNode != 0) && (here-> BSIM3v1dNodePrime != 0)) {
|
||||
while (here->BSIM3v1GdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1GdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1gNode != 0) && (here-> BSIM3v1sNodePrime != 0)) {
|
||||
while (here->BSIM3v1GspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1GspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1sNode != 0) && (here-> BSIM3v1sNodePrime != 0)) {
|
||||
while (here->BSIM3v1SspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1SspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1bNode != 0) && (here-> BSIM3v1dNodePrime != 0)) {
|
||||
while (here->BSIM3v1BdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1BdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1bNode != 0) && (here-> BSIM3v1sNodePrime != 0)) {
|
||||
while (here->BSIM3v1BspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1BspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1dNodePrime != 0) && (here-> BSIM3v1sNodePrime != 0)) {
|
||||
while (here->BSIM3v1DPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1DPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1dNodePrime != 0) && (here-> BSIM3v1dNode != 0)) {
|
||||
while (here->BSIM3v1DPdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1DPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1bNode != 0) && (here-> BSIM3v1gNode != 0)) {
|
||||
while (here->BSIM3v1BgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1BgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1dNodePrime != 0) && (here-> BSIM3v1gNode != 0)) {
|
||||
while (here->BSIM3v1DPgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1DPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1sNodePrime != 0) && (here-> BSIM3v1gNode != 0)) {
|
||||
while (here->BSIM3v1SPgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1SPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1sNodePrime != 0) && (here-> BSIM3v1sNode != 0)) {
|
||||
while (here->BSIM3v1SPsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1SPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1dNodePrime != 0) && (here-> BSIM3v1bNode != 0)) {
|
||||
while (here->BSIM3v1DPbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1DPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1sNodePrime != 0) && (here-> BSIM3v1bNode != 0)) {
|
||||
while (here->BSIM3v1SPbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1SPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1sNodePrime != 0) && (here-> BSIM3v1dNodePrime != 0)) {
|
||||
while (here->BSIM3v1SPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1SPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1qNode != 0) && (here-> BSIM3v1qNode != 0)) {
|
||||
while (here->BSIM3v1QqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1QqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1qNode != 0) && (here-> BSIM3v1dNodePrime != 0)) {
|
||||
while (here->BSIM3v1QdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1QdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1qNode != 0) && (here-> BSIM3v1sNodePrime != 0)) {
|
||||
while (here->BSIM3v1QspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1QspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1qNode != 0) && (here-> BSIM3v1gNode != 0)) {
|
||||
while (here->BSIM3v1QgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1QgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1qNode != 0) && (here-> BSIM3v1bNode != 0)) {
|
||||
while (here->BSIM3v1QbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1QbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1dNodePrime != 0) && (here-> BSIM3v1qNode != 0)) {
|
||||
while (here->BSIM3v1DPqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1DPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1sNodePrime != 0) && (here-> BSIM3v1qNode != 0)) {
|
||||
while (here->BSIM3v1SPqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1SPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1gNode != 0) && (here-> BSIM3v1qNode != 0)) {
|
||||
while (here->BSIM3v1GqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1GqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1bNode != 0) && (here-> BSIM3v1qNode != 0)) {
|
||||
while (here->BSIM3v1BqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v1BqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
BSIM3v1bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
BSIM3v1model *model = (BSIM3v1model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the b3v1 models */
|
||||
for( ; model != NULL; model = model->BSIM3v1nextModel ) {
|
||||
BSIM3v1instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->BSIM3v1instances; here != NULL ;
|
||||
here = here->BSIM3v1nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1dNode != 0) && (here-> BSIM3v1dNode != 0)) {
|
||||
while (here->BSIM3v1DdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1DdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1gNode != 0) && (here-> BSIM3v1gNode != 0)) {
|
||||
while (here->BSIM3v1GgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1GgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1sNode != 0) && (here-> BSIM3v1sNode != 0)) {
|
||||
while (here->BSIM3v1SsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1SsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1bNode != 0) && (here-> BSIM3v1bNode != 0)) {
|
||||
while (here->BSIM3v1BbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1BbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1dNodePrime != 0) && (here-> BSIM3v1dNodePrime != 0)) {
|
||||
while (here->BSIM3v1DPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1DPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1sNodePrime != 0) && (here-> BSIM3v1sNodePrime != 0)) {
|
||||
while (here->BSIM3v1SPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1SPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1dNode != 0) && (here-> BSIM3v1dNodePrime != 0)) {
|
||||
while (here->BSIM3v1DdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1DdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1gNode != 0) && (here-> BSIM3v1bNode != 0)) {
|
||||
while (here->BSIM3v1GbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1GbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1gNode != 0) && (here-> BSIM3v1dNodePrime != 0)) {
|
||||
while (here->BSIM3v1GdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1GdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1gNode != 0) && (here-> BSIM3v1sNodePrime != 0)) {
|
||||
while (here->BSIM3v1GspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1GspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1sNode != 0) && (here-> BSIM3v1sNodePrime != 0)) {
|
||||
while (here->BSIM3v1SspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1SspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1bNode != 0) && (here-> BSIM3v1dNodePrime != 0)) {
|
||||
while (here->BSIM3v1BdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1BdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1bNode != 0) && (here-> BSIM3v1sNodePrime != 0)) {
|
||||
while (here->BSIM3v1BspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1BspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1dNodePrime != 0) && (here-> BSIM3v1sNodePrime != 0)) {
|
||||
while (here->BSIM3v1DPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1DPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1dNodePrime != 0) && (here-> BSIM3v1dNode != 0)) {
|
||||
while (here->BSIM3v1DPdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1DPdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1bNode != 0) && (here-> BSIM3v1gNode != 0)) {
|
||||
while (here->BSIM3v1BgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1BgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1dNodePrime != 0) && (here-> BSIM3v1gNode != 0)) {
|
||||
while (here->BSIM3v1DPgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1DPgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1sNodePrime != 0) && (here-> BSIM3v1gNode != 0)) {
|
||||
while (here->BSIM3v1SPgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1SPgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1sNodePrime != 0) && (here-> BSIM3v1sNode != 0)) {
|
||||
while (here->BSIM3v1SPsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1SPsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1dNodePrime != 0) && (here-> BSIM3v1bNode != 0)) {
|
||||
while (here->BSIM3v1DPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1DPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1sNodePrime != 0) && (here-> BSIM3v1bNode != 0)) {
|
||||
while (here->BSIM3v1SPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1SPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1sNodePrime != 0) && (here-> BSIM3v1dNodePrime != 0)) {
|
||||
while (here->BSIM3v1SPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1SPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1qNode != 0) && (here-> BSIM3v1qNode != 0)) {
|
||||
while (here->BSIM3v1QqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1QqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1qNode != 0) && (here-> BSIM3v1dNodePrime != 0)) {
|
||||
while (here->BSIM3v1QdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1QdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1qNode != 0) && (here-> BSIM3v1sNodePrime != 0)) {
|
||||
while (here->BSIM3v1QspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1QspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1qNode != 0) && (here-> BSIM3v1gNode != 0)) {
|
||||
while (here->BSIM3v1QgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1QgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1qNode != 0) && (here-> BSIM3v1bNode != 0)) {
|
||||
while (here->BSIM3v1QbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1QbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1dNodePrime != 0) && (here-> BSIM3v1qNode != 0)) {
|
||||
while (here->BSIM3v1DPqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1DPqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1sNodePrime != 0) && (here-> BSIM3v1qNode != 0)) {
|
||||
while (here->BSIM3v1SPqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1SPqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1gNode != 0) && (here-> BSIM3v1qNode != 0)) {
|
||||
while (here->BSIM3v1GqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1GqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v1bNode != 0) && (here-> BSIM3v1qNode != 0)) {
|
||||
while (here->BSIM3v1BqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v1BqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -0,0 +1,416 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "bsim3v32def.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
BSIM3v32bindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
BSIM3v32model *model = (BSIM3v32model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the b3v32 models */
|
||||
for( ; model != NULL; model = model->BSIM3v32nextModel ) {
|
||||
BSIM3v32instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->BSIM3v32instances; here != NULL ;
|
||||
here = here->BSIM3v32nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32dNode != 0) && (here-> BSIM3v32dNode != 0)) {
|
||||
while (here->BSIM3v32DdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32DdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32gNode != 0) && (here-> BSIM3v32gNode != 0)) {
|
||||
while (here->BSIM3v32GgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32GgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32sNode != 0) && (here-> BSIM3v32sNode != 0)) {
|
||||
while (here->BSIM3v32SsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32SsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32bNode != 0) && (here-> BSIM3v32bNode != 0)) {
|
||||
while (here->BSIM3v32BbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32BbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32dNodePrime != 0) && (here-> BSIM3v32dNodePrime != 0)) {
|
||||
while (here->BSIM3v32DPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32DPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32sNodePrime != 0) && (here-> BSIM3v32sNodePrime != 0)) {
|
||||
while (here->BSIM3v32SPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32SPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32dNode != 0) && (here-> BSIM3v32dNodePrime != 0)) {
|
||||
while (here->BSIM3v32DdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32DdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32gNode != 0) && (here-> BSIM3v32bNode != 0)) {
|
||||
while (here->BSIM3v32GbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32GbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32gNode != 0) && (here-> BSIM3v32dNodePrime != 0)) {
|
||||
while (here->BSIM3v32GdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32GdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32gNode != 0) && (here-> BSIM3v32sNodePrime != 0)) {
|
||||
while (here->BSIM3v32GspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32GspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32sNode != 0) && (here-> BSIM3v32sNodePrime != 0)) {
|
||||
while (here->BSIM3v32SspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32SspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32bNode != 0) && (here-> BSIM3v32dNodePrime != 0)) {
|
||||
while (here->BSIM3v32BdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32BdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32bNode != 0) && (here-> BSIM3v32sNodePrime != 0)) {
|
||||
while (here->BSIM3v32BspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32BspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32dNodePrime != 0) && (here-> BSIM3v32sNodePrime != 0)) {
|
||||
while (here->BSIM3v32DPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32DPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32dNodePrime != 0) && (here-> BSIM3v32dNode != 0)) {
|
||||
while (here->BSIM3v32DPdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32DPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32bNode != 0) && (here-> BSIM3v32gNode != 0)) {
|
||||
while (here->BSIM3v32BgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32BgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32dNodePrime != 0) && (here-> BSIM3v32gNode != 0)) {
|
||||
while (here->BSIM3v32DPgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32DPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32sNodePrime != 0) && (here-> BSIM3v32gNode != 0)) {
|
||||
while (here->BSIM3v32SPgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32SPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32sNodePrime != 0) && (here-> BSIM3v32sNode != 0)) {
|
||||
while (here->BSIM3v32SPsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32SPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32dNodePrime != 0) && (here-> BSIM3v32bNode != 0)) {
|
||||
while (here->BSIM3v32DPbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32DPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32sNodePrime != 0) && (here-> BSIM3v32bNode != 0)) {
|
||||
while (here->BSIM3v32SPbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32SPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32sNodePrime != 0) && (here-> BSIM3v32dNodePrime != 0)) {
|
||||
while (here->BSIM3v32SPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32SPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32qNode != 0) && (here-> BSIM3v32qNode != 0)) {
|
||||
while (here->BSIM3v32QqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32QqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32qNode != 0) && (here-> BSIM3v32dNodePrime != 0)) {
|
||||
while (here->BSIM3v32QdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32QdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32qNode != 0) && (here-> BSIM3v32sNodePrime != 0)) {
|
||||
while (here->BSIM3v32QspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32QspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32qNode != 0) && (here-> BSIM3v32gNode != 0)) {
|
||||
while (here->BSIM3v32QgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32QgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32qNode != 0) && (here-> BSIM3v32bNode != 0)) {
|
||||
while (here->BSIM3v32QbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32QbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32dNodePrime != 0) && (here-> BSIM3v32qNode != 0)) {
|
||||
while (here->BSIM3v32DPqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32DPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32sNodePrime != 0) && (here-> BSIM3v32qNode != 0)) {
|
||||
while (here->BSIM3v32SPqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32SPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32gNode != 0) && (here-> BSIM3v32qNode != 0)) {
|
||||
while (here->BSIM3v32GqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32GqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32bNode != 0) && (here-> BSIM3v32qNode != 0)) {
|
||||
while (here->BSIM3v32BqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM3v32BqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
BSIM3v32bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
BSIM3v32model *model = (BSIM3v32model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the b3v32 models */
|
||||
for( ; model != NULL; model = model->BSIM3v32nextModel ) {
|
||||
BSIM3v32instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->BSIM3v32instances; here != NULL ;
|
||||
here = here->BSIM3v32nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32dNode != 0) && (here-> BSIM3v32dNode != 0)) {
|
||||
while (here->BSIM3v32DdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32DdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32gNode != 0) && (here-> BSIM3v32gNode != 0)) {
|
||||
while (here->BSIM3v32GgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32GgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32sNode != 0) && (here-> BSIM3v32sNode != 0)) {
|
||||
while (here->BSIM3v32SsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32SsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32bNode != 0) && (here-> BSIM3v32bNode != 0)) {
|
||||
while (here->BSIM3v32BbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32BbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32dNodePrime != 0) && (here-> BSIM3v32dNodePrime != 0)) {
|
||||
while (here->BSIM3v32DPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32DPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32sNodePrime != 0) && (here-> BSIM3v32sNodePrime != 0)) {
|
||||
while (here->BSIM3v32SPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32SPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32dNode != 0) && (here-> BSIM3v32dNodePrime != 0)) {
|
||||
while (here->BSIM3v32DdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32DdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32gNode != 0) && (here-> BSIM3v32bNode != 0)) {
|
||||
while (here->BSIM3v32GbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32GbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32gNode != 0) && (here-> BSIM3v32dNodePrime != 0)) {
|
||||
while (here->BSIM3v32GdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32GdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32gNode != 0) && (here-> BSIM3v32sNodePrime != 0)) {
|
||||
while (here->BSIM3v32GspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32GspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32sNode != 0) && (here-> BSIM3v32sNodePrime != 0)) {
|
||||
while (here->BSIM3v32SspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32SspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32bNode != 0) && (here-> BSIM3v32dNodePrime != 0)) {
|
||||
while (here->BSIM3v32BdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32BdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32bNode != 0) && (here-> BSIM3v32sNodePrime != 0)) {
|
||||
while (here->BSIM3v32BspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32BspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32dNodePrime != 0) && (here-> BSIM3v32sNodePrime != 0)) {
|
||||
while (here->BSIM3v32DPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32DPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32dNodePrime != 0) && (here-> BSIM3v32dNode != 0)) {
|
||||
while (here->BSIM3v32DPdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32DPdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32bNode != 0) && (here-> BSIM3v32gNode != 0)) {
|
||||
while (here->BSIM3v32BgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32BgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32dNodePrime != 0) && (here-> BSIM3v32gNode != 0)) {
|
||||
while (here->BSIM3v32DPgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32DPgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32sNodePrime != 0) && (here-> BSIM3v32gNode != 0)) {
|
||||
while (here->BSIM3v32SPgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32SPgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32sNodePrime != 0) && (here-> BSIM3v32sNode != 0)) {
|
||||
while (here->BSIM3v32SPsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32SPsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32dNodePrime != 0) && (here-> BSIM3v32bNode != 0)) {
|
||||
while (here->BSIM3v32DPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32DPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32sNodePrime != 0) && (here-> BSIM3v32bNode != 0)) {
|
||||
while (here->BSIM3v32SPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32SPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32sNodePrime != 0) && (here-> BSIM3v32dNodePrime != 0)) {
|
||||
while (here->BSIM3v32SPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32SPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32qNode != 0) && (here-> BSIM3v32qNode != 0)) {
|
||||
while (here->BSIM3v32QqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32QqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32qNode != 0) && (here-> BSIM3v32dNodePrime != 0)) {
|
||||
while (here->BSIM3v32QdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32QdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32qNode != 0) && (here-> BSIM3v32sNodePrime != 0)) {
|
||||
while (here->BSIM3v32QspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32QspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32qNode != 0) && (here-> BSIM3v32gNode != 0)) {
|
||||
while (here->BSIM3v32QgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32QgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32qNode != 0) && (here-> BSIM3v32bNode != 0)) {
|
||||
while (here->BSIM3v32QbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32QbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32dNodePrime != 0) && (here-> BSIM3v32qNode != 0)) {
|
||||
while (here->BSIM3v32DPqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32DPqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32sNodePrime != 0) && (here-> BSIM3v32qNode != 0)) {
|
||||
while (here->BSIM3v32SPqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32SPqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32gNode != 0) && (here-> BSIM3v32qNode != 0)) {
|
||||
while (here->BSIM3v32GqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32GqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM3v32bNode != 0) && (here-> BSIM3v32qNode != 0)) {
|
||||
while (here->BSIM3v32BqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM3v32BqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -0,0 +1,902 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "bsim4def.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
BSIM4bindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
BSIM4model *model = (BSIM4model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the b4 models */
|
||||
for( ; model != NULL; model = model->BSIM4nextModel ) {
|
||||
BSIM4instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->BSIM4instances; here != NULL ;
|
||||
here = here->BSIM4nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dNodePrime != 0) && (here-> BSIM4bNodePrime != 0)) {
|
||||
while (here->BSIM4DPbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4DPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodePrime != 0) && (here-> BSIM4bNodePrime != 0)) {
|
||||
while (here->BSIM4GPbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4GPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sNodePrime != 0) && (here-> BSIM4bNodePrime != 0)) {
|
||||
while (here->BSIM4SPbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4SPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4bNodePrime != 0) && (here-> BSIM4dNodePrime != 0)) {
|
||||
while (here->BSIM4BPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4BPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4bNodePrime != 0) && (here-> BSIM4gNodePrime != 0)) {
|
||||
while (here->BSIM4BPgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4BPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4bNodePrime != 0) && (here-> BSIM4sNodePrime != 0)) {
|
||||
while (here->BSIM4BPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4BPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4bNodePrime != 0) && (here-> BSIM4bNodePrime != 0)) {
|
||||
while (here->BSIM4BPbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4BPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dNode != 0) && (here-> BSIM4dNode != 0)) {
|
||||
while (here->BSIM4DdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4DdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodePrime != 0) && (here-> BSIM4gNodePrime != 0)) {
|
||||
while (here->BSIM4GPgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4GPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sNode != 0) && (here-> BSIM4sNode != 0)) {
|
||||
while (here->BSIM4SsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4SsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dNodePrime != 0) && (here-> BSIM4dNodePrime != 0)) {
|
||||
while (here->BSIM4DPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4DPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sNodePrime != 0) && (here-> BSIM4sNodePrime != 0)) {
|
||||
while (here->BSIM4SPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4SPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dNode != 0) && (here-> BSIM4dNodePrime != 0)) {
|
||||
while (here->BSIM4DdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4DdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodePrime != 0) && (here-> BSIM4dNodePrime != 0)) {
|
||||
while (here->BSIM4GPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4GPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodePrime != 0) && (here-> BSIM4sNodePrime != 0)) {
|
||||
while (here->BSIM4GPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4GPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sNode != 0) && (here-> BSIM4sNodePrime != 0)) {
|
||||
while (here->BSIM4SspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4SspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dNodePrime != 0) && (here-> BSIM4sNodePrime != 0)) {
|
||||
while (here->BSIM4DPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4DPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dNodePrime != 0) && (here-> BSIM4dNode != 0)) {
|
||||
while (here->BSIM4DPdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4DPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dNodePrime != 0) && (here-> BSIM4gNodePrime != 0)) {
|
||||
while (here->BSIM4DPgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4DPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sNodePrime != 0) && (here-> BSIM4gNodePrime != 0)) {
|
||||
while (here->BSIM4SPgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4SPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sNodePrime != 0) && (here-> BSIM4sNode != 0)) {
|
||||
while (here->BSIM4SPsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4SPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sNodePrime != 0) && (here-> BSIM4dNodePrime != 0)) {
|
||||
while (here->BSIM4SPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4SPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4qNode != 0) && (here-> BSIM4qNode != 0)) {
|
||||
while (here->BSIM4QqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4QqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4qNode != 0) && (here-> BSIM4bNodePrime != 0)) {
|
||||
while (here->BSIM4QbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4QbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4qNode != 0) && (here-> BSIM4dNodePrime != 0)) {
|
||||
while (here->BSIM4QdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4QdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4qNode != 0) && (here-> BSIM4sNodePrime != 0)) {
|
||||
while (here->BSIM4QspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4QspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4qNode != 0) && (here-> BSIM4gNodePrime != 0)) {
|
||||
while (here->BSIM4QgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4QgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dNodePrime != 0) && (here-> BSIM4qNode != 0)) {
|
||||
while (here->BSIM4DPqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4DPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sNodePrime != 0) && (here-> BSIM4qNode != 0)) {
|
||||
while (here->BSIM4SPqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4SPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodePrime != 0) && (here-> BSIM4qNode != 0)) {
|
||||
while (here->BSIM4GPqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4GPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
if (here->BSIM4rgateMod != 0) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodeExt != 0) && (here-> BSIM4gNodeExt != 0)) {
|
||||
while (here->BSIM4GEgePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4GEgePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodeExt != 0) && (here-> BSIM4gNodePrime != 0)) {
|
||||
while (here->BSIM4GEgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4GEgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodePrime != 0) && (here-> BSIM4gNodeExt != 0)) {
|
||||
while (here->BSIM4GPgePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4GPgePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodeExt != 0) && (here-> BSIM4dNodePrime != 0)) {
|
||||
while (here->BSIM4GEdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4GEdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodeExt != 0) && (here-> BSIM4sNodePrime != 0)) {
|
||||
while (here->BSIM4GEspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4GEspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodeExt != 0) && (here-> BSIM4bNodePrime != 0)) {
|
||||
while (here->BSIM4GEbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4GEbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodeMid != 0) && (here-> BSIM4dNodePrime != 0)) {
|
||||
while (here->BSIM4GMdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4GMdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodeMid != 0) && (here-> BSIM4gNodePrime != 0)) {
|
||||
while (here->BSIM4GMgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4GMgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodeMid != 0) && (here-> BSIM4gNodeMid != 0)) {
|
||||
while (here->BSIM4GMgmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4GMgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodeMid != 0) && (here-> BSIM4gNodeExt != 0)) {
|
||||
while (here->BSIM4GMgePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4GMgePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodeMid != 0) && (here-> BSIM4sNodePrime != 0)) {
|
||||
while (here->BSIM4GMspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4GMspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodeMid != 0) && (here-> BSIM4bNodePrime != 0)) {
|
||||
while (here->BSIM4GMbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4GMbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dNodePrime != 0) && (here-> BSIM4gNodeMid != 0)) {
|
||||
while (here->BSIM4DPgmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4DPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodePrime != 0) && (here-> BSIM4gNodeMid != 0)) {
|
||||
while (here->BSIM4GPgmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4GPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodeExt != 0) && (here-> BSIM4gNodeMid != 0)) {
|
||||
while (here->BSIM4GEgmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4GEgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sNodePrime != 0) && (here-> BSIM4gNodeMid != 0)) {
|
||||
while (here->BSIM4SPgmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4SPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4bNodePrime != 0) && (here-> BSIM4gNodeMid != 0)) {
|
||||
while (here->BSIM4BPgmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4BPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
} /* IF */
|
||||
|
||||
if ((here->BSIM4rbodyMod ==1) || (here->BSIM4rbodyMod ==2)) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dNodePrime != 0) && (here-> BSIM4dbNode != 0)) {
|
||||
while (here->BSIM4DPdbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4DPdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sNodePrime != 0) && (here-> BSIM4sbNode != 0)) {
|
||||
while (here->BSIM4SPsbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4SPsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dbNode != 0) && (here-> BSIM4dNodePrime != 0)) {
|
||||
while (here->BSIM4DBdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4DBdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dbNode != 0) && (here-> BSIM4dbNode != 0)) {
|
||||
while (here->BSIM4DBdbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4DBdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dbNode != 0) && (here-> BSIM4bNodePrime != 0)) {
|
||||
while (here->BSIM4DBbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4DBbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dbNode != 0) && (here-> BSIM4bNode != 0)) {
|
||||
while (here->BSIM4DBbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4DBbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4bNodePrime != 0) && (here-> BSIM4dbNode != 0)) {
|
||||
while (here->BSIM4BPdbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4BPdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4bNodePrime != 0) && (here-> BSIM4bNode != 0)) {
|
||||
while (here->BSIM4BPbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4BPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4bNodePrime != 0) && (here-> BSIM4sbNode != 0)) {
|
||||
while (here->BSIM4BPsbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4BPsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sbNode != 0) && (here-> BSIM4sNodePrime != 0)) {
|
||||
while (here->BSIM4SBspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4SBspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sbNode != 0) && (here-> BSIM4bNodePrime != 0)) {
|
||||
while (here->BSIM4SBbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4SBbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sbNode != 0) && (here-> BSIM4bNode != 0)) {
|
||||
while (here->BSIM4SBbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4SBbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sbNode != 0) && (here-> BSIM4sbNode != 0)) {
|
||||
while (here->BSIM4SBsbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4SBsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4bNode != 0) && (here-> BSIM4dbNode != 0)) {
|
||||
while (here->BSIM4BdbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4BdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4bNode != 0) && (here-> BSIM4bNodePrime != 0)) {
|
||||
while (here->BSIM4BbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4BbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4bNode != 0) && (here-> BSIM4sbNode != 0)) {
|
||||
while (here->BSIM4BsbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4BsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4bNode != 0) && (here-> BSIM4bNode != 0)) {
|
||||
while (here->BSIM4BbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4BbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
} /* IF */
|
||||
|
||||
if (model->BSIM4rdsMod) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dNode != 0) && (here-> BSIM4gNodePrime != 0)) {
|
||||
while (here->BSIM4DgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4DgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dNode != 0) && (here-> BSIM4sNodePrime != 0)) {
|
||||
while (here->BSIM4DspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4DspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dNode != 0) && (here-> BSIM4bNodePrime != 0)) {
|
||||
while (here->BSIM4DbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4DbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sNode != 0) && (here-> BSIM4dNodePrime != 0)) {
|
||||
while (here->BSIM4SdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4SdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sNode != 0) && (here-> BSIM4gNodePrime != 0)) {
|
||||
while (here->BSIM4SgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4SgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sNode != 0) && (here-> BSIM4bNodePrime != 0)) {
|
||||
while (here->BSIM4SbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4SbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
} /* IF */
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
BSIM4bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
BSIM4model *model = (BSIM4model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the b4 models */
|
||||
for( ; model != NULL; model = model->BSIM4nextModel ) {
|
||||
BSIM4instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->BSIM4instances; here != NULL ;
|
||||
here = here->BSIM4nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dNodePrime != 0) && (here-> BSIM4bNodePrime != 0)) {
|
||||
while (here->BSIM4DPbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4DPbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodePrime != 0) && (here-> BSIM4bNodePrime != 0)) {
|
||||
while (here->BSIM4GPbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4GPbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sNodePrime != 0) && (here-> BSIM4bNodePrime != 0)) {
|
||||
while (here->BSIM4SPbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4SPbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4bNodePrime != 0) && (here-> BSIM4dNodePrime != 0)) {
|
||||
while (here->BSIM4BPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4BPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4bNodePrime != 0) && (here-> BSIM4gNodePrime != 0)) {
|
||||
while (here->BSIM4BPgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4BPgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4bNodePrime != 0) && (here-> BSIM4sNodePrime != 0)) {
|
||||
while (here->BSIM4BPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4BPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4bNodePrime != 0) && (here-> BSIM4bNodePrime != 0)) {
|
||||
while (here->BSIM4BPbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4BPbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dNode != 0) && (here-> BSIM4dNode != 0)) {
|
||||
while (here->BSIM4DdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4DdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodePrime != 0) && (here-> BSIM4gNodePrime != 0)) {
|
||||
while (here->BSIM4GPgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4GPgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sNode != 0) && (here-> BSIM4sNode != 0)) {
|
||||
while (here->BSIM4SsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4SsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dNodePrime != 0) && (here-> BSIM4dNodePrime != 0)) {
|
||||
while (here->BSIM4DPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4DPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sNodePrime != 0) && (here-> BSIM4sNodePrime != 0)) {
|
||||
while (here->BSIM4SPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4SPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dNode != 0) && (here-> BSIM4dNodePrime != 0)) {
|
||||
while (here->BSIM4DdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4DdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodePrime != 0) && (here-> BSIM4dNodePrime != 0)) {
|
||||
while (here->BSIM4GPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4GPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodePrime != 0) && (here-> BSIM4sNodePrime != 0)) {
|
||||
while (here->BSIM4GPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4GPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sNode != 0) && (here-> BSIM4sNodePrime != 0)) {
|
||||
while (here->BSIM4SspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4SspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dNodePrime != 0) && (here-> BSIM4sNodePrime != 0)) {
|
||||
while (here->BSIM4DPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4DPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dNodePrime != 0) && (here-> BSIM4dNode != 0)) {
|
||||
while (here->BSIM4DPdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4DPdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dNodePrime != 0) && (here-> BSIM4gNodePrime != 0)) {
|
||||
while (here->BSIM4DPgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4DPgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sNodePrime != 0) && (here-> BSIM4gNodePrime != 0)) {
|
||||
while (here->BSIM4SPgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4SPgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sNodePrime != 0) && (here-> BSIM4sNode != 0)) {
|
||||
while (here->BSIM4SPsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4SPsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sNodePrime != 0) && (here-> BSIM4dNodePrime != 0)) {
|
||||
while (here->BSIM4SPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4SPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4qNode != 0) && (here-> BSIM4qNode != 0)) {
|
||||
while (here->BSIM4QqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4QqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4qNode != 0) && (here-> BSIM4bNodePrime != 0)) {
|
||||
while (here->BSIM4QbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4QbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4qNode != 0) && (here-> BSIM4dNodePrime != 0)) {
|
||||
while (here->BSIM4QdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4QdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4qNode != 0) && (here-> BSIM4sNodePrime != 0)) {
|
||||
while (here->BSIM4QspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4QspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4qNode != 0) && (here-> BSIM4gNodePrime != 0)) {
|
||||
while (here->BSIM4QgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4QgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dNodePrime != 0) && (here-> BSIM4qNode != 0)) {
|
||||
while (here->BSIM4DPqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4DPqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sNodePrime != 0) && (here-> BSIM4qNode != 0)) {
|
||||
while (here->BSIM4SPqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4SPqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodePrime != 0) && (here-> BSIM4qNode != 0)) {
|
||||
while (here->BSIM4GPqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4GPqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
if (here->BSIM4rgateMod != 0) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodeExt != 0) && (here-> BSIM4gNodeExt != 0)) {
|
||||
while (here->BSIM4GEgePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4GEgePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodeExt != 0) && (here-> BSIM4gNodePrime != 0)) {
|
||||
while (here->BSIM4GEgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4GEgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodePrime != 0) && (here-> BSIM4gNodeExt != 0)) {
|
||||
while (here->BSIM4GPgePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4GPgePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodeExt != 0) && (here-> BSIM4dNodePrime != 0)) {
|
||||
while (here->BSIM4GEdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4GEdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodeExt != 0) && (here-> BSIM4sNodePrime != 0)) {
|
||||
while (here->BSIM4GEspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4GEspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodeExt != 0) && (here-> BSIM4bNodePrime != 0)) {
|
||||
while (here->BSIM4GEbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4GEbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodeMid != 0) && (here-> BSIM4dNodePrime != 0)) {
|
||||
while (here->BSIM4GMdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4GMdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodeMid != 0) && (here-> BSIM4gNodePrime != 0)) {
|
||||
while (here->BSIM4GMgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4GMgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodeMid != 0) && (here-> BSIM4gNodeMid != 0)) {
|
||||
while (here->BSIM4GMgmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4GMgmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodeMid != 0) && (here-> BSIM4gNodeExt != 0)) {
|
||||
while (here->BSIM4GMgePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4GMgePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodeMid != 0) && (here-> BSIM4sNodePrime != 0)) {
|
||||
while (here->BSIM4GMspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4GMspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodeMid != 0) && (here-> BSIM4bNodePrime != 0)) {
|
||||
while (here->BSIM4GMbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4GMbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dNodePrime != 0) && (here-> BSIM4gNodeMid != 0)) {
|
||||
while (here->BSIM4DPgmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4DPgmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodePrime != 0) && (here-> BSIM4gNodeMid != 0)) {
|
||||
while (here->BSIM4GPgmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4GPgmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4gNodeExt != 0) && (here-> BSIM4gNodeMid != 0)) {
|
||||
while (here->BSIM4GEgmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4GEgmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sNodePrime != 0) && (here-> BSIM4gNodeMid != 0)) {
|
||||
while (here->BSIM4SPgmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4SPgmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4bNodePrime != 0) && (here-> BSIM4gNodeMid != 0)) {
|
||||
while (here->BSIM4BPgmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4BPgmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
} /* IF */
|
||||
|
||||
if ((here->BSIM4rbodyMod ==1) || (here->BSIM4rbodyMod ==2)) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dNodePrime != 0) && (here-> BSIM4dbNode != 0)) {
|
||||
while (here->BSIM4DPdbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4DPdbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sNodePrime != 0) && (here-> BSIM4sbNode != 0)) {
|
||||
while (here->BSIM4SPsbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4SPsbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dbNode != 0) && (here-> BSIM4dNodePrime != 0)) {
|
||||
while (here->BSIM4DBdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4DBdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dbNode != 0) && (here-> BSIM4dbNode != 0)) {
|
||||
while (here->BSIM4DBdbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4DBdbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dbNode != 0) && (here-> BSIM4bNodePrime != 0)) {
|
||||
while (here->BSIM4DBbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4DBbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dbNode != 0) && (here-> BSIM4bNode != 0)) {
|
||||
while (here->BSIM4DBbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4DBbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4bNodePrime != 0) && (here-> BSIM4dbNode != 0)) {
|
||||
while (here->BSIM4BPdbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4BPdbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4bNodePrime != 0) && (here-> BSIM4bNode != 0)) {
|
||||
while (here->BSIM4BPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4BPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4bNodePrime != 0) && (here-> BSIM4sbNode != 0)) {
|
||||
while (here->BSIM4BPsbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4BPsbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sbNode != 0) && (here-> BSIM4sNodePrime != 0)) {
|
||||
while (here->BSIM4SBspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4SBspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sbNode != 0) && (here-> BSIM4bNodePrime != 0)) {
|
||||
while (here->BSIM4SBbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4SBbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sbNode != 0) && (here-> BSIM4bNode != 0)) {
|
||||
while (here->BSIM4SBbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4SBbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sbNode != 0) && (here-> BSIM4sbNode != 0)) {
|
||||
while (here->BSIM4SBsbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4SBsbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4bNode != 0) && (here-> BSIM4dbNode != 0)) {
|
||||
while (here->BSIM4BdbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4BdbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4bNode != 0) && (here-> BSIM4bNodePrime != 0)) {
|
||||
while (here->BSIM4BbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4BbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4bNode != 0) && (here-> BSIM4sbNode != 0)) {
|
||||
while (here->BSIM4BsbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4BsbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4bNode != 0) && (here-> BSIM4bNode != 0)) {
|
||||
while (here->BSIM4BbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4BbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
} /* IF */
|
||||
|
||||
if (model->BSIM4rdsMod) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dNode != 0) && (here-> BSIM4gNodePrime != 0)) {
|
||||
while (here->BSIM4DgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4DgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dNode != 0) && (here-> BSIM4sNodePrime != 0)) {
|
||||
while (here->BSIM4DspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4DspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4dNode != 0) && (here-> BSIM4bNodePrime != 0)) {
|
||||
while (here->BSIM4DbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4DbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sNode != 0) && (here-> BSIM4dNodePrime != 0)) {
|
||||
while (here->BSIM4SdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4SdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sNode != 0) && (here-> BSIM4gNodePrime != 0)) {
|
||||
while (here->BSIM4SgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4SgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4sNode != 0) && (here-> BSIM4bNodePrime != 0)) {
|
||||
while (here->BSIM4SbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4SbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
} /* IF */
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -0,0 +1,902 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "bsim4v4def.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
BSIM4v4bindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
BSIM4v4model *model = (BSIM4v4model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the b4v4 models */
|
||||
for( ; model != NULL; model = model->BSIM4v4nextModel ) {
|
||||
BSIM4v4instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->BSIM4v4instances; here != NULL ;
|
||||
here = here->BSIM4v4nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dNodePrime != 0) && (here-> BSIM4v4bNodePrime != 0)) {
|
||||
while (here->BSIM4v4DPbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4DPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodePrime != 0) && (here-> BSIM4v4bNodePrime != 0)) {
|
||||
while (here->BSIM4v4GPbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4GPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sNodePrime != 0) && (here-> BSIM4v4bNodePrime != 0)) {
|
||||
while (here->BSIM4v4SPbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4SPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4bNodePrime != 0) && (here-> BSIM4v4dNodePrime != 0)) {
|
||||
while (here->BSIM4v4BPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4BPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4bNodePrime != 0) && (here-> BSIM4v4gNodePrime != 0)) {
|
||||
while (here->BSIM4v4BPgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4BPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4bNodePrime != 0) && (here-> BSIM4v4sNodePrime != 0)) {
|
||||
while (here->BSIM4v4BPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4BPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4bNodePrime != 0) && (here-> BSIM4v4bNodePrime != 0)) {
|
||||
while (here->BSIM4v4BPbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4BPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dNode != 0) && (here-> BSIM4v4dNode != 0)) {
|
||||
while (here->BSIM4v4DdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4DdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodePrime != 0) && (here-> BSIM4v4gNodePrime != 0)) {
|
||||
while (here->BSIM4v4GPgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4GPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sNode != 0) && (here-> BSIM4v4sNode != 0)) {
|
||||
while (here->BSIM4v4SsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4SsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dNodePrime != 0) && (here-> BSIM4v4dNodePrime != 0)) {
|
||||
while (here->BSIM4v4DPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4DPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sNodePrime != 0) && (here-> BSIM4v4sNodePrime != 0)) {
|
||||
while (here->BSIM4v4SPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4SPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dNode != 0) && (here-> BSIM4v4dNodePrime != 0)) {
|
||||
while (here->BSIM4v4DdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4DdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodePrime != 0) && (here-> BSIM4v4dNodePrime != 0)) {
|
||||
while (here->BSIM4v4GPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4GPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodePrime != 0) && (here-> BSIM4v4sNodePrime != 0)) {
|
||||
while (here->BSIM4v4GPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4GPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sNode != 0) && (here-> BSIM4v4sNodePrime != 0)) {
|
||||
while (here->BSIM4v4SspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4SspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dNodePrime != 0) && (here-> BSIM4v4sNodePrime != 0)) {
|
||||
while (here->BSIM4v4DPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4DPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dNodePrime != 0) && (here-> BSIM4v4dNode != 0)) {
|
||||
while (here->BSIM4v4DPdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4DPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dNodePrime != 0) && (here-> BSIM4v4gNodePrime != 0)) {
|
||||
while (here->BSIM4v4DPgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4DPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sNodePrime != 0) && (here-> BSIM4v4gNodePrime != 0)) {
|
||||
while (here->BSIM4v4SPgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4SPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sNodePrime != 0) && (here-> BSIM4v4sNode != 0)) {
|
||||
while (here->BSIM4v4SPsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4SPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sNodePrime != 0) && (here-> BSIM4v4dNodePrime != 0)) {
|
||||
while (here->BSIM4v4SPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4SPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4qNode != 0) && (here-> BSIM4v4qNode != 0)) {
|
||||
while (here->BSIM4v4QqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4QqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4qNode != 0) && (here-> BSIM4v4bNodePrime != 0)) {
|
||||
while (here->BSIM4v4QbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4QbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4qNode != 0) && (here-> BSIM4v4dNodePrime != 0)) {
|
||||
while (here->BSIM4v4QdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4QdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4qNode != 0) && (here-> BSIM4v4sNodePrime != 0)) {
|
||||
while (here->BSIM4v4QspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4QspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4qNode != 0) && (here-> BSIM4v4gNodePrime != 0)) {
|
||||
while (here->BSIM4v4QgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4QgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dNodePrime != 0) && (here-> BSIM4v4qNode != 0)) {
|
||||
while (here->BSIM4v4DPqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4DPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sNodePrime != 0) && (here-> BSIM4v4qNode != 0)) {
|
||||
while (here->BSIM4v4SPqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4SPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodePrime != 0) && (here-> BSIM4v4qNode != 0)) {
|
||||
while (here->BSIM4v4GPqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4GPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
if (here->BSIM4v4rgateMod != 0) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodeExt != 0) && (here-> BSIM4v4gNodeExt != 0)) {
|
||||
while (here->BSIM4v4GEgePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4GEgePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodeExt != 0) && (here-> BSIM4v4gNodePrime != 0)) {
|
||||
while (here->BSIM4v4GEgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4GEgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodePrime != 0) && (here-> BSIM4v4gNodeExt != 0)) {
|
||||
while (here->BSIM4v4GPgePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4GPgePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodeExt != 0) && (here-> BSIM4v4dNodePrime != 0)) {
|
||||
while (here->BSIM4v4GEdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4GEdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodeExt != 0) && (here-> BSIM4v4sNodePrime != 0)) {
|
||||
while (here->BSIM4v4GEspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4GEspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodeExt != 0) && (here-> BSIM4v4bNodePrime != 0)) {
|
||||
while (here->BSIM4v4GEbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4GEbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodeMid != 0) && (here-> BSIM4v4dNodePrime != 0)) {
|
||||
while (here->BSIM4v4GMdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4GMdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodeMid != 0) && (here-> BSIM4v4gNodePrime != 0)) {
|
||||
while (here->BSIM4v4GMgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4GMgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodeMid != 0) && (here-> BSIM4v4gNodeMid != 0)) {
|
||||
while (here->BSIM4v4GMgmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4GMgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodeMid != 0) && (here-> BSIM4v4gNodeExt != 0)) {
|
||||
while (here->BSIM4v4GMgePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4GMgePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodeMid != 0) && (here-> BSIM4v4sNodePrime != 0)) {
|
||||
while (here->BSIM4v4GMspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4GMspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodeMid != 0) && (here-> BSIM4v4bNodePrime != 0)) {
|
||||
while (here->BSIM4v4GMbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4GMbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dNodePrime != 0) && (here-> BSIM4v4gNodeMid != 0)) {
|
||||
while (here->BSIM4v4DPgmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4DPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodePrime != 0) && (here-> BSIM4v4gNodeMid != 0)) {
|
||||
while (here->BSIM4v4GPgmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4GPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodeExt != 0) && (here-> BSIM4v4gNodeMid != 0)) {
|
||||
while (here->BSIM4v4GEgmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4GEgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sNodePrime != 0) && (here-> BSIM4v4gNodeMid != 0)) {
|
||||
while (here->BSIM4v4SPgmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4SPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4bNodePrime != 0) && (here-> BSIM4v4gNodeMid != 0)) {
|
||||
while (here->BSIM4v4BPgmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4BPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
} /* IF */
|
||||
|
||||
if (here->BSIM4v4rbodyMod) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dNodePrime != 0) && (here-> BSIM4v4dbNode != 0)) {
|
||||
while (here->BSIM4v4DPdbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4DPdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sNodePrime != 0) && (here-> BSIM4v4sbNode != 0)) {
|
||||
while (here->BSIM4v4SPsbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4SPsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dbNode != 0) && (here-> BSIM4v4dNodePrime != 0)) {
|
||||
while (here->BSIM4v4DBdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4DBdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dbNode != 0) && (here-> BSIM4v4dbNode != 0)) {
|
||||
while (here->BSIM4v4DBdbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4DBdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dbNode != 0) && (here-> BSIM4v4bNodePrime != 0)) {
|
||||
while (here->BSIM4v4DBbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4DBbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dbNode != 0) && (here-> BSIM4v4bNode != 0)) {
|
||||
while (here->BSIM4v4DBbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4DBbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4bNodePrime != 0) && (here-> BSIM4v4dbNode != 0)) {
|
||||
while (here->BSIM4v4BPdbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4BPdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4bNodePrime != 0) && (here-> BSIM4v4bNode != 0)) {
|
||||
while (here->BSIM4v4BPbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4BPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4bNodePrime != 0) && (here-> BSIM4v4sbNode != 0)) {
|
||||
while (here->BSIM4v4BPsbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4BPsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sbNode != 0) && (here-> BSIM4v4sNodePrime != 0)) {
|
||||
while (here->BSIM4v4SBspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4SBspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sbNode != 0) && (here-> BSIM4v4bNodePrime != 0)) {
|
||||
while (here->BSIM4v4SBbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4SBbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sbNode != 0) && (here-> BSIM4v4bNode != 0)) {
|
||||
while (here->BSIM4v4SBbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4SBbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sbNode != 0) && (here-> BSIM4v4sbNode != 0)) {
|
||||
while (here->BSIM4v4SBsbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4SBsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4bNode != 0) && (here-> BSIM4v4dbNode != 0)) {
|
||||
while (here->BSIM4v4BdbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4BdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4bNode != 0) && (here-> BSIM4v4bNodePrime != 0)) {
|
||||
while (here->BSIM4v4BbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4BbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4bNode != 0) && (here-> BSIM4v4sbNode != 0)) {
|
||||
while (here->BSIM4v4BsbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4BsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4bNode != 0) && (here-> BSIM4v4bNode != 0)) {
|
||||
while (here->BSIM4v4BbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4BbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
} /* IF */
|
||||
|
||||
if (model->BSIM4v4rdsMod) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dNode != 0) && (here-> BSIM4v4gNodePrime != 0)) {
|
||||
while (here->BSIM4v4DgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4DgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dNode != 0) && (here-> BSIM4v4sNodePrime != 0)) {
|
||||
while (here->BSIM4v4DspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4DspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dNode != 0) && (here-> BSIM4v4bNodePrime != 0)) {
|
||||
while (here->BSIM4v4DbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4DbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sNode != 0) && (here-> BSIM4v4dNodePrime != 0)) {
|
||||
while (here->BSIM4v4SdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4SdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sNode != 0) && (here-> BSIM4v4gNodePrime != 0)) {
|
||||
while (here->BSIM4v4SgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4SgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sNode != 0) && (here-> BSIM4v4bNodePrime != 0)) {
|
||||
while (here->BSIM4v4SbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v4SbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
} /* IF */
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
BSIM4v4bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
BSIM4v4model *model = (BSIM4v4model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the b4v4 models */
|
||||
for( ; model != NULL; model = model->BSIM4v4nextModel ) {
|
||||
BSIM4v4instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->BSIM4v4instances; here != NULL ;
|
||||
here = here->BSIM4v4nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dNodePrime != 0) && (here-> BSIM4v4bNodePrime != 0)) {
|
||||
while (here->BSIM4v4DPbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4DPbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodePrime != 0) && (here-> BSIM4v4bNodePrime != 0)) {
|
||||
while (here->BSIM4v4GPbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4GPbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sNodePrime != 0) && (here-> BSIM4v4bNodePrime != 0)) {
|
||||
while (here->BSIM4v4SPbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4SPbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4bNodePrime != 0) && (here-> BSIM4v4dNodePrime != 0)) {
|
||||
while (here->BSIM4v4BPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4BPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4bNodePrime != 0) && (here-> BSIM4v4gNodePrime != 0)) {
|
||||
while (here->BSIM4v4BPgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4BPgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4bNodePrime != 0) && (here-> BSIM4v4sNodePrime != 0)) {
|
||||
while (here->BSIM4v4BPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4BPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4bNodePrime != 0) && (here-> BSIM4v4bNodePrime != 0)) {
|
||||
while (here->BSIM4v4BPbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4BPbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dNode != 0) && (here-> BSIM4v4dNode != 0)) {
|
||||
while (here->BSIM4v4DdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4DdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodePrime != 0) && (here-> BSIM4v4gNodePrime != 0)) {
|
||||
while (here->BSIM4v4GPgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4GPgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sNode != 0) && (here-> BSIM4v4sNode != 0)) {
|
||||
while (here->BSIM4v4SsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4SsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dNodePrime != 0) && (here-> BSIM4v4dNodePrime != 0)) {
|
||||
while (here->BSIM4v4DPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4DPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sNodePrime != 0) && (here-> BSIM4v4sNodePrime != 0)) {
|
||||
while (here->BSIM4v4SPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4SPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dNode != 0) && (here-> BSIM4v4dNodePrime != 0)) {
|
||||
while (here->BSIM4v4DdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4DdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodePrime != 0) && (here-> BSIM4v4dNodePrime != 0)) {
|
||||
while (here->BSIM4v4GPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4GPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodePrime != 0) && (here-> BSIM4v4sNodePrime != 0)) {
|
||||
while (here->BSIM4v4GPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4GPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sNode != 0) && (here-> BSIM4v4sNodePrime != 0)) {
|
||||
while (here->BSIM4v4SspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4SspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dNodePrime != 0) && (here-> BSIM4v4sNodePrime != 0)) {
|
||||
while (here->BSIM4v4DPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4DPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dNodePrime != 0) && (here-> BSIM4v4dNode != 0)) {
|
||||
while (here->BSIM4v4DPdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4DPdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dNodePrime != 0) && (here-> BSIM4v4gNodePrime != 0)) {
|
||||
while (here->BSIM4v4DPgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4DPgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sNodePrime != 0) && (here-> BSIM4v4gNodePrime != 0)) {
|
||||
while (here->BSIM4v4SPgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4SPgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sNodePrime != 0) && (here-> BSIM4v4sNode != 0)) {
|
||||
while (here->BSIM4v4SPsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4SPsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sNodePrime != 0) && (here-> BSIM4v4dNodePrime != 0)) {
|
||||
while (here->BSIM4v4SPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4SPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4qNode != 0) && (here-> BSIM4v4qNode != 0)) {
|
||||
while (here->BSIM4v4QqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4QqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4qNode != 0) && (here-> BSIM4v4bNodePrime != 0)) {
|
||||
while (here->BSIM4v4QbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4QbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4qNode != 0) && (here-> BSIM4v4dNodePrime != 0)) {
|
||||
while (here->BSIM4v4QdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4QdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4qNode != 0) && (here-> BSIM4v4sNodePrime != 0)) {
|
||||
while (here->BSIM4v4QspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4QspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4qNode != 0) && (here-> BSIM4v4gNodePrime != 0)) {
|
||||
while (here->BSIM4v4QgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4QgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dNodePrime != 0) && (here-> BSIM4v4qNode != 0)) {
|
||||
while (here->BSIM4v4DPqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4DPqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sNodePrime != 0) && (here-> BSIM4v4qNode != 0)) {
|
||||
while (here->BSIM4v4SPqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4SPqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodePrime != 0) && (here-> BSIM4v4qNode != 0)) {
|
||||
while (here->BSIM4v4GPqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4GPqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
if (here->BSIM4v4rgateMod != 0) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodeExt != 0) && (here-> BSIM4v4gNodeExt != 0)) {
|
||||
while (here->BSIM4v4GEgePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4GEgePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodeExt != 0) && (here-> BSIM4v4gNodePrime != 0)) {
|
||||
while (here->BSIM4v4GEgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4GEgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodePrime != 0) && (here-> BSIM4v4gNodeExt != 0)) {
|
||||
while (here->BSIM4v4GPgePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4GPgePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodeExt != 0) && (here-> BSIM4v4dNodePrime != 0)) {
|
||||
while (here->BSIM4v4GEdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4GEdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodeExt != 0) && (here-> BSIM4v4sNodePrime != 0)) {
|
||||
while (here->BSIM4v4GEspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4GEspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodeExt != 0) && (here-> BSIM4v4bNodePrime != 0)) {
|
||||
while (here->BSIM4v4GEbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4GEbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodeMid != 0) && (here-> BSIM4v4dNodePrime != 0)) {
|
||||
while (here->BSIM4v4GMdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4GMdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodeMid != 0) && (here-> BSIM4v4gNodePrime != 0)) {
|
||||
while (here->BSIM4v4GMgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4GMgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodeMid != 0) && (here-> BSIM4v4gNodeMid != 0)) {
|
||||
while (here->BSIM4v4GMgmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4GMgmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodeMid != 0) && (here-> BSIM4v4gNodeExt != 0)) {
|
||||
while (here->BSIM4v4GMgePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4GMgePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodeMid != 0) && (here-> BSIM4v4sNodePrime != 0)) {
|
||||
while (here->BSIM4v4GMspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4GMspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodeMid != 0) && (here-> BSIM4v4bNodePrime != 0)) {
|
||||
while (here->BSIM4v4GMbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4GMbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dNodePrime != 0) && (here-> BSIM4v4gNodeMid != 0)) {
|
||||
while (here->BSIM4v4DPgmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4DPgmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodePrime != 0) && (here-> BSIM4v4gNodeMid != 0)) {
|
||||
while (here->BSIM4v4GPgmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4GPgmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4gNodeExt != 0) && (here-> BSIM4v4gNodeMid != 0)) {
|
||||
while (here->BSIM4v4GEgmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4GEgmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sNodePrime != 0) && (here-> BSIM4v4gNodeMid != 0)) {
|
||||
while (here->BSIM4v4SPgmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4SPgmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4bNodePrime != 0) && (here-> BSIM4v4gNodeMid != 0)) {
|
||||
while (here->BSIM4v4BPgmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4BPgmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
|
||||
if (here->BSIM4v4rbodyMod) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dNodePrime != 0) && (here-> BSIM4v4dbNode != 0)) {
|
||||
while (here->BSIM4v4DPdbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4DPdbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sNodePrime != 0) && (here-> BSIM4v4sbNode != 0)) {
|
||||
while (here->BSIM4v4SPsbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4SPsbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dbNode != 0) && (here-> BSIM4v4dNodePrime != 0)) {
|
||||
while (here->BSIM4v4DBdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4DBdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dbNode != 0) && (here-> BSIM4v4dbNode != 0)) {
|
||||
while (here->BSIM4v4DBdbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4DBdbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dbNode != 0) && (here-> BSIM4v4bNodePrime != 0)) {
|
||||
while (here->BSIM4v4DBbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4DBbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dbNode != 0) && (here-> BSIM4v4bNode != 0)) {
|
||||
while (here->BSIM4v4DBbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4DBbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4bNodePrime != 0) && (here-> BSIM4v4dbNode != 0)) {
|
||||
while (here->BSIM4v4BPdbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4BPdbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4bNodePrime != 0) && (here-> BSIM4v4bNode != 0)) {
|
||||
while (here->BSIM4v4BPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4BPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4bNodePrime != 0) && (here-> BSIM4v4sbNode != 0)) {
|
||||
while (here->BSIM4v4BPsbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4BPsbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sbNode != 0) && (here-> BSIM4v4sNodePrime != 0)) {
|
||||
while (here->BSIM4v4SBspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4SBspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sbNode != 0) && (here-> BSIM4v4bNodePrime != 0)) {
|
||||
while (here->BSIM4v4SBbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4SBbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sbNode != 0) && (here-> BSIM4v4bNode != 0)) {
|
||||
while (here->BSIM4v4SBbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4SBbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sbNode != 0) && (here-> BSIM4v4sbNode != 0)) {
|
||||
while (here->BSIM4v4SBsbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4SBsbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4bNode != 0) && (here-> BSIM4v4dbNode != 0)) {
|
||||
while (here->BSIM4v4BdbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4BdbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4bNode != 0) && (here-> BSIM4v4bNodePrime != 0)) {
|
||||
while (here->BSIM4v4BbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4BbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4bNode != 0) && (here-> BSIM4v4sbNode != 0)) {
|
||||
while (here->BSIM4v4BsbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4BsbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4bNode != 0) && (here-> BSIM4v4bNode != 0)) {
|
||||
while (here->BSIM4v4BbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4BbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
} /* IF */
|
||||
|
||||
if (model->BSIM4v4rdsMod) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dNode != 0) && (here-> BSIM4v4gNodePrime != 0)) {
|
||||
while (here->BSIM4v4DgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4DgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dNode != 0) && (here-> BSIM4v4sNodePrime != 0)) {
|
||||
while (here->BSIM4v4DspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4DspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4dNode != 0) && (here-> BSIM4v4bNodePrime != 0)) {
|
||||
while (here->BSIM4v4DbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4DbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sNode != 0) && (here-> BSIM4v4dNodePrime != 0)) {
|
||||
while (here->BSIM4v4SdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4SdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sNode != 0) && (here-> BSIM4v4gNodePrime != 0)) {
|
||||
while (here->BSIM4v4SgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4SgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v4sNode != 0) && (here-> BSIM4v4bNodePrime != 0)) {
|
||||
while (here->BSIM4v4SbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v4SbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
} /* IF */
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -0,0 +1,902 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "bsim4v5def.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
BSIM4v5bindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
BSIM4v5model *model = (BSIM4v5model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the b4v5 models */
|
||||
for( ; model != NULL; model = model->BSIM4v5nextModel ) {
|
||||
BSIM4v5instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->BSIM4v5instances; here != NULL ;
|
||||
here = here->BSIM4v5nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dNodePrime != 0) && (here-> BSIM4v5bNodePrime != 0)) {
|
||||
while (here->BSIM4v5DPbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5DPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodePrime != 0) && (here-> BSIM4v5bNodePrime != 0)) {
|
||||
while (here->BSIM4v5GPbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5GPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sNodePrime != 0) && (here-> BSIM4v5bNodePrime != 0)) {
|
||||
while (here->BSIM4v5SPbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5SPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5bNodePrime != 0) && (here-> BSIM4v5dNodePrime != 0)) {
|
||||
while (here->BSIM4v5BPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5BPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5bNodePrime != 0) && (here-> BSIM4v5gNodePrime != 0)) {
|
||||
while (here->BSIM4v5BPgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5BPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5bNodePrime != 0) && (here-> BSIM4v5sNodePrime != 0)) {
|
||||
while (here->BSIM4v5BPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5BPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5bNodePrime != 0) && (here-> BSIM4v5bNodePrime != 0)) {
|
||||
while (here->BSIM4v5BPbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5BPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dNode != 0) && (here-> BSIM4v5dNode != 0)) {
|
||||
while (here->BSIM4v5DdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5DdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodePrime != 0) && (here-> BSIM4v5gNodePrime != 0)) {
|
||||
while (here->BSIM4v5GPgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5GPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sNode != 0) && (here-> BSIM4v5sNode != 0)) {
|
||||
while (here->BSIM4v5SsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5SsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dNodePrime != 0) && (here-> BSIM4v5dNodePrime != 0)) {
|
||||
while (here->BSIM4v5DPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5DPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sNodePrime != 0) && (here-> BSIM4v5sNodePrime != 0)) {
|
||||
while (here->BSIM4v5SPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5SPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dNode != 0) && (here-> BSIM4v5dNodePrime != 0)) {
|
||||
while (here->BSIM4v5DdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5DdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodePrime != 0) && (here-> BSIM4v5dNodePrime != 0)) {
|
||||
while (here->BSIM4v5GPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5GPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodePrime != 0) && (here-> BSIM4v5sNodePrime != 0)) {
|
||||
while (here->BSIM4v5GPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5GPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sNode != 0) && (here-> BSIM4v5sNodePrime != 0)) {
|
||||
while (here->BSIM4v5SspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5SspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dNodePrime != 0) && (here-> BSIM4v5sNodePrime != 0)) {
|
||||
while (here->BSIM4v5DPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5DPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dNodePrime != 0) && (here-> BSIM4v5dNode != 0)) {
|
||||
while (here->BSIM4v5DPdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5DPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dNodePrime != 0) && (here-> BSIM4v5gNodePrime != 0)) {
|
||||
while (here->BSIM4v5DPgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5DPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sNodePrime != 0) && (here-> BSIM4v5gNodePrime != 0)) {
|
||||
while (here->BSIM4v5SPgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5SPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sNodePrime != 0) && (here-> BSIM4v5sNode != 0)) {
|
||||
while (here->BSIM4v5SPsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5SPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sNodePrime != 0) && (here-> BSIM4v5dNodePrime != 0)) {
|
||||
while (here->BSIM4v5SPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5SPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5qNode != 0) && (here-> BSIM4v5qNode != 0)) {
|
||||
while (here->BSIM4v5QqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5QqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5qNode != 0) && (here-> BSIM4v5bNodePrime != 0)) {
|
||||
while (here->BSIM4v5QbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5QbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5qNode != 0) && (here-> BSIM4v5dNodePrime != 0)) {
|
||||
while (here->BSIM4v5QdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5QdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5qNode != 0) && (here-> BSIM4v5sNodePrime != 0)) {
|
||||
while (here->BSIM4v5QspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5QspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5qNode != 0) && (here-> BSIM4v5gNodePrime != 0)) {
|
||||
while (here->BSIM4v5QgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5QgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dNodePrime != 0) && (here-> BSIM4v5qNode != 0)) {
|
||||
while (here->BSIM4v5DPqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5DPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sNodePrime != 0) && (here-> BSIM4v5qNode != 0)) {
|
||||
while (here->BSIM4v5SPqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5SPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodePrime != 0) && (here-> BSIM4v5qNode != 0)) {
|
||||
while (here->BSIM4v5GPqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5GPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
if (here->BSIM4v5rgateMod != 0) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodeExt != 0) && (here-> BSIM4v5gNodeExt != 0)) {
|
||||
while (here->BSIM4v5GEgePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5GEgePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodeExt != 0) && (here-> BSIM4v5gNodePrime != 0)) {
|
||||
while (here->BSIM4v5GEgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5GEgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodePrime != 0) && (here-> BSIM4v5gNodeExt != 0)) {
|
||||
while (here->BSIM4v5GPgePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5GPgePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodeExt != 0) && (here-> BSIM4v5dNodePrime != 0)) {
|
||||
while (here->BSIM4v5GEdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5GEdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodeExt != 0) && (here-> BSIM4v5sNodePrime != 0)) {
|
||||
while (here->BSIM4v5GEspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5GEspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodeExt != 0) && (here-> BSIM4v5bNodePrime != 0)) {
|
||||
while (here->BSIM4v5GEbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5GEbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodeMid != 0) && (here-> BSIM4v5dNodePrime != 0)) {
|
||||
while (here->BSIM4v5GMdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5GMdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodeMid != 0) && (here-> BSIM4v5gNodePrime != 0)) {
|
||||
while (here->BSIM4v5GMgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5GMgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodeMid != 0) && (here-> BSIM4v5gNodeMid != 0)) {
|
||||
while (here->BSIM4v5GMgmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5GMgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodeMid != 0) && (here-> BSIM4v5gNodeExt != 0)) {
|
||||
while (here->BSIM4v5GMgePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5GMgePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodeMid != 0) && (here-> BSIM4v5sNodePrime != 0)) {
|
||||
while (here->BSIM4v5GMspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5GMspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodeMid != 0) && (here-> BSIM4v5bNodePrime != 0)) {
|
||||
while (here->BSIM4v5GMbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5GMbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dNodePrime != 0) && (here-> BSIM4v5gNodeMid != 0)) {
|
||||
while (here->BSIM4v5DPgmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5DPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodePrime != 0) && (here-> BSIM4v5gNodeMid != 0)) {
|
||||
while (here->BSIM4v5GPgmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5GPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodeExt != 0) && (here-> BSIM4v5gNodeMid != 0)) {
|
||||
while (here->BSIM4v5GEgmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5GEgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sNodePrime != 0) && (here-> BSIM4v5gNodeMid != 0)) {
|
||||
while (here->BSIM4v5SPgmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5SPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5bNodePrime != 0) && (here-> BSIM4v5gNodeMid != 0)) {
|
||||
while (here->BSIM4v5BPgmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5BPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
} /* IF */
|
||||
|
||||
if ((here->BSIM4v5rbodyMod ==1) || (here->BSIM4v5rbodyMod ==2)) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dNodePrime != 0) && (here-> BSIM4v5dbNode != 0)) {
|
||||
while (here->BSIM4v5DPdbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5DPdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sNodePrime != 0) && (here-> BSIM4v5sbNode != 0)) {
|
||||
while (here->BSIM4v5SPsbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5SPsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dbNode != 0) && (here-> BSIM4v5dNodePrime != 0)) {
|
||||
while (here->BSIM4v5DBdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5DBdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dbNode != 0) && (here-> BSIM4v5dbNode != 0)) {
|
||||
while (here->BSIM4v5DBdbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5DBdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dbNode != 0) && (here-> BSIM4v5bNodePrime != 0)) {
|
||||
while (here->BSIM4v5DBbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5DBbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dbNode != 0) && (here-> BSIM4v5bNode != 0)) {
|
||||
while (here->BSIM4v5DBbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5DBbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5bNodePrime != 0) && (here-> BSIM4v5dbNode != 0)) {
|
||||
while (here->BSIM4v5BPdbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5BPdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5bNodePrime != 0) && (here-> BSIM4v5bNode != 0)) {
|
||||
while (here->BSIM4v5BPbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5BPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5bNodePrime != 0) && (here-> BSIM4v5sbNode != 0)) {
|
||||
while (here->BSIM4v5BPsbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5BPsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sbNode != 0) && (here-> BSIM4v5sNodePrime != 0)) {
|
||||
while (here->BSIM4v5SBspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5SBspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sbNode != 0) && (here-> BSIM4v5bNodePrime != 0)) {
|
||||
while (here->BSIM4v5SBbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5SBbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sbNode != 0) && (here-> BSIM4v5bNode != 0)) {
|
||||
while (here->BSIM4v5SBbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5SBbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sbNode != 0) && (here-> BSIM4v5sbNode != 0)) {
|
||||
while (here->BSIM4v5SBsbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5SBsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5bNode != 0) && (here-> BSIM4v5dbNode != 0)) {
|
||||
while (here->BSIM4v5BdbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5BdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5bNode != 0) && (here-> BSIM4v5bNodePrime != 0)) {
|
||||
while (here->BSIM4v5BbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5BbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5bNode != 0) && (here-> BSIM4v5sbNode != 0)) {
|
||||
while (here->BSIM4v5BsbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5BsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5bNode != 0) && (here-> BSIM4v5bNode != 0)) {
|
||||
while (here->BSIM4v5BbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5BbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
} /* IF */
|
||||
|
||||
if (model->BSIM4v5rdsMod) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dNode != 0) && (here-> BSIM4v5gNodePrime != 0)) {
|
||||
while (here->BSIM4v5DgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5DgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dNode != 0) && (here-> BSIM4v5sNodePrime != 0)) {
|
||||
while (here->BSIM4v5DspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5DspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dNode != 0) && (here-> BSIM4v5bNodePrime != 0)) {
|
||||
while (here->BSIM4v5DbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5DbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sNode != 0) && (here-> BSIM4v5dNodePrime != 0)) {
|
||||
while (here->BSIM4v5SdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5SdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sNode != 0) && (here-> BSIM4v5gNodePrime != 0)) {
|
||||
while (here->BSIM4v5SgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5SgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sNode != 0) && (here-> BSIM4v5bNodePrime != 0)) {
|
||||
while (here->BSIM4v5SbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v5SbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
} /* IF */
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
BSIM4v5bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
BSIM4v5model *model = (BSIM4v5model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the b4v5 models */
|
||||
for( ; model != NULL; model = model->BSIM4v5nextModel ) {
|
||||
BSIM4v5instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->BSIM4v5instances; here != NULL ;
|
||||
here = here->BSIM4v5nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dNodePrime != 0) && (here-> BSIM4v5bNodePrime != 0)) {
|
||||
while (here->BSIM4v5DPbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5DPbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodePrime != 0) && (here-> BSIM4v5bNodePrime != 0)) {
|
||||
while (here->BSIM4v5GPbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5GPbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sNodePrime != 0) && (here-> BSIM4v5bNodePrime != 0)) {
|
||||
while (here->BSIM4v5SPbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5SPbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5bNodePrime != 0) && (here-> BSIM4v5dNodePrime != 0)) {
|
||||
while (here->BSIM4v5BPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5BPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5bNodePrime != 0) && (here-> BSIM4v5gNodePrime != 0)) {
|
||||
while (here->BSIM4v5BPgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5BPgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5bNodePrime != 0) && (here-> BSIM4v5sNodePrime != 0)) {
|
||||
while (here->BSIM4v5BPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5BPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5bNodePrime != 0) && (here-> BSIM4v5bNodePrime != 0)) {
|
||||
while (here->BSIM4v5BPbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5BPbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dNode != 0) && (here-> BSIM4v5dNode != 0)) {
|
||||
while (here->BSIM4v5DdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5DdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodePrime != 0) && (here-> BSIM4v5gNodePrime != 0)) {
|
||||
while (here->BSIM4v5GPgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5GPgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sNode != 0) && (here-> BSIM4v5sNode != 0)) {
|
||||
while (here->BSIM4v5SsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5SsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dNodePrime != 0) && (here-> BSIM4v5dNodePrime != 0)) {
|
||||
while (here->BSIM4v5DPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5DPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sNodePrime != 0) && (here-> BSIM4v5sNodePrime != 0)) {
|
||||
while (here->BSIM4v5SPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5SPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dNode != 0) && (here-> BSIM4v5dNodePrime != 0)) {
|
||||
while (here->BSIM4v5DdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5DdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodePrime != 0) && (here-> BSIM4v5dNodePrime != 0)) {
|
||||
while (here->BSIM4v5GPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5GPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodePrime != 0) && (here-> BSIM4v5sNodePrime != 0)) {
|
||||
while (here->BSIM4v5GPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5GPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sNode != 0) && (here-> BSIM4v5sNodePrime != 0)) {
|
||||
while (here->BSIM4v5SspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5SspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dNodePrime != 0) && (here-> BSIM4v5sNodePrime != 0)) {
|
||||
while (here->BSIM4v5DPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5DPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dNodePrime != 0) && (here-> BSIM4v5dNode != 0)) {
|
||||
while (here->BSIM4v5DPdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5DPdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dNodePrime != 0) && (here-> BSIM4v5gNodePrime != 0)) {
|
||||
while (here->BSIM4v5DPgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5DPgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sNodePrime != 0) && (here-> BSIM4v5gNodePrime != 0)) {
|
||||
while (here->BSIM4v5SPgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5SPgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sNodePrime != 0) && (here-> BSIM4v5sNode != 0)) {
|
||||
while (here->BSIM4v5SPsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5SPsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sNodePrime != 0) && (here-> BSIM4v5dNodePrime != 0)) {
|
||||
while (here->BSIM4v5SPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5SPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5qNode != 0) && (here-> BSIM4v5qNode != 0)) {
|
||||
while (here->BSIM4v5QqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5QqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5qNode != 0) && (here-> BSIM4v5bNodePrime != 0)) {
|
||||
while (here->BSIM4v5QbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5QbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5qNode != 0) && (here-> BSIM4v5dNodePrime != 0)) {
|
||||
while (here->BSIM4v5QdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5QdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5qNode != 0) && (here-> BSIM4v5sNodePrime != 0)) {
|
||||
while (here->BSIM4v5QspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5QspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5qNode != 0) && (here-> BSIM4v5gNodePrime != 0)) {
|
||||
while (here->BSIM4v5QgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5QgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dNodePrime != 0) && (here-> BSIM4v5qNode != 0)) {
|
||||
while (here->BSIM4v5DPqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5DPqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sNodePrime != 0) && (here-> BSIM4v5qNode != 0)) {
|
||||
while (here->BSIM4v5SPqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5SPqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodePrime != 0) && (here-> BSIM4v5qNode != 0)) {
|
||||
while (here->BSIM4v5GPqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5GPqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
if (here->BSIM4v5rgateMod != 0) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodeExt != 0) && (here-> BSIM4v5gNodeExt != 0)) {
|
||||
while (here->BSIM4v5GEgePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5GEgePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodeExt != 0) && (here-> BSIM4v5gNodePrime != 0)) {
|
||||
while (here->BSIM4v5GEgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5GEgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodePrime != 0) && (here-> BSIM4v5gNodeExt != 0)) {
|
||||
while (here->BSIM4v5GPgePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5GPgePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodeExt != 0) && (here-> BSIM4v5dNodePrime != 0)) {
|
||||
while (here->BSIM4v5GEdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5GEdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodeExt != 0) && (here-> BSIM4v5sNodePrime != 0)) {
|
||||
while (here->BSIM4v5GEspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5GEspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodeExt != 0) && (here-> BSIM4v5bNodePrime != 0)) {
|
||||
while (here->BSIM4v5GEbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5GEbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodeMid != 0) && (here-> BSIM4v5dNodePrime != 0)) {
|
||||
while (here->BSIM4v5GMdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5GMdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodeMid != 0) && (here-> BSIM4v5gNodePrime != 0)) {
|
||||
while (here->BSIM4v5GMgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5GMgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodeMid != 0) && (here-> BSIM4v5gNodeMid != 0)) {
|
||||
while (here->BSIM4v5GMgmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5GMgmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodeMid != 0) && (here-> BSIM4v5gNodeExt != 0)) {
|
||||
while (here->BSIM4v5GMgePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5GMgePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodeMid != 0) && (here-> BSIM4v5sNodePrime != 0)) {
|
||||
while (here->BSIM4v5GMspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5GMspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodeMid != 0) && (here-> BSIM4v5bNodePrime != 0)) {
|
||||
while (here->BSIM4v5GMbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5GMbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dNodePrime != 0) && (here-> BSIM4v5gNodeMid != 0)) {
|
||||
while (here->BSIM4v5DPgmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5DPgmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodePrime != 0) && (here-> BSIM4v5gNodeMid != 0)) {
|
||||
while (here->BSIM4v5GPgmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5GPgmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5gNodeExt != 0) && (here-> BSIM4v5gNodeMid != 0)) {
|
||||
while (here->BSIM4v5GEgmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5GEgmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sNodePrime != 0) && (here-> BSIM4v5gNodeMid != 0)) {
|
||||
while (here->BSIM4v5SPgmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5SPgmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5bNodePrime != 0) && (here-> BSIM4v5gNodeMid != 0)) {
|
||||
while (here->BSIM4v5BPgmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5BPgmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
} /* IF */
|
||||
|
||||
if ((here->BSIM4v5rbodyMod ==1) || (here->BSIM4v5rbodyMod ==2)) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dNodePrime != 0) && (here-> BSIM4v5dbNode != 0)) {
|
||||
while (here->BSIM4v5DPdbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5DPdbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sNodePrime != 0) && (here-> BSIM4v5sbNode != 0)) {
|
||||
while (here->BSIM4v5SPsbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5SPsbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dbNode != 0) && (here-> BSIM4v5dNodePrime != 0)) {
|
||||
while (here->BSIM4v5DBdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5DBdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dbNode != 0) && (here-> BSIM4v5dbNode != 0)) {
|
||||
while (here->BSIM4v5DBdbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5DBdbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dbNode != 0) && (here-> BSIM4v5bNodePrime != 0)) {
|
||||
while (here->BSIM4v5DBbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5DBbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dbNode != 0) && (here-> BSIM4v5bNode != 0)) {
|
||||
while (here->BSIM4v5DBbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5DBbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5bNodePrime != 0) && (here-> BSIM4v5dbNode != 0)) {
|
||||
while (here->BSIM4v5BPdbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5BPdbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5bNodePrime != 0) && (here-> BSIM4v5bNode != 0)) {
|
||||
while (here->BSIM4v5BPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5BPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5bNodePrime != 0) && (here-> BSIM4v5sbNode != 0)) {
|
||||
while (here->BSIM4v5BPsbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5BPsbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sbNode != 0) && (here-> BSIM4v5sNodePrime != 0)) {
|
||||
while (here->BSIM4v5SBspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5SBspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sbNode != 0) && (here-> BSIM4v5bNodePrime != 0)) {
|
||||
while (here->BSIM4v5SBbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5SBbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sbNode != 0) && (here-> BSIM4v5bNode != 0)) {
|
||||
while (here->BSIM4v5SBbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5SBbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sbNode != 0) && (here-> BSIM4v5sbNode != 0)) {
|
||||
while (here->BSIM4v5SBsbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5SBsbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5bNode != 0) && (here-> BSIM4v5dbNode != 0)) {
|
||||
while (here->BSIM4v5BdbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5BdbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5bNode != 0) && (here-> BSIM4v5bNodePrime != 0)) {
|
||||
while (here->BSIM4v5BbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5BbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5bNode != 0) && (here-> BSIM4v5sbNode != 0)) {
|
||||
while (here->BSIM4v5BsbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5BsbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5bNode != 0) && (here-> BSIM4v5bNode != 0)) {
|
||||
while (here->BSIM4v5BbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5BbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
} /* IF */
|
||||
|
||||
if (model->BSIM4v5rdsMod) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dNode != 0) && (here-> BSIM4v5gNodePrime != 0)) {
|
||||
while (here->BSIM4v5DgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5DgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dNode != 0) && (here-> BSIM4v5sNodePrime != 0)) {
|
||||
while (here->BSIM4v5DspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5DspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5dNode != 0) && (here-> BSIM4v5bNodePrime != 0)) {
|
||||
while (here->BSIM4v5DbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5DbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sNode != 0) && (here-> BSIM4v5dNodePrime != 0)) {
|
||||
while (here->BSIM4v5SdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5SdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sNode != 0) && (here-> BSIM4v5gNodePrime != 0)) {
|
||||
while (here->BSIM4v5SgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5SgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> BSIM4v5sNode != 0) && (here-> BSIM4v5bNodePrime != 0)) {
|
||||
while (here->BSIM4v5SbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v5SbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
} /* IF */
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -0,0 +1,908 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "bsim4v6def.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
BSIM4v6bindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
BSIM4v6model *model = (BSIM4v6model *)inModel;
|
||||
BSIM4v6instance *here;
|
||||
int i ;
|
||||
|
||||
for (; model != NULL; model = model->BSIM4v6nextModel)
|
||||
{ for (here = model->BSIM4v6instances; here != NULL;
|
||||
here = here->BSIM4v6nextInstance)
|
||||
{
|
||||
|
||||
/* SEARCH FOR THE NEW POSITIONS */
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6DPbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6GPbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6SPbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6BPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6BPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6BPgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6BPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6BPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6BPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6BPbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6BPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNode != 0) && (here->BSIM4v6dNode != 0)) {
|
||||
while (here->BSIM4v6DdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6GPgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNode != 0) && (here->BSIM4v6sNode != 0)) {
|
||||
while (here->BSIM4v6SsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6DPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6SPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNode != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6DdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6GPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6GPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNode != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6SspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6DPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6dNode != 0)) {
|
||||
while (here->BSIM4v6DPdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6DPgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6SPgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6sNode != 0)) {
|
||||
while (here->BSIM4v6SPsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6SPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6qNode != 0) && (here->BSIM4v6qNode != 0)) {
|
||||
while (here->BSIM4v6QqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6QqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6qNode != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6QbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6QbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6qNode != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6QdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6QdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6qNode != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6QspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6QspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6qNode != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6QgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6QgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6qNode != 0)) {
|
||||
while (here->BSIM4v6DPqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6qNode != 0)) {
|
||||
while (here->BSIM4v6SPqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6qNode != 0)) {
|
||||
while (here->BSIM4v6GPqPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
if (here->BSIM4v6rgateMod != 0) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeExt != 0) && (here->BSIM4v6gNodeExt != 0)) {
|
||||
while (here->BSIM4v6GEgePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GEgePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeExt != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6GEgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GEgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6gNodeExt != 0)) {
|
||||
while (here->BSIM4v6GPgePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GPgePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeExt != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6GEdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GEdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeExt != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6GEspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GEspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeExt != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6GEbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GEbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeMid != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6GMdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GMdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeMid != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6GMgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GMgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeMid != 0) && (here->BSIM4v6gNodeMid != 0)) {
|
||||
while (here->BSIM4v6GMgmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GMgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeMid != 0) && (here->BSIM4v6gNodeExt != 0)) {
|
||||
while (here->BSIM4v6GMgePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GMgePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeMid != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6GMspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GMspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeMid != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6GMbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GMbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6gNodeMid != 0)) {
|
||||
while (here->BSIM4v6DPgmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6gNodeMid != 0)) {
|
||||
while (here->BSIM4v6GPgmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeExt != 0) && (here->BSIM4v6gNodeMid != 0)) {
|
||||
while (here->BSIM4v6GEgmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GEgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6gNodeMid != 0)) {
|
||||
while (here->BSIM4v6SPgmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6gNodeMid != 0)) {
|
||||
while (here->BSIM4v6BPgmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6BPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if ((here->BSIM4v6rbodyMod ==1) || (here->BSIM4v6rbodyMod ==2)) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6dbNode != 0)) {
|
||||
while (here->BSIM4v6DPdbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DPdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6sbNode != 0)) {
|
||||
while (here->BSIM4v6SPsbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SPsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dbNode != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6DBdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DBdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dbNode != 0) && (here->BSIM4v6dbNode != 0)) {
|
||||
while (here->BSIM4v6DBdbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DBdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dbNode != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6DBbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DBbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dbNode != 0) && (here->BSIM4v6bNode != 0)) {
|
||||
while (here->BSIM4v6DBbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DBbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6dbNode != 0)) {
|
||||
while (here->BSIM4v6BPdbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6BPdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6bNode != 0)) {
|
||||
while (here->BSIM4v6BPbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6BPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6sbNode != 0)) {
|
||||
while (here->BSIM4v6BPsbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6BPsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sbNode != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6SBspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SBspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sbNode != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6SBbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SBbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sbNode != 0) && (here->BSIM4v6bNode != 0)) {
|
||||
while (here->BSIM4v6SBbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SBbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sbNode != 0) && (here->BSIM4v6sbNode != 0)) {
|
||||
while (here->BSIM4v6SBsbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SBsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNode != 0) && (here->BSIM4v6dbNode != 0)) {
|
||||
while (here->BSIM4v6BdbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6BdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNode != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6BbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6BbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNode != 0) && (here->BSIM4v6sbNode != 0)) {
|
||||
while (here->BSIM4v6BsbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6BsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNode != 0) && (here->BSIM4v6bNode != 0)) {
|
||||
while (here->BSIM4v6BbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6BbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (model->BSIM4v6rdsMod) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNode != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6DgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNode != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6DspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNode != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6DbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNode != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6SdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNode != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6SgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNode != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6SbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
BSIM4v6bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
BSIM4v6model *model = (BSIM4v6model *)inModel;
|
||||
BSIM4v6instance *here;
|
||||
int i ;
|
||||
|
||||
for (; model != NULL; model = model->BSIM4v6nextModel)
|
||||
{ for (here = model->BSIM4v6instances; here != NULL;
|
||||
here = here->BSIM4v6nextInstance)
|
||||
{
|
||||
|
||||
/* SEARCH FOR THE NEW POSITIONS */
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6DPbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6DPbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6GPbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6GPbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6SPbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6SPbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6BPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6BPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6BPgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6BPgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6BPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6BPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6BPbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6BPbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNode != 0) && (here->BSIM4v6dNode != 0)) {
|
||||
while (here->BSIM4v6DdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6DdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6GPgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6GPgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNode != 0) && (here->BSIM4v6sNode != 0)) {
|
||||
while (here->BSIM4v6SsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6SsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6DPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6DPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6SPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6SPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNode != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6DdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6DdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6GPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6GPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6GPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6GPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNode != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6SspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6SspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6DPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6DPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6dNode != 0)) {
|
||||
while (here->BSIM4v6DPdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6DPdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6DPgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6DPgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6SPgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6SPgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6sNode != 0)) {
|
||||
while (here->BSIM4v6SPsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6SPsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6SPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6SPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6qNode != 0) && (here->BSIM4v6qNode != 0)) {
|
||||
while (here->BSIM4v6QqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6QqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6qNode != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6QbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6QbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6qNode != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6QdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6QdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6qNode != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6QspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6QspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6qNode != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6QgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6QgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6qNode != 0)) {
|
||||
while (here->BSIM4v6DPqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6DPqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6qNode != 0)) {
|
||||
while (here->BSIM4v6SPqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6SPqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6qNode != 0)) {
|
||||
while (here->BSIM4v6GPqPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6GPqPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
if (here->BSIM4v6rgateMod != 0) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeExt != 0) && (here->BSIM4v6gNodeExt != 0)) {
|
||||
while (here->BSIM4v6GEgePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6GEgePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeExt != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6GEgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6GEgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6gNodeExt != 0)) {
|
||||
while (here->BSIM4v6GPgePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6GPgePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeExt != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6GEdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6GEdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeExt != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6GEspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6GEspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeExt != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6GEbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6GEbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeMid != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6GMdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6GMdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeMid != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6GMgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6GMgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeMid != 0) && (here->BSIM4v6gNodeMid != 0)) {
|
||||
while (here->BSIM4v6GMgmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6GMgmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeMid != 0) && (here->BSIM4v6gNodeExt != 0)) {
|
||||
while (here->BSIM4v6GMgePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6GMgePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeMid != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6GMspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6GMspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeMid != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6GMbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6GMbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6gNodeMid != 0)) {
|
||||
while (here->BSIM4v6DPgmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6DPgmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6gNodeMid != 0)) {
|
||||
while (here->BSIM4v6GPgmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6GPgmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeExt != 0) && (here->BSIM4v6gNodeMid != 0)) {
|
||||
while (here->BSIM4v6GEgmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6GEgmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6gNodeMid != 0)) {
|
||||
while (here->BSIM4v6SPgmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6SPgmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6gNodeMid != 0)) {
|
||||
while (here->BSIM4v6BPgmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6BPgmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if ((here->BSIM4v6rbodyMod ==1) || (here->BSIM4v6rbodyMod ==2)) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6dbNode != 0)) {
|
||||
while (here->BSIM4v6DPdbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6DPdbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6sbNode != 0)) {
|
||||
while (here->BSIM4v6SPsbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6SPsbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dbNode != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6DBdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6DBdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dbNode != 0) && (here->BSIM4v6dbNode != 0)) {
|
||||
while (here->BSIM4v6DBdbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6DBdbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dbNode != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6DBbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6DBbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dbNode != 0) && (here->BSIM4v6bNode != 0)) {
|
||||
while (here->BSIM4v6DBbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6DBbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6dbNode != 0)) {
|
||||
while (here->BSIM4v6BPdbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6BPdbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6bNode != 0)) {
|
||||
while (here->BSIM4v6BPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6BPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6sbNode != 0)) {
|
||||
while (here->BSIM4v6BPsbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6BPsbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sbNode != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6SBspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6SBspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sbNode != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6SBbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6SBbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sbNode != 0) && (here->BSIM4v6bNode != 0)) {
|
||||
while (here->BSIM4v6SBbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6SBbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sbNode != 0) && (here->BSIM4v6sbNode != 0)) {
|
||||
while (here->BSIM4v6SBsbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6SBsbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNode != 0) && (here->BSIM4v6dbNode != 0)) {
|
||||
while (here->BSIM4v6BdbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6BdbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNode != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6BbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6BbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNode != 0) && (here->BSIM4v6sbNode != 0)) {
|
||||
while (here->BSIM4v6BsbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6BsbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNode != 0) && (here->BSIM4v6bNode != 0)) {
|
||||
while (here->BSIM4v6BbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6BbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (model->BSIM4v6rdsMod) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNode != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6DgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6DgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNode != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6DspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6DspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNode != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6DbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6DbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNode != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6SdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6SdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNode != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6SgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6SgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNode != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6SbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->BSIM4v6SbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -1,908 +0,0 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "bsim4v6def.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
BSIM4v6bindklu(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
BSIM4v6model *model = (BSIM4v6model *)inModel;
|
||||
BSIM4v6instance *here;
|
||||
int i ;
|
||||
|
||||
for (; model != NULL; model = model->BSIM4v6nextModel)
|
||||
{ for (here = model->BSIM4v6instances; here != NULL;
|
||||
here = here->BSIM4v6nextInstance)
|
||||
{
|
||||
|
||||
/* SEARCH FOR THE NEW POSITIONS */
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6DPbpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DPbpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6GPbpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GPbpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6SPbpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SPbpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6BPdpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6BPdpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6BPgpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6BPgpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6BPspPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6BPspPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6BPbpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6BPbpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNode != 0) && (here->BSIM4v6dNode != 0)) {
|
||||
while (here->BSIM4v6DdPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DdPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6GPgpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GPgpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNode != 0) && (here->BSIM4v6sNode != 0)) {
|
||||
while (here->BSIM4v6SsPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SsPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6DPdpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DPdpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6SPspPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SPspPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNode != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6DdpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DdpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6GPdpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GPdpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6GPspPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GPspPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNode != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6SspPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SspPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6DPspPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DPspPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6dNode != 0)) {
|
||||
while (here->BSIM4v6DPdPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DPdPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6DPgpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DPgpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6SPgpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SPgpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6sNode != 0)) {
|
||||
while (here->BSIM4v6SPsPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SPsPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6SPdpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SPdpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6qNode != 0) && (here->BSIM4v6qNode != 0)) {
|
||||
while (here->BSIM4v6QqPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6QqPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6qNode != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6QbpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6QbpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6qNode != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6QdpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6QdpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6qNode != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6QspPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6QspPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6qNode != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6QgpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6QgpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6qNode != 0)) {
|
||||
while (here->BSIM4v6DPqPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DPqPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6qNode != 0)) {
|
||||
while (here->BSIM4v6SPqPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SPqPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6qNode != 0)) {
|
||||
while (here->BSIM4v6GPqPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GPqPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
if (here->BSIM4v6rgateMod != 0) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeExt != 0) && (here->BSIM4v6gNodeExt != 0)) {
|
||||
while (here->BSIM4v6GEgePtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GEgePtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeExt != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6GEgpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GEgpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6gNodeExt != 0)) {
|
||||
while (here->BSIM4v6GPgePtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GPgePtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeExt != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6GEdpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GEdpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeExt != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6GEspPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GEspPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeExt != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6GEbpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GEbpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeMid != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6GMdpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GMdpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeMid != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6GMgpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GMgpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeMid != 0) && (here->BSIM4v6gNodeMid != 0)) {
|
||||
while (here->BSIM4v6GMgmPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GMgmPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeMid != 0) && (here->BSIM4v6gNodeExt != 0)) {
|
||||
while (here->BSIM4v6GMgePtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GMgePtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeMid != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6GMspPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GMspPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeMid != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6GMbpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GMbpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6gNodeMid != 0)) {
|
||||
while (here->BSIM4v6DPgmPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DPgmPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6gNodeMid != 0)) {
|
||||
while (here->BSIM4v6GPgmPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GPgmPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeExt != 0) && (here->BSIM4v6gNodeMid != 0)) {
|
||||
while (here->BSIM4v6GEgmPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6GEgmPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6gNodeMid != 0)) {
|
||||
while (here->BSIM4v6SPgmPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SPgmPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6gNodeMid != 0)) {
|
||||
while (here->BSIM4v6BPgmPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6BPgmPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if ((here->BSIM4v6rbodyMod ==1) || (here->BSIM4v6rbodyMod ==2)) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6dbNode != 0)) {
|
||||
while (here->BSIM4v6DPdbPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DPdbPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6sbNode != 0)) {
|
||||
while (here->BSIM4v6SPsbPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SPsbPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dbNode != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6DBdpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DBdpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dbNode != 0) && (here->BSIM4v6dbNode != 0)) {
|
||||
while (here->BSIM4v6DBdbPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DBdbPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dbNode != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6DBbpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DBbpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dbNode != 0) && (here->BSIM4v6bNode != 0)) {
|
||||
while (here->BSIM4v6DBbPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DBbPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6dbNode != 0)) {
|
||||
while (here->BSIM4v6BPdbPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6BPdbPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6bNode != 0)) {
|
||||
while (here->BSIM4v6BPbPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6BPbPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6sbNode != 0)) {
|
||||
while (here->BSIM4v6BPsbPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6BPsbPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sbNode != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6SBspPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SBspPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sbNode != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6SBbpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SBbpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sbNode != 0) && (here->BSIM4v6bNode != 0)) {
|
||||
while (here->BSIM4v6SBbPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SBbPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sbNode != 0) && (here->BSIM4v6sbNode != 0)) {
|
||||
while (here->BSIM4v6SBsbPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SBsbPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNode != 0) && (here->BSIM4v6dbNode != 0)) {
|
||||
while (here->BSIM4v6BdbPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6BdbPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNode != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6BbpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6BbpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNode != 0) && (here->BSIM4v6sbNode != 0)) {
|
||||
while (here->BSIM4v6BsbPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6BsbPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNode != 0) && (here->BSIM4v6bNode != 0)) {
|
||||
while (here->BSIM4v6BbPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6BbPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (model->BSIM4v6rdsMod) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNode != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6DgpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DgpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNode != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6DspPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DspPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNode != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6DbpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6DbpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNode != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6SdpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SdpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNode != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6SgpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SgpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNode != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6SbpPtr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->BSIM4v6SbpPtr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
BSIM4v6bindkluComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
BSIM4v6model *model = (BSIM4v6model *)inModel;
|
||||
BSIM4v6instance *here;
|
||||
int i ;
|
||||
|
||||
for (; model != NULL; model = model->BSIM4v6nextModel)
|
||||
{ for (here = model->BSIM4v6instances; here != NULL;
|
||||
here = here->BSIM4v6nextInstance)
|
||||
{
|
||||
|
||||
/* SEARCH FOR THE NEW POSITIONS */
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6DPbpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6DPbpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6GPbpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6GPbpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6SPbpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6SPbpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6BPdpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6BPdpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6BPgpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6BPgpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6BPspPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6BPspPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6BPbpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6BPbpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNode != 0) && (here->BSIM4v6dNode != 0)) {
|
||||
while (here->BSIM4v6DdPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6DdPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6GPgpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6GPgpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNode != 0) && (here->BSIM4v6sNode != 0)) {
|
||||
while (here->BSIM4v6SsPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6SsPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6DPdpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6DPdpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6SPspPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6SPspPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNode != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6DdpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6DdpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6GPdpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6GPdpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6GPspPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6GPspPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNode != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6SspPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6SspPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6DPspPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6DPspPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6dNode != 0)) {
|
||||
while (here->BSIM4v6DPdPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6DPdPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6DPgpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6DPgpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6SPgpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6SPgpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6sNode != 0)) {
|
||||
while (here->BSIM4v6SPsPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6SPsPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6SPdpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6SPdpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6qNode != 0) && (here->BSIM4v6qNode != 0)) {
|
||||
while (here->BSIM4v6QqPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6QqPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6qNode != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6QbpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6QbpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6qNode != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6QdpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6QdpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6qNode != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6QspPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6QspPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6qNode != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6QgpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6QgpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6qNode != 0)) {
|
||||
while (here->BSIM4v6DPqPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6DPqPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6qNode != 0)) {
|
||||
while (here->BSIM4v6SPqPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6SPqPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6qNode != 0)) {
|
||||
while (here->BSIM4v6GPqPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6GPqPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
if (here->BSIM4v6rgateMod != 0) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeExt != 0) && (here->BSIM4v6gNodeExt != 0)) {
|
||||
while (here->BSIM4v6GEgePtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6GEgePtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeExt != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6GEgpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6GEgpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6gNodeExt != 0)) {
|
||||
while (here->BSIM4v6GPgePtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6GPgePtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeExt != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6GEdpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6GEdpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeExt != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6GEspPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6GEspPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeExt != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6GEbpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6GEbpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeMid != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6GMdpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6GMdpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeMid != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6GMgpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6GMgpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeMid != 0) && (here->BSIM4v6gNodeMid != 0)) {
|
||||
while (here->BSIM4v6GMgmPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6GMgmPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeMid != 0) && (here->BSIM4v6gNodeExt != 0)) {
|
||||
while (here->BSIM4v6GMgePtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6GMgePtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeMid != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6GMspPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6GMspPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeMid != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6GMbpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6GMbpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6gNodeMid != 0)) {
|
||||
while (here->BSIM4v6DPgmPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6DPgmPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6gNodeMid != 0)) {
|
||||
while (here->BSIM4v6GPgmPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6GPgmPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeExt != 0) && (here->BSIM4v6gNodeMid != 0)) {
|
||||
while (here->BSIM4v6GEgmPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6GEgmPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6gNodeMid != 0)) {
|
||||
while (here->BSIM4v6SPgmPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6SPgmPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6gNodeMid != 0)) {
|
||||
while (here->BSIM4v6BPgmPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6BPgmPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if ((here->BSIM4v6rbodyMod ==1) || (here->BSIM4v6rbodyMod ==2)) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6dbNode != 0)) {
|
||||
while (here->BSIM4v6DPdbPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6DPdbPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6sbNode != 0)) {
|
||||
while (here->BSIM4v6SPsbPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6SPsbPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dbNode != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6DBdpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6DBdpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dbNode != 0) && (here->BSIM4v6dbNode != 0)) {
|
||||
while (here->BSIM4v6DBdbPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6DBdbPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dbNode != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6DBbpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6DBbpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dbNode != 0) && (here->BSIM4v6bNode != 0)) {
|
||||
while (here->BSIM4v6DBbPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6DBbPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6dbNode != 0)) {
|
||||
while (here->BSIM4v6BPdbPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6BPdbPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6bNode != 0)) {
|
||||
while (here->BSIM4v6BPbPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6BPbPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6sbNode != 0)) {
|
||||
while (here->BSIM4v6BPsbPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6BPsbPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sbNode != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6SBspPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6SBspPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sbNode != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6SBbpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6SBbpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sbNode != 0) && (here->BSIM4v6bNode != 0)) {
|
||||
while (here->BSIM4v6SBbPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6SBbPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sbNode != 0) && (here->BSIM4v6sbNode != 0)) {
|
||||
while (here->BSIM4v6SBsbPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6SBsbPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNode != 0) && (here->BSIM4v6dbNode != 0)) {
|
||||
while (here->BSIM4v6BdbPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6BdbPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNode != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6BbpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6BbpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNode != 0) && (here->BSIM4v6sbNode != 0)) {
|
||||
while (here->BSIM4v6BsbPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6BsbPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNode != 0) && (here->BSIM4v6bNode != 0)) {
|
||||
while (here->BSIM4v6BbPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6BbPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (model->BSIM4v6rdsMod) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNode != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6DgpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6DgpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNode != 0) && (here->BSIM4v6sNodePrime != 0)) {
|
||||
while (here->BSIM4v6DspPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6DspPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNode != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6DbpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6DbpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNode != 0) && (here->BSIM4v6dNodePrime != 0)) {
|
||||
while (here->BSIM4v6SdpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6SdpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNode != 0) && (here->BSIM4v6gNodePrime != 0)) {
|
||||
while (here->BSIM4v6SgpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6SgpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNode != 0) && (here->BSIM4v6bNodePrime != 0)) {
|
||||
while (here->BSIM4v6SbpPtr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->BSIM4v6SbpPtr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -8,7 +8,7 @@ Author: 2012 Francesco Lannutti
|
|||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
CAPbindklu(GENmodel *inModel, CKTcircuit *ckt)
|
||||
CAPbindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
CAPmodel *model = (CAPmodel *)inModel;
|
||||
CAPinstance *here;
|
||||
|
|
@ -23,26 +23,26 @@ CAPbindklu(GENmodel *inModel, CKTcircuit *ckt)
|
|||
|
||||
i = 0 ;
|
||||
if ((here->CAPposNode != 0) && (here->CAPposNode != 0)) {
|
||||
while (here->CAPposPosptr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->CAPposPosptr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
while (here->CAPposPosptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->CAPposPosptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->CAPnegNode != 0) && (here->CAPnegNode != 0)) {
|
||||
while (here->CAPnegNegptr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->CAPnegNegptr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
while (here->CAPnegNegptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->CAPnegNegptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->CAPposNode != 0) && (here->CAPnegNode != 0)) {
|
||||
while (here->CAPposNegptr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->CAPposNegptr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
while (here->CAPposNegptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->CAPposNegptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->CAPnegNode != 0) && (here->CAPposNode != 0)) {
|
||||
while (here->CAPnegPosptr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->CAPnegPosptr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
while (here->CAPnegPosptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->CAPnegPosptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -50,7 +50,7 @@ CAPbindklu(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
|
||||
int
|
||||
CAPbindkluComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
CAPbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
CAPmodel *model = (CAPmodel *)inModel;
|
||||
CAPinstance *here;
|
||||
|
|
@ -65,26 +65,26 @@ CAPbindkluComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
|
||||
i = 0 ;
|
||||
if ((here->CAPposNode != 0) && (here->CAPposNode != 0)) {
|
||||
while (here->CAPposPosptr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->CAPposPosptr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
while (here->CAPposPosptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->CAPposPosptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->CAPnegNode != 0) && (here->CAPnegNode != 0)) {
|
||||
while (here->CAPnegNegptr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->CAPnegNegptr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
while (here->CAPnegNegptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->CAPnegNegptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->CAPposNode != 0) && (here->CAPnegNode != 0)) {
|
||||
while (here->CAPposNegptr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->CAPposNegptr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
while (here->CAPposNegptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->CAPposNegptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->CAPnegNode != 0) && (here->CAPposNode != 0)) {
|
||||
while (here->CAPnegPosptr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->CAPnegPosptr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
while (here->CAPnegPosptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->CAPnegPosptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "cccsdefs.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
CCCSbindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
CCCSmodel *model = (CCCSmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the cccs models */
|
||||
for( ; model != NULL; model = model->CCCSnextModel ) {
|
||||
CCCSinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->CCCSinstances; here != NULL ;
|
||||
here = here->CCCSnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->CCCSposNode != 0) && (here->CCCScontBranch != 0)) {
|
||||
while (here->CCCSposContBrptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->CCCSposContBrptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->CCCSnegNode != 0) && (here->CCCScontBranch != 0)) {
|
||||
while (here->CCCSnegContBrptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->CCCSnegContBrptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
CCCSbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
CCCSmodel *model = (CCCSmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the cccs models */
|
||||
for( ; model != NULL; model = model->CCCSnextModel ) {
|
||||
CCCSinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->CCCSinstances; here != NULL ;
|
||||
here = here->CCCSnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->CCCSposNode != 0) && (here->CCCScontBranch != 0)) {
|
||||
while (here->CCCSposContBrptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->CCCSposContBrptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->CCCSnegNode != 0) && (here->CCCScontBranch != 0)) {
|
||||
while (here->CCCSnegContBrptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->CCCSnegContBrptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -0,0 +1,104 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "ccvsdefs.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
CCVSbindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
CCVSmodel *model = (CCVSmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the ccvs models */
|
||||
for( ; model != NULL; model = model->CCVSnextModel ) {
|
||||
CCVSinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->CCVSinstances; here != NULL ;
|
||||
here = here->CCVSnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> CCVSposNode != 0) && (here-> CCVSbranch != 0)) {
|
||||
while (here->CCVSposIbrptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->CCVSposIbrptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> CCVSnegNode != 0) && (here-> CCVSbranch != 0)) {
|
||||
while (here->CCVSnegIbrptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->CCVSnegIbrptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> CCVSbranch != 0) && (here-> CCVSnegNode != 0)) {
|
||||
while (here->CCVSibrNegptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->CCVSibrNegptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> CCVSbranch != 0) && (here-> CCVSposNode != 0)) {
|
||||
while (here->CCVSibrPosptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->CCVSibrPosptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> CCVSbranch != 0) && (here-> CCVScontBranch != 0)) {
|
||||
while (here->CCVSibrContBrptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->CCVSibrContBrptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
CCVSbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
CCVSmodel *model = (CCVSmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the ccvs models */
|
||||
for( ; model != NULL; model = model->CCVSnextModel ) {
|
||||
CCVSinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->CCVSinstances; here != NULL ;
|
||||
here = here->CCVSnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> CCVSposNode != 0) && (here-> CCVSbranch != 0)) {
|
||||
while (here->CCVSposIbrptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->CCVSposIbrptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> CCVSnegNode != 0) && (here-> CCVSbranch != 0)) {
|
||||
while (here->CCVSnegIbrptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->CCVSnegIbrptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> CCVSbranch != 0) && (here-> CCVSnegNode != 0)) {
|
||||
while (here->CCVSibrNegptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->CCVSibrNegptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> CCVSbranch != 0) && (here-> CCVSposNode != 0)) {
|
||||
while (here->CCVSibrPosptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->CCVSibrPosptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> CCVSbranch != 0) && (here-> CCVScontBranch != 0)) {
|
||||
while (here->CCVSibrContBrptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->CCVSibrContBrptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -0,0 +1,92 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "cswdefs.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
CSWbindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
CSWmodel *model = (CSWmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the csw models */
|
||||
for( ; model != NULL; model = model->CSWnextModel ) {
|
||||
CSWinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->CSWinstances; here != NULL ;
|
||||
here = here->CSWnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> CSWposNode != 0) && (here-> CSWposNode != 0)) {
|
||||
while (here->CSWposPosptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->CSWposPosptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> CSWposNode != 0) && (here-> CSWnegNode != 0)) {
|
||||
while (here->CSWposNegptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->CSWposNegptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> CSWnegNode != 0) && (here-> CSWposNode != 0)) {
|
||||
while (here->CSWnegPosptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->CSWnegPosptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> CSWnegNode != 0) && (here-> CSWnegNode != 0)) {
|
||||
while (here->CSWnegNegptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->CSWnegNegptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
CSWbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
CSWmodel *model = (CSWmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the csw models */
|
||||
for( ; model != NULL; model = model->CSWnextModel ) {
|
||||
CSWinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->CSWinstances; here != NULL ;
|
||||
here = here->CSWnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> CSWposNode != 0) && (here-> CSWposNode != 0)) {
|
||||
while (here->CSWposPosptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->CSWposPosptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> CSWposNode != 0) && (here-> CSWnegNode != 0)) {
|
||||
while (here->CSWposNegptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->CSWposNegptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> CSWnegNode != 0) && (here-> CSWposNode != 0)) {
|
||||
while (here->CSWnegPosptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->CSWnegPosptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> CSWnegNode != 0) && (here-> CSWnegNode != 0)) {
|
||||
while (here->CSWnegNegptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->CSWnegNegptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -0,0 +1,116 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "diodefs.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
DIObindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
DIOmodel *model = (DIOmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the diode models */
|
||||
for( ; model != NULL; model = model->DIOnextModel ) {
|
||||
DIOinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->DIOinstances; here != NULL ;
|
||||
here = here->DIOnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->DIOposNode != 0) && (here->DIOposPrimeNode != 0)) {
|
||||
while (here->DIOposPosPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->DIOposPosPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->DIOnegNode != 0) && (here->DIOposPrimeNode != 0)) {
|
||||
while (here->DIOnegPosPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->DIOnegPosPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->DIOposPrimeNode != 0) && (here->DIOposNode != 0)) {
|
||||
while (here->DIOposPrimePosPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->DIOposPrimePosPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->DIOposPrimeNode != 0) && (here->DIOnegNode != 0)) {
|
||||
while (here->DIOposPrimeNegPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->DIOposPrimeNegPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->DIOposNode != 0) && (here->DIOposNode != 0)) {
|
||||
while (here->DIOposPosPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->DIOposPosPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->DIOnegNode != 0) && (here->DIOnegNode != 0)) {
|
||||
while (here->DIOnegNegPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->DIOnegNegPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->DIOposPrimeNode != 0) && (here->DIOposPrimeNode != 0)) {
|
||||
while (here->DIOposPrimePosPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->DIOposPrimePosPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
DIObindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
DIOmodel *model = (DIOmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the diode models */
|
||||
for( ; model != NULL; model = model->DIOnextModel ) {
|
||||
DIOinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->DIOinstances; here != NULL ;
|
||||
here = here->DIOnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->DIOposNode != 0) && (here->DIOposPrimeNode != 0)) {
|
||||
while (here->DIOposPosPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->DIOposPosPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->DIOnegNode != 0) && (here->DIOposPrimeNode != 0)) {
|
||||
while (here->DIOnegPosPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->DIOnegPosPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->DIOposPrimeNode != 0) && (here->DIOposNode != 0)) {
|
||||
while (here->DIOposPrimePosPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->DIOposPrimePosPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->DIOposPrimeNode != 0) && (here->DIOnegNode != 0)) {
|
||||
while (here->DIOposPrimeNegPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->DIOposPrimeNegPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->DIOposNode != 0) && (here->DIOposNode != 0)) {
|
||||
while (here->DIOposPosPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->DIOposPosPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->DIOnegNode != 0) && (here->DIOnegNode != 0)) {
|
||||
while (here->DIOnegNegPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->DIOnegNegPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->DIOposPrimeNode != 0) && (here->DIOposPrimeNode != 0)) {
|
||||
while (here->DIOposPrimePosPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->DIOposPrimePosPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -0,0 +1,380 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "hfetdefs.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
HFETAbindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
HFETAmodel *model = (HFETAmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the hfet models */
|
||||
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
|
||||
HFETAbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
HFETAmodel *model = (HFETAmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the hfet models */
|
||||
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_CSC [i]) i ++ ;
|
||||
here->HFETAdrainDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAdrainPrimeNode != 0)) {
|
||||
while (here->HFETAgatePrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFETAgatePrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAsourcePrimeNode != 0)) {
|
||||
while (here->HFETAgatePrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFETAgatePrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAsourceNode != 0) && (here->HFETAsourcePrimeNode != 0)) {
|
||||
while (here->HFETAsourceSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFETAsourceSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAdrainNode != 0)) {
|
||||
while (here->HFETAdrainPrimeDrainPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFETAdrainPrimeDrainPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAgatePrimeNode != 0)) {
|
||||
while (here->HFETAdrainPrimeGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFETAdrainPrimeGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAsourcePrimeNode != 0)) {
|
||||
while (here->HFETAdrainPrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFETAdrainPrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAgatePrimeNode != 0)) {
|
||||
while (here->HFETAsourcePrimeGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFETAsourcePrimeGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAsourceNode != 0)) {
|
||||
while (here->HFETAsourcePrimeSourcePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFETAsourcePrimeSourcePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAdrainPrimeNode != 0)) {
|
||||
while (here->HFETAsourcePrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFETAsourcePrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAdrainNode != 0) && (here->HFETAdrainNode != 0)) {
|
||||
while (here->HFETAdrainDrainPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFETAdrainDrainPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAgatePrimeNode != 0)) {
|
||||
while (here->HFETAgatePrimeGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFETAgatePrimeGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAsourceNode != 0) && (here->HFETAsourceNode != 0)) {
|
||||
while (here->HFETAsourceSourcePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFETAsourceSourcePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAdrainPrimeNode != 0)) {
|
||||
while (here->HFETAdrainPrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFETAdrainPrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAsourcePrimeNode != 0)) {
|
||||
while (here->HFETAsourcePrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFETAsourcePrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAdrainPrmPrmNode != 0)) {
|
||||
while (here->HFETAdrainPrimeDrainPrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFETAdrainPrimeDrainPrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAdrainPrmPrmNode != 0) && (here->HFETAdrainPrimeNode != 0)) {
|
||||
while (here->HFETAdrainPrmPrmDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFETAdrainPrmPrmDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAdrainPrmPrmNode != 0) && (here->HFETAgatePrimeNode != 0)) {
|
||||
while (here->HFETAdrainPrmPrmGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFETAdrainPrmPrmGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAdrainPrmPrmNode != 0)) {
|
||||
while (here->HFETAgatePrimeDrainPrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFETAgatePrimeDrainPrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAdrainPrmPrmNode != 0) && (here->HFETAdrainPrmPrmNode != 0)) {
|
||||
while (here->HFETAdrainPrmPrmDrainPrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFETAdrainPrmPrmDrainPrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAsourcePrmPrmNode != 0)) {
|
||||
while (here->HFETAsourcePrimeSourcePrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFETAsourcePrimeSourcePrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAsourcePrmPrmNode != 0) && (here->HFETAsourcePrimeNode != 0)) {
|
||||
while (here->HFETAsourcePrmPrmSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFETAsourcePrmPrmSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAsourcePrmPrmNode != 0) && (here->HFETAgatePrimeNode != 0)) {
|
||||
while (here->HFETAsourcePrmPrmGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFETAsourcePrmPrmGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAsourcePrmPrmNode != 0)) {
|
||||
while (here->HFETAgatePrimeSourcePrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFETAgatePrimeSourcePrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAsourcePrmPrmNode != 0) && (here->HFETAsourcePrmPrmNode != 0)) {
|
||||
while (here->HFETAsourcePrmPrmSourcePrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFETAsourcePrmPrmSourcePrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAgateNode != 0) && (here->HFETAgateNode != 0)) {
|
||||
while (here->HFETAgateGatePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFETAgateGatePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAgateNode != 0) && (here->HFETAgatePrimeNode != 0)) {
|
||||
while (here->HFETAgateGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFETAgateGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
|
@ -0,0 +1,224 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "hfet2defs.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
HFET2bindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
HFET2model *model = (HFET2model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the hfet2 models */
|
||||
for( ; model != NULL; model = model->HFET2nextModel ) {
|
||||
HFET2instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->HFET2instances; here != NULL ;
|
||||
here = here->HFET2nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2drainNode != 0) && (here->HFET2drainPrimeNode != 0)) {
|
||||
while (here->HFET2drainDrainPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HFET2drainDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2gateNode != 0) && (here->HFET2drainPrimeNode != 0)) {
|
||||
while (here->HFET2gateDrainPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HFET2gateDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2gateNode != 0) && (here->HFET2sourcePrimeNode != 0)) {
|
||||
while (here->HFET2gateSourcePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HFET2gateSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2sourceNode != 0) && (here->HFET2sourcePrimeNode != 0)) {
|
||||
while (here->HFET2sourceSourcePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HFET2sourceSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2drainPrimeNode != 0) && (here->HFET2drainNode != 0)) {
|
||||
while (here->HFET2drainPrimeDrainPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HFET2drainPrimeDrainPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2drainPrimeNode != 0) && (here->HFET2gateNode != 0)) {
|
||||
while (here->HFET2drainPrimeGatePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HFET2drainPrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2drainPrimeNode != 0) && (here->HFET2sourcePrimeNode != 0)) {
|
||||
while (here->HFET2drainPriHFET2ourcePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HFET2drainPriHFET2ourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2sourcePrimeNode != 0) && (here->HFET2gateNode != 0)) {
|
||||
while (here->HFET2sourcePrimeGatePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HFET2sourcePrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2sourcePrimeNode != 0) && (here->HFET2sourceNode != 0)) {
|
||||
while (here->HFET2sourcePriHFET2ourcePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HFET2sourcePriHFET2ourcePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2sourcePrimeNode != 0) && (here->HFET2drainPrimeNode != 0)) {
|
||||
while (here->HFET2sourcePrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HFET2sourcePrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2drainNode != 0) && (here->HFET2drainNode != 0)) {
|
||||
while (here->HFET2drainDrainPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HFET2drainDrainPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2gateNode != 0) && (here->HFET2gateNode != 0)) {
|
||||
while (here->HFET2gateGatePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HFET2gateGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2sourceNode != 0) && (here->HFET2sourceNode != 0)) {
|
||||
while (here->HFET2sourceSourcePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HFET2sourceSourcePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2drainPrimeNode != 0) && (here->HFET2drainPrimeNode != 0)) {
|
||||
while (here->HFET2drainPrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HFET2drainPrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2sourcePrimeNode != 0) && (here->HFET2sourcePrimeNode != 0)) {
|
||||
while (here->HFET2sourcePriHFET2ourcePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HFET2sourcePriHFET2ourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
HFET2bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
HFET2model *model = (HFET2model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the hfet2 models */
|
||||
for( ; model != NULL; model = model->HFET2nextModel ) {
|
||||
HFET2instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->HFET2instances; here != NULL ;
|
||||
here = here->HFET2nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2drainNode != 0) && (here->HFET2drainPrimeNode != 0)) {
|
||||
while (here->HFET2drainDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFET2drainDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2gateNode != 0) && (here->HFET2drainPrimeNode != 0)) {
|
||||
while (here->HFET2gateDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFET2gateDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2gateNode != 0) && (here->HFET2sourcePrimeNode != 0)) {
|
||||
while (here->HFET2gateSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFET2gateSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2sourceNode != 0) && (here->HFET2sourcePrimeNode != 0)) {
|
||||
while (here->HFET2sourceSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFET2sourceSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2drainPrimeNode != 0) && (here->HFET2drainNode != 0)) {
|
||||
while (here->HFET2drainPrimeDrainPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFET2drainPrimeDrainPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2drainPrimeNode != 0) && (here->HFET2gateNode != 0)) {
|
||||
while (here->HFET2drainPrimeGatePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFET2drainPrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2drainPrimeNode != 0) && (here->HFET2sourcePrimeNode != 0)) {
|
||||
while (here->HFET2drainPriHFET2ourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFET2drainPriHFET2ourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2sourcePrimeNode != 0) && (here->HFET2gateNode != 0)) {
|
||||
while (here->HFET2sourcePrimeGatePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFET2sourcePrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2sourcePrimeNode != 0) && (here->HFET2sourceNode != 0)) {
|
||||
while (here->HFET2sourcePriHFET2ourcePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFET2sourcePriHFET2ourcePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2sourcePrimeNode != 0) && (here->HFET2drainPrimeNode != 0)) {
|
||||
while (here->HFET2sourcePrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFET2sourcePrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2drainNode != 0) && (here->HFET2drainNode != 0)) {
|
||||
while (here->HFET2drainDrainPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFET2drainDrainPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2gateNode != 0) && (here->HFET2gateNode != 0)) {
|
||||
while (here->HFET2gateGatePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFET2gateGatePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2sourceNode != 0) && (here->HFET2sourceNode != 0)) {
|
||||
while (here->HFET2sourceSourcePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFET2sourceSourcePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2drainPrimeNode != 0) && (here->HFET2drainPrimeNode != 0)) {
|
||||
while (here->HFET2drainPrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFET2drainPrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2sourcePrimeNode != 0) && (here->HFET2sourcePrimeNode != 0)) {
|
||||
while (here->HFET2sourcePriHFET2ourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HFET2sourcePriHFET2ourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -0,0 +1,596 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "hsm2def.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
HSM2bindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
HSM2model *model = (HSM2model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the hsm2 models */
|
||||
for( ; model != NULL; model = model->HSM2nextModel ) {
|
||||
HSM2instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->HSM2instances; here != NULL ;
|
||||
here = here->HSM2nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2dNodePrime != 0) && (here-> HSM2bNodePrime != 0)) {
|
||||
while (here->HSM2DPbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2DPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2sNodePrime != 0) && (here-> HSM2bNodePrime != 0)) {
|
||||
while (here->HSM2SPbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2SPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2gNodePrime != 0) && (here-> HSM2bNodePrime != 0)) {
|
||||
while (here->HSM2GPbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2GPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2bNodePrime != 0) && (here-> HSM2dNodePrime != 0)) {
|
||||
while (here->HSM2BPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2BPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2bNodePrime != 0) && (here-> HSM2sNodePrime != 0)) {
|
||||
while (here->HSM2BPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2BPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2bNodePrime != 0) && (here-> HSM2gNodePrime != 0)) {
|
||||
while (here->HSM2BPgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2BPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2bNodePrime != 0) && (here-> HSM2bNodePrime != 0)) {
|
||||
while (here->HSM2BPbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2BPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2dNode != 0) && (here-> HSM2dNode != 0)) {
|
||||
while (here->HSM2DdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2DdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2gNodePrime != 0) && (here-> HSM2gNodePrime != 0)) {
|
||||
while (here->HSM2GPgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2GPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2sNode != 0) && (here-> HSM2sNode != 0)) {
|
||||
while (here->HSM2SsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2SsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2dNodePrime != 0) && (here-> HSM2dNodePrime != 0)) {
|
||||
while (here->HSM2DPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2DPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2sNodePrime != 0) && (here-> HSM2sNodePrime != 0)) {
|
||||
while (here->HSM2SPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2SPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2dNode != 0) && (here-> HSM2dNodePrime != 0)) {
|
||||
while (here->HSM2DdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2DdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2gNodePrime != 0) && (here-> HSM2dNodePrime != 0)) {
|
||||
while (here->HSM2GPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2GPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2gNodePrime != 0) && (here-> HSM2sNodePrime != 0)) {
|
||||
while (here->HSM2GPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2GPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2sNode != 0) && (here-> HSM2sNodePrime != 0)) {
|
||||
while (here->HSM2SspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2SspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2dNodePrime != 0) && (here-> HSM2sNodePrime != 0)) {
|
||||
while (here->HSM2DPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2DPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2dNodePrime != 0) && (here-> HSM2dNode != 0)) {
|
||||
while (here->HSM2DPdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2DPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2dNodePrime != 0) && (here-> HSM2gNodePrime != 0)) {
|
||||
while (here->HSM2DPgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2DPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2sNodePrime != 0) && (here-> HSM2gNodePrime != 0)) {
|
||||
while (here->HSM2SPgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2SPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2sNodePrime != 0) && (here-> HSM2sNode != 0)) {
|
||||
while (here->HSM2SPsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2SPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2sNodePrime != 0) && (here-> HSM2dNodePrime != 0)) {
|
||||
while (here->HSM2SPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2SPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
if ( here->HSM2_corg == 1 ) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2gNode != 0) && (here-> HSM2gNode != 0)) {
|
||||
while (here->HSM2GgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2GgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2gNode != 0) && (here-> HSM2gNodePrime != 0)) {
|
||||
while (here->HSM2GgpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2GgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2gNodePrime != 0) && (here-> HSM2gNode != 0)) {
|
||||
while (here->HSM2GPgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2GPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2gNode != 0) && (here-> HSM2dNodePrime != 0)) {
|
||||
while (here->HSM2GdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2GdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2gNode != 0) && (here-> HSM2sNodePrime != 0)) {
|
||||
while (here->HSM2GspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2GspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2gNode != 0) && (here-> HSM2bNodePrime != 0)) {
|
||||
while (here->HSM2GbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2GbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
} /* IF */
|
||||
|
||||
if ( here->HSM2_corbnet == 1 ) { /* consider body resistance net */
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2dNodePrime != 0) && (here-> HSM2dbNode != 0)) {
|
||||
while (here->HSM2DPdbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2DPdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2sNodePrime != 0) && (here-> HSM2sbNode != 0)) {
|
||||
while (here->HSM2SPsbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2SPsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2dbNode != 0) && (here-> HSM2dNodePrime != 0)) {
|
||||
while (here->HSM2DBdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2DBdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2dbNode != 0) && (here-> HSM2dbNode != 0)) {
|
||||
while (here->HSM2DBdbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2DBdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2dbNode != 0) && (here-> HSM2bNodePrime != 0)) {
|
||||
while (here->HSM2DBbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2DBbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2dbNode != 0) && (here-> HSM2bNode != 0)) {
|
||||
while (here->HSM2DBbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2DBbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2bNodePrime != 0) && (here-> HSM2dbNode != 0)) {
|
||||
while (here->HSM2BPdbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2BPdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2bNodePrime != 0) && (here-> HSM2bNode != 0)) {
|
||||
while (here->HSM2BPbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2BPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2bNodePrime != 0) && (here-> HSM2sbNode != 0)) {
|
||||
while (here->HSM2BPsbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2BPsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2sbNode != 0) && (here-> HSM2sNodePrime != 0)) {
|
||||
while (here->HSM2SBspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2SBspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2sbNode != 0) && (here-> HSM2bNodePrime != 0)) {
|
||||
while (here->HSM2SBbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2SBbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2sbNode != 0) && (here-> HSM2bNode != 0)) {
|
||||
while (here->HSM2SBbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2SBbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2sbNode != 0) && (here-> HSM2sbNode != 0)) {
|
||||
while (here->HSM2SBsbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2SBsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2bNode != 0) && (here-> HSM2dbNode != 0)) {
|
||||
while (here->HSM2BdbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2BdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2bNode != 0) && (here-> HSM2bNodePrime != 0)) {
|
||||
while (here->HSM2BbpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2BbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2bNode != 0) && (here-> HSM2sbNode != 0)) {
|
||||
while (here->HSM2BsbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2BsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2bNode != 0) && (here-> HSM2bNode != 0)) {
|
||||
while (here->HSM2BbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->HSM2BbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
} /* IF */
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
HSM2bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
HSM2model *model = (HSM2model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the hsm2 models */
|
||||
for( ; model != NULL; model = model->HSM2nextModel ) {
|
||||
HSM2instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->HSM2instances; here != NULL ;
|
||||
here = here->HSM2nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2dNodePrime != 0) && (here-> HSM2bNodePrime != 0)) {
|
||||
while (here->HSM2DPbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2DPbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2sNodePrime != 0) && (here-> HSM2bNodePrime != 0)) {
|
||||
while (here->HSM2SPbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2SPbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2gNodePrime != 0) && (here-> HSM2bNodePrime != 0)) {
|
||||
while (here->HSM2GPbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2GPbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2bNodePrime != 0) && (here-> HSM2dNodePrime != 0)) {
|
||||
while (here->HSM2BPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2BPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2bNodePrime != 0) && (here-> HSM2sNodePrime != 0)) {
|
||||
while (here->HSM2BPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2BPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2bNodePrime != 0) && (here-> HSM2gNodePrime != 0)) {
|
||||
while (here->HSM2BPgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2BPgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2bNodePrime != 0) && (here-> HSM2bNodePrime != 0)) {
|
||||
while (here->HSM2BPbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2BPbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2dNode != 0) && (here-> HSM2dNode != 0)) {
|
||||
while (here->HSM2DdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2DdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2gNodePrime != 0) && (here-> HSM2gNodePrime != 0)) {
|
||||
while (here->HSM2GPgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2GPgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2sNode != 0) && (here-> HSM2sNode != 0)) {
|
||||
while (here->HSM2SsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2SsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2dNodePrime != 0) && (here-> HSM2dNodePrime != 0)) {
|
||||
while (here->HSM2DPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2DPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2sNodePrime != 0) && (here-> HSM2sNodePrime != 0)) {
|
||||
while (here->HSM2SPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2SPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2dNode != 0) && (here-> HSM2dNodePrime != 0)) {
|
||||
while (here->HSM2DdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2DdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2gNodePrime != 0) && (here-> HSM2dNodePrime != 0)) {
|
||||
while (here->HSM2GPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2GPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2gNodePrime != 0) && (here-> HSM2sNodePrime != 0)) {
|
||||
while (here->HSM2GPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2GPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2sNode != 0) && (here-> HSM2sNodePrime != 0)) {
|
||||
while (here->HSM2SspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2SspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2dNodePrime != 0) && (here-> HSM2sNodePrime != 0)) {
|
||||
while (here->HSM2DPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2DPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2dNodePrime != 0) && (here-> HSM2dNode != 0)) {
|
||||
while (here->HSM2DPdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2DPdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2dNodePrime != 0) && (here-> HSM2gNodePrime != 0)) {
|
||||
while (here->HSM2DPgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2DPgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2sNodePrime != 0) && (here-> HSM2gNodePrime != 0)) {
|
||||
while (here->HSM2SPgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2SPgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2sNodePrime != 0) && (here-> HSM2sNode != 0)) {
|
||||
while (here->HSM2SPsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2SPsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2sNodePrime != 0) && (here-> HSM2dNodePrime != 0)) {
|
||||
while (here->HSM2SPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2SPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
if ( here->HSM2_corg == 1 ) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2gNode != 0) && (here-> HSM2gNode != 0)) {
|
||||
while (here->HSM2GgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2GgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2gNode != 0) && (here-> HSM2gNodePrime != 0)) {
|
||||
while (here->HSM2GgpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2GgpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2gNodePrime != 0) && (here-> HSM2gNode != 0)) {
|
||||
while (here->HSM2GPgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2GPgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2gNode != 0) && (here-> HSM2dNodePrime != 0)) {
|
||||
while (here->HSM2GdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2GdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2gNode != 0) && (here-> HSM2sNodePrime != 0)) {
|
||||
while (here->HSM2GspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2GspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2gNode != 0) && (here-> HSM2bNodePrime != 0)) {
|
||||
while (here->HSM2GbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2GbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
} /* IF */
|
||||
|
||||
if ( here->HSM2_corbnet == 1 ) { /* consider body resistance net */
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2dNodePrime != 0) && (here-> HSM2dbNode != 0)) {
|
||||
while (here->HSM2DPdbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2DPdbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2sNodePrime != 0) && (here-> HSM2sbNode != 0)) {
|
||||
while (here->HSM2SPsbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2SPsbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2dbNode != 0) && (here-> HSM2dNodePrime != 0)) {
|
||||
while (here->HSM2DBdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2DBdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2dbNode != 0) && (here-> HSM2dbNode != 0)) {
|
||||
while (here->HSM2DBdbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2DBdbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2dbNode != 0) && (here-> HSM2bNodePrime != 0)) {
|
||||
while (here->HSM2DBbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2DBbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2dbNode != 0) && (here-> HSM2bNode != 0)) {
|
||||
while (here->HSM2DBbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2DBbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2bNodePrime != 0) && (here-> HSM2dbNode != 0)) {
|
||||
while (here->HSM2BPdbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2BPdbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2bNodePrime != 0) && (here-> HSM2bNode != 0)) {
|
||||
while (here->HSM2BPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2BPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2bNodePrime != 0) && (here-> HSM2sbNode != 0)) {
|
||||
while (here->HSM2BPsbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2BPsbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2sbNode != 0) && (here-> HSM2sNodePrime != 0)) {
|
||||
while (here->HSM2SBspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2SBspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2sbNode != 0) && (here-> HSM2bNodePrime != 0)) {
|
||||
while (here->HSM2SBbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2SBbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2sbNode != 0) && (here-> HSM2bNode != 0)) {
|
||||
while (here->HSM2SBbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2SBbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2sbNode != 0) && (here-> HSM2sbNode != 0)) {
|
||||
while (here->HSM2SBsbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2SBsbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2bNode != 0) && (here-> HSM2dbNode != 0)) {
|
||||
while (here->HSM2BdbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2BdbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2bNode != 0) && (here-> HSM2bNodePrime != 0)) {
|
||||
while (here->HSM2BbpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2BbpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2bNode != 0) && (here-> HSM2sbNode != 0)) {
|
||||
while (here->HSM2BsbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2BsbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> HSM2bNode != 0) && (here-> HSM2bNode != 0)) {
|
||||
while (here->HSM2BbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->HSM2BbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
} /* IF */
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,166 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "inddefs.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
INDbindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
INDmodel *model = (INDmodel *)inModel;
|
||||
INDinstance *here;
|
||||
int i ;
|
||||
|
||||
/* loop through all the INDacitor models */
|
||||
for( ; model != NULL; model = model->INDnextModel ) {
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->INDinstances; here != NULL ;
|
||||
here=here->INDnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->INDposNode != 0) && (here->INDbrEq != 0)) {
|
||||
while (here->INDposIbrptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->INDposIbrptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->INDnegNode != 0) && (here->INDbrEq != 0)) {
|
||||
while (here->INDnegIbrptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->INDnegIbrptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->INDbrEq != 0) && (here->INDnegNode != 0)) {
|
||||
while (here->INDibrNegptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->INDibrNegptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->INDbrEq != 0) && (here->INDposNode != 0)) {
|
||||
while (here->INDibrPosptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->INDibrPosptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->INDbrEq != 0) && (here->INDbrEq != 0)) {
|
||||
while (here->INDibrIbrptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->INDibrIbrptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
INDbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
INDmodel *model = (INDmodel *)inModel;
|
||||
INDinstance *here;
|
||||
int i ;
|
||||
|
||||
/* loop through all the INDacitor models */
|
||||
for( ; model != NULL; model = model->INDnextModel ) {
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->INDinstances; here != NULL ;
|
||||
here=here->INDnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->INDposNode != 0) && (here->INDbrEq != 0)) {
|
||||
while (here->INDposIbrptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->INDposIbrptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->INDnegNode != 0) && (here->INDbrEq != 0)) {
|
||||
while (here->INDnegIbrptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->INDnegIbrptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->INDbrEq != 0) && (here->INDnegNode != 0)) {
|
||||
while (here->INDibrNegptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->INDibrNegptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->INDbrEq != 0) && (here->INDposNode != 0)) {
|
||||
while (here->INDibrPosptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->INDibrPosptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->INDbrEq != 0) && (here->INDbrEq != 0)) {
|
||||
while (here->INDibrIbrptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->INDibrIbrptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
#ifdef MUTUAL
|
||||
int
|
||||
MUTbindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
MUTmodel *model = (MUTmodel *)inModel;
|
||||
MUTinstance *here;
|
||||
int i ;
|
||||
|
||||
/* loop through all the INDacitor models */
|
||||
for( ; model != NULL; model = model->MUTnextModel ) {
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->MUTinstances; here != NULL ;
|
||||
here=here->MUTnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MUTind1->INDbrEq != 0) && (here->MUTind2->INDbrEq != 0)) {
|
||||
while (here->MUTbr1br2 != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MUTbr1br2 = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MUTind2->INDbrEq != 0) && (here->MUTind1->INDbrEq != 0)) {
|
||||
while (here->MUTbr2br1 != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MUTbr2br1 = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
MUTbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
MUTmodel *model = (MUTmodel *)inModel;
|
||||
MUTinstance *here;
|
||||
int i ;
|
||||
|
||||
/* loop through all the INDacitor models */
|
||||
for( ; model != NULL; model = model->MUTnextModel ) {
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->MUTinstances; here != NULL ;
|
||||
here=here->MUTnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MUTind1->INDbrEq != 0) && (here->MUTind2->INDbrEq != 0)) {
|
||||
while (here->MUTbr1br2 != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MUTbr1br2 = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MUTind2->INDbrEq != 0) && (here->MUTind1->INDbrEq != 0)) {
|
||||
while (here->MUTbr2br1 != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MUTbr2br1 = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
#endif
|
||||
|
|
@ -0,0 +1,224 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "jfetdefs.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
JFETbindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
JFETmodel *model = (JFETmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the jfet models */
|
||||
for( ; model != NULL; model = model->JFETnextModel ) {
|
||||
JFETinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->JFETinstances; here != NULL ;
|
||||
here = here->JFETnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETdrainNode != 0) && (here->JFETdrainPrimeNode != 0)) {
|
||||
while (here->JFETdrainDrainPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFETdrainDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETgateNode != 0) && (here->JFETdrainPrimeNode != 0)) {
|
||||
while (here->JFETgateDrainPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFETgateDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETgateNode != 0) && (here->JFETsourcePrimeNode != 0)) {
|
||||
while (here->JFETgateSourcePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFETgateSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETsourceNode != 0) && (here->JFETsourcePrimeNode != 0)) {
|
||||
while (here->JFETsourceSourcePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFETsourceSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETdrainPrimeNode != 0) && (here->JFETdrainNode != 0)) {
|
||||
while (here->JFETdrainPrimeDrainPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFETdrainPrimeDrainPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETdrainPrimeNode != 0) && (here->JFETgateNode != 0)) {
|
||||
while (here->JFETdrainPrimeGatePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFETdrainPrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETdrainPrimeNode != 0) && (here->JFETsourcePrimeNode != 0)) {
|
||||
while (here->JFETdrainPrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFETdrainPrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETsourcePrimeNode != 0) && (here->JFETgateNode != 0)) {
|
||||
while (here->JFETsourcePrimeGatePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFETsourcePrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETsourcePrimeNode != 0) && (here->JFETsourceNode != 0)) {
|
||||
while (here->JFETsourcePrimeSourcePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFETsourcePrimeSourcePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETsourcePrimeNode != 0) && (here->JFETdrainPrimeNode != 0)) {
|
||||
while (here->JFETsourcePrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFETsourcePrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETdrainNode != 0) && (here->JFETdrainNode != 0)) {
|
||||
while (here->JFETdrainDrainPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFETdrainDrainPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETgateNode != 0) && (here->JFETgateNode != 0)) {
|
||||
while (here->JFETgateGatePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFETgateGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETsourceNode != 0) && (here->JFETsourceNode != 0)) {
|
||||
while (here->JFETsourceSourcePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFETsourceSourcePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETdrainPrimeNode != 0) && (here->JFETdrainPrimeNode != 0)) {
|
||||
while (here->JFETdrainPrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFETdrainPrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETsourcePrimeNode != 0) && (here->JFETsourcePrimeNode != 0)) {
|
||||
while (here->JFETsourcePrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFETsourcePrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
JFETbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
JFETmodel *model = (JFETmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the jfet models */
|
||||
for( ; model != NULL; model = model->JFETnextModel ) {
|
||||
JFETinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->JFETinstances; here != NULL ;
|
||||
here = here->JFETnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETdrainNode != 0) && (here->JFETdrainPrimeNode != 0)) {
|
||||
while (here->JFETdrainDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFETdrainDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETgateNode != 0) && (here->JFETdrainPrimeNode != 0)) {
|
||||
while (here->JFETgateDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFETgateDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETgateNode != 0) && (here->JFETsourcePrimeNode != 0)) {
|
||||
while (here->JFETgateSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFETgateSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETsourceNode != 0) && (here->JFETsourcePrimeNode != 0)) {
|
||||
while (here->JFETsourceSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFETsourceSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETdrainPrimeNode != 0) && (here->JFETdrainNode != 0)) {
|
||||
while (here->JFETdrainPrimeDrainPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFETdrainPrimeDrainPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETdrainPrimeNode != 0) && (here->JFETgateNode != 0)) {
|
||||
while (here->JFETdrainPrimeGatePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFETdrainPrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETdrainPrimeNode != 0) && (here->JFETsourcePrimeNode != 0)) {
|
||||
while (here->JFETdrainPrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFETdrainPrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETsourcePrimeNode != 0) && (here->JFETgateNode != 0)) {
|
||||
while (here->JFETsourcePrimeGatePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFETsourcePrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETsourcePrimeNode != 0) && (here->JFETsourceNode != 0)) {
|
||||
while (here->JFETsourcePrimeSourcePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFETsourcePrimeSourcePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETsourcePrimeNode != 0) && (here->JFETdrainPrimeNode != 0)) {
|
||||
while (here->JFETsourcePrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFETsourcePrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETdrainNode != 0) && (here->JFETdrainNode != 0)) {
|
||||
while (here->JFETdrainDrainPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFETdrainDrainPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETgateNode != 0) && (here->JFETgateNode != 0)) {
|
||||
while (here->JFETgateGatePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFETgateGatePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETsourceNode != 0) && (here->JFETsourceNode != 0)) {
|
||||
while (here->JFETsourceSourcePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFETsourceSourcePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETdrainPrimeNode != 0) && (here->JFETdrainPrimeNode != 0)) {
|
||||
while (here->JFETdrainPrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFETdrainPrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETsourcePrimeNode != 0) && (here->JFETsourcePrimeNode != 0)) {
|
||||
while (here->JFETsourcePrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFETsourcePrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -0,0 +1,224 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "jfet2defs.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
JFET2bindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
JFET2model *model = (JFET2model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the jfet2 models */
|
||||
for( ; model != NULL; model = model->JFET2nextModel ) {
|
||||
JFET2instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->JFET2instances; here != NULL ;
|
||||
here = here->JFET2nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2drainNode != 0) && (here->JFET2drainPrimeNode != 0)) {
|
||||
while (here->JFET2drainDrainPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFET2drainDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2gateNode != 0) && (here->JFET2drainPrimeNode != 0)) {
|
||||
while (here->JFET2gateDrainPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFET2gateDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2gateNode != 0) && (here->JFET2sourcePrimeNode != 0)) {
|
||||
while (here->JFET2gateSourcePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFET2gateSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2sourceNode != 0) && (here->JFET2sourcePrimeNode != 0)) {
|
||||
while (here->JFET2sourceSourcePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFET2sourceSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2drainPrimeNode != 0) && (here->JFET2drainNode != 0)) {
|
||||
while (here->JFET2drainPrimeDrainPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFET2drainPrimeDrainPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2drainPrimeNode != 0) && (here->JFET2gateNode != 0)) {
|
||||
while (here->JFET2drainPrimeGatePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFET2drainPrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2drainPrimeNode != 0) && (here->JFET2sourcePrimeNode != 0)) {
|
||||
while (here->JFET2drainPrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFET2drainPrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2sourcePrimeNode != 0) && (here->JFET2gateNode != 0)) {
|
||||
while (here->JFET2sourcePrimeGatePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFET2sourcePrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2sourcePrimeNode != 0) && (here->JFET2sourceNode != 0)) {
|
||||
while (here->JFET2sourcePrimeSourcePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFET2sourcePrimeSourcePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2sourcePrimeNode != 0) && (here->JFET2drainPrimeNode != 0)) {
|
||||
while (here->JFET2sourcePrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFET2sourcePrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2drainNode != 0) && (here->JFET2drainNode != 0)) {
|
||||
while (here->JFET2drainDrainPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFET2drainDrainPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2gateNode != 0) && (here->JFET2gateNode != 0)) {
|
||||
while (here->JFET2gateGatePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFET2gateGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2sourceNode != 0) && (here->JFET2sourceNode != 0)) {
|
||||
while (here->JFET2sourceSourcePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFET2sourceSourcePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2drainPrimeNode != 0) && (here->JFET2drainPrimeNode != 0)) {
|
||||
while (here->JFET2drainPrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFET2drainPrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2sourcePrimeNode != 0) && (here->JFET2sourcePrimeNode != 0)) {
|
||||
while (here->JFET2sourcePrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFET2sourcePrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
JFET2bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
JFET2model *model = (JFET2model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the jfet2 models */
|
||||
for( ; model != NULL; model = model->JFET2nextModel ) {
|
||||
JFET2instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->JFET2instances; here != NULL ;
|
||||
here = here->JFET2nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2drainNode != 0) && (here->JFET2drainPrimeNode != 0)) {
|
||||
while (here->JFET2drainDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFET2drainDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2gateNode != 0) && (here->JFET2drainPrimeNode != 0)) {
|
||||
while (here->JFET2gateDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFET2gateDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2gateNode != 0) && (here->JFET2sourcePrimeNode != 0)) {
|
||||
while (here->JFET2gateSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFET2gateSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2sourceNode != 0) && (here->JFET2sourcePrimeNode != 0)) {
|
||||
while (here->JFET2sourceSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFET2sourceSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2drainPrimeNode != 0) && (here->JFET2drainNode != 0)) {
|
||||
while (here->JFET2drainPrimeDrainPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFET2drainPrimeDrainPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2drainPrimeNode != 0) && (here->JFET2gateNode != 0)) {
|
||||
while (here->JFET2drainPrimeGatePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFET2drainPrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2drainPrimeNode != 0) && (here->JFET2sourcePrimeNode != 0)) {
|
||||
while (here->JFET2drainPrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFET2drainPrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2sourcePrimeNode != 0) && (here->JFET2gateNode != 0)) {
|
||||
while (here->JFET2sourcePrimeGatePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFET2sourcePrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2sourcePrimeNode != 0) && (here->JFET2sourceNode != 0)) {
|
||||
while (here->JFET2sourcePrimeSourcePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFET2sourcePrimeSourcePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2sourcePrimeNode != 0) && (here->JFET2drainPrimeNode != 0)) {
|
||||
while (here->JFET2sourcePrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFET2sourcePrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2drainNode != 0) && (here->JFET2drainNode != 0)) {
|
||||
while (here->JFET2drainDrainPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFET2drainDrainPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2gateNode != 0) && (here->JFET2gateNode != 0)) {
|
||||
while (here->JFET2gateGatePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFET2gateGatePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2sourceNode != 0) && (here->JFET2sourceNode != 0)) {
|
||||
while (here->JFET2sourceSourcePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFET2sourceSourcePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2drainPrimeNode != 0) && (here->JFET2drainPrimeNode != 0)) {
|
||||
while (here->JFET2drainPrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFET2drainPrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2sourcePrimeNode != 0) && (here->JFET2sourcePrimeNode != 0)) {
|
||||
while (here->JFET2sourcePrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFET2sourcePrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -0,0 +1,284 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "ltradefs.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
LTRAbindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
LTRAmodel *model = (LTRAmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the ltra models */
|
||||
for( ; model != NULL; model = model->LTRAnextModel ) {
|
||||
LTRAinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->LTRAinstances; here != NULL ;
|
||||
here = here->LTRAnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAposNode1 != 0)) {
|
||||
while (here->LTRAibr1Pos1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAibr1Pos1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAnegNode1 != 0)) {
|
||||
while (here->LTRAibr1Neg1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAibr1Neg1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAposNode2 != 0)) {
|
||||
while (here->LTRAibr1Pos2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAibr1Pos2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAnegNode2 != 0)) {
|
||||
while (here->LTRAibr1Neg2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAibr1Neg2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAbrEq1 != 0)) {
|
||||
while (here->LTRAibr1Ibr1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAibr1Ibr1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAbrEq2 != 0)) {
|
||||
while (here->LTRAibr1Ibr2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAibr1Ibr2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAposNode1 != 0)) {
|
||||
while (here->LTRAibr2Pos1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAibr2Pos1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAnegNode1 != 0)) {
|
||||
while (here->LTRAibr2Neg1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAibr2Neg1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAposNode2 != 0)) {
|
||||
while (here->LTRAibr2Pos2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAibr2Pos2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAnegNode2 != 0)) {
|
||||
while (here->LTRAibr2Neg2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAibr2Neg2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAbrEq1 != 0)) {
|
||||
while (here->LTRAibr2Ibr1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAibr2Ibr1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAbrEq2 != 0)) {
|
||||
while (here->LTRAibr2Ibr2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAibr2Ibr2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAposNode1 != 0) && (here-> LTRAbrEq1 != 0)) {
|
||||
while (here->LTRApos1Ibr1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRApos1Ibr1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAnegNode1 != 0) && (here-> LTRAbrEq1 != 0)) {
|
||||
while (here->LTRAneg1Ibr1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAneg1Ibr1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAposNode2 != 0) && (here-> LTRAbrEq2 != 0)) {
|
||||
while (here->LTRApos2Ibr2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRApos2Ibr2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAnegNode2 != 0) && (here-> LTRAbrEq2 != 0)) {
|
||||
while (here->LTRAneg2Ibr2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAneg2Ibr2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAposNode1 != 0) && (here-> LTRAposNode1 != 0)) {
|
||||
while (here->LTRApos1Pos1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRApos1Pos1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAnegNode1 != 0) && (here-> LTRAnegNode1 != 0)) {
|
||||
while (here->LTRAneg1Neg1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAneg1Neg1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAposNode2 != 0) && (here-> LTRAposNode2 != 0)) {
|
||||
while (here->LTRApos2Pos2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRApos2Pos2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAnegNode2 != 0) && (here-> LTRAnegNode2 != 0)) {
|
||||
while (here->LTRAneg2Neg2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAneg2Neg2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
LTRAbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
LTRAmodel *model = (LTRAmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the ltra models */
|
||||
for( ; model != NULL; model = model->LTRAnextModel ) {
|
||||
LTRAinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->LTRAinstances; here != NULL ;
|
||||
here = here->LTRAnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAposNode1 != 0)) {
|
||||
while (here->LTRAibr1Pos1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAibr1Pos1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAnegNode1 != 0)) {
|
||||
while (here->LTRAibr1Neg1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAibr1Neg1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAposNode2 != 0)) {
|
||||
while (here->LTRAibr1Pos2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAibr1Pos2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAnegNode2 != 0)) {
|
||||
while (here->LTRAibr1Neg2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAibr1Neg2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAbrEq1 != 0)) {
|
||||
while (here->LTRAibr1Ibr1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAibr1Ibr1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAbrEq2 != 0)) {
|
||||
while (here->LTRAibr1Ibr2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAibr1Ibr2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAposNode1 != 0)) {
|
||||
while (here->LTRAibr2Pos1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAibr2Pos1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAnegNode1 != 0)) {
|
||||
while (here->LTRAibr2Neg1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAibr2Neg1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAposNode2 != 0)) {
|
||||
while (here->LTRAibr2Pos2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAibr2Pos2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAnegNode2 != 0)) {
|
||||
while (here->LTRAibr2Neg2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAibr2Neg2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAbrEq1 != 0)) {
|
||||
while (here->LTRAibr2Ibr1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAibr2Ibr1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAbrEq2 != 0)) {
|
||||
while (here->LTRAibr2Ibr2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAibr2Ibr2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAposNode1 != 0) && (here-> LTRAbrEq1 != 0)) {
|
||||
while (here->LTRApos1Ibr1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRApos1Ibr1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAnegNode1 != 0) && (here-> LTRAbrEq1 != 0)) {
|
||||
while (here->LTRAneg1Ibr1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAneg1Ibr1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAposNode2 != 0) && (here-> LTRAbrEq2 != 0)) {
|
||||
while (here->LTRApos2Ibr2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRApos2Ibr2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAnegNode2 != 0) && (here-> LTRAbrEq2 != 0)) {
|
||||
while (here->LTRAneg2Ibr2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAneg2Ibr2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAposNode1 != 0) && (here-> LTRAposNode1 != 0)) {
|
||||
while (here->LTRApos1Pos1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRApos1Pos1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAnegNode1 != 0) && (here-> LTRAnegNode1 != 0)) {
|
||||
while (here->LTRAneg1Neg1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAneg1Neg1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAposNode2 != 0) && (here-> LTRAposNode2 != 0)) {
|
||||
while (here->LTRApos2Pos2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRApos2Pos2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAnegNode2 != 0) && (here-> LTRAnegNode2 != 0)) {
|
||||
while (here->LTRAneg2Neg2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAneg2Neg2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -0,0 +1,224 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "mesdefs.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
MESbindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
MESmodel *model = (MESmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the mes models */
|
||||
for( ; model != NULL; model = model->MESnextModel ) {
|
||||
MESinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->MESinstances; here != NULL ;
|
||||
here = here->MESnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESdrainNode != 0) && (here->MESdrainPrimeNode != 0)) {
|
||||
while (here->MESdrainDrainPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESdrainDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESgateNode != 0) && (here->MESdrainPrimeNode != 0)) {
|
||||
while (here->MESgateDrainPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESgateDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESgateNode != 0) && (here->MESsourcePrimeNode != 0)) {
|
||||
while (here->MESgateSourcePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESgateSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESsourceNode != 0) && (here->MESsourcePrimeNode != 0)) {
|
||||
while (here->MESsourceSourcePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESsourceSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESdrainPrimeNode != 0) && (here->MESdrainNode != 0)) {
|
||||
while (here->MESdrainPrimeDrainPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESdrainPrimeDrainPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESdrainPrimeNode != 0) && (here->MESgateNode != 0)) {
|
||||
while (here->MESdrainPrimeGatePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESdrainPrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESdrainPrimeNode != 0) && (here->MESsourcePrimeNode != 0)) {
|
||||
while (here->MESdrainPrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESdrainPrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESsourcePrimeNode != 0) && (here->MESgateNode != 0)) {
|
||||
while (here->MESsourcePrimeGatePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESsourcePrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESsourcePrimeNode != 0) && (here->MESsourceNode != 0)) {
|
||||
while (here->MESsourcePrimeSourcePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESsourcePrimeSourcePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESsourcePrimeNode != 0) && (here->MESdrainPrimeNode != 0)) {
|
||||
while (here->MESsourcePrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESsourcePrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESdrainNode != 0) && (here->MESdrainNode != 0)) {
|
||||
while (here->MESdrainDrainPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESdrainDrainPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESgateNode != 0) && (here->MESgateNode != 0)) {
|
||||
while (here->MESgateGatePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESgateGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESsourceNode != 0) && (here->MESsourceNode != 0)) {
|
||||
while (here->MESsourceSourcePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESsourceSourcePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESdrainPrimeNode != 0) && (here->MESdrainPrimeNode != 0)) {
|
||||
while (here->MESdrainPrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESdrainPrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESsourcePrimeNode != 0) && (here->MESsourcePrimeNode != 0)) {
|
||||
while (here->MESsourcePrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESsourcePrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
MESbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
MESmodel *model = (MESmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the mes models */
|
||||
for( ; model != NULL; model = model->MESnextModel ) {
|
||||
MESinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->MESinstances; here != NULL ;
|
||||
here = here->MESnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESdrainNode != 0) && (here->MESdrainPrimeNode != 0)) {
|
||||
while (here->MESdrainDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESdrainDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESgateNode != 0) && (here->MESdrainPrimeNode != 0)) {
|
||||
while (here->MESgateDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESgateDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESgateNode != 0) && (here->MESsourcePrimeNode != 0)) {
|
||||
while (here->MESgateSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESgateSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESsourceNode != 0) && (here->MESsourcePrimeNode != 0)) {
|
||||
while (here->MESsourceSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESsourceSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESdrainPrimeNode != 0) && (here->MESdrainNode != 0)) {
|
||||
while (here->MESdrainPrimeDrainPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESdrainPrimeDrainPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESdrainPrimeNode != 0) && (here->MESgateNode != 0)) {
|
||||
while (here->MESdrainPrimeGatePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESdrainPrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESdrainPrimeNode != 0) && (here->MESsourcePrimeNode != 0)) {
|
||||
while (here->MESdrainPrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESdrainPrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESsourcePrimeNode != 0) && (here->MESgateNode != 0)) {
|
||||
while (here->MESsourcePrimeGatePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESsourcePrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESsourcePrimeNode != 0) && (here->MESsourceNode != 0)) {
|
||||
while (here->MESsourcePrimeSourcePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESsourcePrimeSourcePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESsourcePrimeNode != 0) && (here->MESdrainPrimeNode != 0)) {
|
||||
while (here->MESsourcePrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESsourcePrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESdrainNode != 0) && (here->MESdrainNode != 0)) {
|
||||
while (here->MESdrainDrainPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESdrainDrainPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESgateNode != 0) && (here->MESgateNode != 0)) {
|
||||
while (here->MESgateGatePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESgateGatePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESsourceNode != 0) && (here->MESsourceNode != 0)) {
|
||||
while (here->MESsourceSourcePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESsourceSourcePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESdrainPrimeNode != 0) && (here->MESdrainPrimeNode != 0)) {
|
||||
while (here->MESdrainPrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESdrainPrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESsourcePrimeNode != 0) && (here->MESsourcePrimeNode != 0)) {
|
||||
while (here->MESsourcePrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESsourcePrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -0,0 +1,380 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "mesadefs.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
MESAbindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
MESAmodel *model = (MESAmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the mesa models */
|
||||
for( ; model != NULL; model = model->MESAnextModel ) {
|
||||
MESAinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->MESAinstances; here != NULL ;
|
||||
here = here->MESAnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAdrainNode != 0) && (here->MESAdrainNode != 0)) {
|
||||
while (here->MESAdrainDrainPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESAdrainDrainPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAdrainPrimeNode != 0) && (here->MESAdrainPrimeNode != 0)) {
|
||||
while (here->MESAdrainPrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESAdrainPrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAdrainPrmPrmNode != 0) && (here->MESAdrainPrmPrmNode != 0)) {
|
||||
while (here->MESAdrainPrmPrmDrainPrmPrmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESAdrainPrmPrmDrainPrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAgateNode != 0) && (here->MESAgateNode != 0)) {
|
||||
while (here->MESAgateGatePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESAgateGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAgatePrimeNode != 0) && (here->MESAgatePrimeNode != 0)) {
|
||||
while (here->MESAgatePrimeGatePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESAgatePrimeGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAsourceNode != 0) && (here->MESAsourceNode != 0)) {
|
||||
while (here->MESAsourceSourcePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESAsourceSourcePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAsourcePrimeNode != 0) && (here->MESAsourcePrimeNode != 0)) {
|
||||
while (here->MESAsourcePrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESAsourcePrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAsourcePrmPrmNode != 0) && (here->MESAsourcePrmPrmNode != 0)) {
|
||||
while (here->MESAsourcePrmPrmSourcePrmPrmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESAsourcePrmPrmSourcePrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAdrainNode != 0) && (here->MESAdrainPrimeNode != 0)) {
|
||||
while (here->MESAdrainDrainPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESAdrainDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAdrainPrimeNode != 0) && (here->MESAdrainNode != 0)) {
|
||||
while (here->MESAdrainPrimeDrainPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESAdrainPrimeDrainPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAgatePrimeNode != 0) && (here->MESAdrainPrimeNode != 0)) {
|
||||
while (here->MESAgatePrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESAgatePrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAdrainPrimeNode != 0) && (here->MESAgatePrimeNode != 0)) {
|
||||
while (here->MESAdrainPrimeGatePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESAdrainPrimeGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAgatePrimeNode != 0) && (here->MESAsourcePrimeNode != 0)) {
|
||||
while (here->MESAgatePrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESAgatePrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAsourcePrimeNode != 0) && (here->MESAgatePrimeNode != 0)) {
|
||||
while (here->MESAsourcePrimeGatePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESAsourcePrimeGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAsourceNode != 0) && (here->MESAsourcePrimeNode != 0)) {
|
||||
while (here->MESAsourceSourcePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESAsourceSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAsourcePrimeNode != 0) && (here->MESAsourceNode != 0)) {
|
||||
while (here->MESAsourcePrimeSourcePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESAsourcePrimeSourcePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAdrainPrimeNode != 0) && (here->MESAsourcePrimeNode != 0)) {
|
||||
while (here->MESAdrainPrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESAdrainPrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAsourcePrimeNode != 0) && (here->MESAdrainPrimeNode != 0)) {
|
||||
while (here->MESAsourcePrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESAsourcePrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAgatePrimeNode != 0) && (here->MESAgateNode != 0)) {
|
||||
while (here->MESAgatePrimeGatePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESAgatePrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAgateNode != 0) && (here->MESAgatePrimeNode != 0)) {
|
||||
while (here->MESAgateGatePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESAgateGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAsourcePrmPrmNode != 0) && (here->MESAsourcePrimeNode != 0)) {
|
||||
while (here->MESAsourcePrmPrmSourcePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESAsourcePrmPrmSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAsourcePrimeNode != 0) && (here->MESAsourcePrmPrmNode != 0)) {
|
||||
while (here->MESAsourcePrimeSourcePrmPrmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESAsourcePrimeSourcePrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAsourcePrmPrmNode != 0) && (here->MESAgatePrimeNode != 0)) {
|
||||
while (here->MESAsourcePrmPrmGatePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESAsourcePrmPrmGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAgatePrimeNode != 0) && (here->MESAsourcePrmPrmNode != 0)) {
|
||||
while (here->MESAgatePrimeSourcePrmPrmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESAgatePrimeSourcePrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAdrainPrmPrmNode != 0) && (here->MESAdrainPrimeNode != 0)) {
|
||||
while (here->MESAdrainPrmPrmDrainPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESAdrainPrmPrmDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAdrainPrimeNode != 0) && (here->MESAdrainPrmPrmNode != 0)) {
|
||||
while (here->MESAdrainPrimeDrainPrmPrmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESAdrainPrimeDrainPrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAdrainPrmPrmNode != 0) && (here->MESAgatePrimeNode != 0)) {
|
||||
while (here->MESAdrainPrmPrmGatePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESAdrainPrmPrmGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAgatePrimeNode != 0) && (here->MESAdrainPrmPrmNode != 0)) {
|
||||
while (here->MESAgatePrimeDrainPrmPrmPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MESAgatePrimeDrainPrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
MESAbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
MESAmodel *model = (MESAmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the mesa models */
|
||||
for( ; model != NULL; model = model->MESAnextModel ) {
|
||||
MESAinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->MESAinstances; here != NULL ;
|
||||
here = here->MESAnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAdrainNode != 0) && (here->MESAdrainNode != 0)) {
|
||||
while (here->MESAdrainDrainPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESAdrainDrainPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAdrainPrimeNode != 0) && (here->MESAdrainPrimeNode != 0)) {
|
||||
while (here->MESAdrainPrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESAdrainPrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAdrainPrmPrmNode != 0) && (here->MESAdrainPrmPrmNode != 0)) {
|
||||
while (here->MESAdrainPrmPrmDrainPrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESAdrainPrmPrmDrainPrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAgateNode != 0) && (here->MESAgateNode != 0)) {
|
||||
while (here->MESAgateGatePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESAgateGatePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAgatePrimeNode != 0) && (here->MESAgatePrimeNode != 0)) {
|
||||
while (here->MESAgatePrimeGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESAgatePrimeGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAsourceNode != 0) && (here->MESAsourceNode != 0)) {
|
||||
while (here->MESAsourceSourcePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESAsourceSourcePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAsourcePrimeNode != 0) && (here->MESAsourcePrimeNode != 0)) {
|
||||
while (here->MESAsourcePrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESAsourcePrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAsourcePrmPrmNode != 0) && (here->MESAsourcePrmPrmNode != 0)) {
|
||||
while (here->MESAsourcePrmPrmSourcePrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESAsourcePrmPrmSourcePrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAdrainNode != 0) && (here->MESAdrainPrimeNode != 0)) {
|
||||
while (here->MESAdrainDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESAdrainDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAdrainPrimeNode != 0) && (here->MESAdrainNode != 0)) {
|
||||
while (here->MESAdrainPrimeDrainPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESAdrainPrimeDrainPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAgatePrimeNode != 0) && (here->MESAdrainPrimeNode != 0)) {
|
||||
while (here->MESAgatePrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESAgatePrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAdrainPrimeNode != 0) && (here->MESAgatePrimeNode != 0)) {
|
||||
while (here->MESAdrainPrimeGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESAdrainPrimeGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAgatePrimeNode != 0) && (here->MESAsourcePrimeNode != 0)) {
|
||||
while (here->MESAgatePrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESAgatePrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAsourcePrimeNode != 0) && (here->MESAgatePrimeNode != 0)) {
|
||||
while (here->MESAsourcePrimeGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESAsourcePrimeGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAsourceNode != 0) && (here->MESAsourcePrimeNode != 0)) {
|
||||
while (here->MESAsourceSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESAsourceSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAsourcePrimeNode != 0) && (here->MESAsourceNode != 0)) {
|
||||
while (here->MESAsourcePrimeSourcePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESAsourcePrimeSourcePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAdrainPrimeNode != 0) && (here->MESAsourcePrimeNode != 0)) {
|
||||
while (here->MESAdrainPrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESAdrainPrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAsourcePrimeNode != 0) && (here->MESAdrainPrimeNode != 0)) {
|
||||
while (here->MESAsourcePrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESAsourcePrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAgatePrimeNode != 0) && (here->MESAgateNode != 0)) {
|
||||
while (here->MESAgatePrimeGatePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESAgatePrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAgateNode != 0) && (here->MESAgatePrimeNode != 0)) {
|
||||
while (here->MESAgateGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESAgateGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAsourcePrmPrmNode != 0) && (here->MESAsourcePrimeNode != 0)) {
|
||||
while (here->MESAsourcePrmPrmSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESAsourcePrmPrmSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAsourcePrimeNode != 0) && (here->MESAsourcePrmPrmNode != 0)) {
|
||||
while (here->MESAsourcePrimeSourcePrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESAsourcePrimeSourcePrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAsourcePrmPrmNode != 0) && (here->MESAgatePrimeNode != 0)) {
|
||||
while (here->MESAsourcePrmPrmGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESAsourcePrmPrmGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAgatePrimeNode != 0) && (here->MESAsourcePrmPrmNode != 0)) {
|
||||
while (here->MESAgatePrimeSourcePrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESAgatePrimeSourcePrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAdrainPrmPrmNode != 0) && (here->MESAdrainPrimeNode != 0)) {
|
||||
while (here->MESAdrainPrmPrmDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESAdrainPrmPrmDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAdrainPrimeNode != 0) && (here->MESAdrainPrmPrmNode != 0)) {
|
||||
while (here->MESAdrainPrimeDrainPrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESAdrainPrimeDrainPrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAdrainPrmPrmNode != 0) && (here->MESAgatePrimeNode != 0)) {
|
||||
while (here->MESAdrainPrmPrmGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESAdrainPrmPrmGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAgatePrimeNode != 0) && (here->MESAdrainPrmPrmNode != 0)) {
|
||||
while (here->MESAgatePrimeDrainPrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MESAgatePrimeDrainPrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -0,0 +1,308 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "mos1defs.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
MOS1bindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
MOS1model *model = (MOS1model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the mos1 models */
|
||||
for( ; model != NULL; model = model->MOS1nextModel ) {
|
||||
MOS1instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->MOS1instances; here != NULL ;
|
||||
here = here->MOS1nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1dNode != 0) && (here->MOS1dNode != 0)) {
|
||||
while (here->MOS1DdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS1DdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1gNode != 0) && (here->MOS1gNode != 0)) {
|
||||
while (here->MOS1GgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS1GgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1sNode != 0) && (here->MOS1sNode != 0)) {
|
||||
while (here->MOS1SsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS1SsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1bNode != 0) && (here->MOS1bNode != 0)) {
|
||||
while (here->MOS1BbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS1BbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1dNodePrime != 0) && (here->MOS1dNodePrime != 0)) {
|
||||
while (here->MOS1DPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS1DPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1sNodePrime != 0) && (here->MOS1sNodePrime != 0)) {
|
||||
while (here->MOS1SPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS1SPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1dNode != 0) && (here->MOS1dNodePrime != 0)) {
|
||||
while (here->MOS1DdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS1DdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1gNode != 0) && (here->MOS1bNode != 0)) {
|
||||
while (here->MOS1GbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS1GbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1gNode != 0) && (here->MOS1dNodePrime != 0)) {
|
||||
while (here->MOS1GdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS1GdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1gNode != 0) && (here->MOS1sNodePrime != 0)) {
|
||||
while (here->MOS1GspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS1GspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1sNode != 0) && (here->MOS1sNodePrime != 0)) {
|
||||
while (here->MOS1SspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS1SspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1bNode != 0) && (here->MOS1dNodePrime != 0)) {
|
||||
while (here->MOS1BdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS1BdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1bNode != 0) && (here->MOS1sNodePrime != 0)) {
|
||||
while (here->MOS1BspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS1BspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1dNodePrime != 0) && (here->MOS1sNodePrime != 0)) {
|
||||
while (here->MOS1DPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS1DPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1dNodePrime != 0) && (here->MOS1dNode != 0)) {
|
||||
while (here->MOS1DPdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS1DPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1bNode != 0) && (here->MOS1gNode != 0)) {
|
||||
while (here->MOS1BgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS1BgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1dNodePrime != 0) && (here->MOS1gNode != 0)) {
|
||||
while (here->MOS1DPgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS1DPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1sNodePrime != 0) && (here->MOS1gNode != 0)) {
|
||||
while (here->MOS1SPgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS1SPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1sNodePrime != 0) && (here->MOS1sNode != 0)) {
|
||||
while (here->MOS1SPsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS1SPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1dNodePrime != 0) && (here->MOS1bNode != 0)) {
|
||||
while (here->MOS1DPbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS1DPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1sNodePrime != 0) && (here->MOS1bNode != 0)) {
|
||||
while (here->MOS1SPbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS1SPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1sNodePrime != 0) && (here->MOS1dNodePrime != 0)) {
|
||||
while (here->MOS1SPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS1SPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
MOS1bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
MOS1model *model = (MOS1model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the mos1 models */
|
||||
for( ; model != NULL; model = model->MOS1nextModel ) {
|
||||
MOS1instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->MOS1instances; here != NULL ;
|
||||
here = here->MOS1nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1dNode != 0) && (here->MOS1dNode != 0)) {
|
||||
while (here->MOS1DdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS1DdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1gNode != 0) && (here->MOS1gNode != 0)) {
|
||||
while (here->MOS1GgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS1GgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1sNode != 0) && (here->MOS1sNode != 0)) {
|
||||
while (here->MOS1SsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS1SsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1bNode != 0) && (here->MOS1bNode != 0)) {
|
||||
while (here->MOS1BbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS1BbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1dNodePrime != 0) && (here->MOS1dNodePrime != 0)) {
|
||||
while (here->MOS1DPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS1DPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1sNodePrime != 0) && (here->MOS1sNodePrime != 0)) {
|
||||
while (here->MOS1SPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS1SPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1dNode != 0) && (here->MOS1dNodePrime != 0)) {
|
||||
while (here->MOS1DdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS1DdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1gNode != 0) && (here->MOS1bNode != 0)) {
|
||||
while (here->MOS1GbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS1GbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1gNode != 0) && (here->MOS1dNodePrime != 0)) {
|
||||
while (here->MOS1GdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS1GdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1gNode != 0) && (here->MOS1sNodePrime != 0)) {
|
||||
while (here->MOS1GspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS1GspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1sNode != 0) && (here->MOS1sNodePrime != 0)) {
|
||||
while (here->MOS1SspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS1SspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1bNode != 0) && (here->MOS1dNodePrime != 0)) {
|
||||
while (here->MOS1BdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS1BdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1bNode != 0) && (here->MOS1sNodePrime != 0)) {
|
||||
while (here->MOS1BspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS1BspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1dNodePrime != 0) && (here->MOS1sNodePrime != 0)) {
|
||||
while (here->MOS1DPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS1DPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1dNodePrime != 0) && (here->MOS1dNode != 0)) {
|
||||
while (here->MOS1DPdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS1DPdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1bNode != 0) && (here->MOS1gNode != 0)) {
|
||||
while (here->MOS1BgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS1BgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1dNodePrime != 0) && (here->MOS1gNode != 0)) {
|
||||
while (here->MOS1DPgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS1DPgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1sNodePrime != 0) && (here->MOS1gNode != 0)) {
|
||||
while (here->MOS1SPgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS1SPgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1sNodePrime != 0) && (here->MOS1sNode != 0)) {
|
||||
while (here->MOS1SPsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS1SPsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1dNodePrime != 0) && (here->MOS1bNode != 0)) {
|
||||
while (here->MOS1DPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS1DPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1sNodePrime != 0) && (here->MOS1bNode != 0)) {
|
||||
while (here->MOS1SPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS1SPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS1sNodePrime != 0) && (here->MOS1dNodePrime != 0)) {
|
||||
while (here->MOS1SPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS1SPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -0,0 +1,308 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "mos2defs.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
MOS2bindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
MOS2model *model = (MOS2model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the mos2 models */
|
||||
for( ; model != NULL; model = model->MOS2nextModel ) {
|
||||
MOS2instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->MOS2instances; here != NULL ;
|
||||
here = here->MOS2nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2dNode != 0) && (here-> MOS2dNode != 0)) {
|
||||
while (here->MOS2DdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS2DdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2gNode != 0) && (here-> MOS2gNode != 0)) {
|
||||
while (here->MOS2GgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS2GgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2sNode != 0) && (here-> MOS2sNode != 0)) {
|
||||
while (here->MOS2SsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS2SsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2bNode != 0) && (here-> MOS2bNode != 0)) {
|
||||
while (here->MOS2BbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS2BbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2dNodePrime != 0) && (here-> MOS2dNodePrime != 0)) {
|
||||
while (here->MOS2DPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS2DPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2sNodePrime != 0) && (here-> MOS2sNodePrime != 0)) {
|
||||
while (here->MOS2SPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS2SPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2dNode != 0) && (here-> MOS2dNodePrime != 0)) {
|
||||
while (here->MOS2DdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS2DdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2gNode != 0) && (here-> MOS2bNode != 0)) {
|
||||
while (here->MOS2GbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS2GbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2gNode != 0) && (here-> MOS2dNodePrime != 0)) {
|
||||
while (here->MOS2GdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS2GdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2gNode != 0) && (here-> MOS2sNodePrime != 0)) {
|
||||
while (here->MOS2GspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS2GspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2sNode != 0) && (here-> MOS2sNodePrime != 0)) {
|
||||
while (here->MOS2SspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS2SspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2bNode != 0) && (here-> MOS2dNodePrime != 0)) {
|
||||
while (here->MOS2BdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS2BdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2bNode != 0) && (here-> MOS2sNodePrime != 0)) {
|
||||
while (here->MOS2BspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS2BspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2dNodePrime != 0) && (here-> MOS2sNodePrime != 0)) {
|
||||
while (here->MOS2DPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS2DPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2dNodePrime != 0) && (here-> MOS2dNode != 0)) {
|
||||
while (here->MOS2DPdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS2DPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2bNode != 0) && (here-> MOS2gNode != 0)) {
|
||||
while (here->MOS2BgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS2BgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2dNodePrime != 0) && (here-> MOS2gNode != 0)) {
|
||||
while (here->MOS2DPgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS2DPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2sNodePrime != 0) && (here-> MOS2gNode != 0)) {
|
||||
while (here->MOS2SPgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS2SPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2sNodePrime != 0) && (here-> MOS2sNode != 0)) {
|
||||
while (here->MOS2SPsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS2SPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2dNodePrime != 0) && (here-> MOS2bNode != 0)) {
|
||||
while (here->MOS2DPbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS2DPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2sNodePrime != 0) && (here-> MOS2bNode != 0)) {
|
||||
while (here->MOS2SPbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS2SPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2sNodePrime != 0) && (here-> MOS2dNodePrime != 0)) {
|
||||
while (here->MOS2SPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS2SPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
MOS2bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
MOS2model *model = (MOS2model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the mos2 models */
|
||||
for( ; model != NULL; model = model->MOS2nextModel ) {
|
||||
MOS2instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->MOS2instances; here != NULL ;
|
||||
here = here->MOS2nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2dNode != 0) && (here-> MOS2dNode != 0)) {
|
||||
while (here->MOS2DdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS2DdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2gNode != 0) && (here-> MOS2gNode != 0)) {
|
||||
while (here->MOS2GgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS2GgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2sNode != 0) && (here-> MOS2sNode != 0)) {
|
||||
while (here->MOS2SsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS2SsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2bNode != 0) && (here-> MOS2bNode != 0)) {
|
||||
while (here->MOS2BbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS2BbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2dNodePrime != 0) && (here-> MOS2dNodePrime != 0)) {
|
||||
while (here->MOS2DPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS2DPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2sNodePrime != 0) && (here-> MOS2sNodePrime != 0)) {
|
||||
while (here->MOS2SPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS2SPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2dNode != 0) && (here-> MOS2dNodePrime != 0)) {
|
||||
while (here->MOS2DdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS2DdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2gNode != 0) && (here-> MOS2bNode != 0)) {
|
||||
while (here->MOS2GbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS2GbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2gNode != 0) && (here-> MOS2dNodePrime != 0)) {
|
||||
while (here->MOS2GdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS2GdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2gNode != 0) && (here-> MOS2sNodePrime != 0)) {
|
||||
while (here->MOS2GspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS2GspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2sNode != 0) && (here-> MOS2sNodePrime != 0)) {
|
||||
while (here->MOS2SspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS2SspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2bNode != 0) && (here-> MOS2dNodePrime != 0)) {
|
||||
while (here->MOS2BdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS2BdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2bNode != 0) && (here-> MOS2sNodePrime != 0)) {
|
||||
while (here->MOS2BspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS2BspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2dNodePrime != 0) && (here-> MOS2sNodePrime != 0)) {
|
||||
while (here->MOS2DPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS2DPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2dNodePrime != 0) && (here-> MOS2dNode != 0)) {
|
||||
while (here->MOS2DPdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS2DPdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2bNode != 0) && (here-> MOS2gNode != 0)) {
|
||||
while (here->MOS2BgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS2BgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2dNodePrime != 0) && (here-> MOS2gNode != 0)) {
|
||||
while (here->MOS2DPgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS2DPgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2sNodePrime != 0) && (here-> MOS2gNode != 0)) {
|
||||
while (here->MOS2SPgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS2SPgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2sNodePrime != 0) && (here-> MOS2sNode != 0)) {
|
||||
while (here->MOS2SPsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS2SPsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2dNodePrime != 0) && (here-> MOS2bNode != 0)) {
|
||||
while (here->MOS2DPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS2DPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2sNodePrime != 0) && (here-> MOS2bNode != 0)) {
|
||||
while (here->MOS2SPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS2SPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS2sNodePrime != 0) && (here-> MOS2dNodePrime != 0)) {
|
||||
while (here->MOS2SPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS2SPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -0,0 +1,308 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "mos3defs.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
MOS3bindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
MOS3model *model = (MOS3model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the mos3 models */
|
||||
for( ; model != NULL; model = model->MOS3nextModel ) {
|
||||
MOS3instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->MOS3instances; here != NULL ;
|
||||
here = here->MOS3nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3dNode != 0) && (here-> MOS3dNode != 0)) {
|
||||
while (here->MOS3DdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS3DdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3gNode != 0) && (here-> MOS3gNode != 0)) {
|
||||
while (here->MOS3GgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS3GgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3sNode != 0) && (here-> MOS3sNode != 0)) {
|
||||
while (here->MOS3SsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS3SsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3bNode != 0) && (here-> MOS3bNode != 0)) {
|
||||
while (here->MOS3BbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS3BbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3dNodePrime != 0) && (here-> MOS3dNodePrime != 0)) {
|
||||
while (here->MOS3DPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS3DPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3sNodePrime != 0) && (here-> MOS3sNodePrime != 0)) {
|
||||
while (here->MOS3SPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS3SPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3dNode != 0) && (here-> MOS3dNodePrime != 0)) {
|
||||
while (here->MOS3DdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS3DdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3gNode != 0) && (here-> MOS3bNode != 0)) {
|
||||
while (here->MOS3GbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS3GbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3gNode != 0) && (here-> MOS3dNodePrime != 0)) {
|
||||
while (here->MOS3GdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS3GdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3gNode != 0) && (here-> MOS3sNodePrime != 0)) {
|
||||
while (here->MOS3GspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS3GspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3sNode != 0) && (here-> MOS3sNodePrime != 0)) {
|
||||
while (here->MOS3SspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS3SspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3bNode != 0) && (here-> MOS3dNodePrime != 0)) {
|
||||
while (here->MOS3BdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS3BdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3bNode != 0) && (here-> MOS3sNodePrime != 0)) {
|
||||
while (here->MOS3BspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS3BspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3dNodePrime != 0) && (here-> MOS3sNodePrime != 0)) {
|
||||
while (here->MOS3DPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS3DPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3dNodePrime != 0) && (here-> MOS3dNode != 0)) {
|
||||
while (here->MOS3DPdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS3DPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3bNode != 0) && (here-> MOS3gNode != 0)) {
|
||||
while (here->MOS3BgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS3BgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3dNodePrime != 0) && (here-> MOS3gNode != 0)) {
|
||||
while (here->MOS3DPgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS3DPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3sNodePrime != 0) && (here-> MOS3gNode != 0)) {
|
||||
while (here->MOS3SPgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS3SPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3sNodePrime != 0) && (here-> MOS3sNode != 0)) {
|
||||
while (here->MOS3SPsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS3SPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3dNodePrime != 0) && (here-> MOS3bNode != 0)) {
|
||||
while (here->MOS3DPbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS3DPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3sNodePrime != 0) && (here-> MOS3bNode != 0)) {
|
||||
while (here->MOS3SPbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS3SPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3sNodePrime != 0) && (here-> MOS3dNodePrime != 0)) {
|
||||
while (here->MOS3SPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS3SPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
MOS3bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
MOS3model *model = (MOS3model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the mos3 models */
|
||||
for( ; model != NULL; model = model->MOS3nextModel ) {
|
||||
MOS3instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->MOS3instances; here != NULL ;
|
||||
here = here->MOS3nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3dNode != 0) && (here-> MOS3dNode != 0)) {
|
||||
while (here->MOS3DdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS3DdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3gNode != 0) && (here-> MOS3gNode != 0)) {
|
||||
while (here->MOS3GgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS3GgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3sNode != 0) && (here-> MOS3sNode != 0)) {
|
||||
while (here->MOS3SsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS3SsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3bNode != 0) && (here-> MOS3bNode != 0)) {
|
||||
while (here->MOS3BbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS3BbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3dNodePrime != 0) && (here-> MOS3dNodePrime != 0)) {
|
||||
while (here->MOS3DPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS3DPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3sNodePrime != 0) && (here-> MOS3sNodePrime != 0)) {
|
||||
while (here->MOS3SPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS3SPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3dNode != 0) && (here-> MOS3dNodePrime != 0)) {
|
||||
while (here->MOS3DdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS3DdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3gNode != 0) && (here-> MOS3bNode != 0)) {
|
||||
while (here->MOS3GbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS3GbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3gNode != 0) && (here-> MOS3dNodePrime != 0)) {
|
||||
while (here->MOS3GdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS3GdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3gNode != 0) && (here-> MOS3sNodePrime != 0)) {
|
||||
while (here->MOS3GspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS3GspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3sNode != 0) && (here-> MOS3sNodePrime != 0)) {
|
||||
while (here->MOS3SspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS3SspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3bNode != 0) && (here-> MOS3dNodePrime != 0)) {
|
||||
while (here->MOS3BdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS3BdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3bNode != 0) && (here-> MOS3sNodePrime != 0)) {
|
||||
while (here->MOS3BspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS3BspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3dNodePrime != 0) && (here-> MOS3sNodePrime != 0)) {
|
||||
while (here->MOS3DPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS3DPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3dNodePrime != 0) && (here-> MOS3dNode != 0)) {
|
||||
while (here->MOS3DPdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS3DPdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3bNode != 0) && (here-> MOS3gNode != 0)) {
|
||||
while (here->MOS3BgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS3BgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3dNodePrime != 0) && (here-> MOS3gNode != 0)) {
|
||||
while (here->MOS3DPgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS3DPgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3sNodePrime != 0) && (here-> MOS3gNode != 0)) {
|
||||
while (here->MOS3SPgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS3SPgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3sNodePrime != 0) && (here-> MOS3sNode != 0)) {
|
||||
while (here->MOS3SPsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS3SPsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3dNodePrime != 0) && (here-> MOS3bNode != 0)) {
|
||||
while (here->MOS3DPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS3DPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3sNodePrime != 0) && (here-> MOS3bNode != 0)) {
|
||||
while (here->MOS3SPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS3SPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS3sNodePrime != 0) && (here-> MOS3dNodePrime != 0)) {
|
||||
while (here->MOS3SPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS3SPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -0,0 +1,308 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "mos6defs.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
MOS6bindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
MOS6model *model = (MOS6model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the mos6 models */
|
||||
for( ; model != NULL; model = model->MOS6nextModel ) {
|
||||
MOS6instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->MOS6instances; here != NULL ;
|
||||
here = here->MOS6nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6dNode != 0) && (here->MOS6dNode != 0)) {
|
||||
while (here->MOS6DdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS6DdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6gNode != 0) && (here->MOS6gNode != 0)) {
|
||||
while (here->MOS6GgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS6GgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6sNode != 0) && (here->MOS6sNode != 0)) {
|
||||
while (here->MOS6SsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS6SsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6bNode != 0) && (here->MOS6bNode != 0)) {
|
||||
while (here->MOS6BbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS6BbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6dNodePrime != 0) && (here->MOS6dNodePrime != 0)) {
|
||||
while (here->MOS6DPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS6DPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6sNodePrime != 0) && (here->MOS6sNodePrime != 0)) {
|
||||
while (here->MOS6SPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS6SPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6dNode != 0) && (here->MOS6dNodePrime != 0)) {
|
||||
while (here->MOS6DdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS6DdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6gNode != 0) && (here->MOS6bNode != 0)) {
|
||||
while (here->MOS6GbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS6GbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6gNode != 0) && (here->MOS6dNodePrime != 0)) {
|
||||
while (here->MOS6GdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS6GdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6gNode != 0) && (here->MOS6sNodePrime != 0)) {
|
||||
while (here->MOS6GspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS6GspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6sNode != 0) && (here->MOS6sNodePrime != 0)) {
|
||||
while (here->MOS6SspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS6SspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6bNode != 0) && (here->MOS6dNodePrime != 0)) {
|
||||
while (here->MOS6BdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS6BdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6bNode != 0) && (here->MOS6sNodePrime != 0)) {
|
||||
while (here->MOS6BspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS6BspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6dNodePrime != 0) && (here->MOS6sNodePrime != 0)) {
|
||||
while (here->MOS6DPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS6DPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6dNodePrime != 0) && (here->MOS6dNode != 0)) {
|
||||
while (here->MOS6DPdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS6DPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6bNode != 0) && (here->MOS6gNode != 0)) {
|
||||
while (here->MOS6BgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS6BgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6dNodePrime != 0) && (here->MOS6gNode != 0)) {
|
||||
while (here->MOS6DPgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS6DPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6sNodePrime != 0) && (here->MOS6gNode != 0)) {
|
||||
while (here->MOS6SPgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS6SPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6sNodePrime != 0) && (here->MOS6sNode != 0)) {
|
||||
while (here->MOS6SPsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS6SPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6dNodePrime != 0) && (here->MOS6bNode != 0)) {
|
||||
while (here->MOS6DPbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS6DPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6sNodePrime != 0) && (here->MOS6bNode != 0)) {
|
||||
while (here->MOS6SPbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS6SPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6sNodePrime != 0) && (here->MOS6dNodePrime != 0)) {
|
||||
while (here->MOS6SPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS6SPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
MOS6bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
MOS6model *model = (MOS6model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the mos6 models */
|
||||
for( ; model != NULL; model = model->MOS6nextModel ) {
|
||||
MOS6instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->MOS6instances; here != NULL ;
|
||||
here = here->MOS6nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6dNode != 0) && (here->MOS6dNode != 0)) {
|
||||
while (here->MOS6DdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS6DdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6gNode != 0) && (here->MOS6gNode != 0)) {
|
||||
while (here->MOS6GgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS6GgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6sNode != 0) && (here->MOS6sNode != 0)) {
|
||||
while (here->MOS6SsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS6SsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6bNode != 0) && (here->MOS6bNode != 0)) {
|
||||
while (here->MOS6BbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS6BbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6dNodePrime != 0) && (here->MOS6dNodePrime != 0)) {
|
||||
while (here->MOS6DPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS6DPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6sNodePrime != 0) && (here->MOS6sNodePrime != 0)) {
|
||||
while (here->MOS6SPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS6SPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6dNode != 0) && (here->MOS6dNodePrime != 0)) {
|
||||
while (here->MOS6DdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS6DdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6gNode != 0) && (here->MOS6bNode != 0)) {
|
||||
while (here->MOS6GbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS6GbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6gNode != 0) && (here->MOS6dNodePrime != 0)) {
|
||||
while (here->MOS6GdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS6GdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6gNode != 0) && (here->MOS6sNodePrime != 0)) {
|
||||
while (here->MOS6GspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS6GspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6sNode != 0) && (here->MOS6sNodePrime != 0)) {
|
||||
while (here->MOS6SspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS6SspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6bNode != 0) && (here->MOS6dNodePrime != 0)) {
|
||||
while (here->MOS6BdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS6BdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6bNode != 0) && (here->MOS6sNodePrime != 0)) {
|
||||
while (here->MOS6BspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS6BspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6dNodePrime != 0) && (here->MOS6sNodePrime != 0)) {
|
||||
while (here->MOS6DPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS6DPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6dNodePrime != 0) && (here->MOS6dNode != 0)) {
|
||||
while (here->MOS6DPdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS6DPdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6bNode != 0) && (here->MOS6gNode != 0)) {
|
||||
while (here->MOS6BgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS6BgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6dNodePrime != 0) && (here->MOS6gNode != 0)) {
|
||||
while (here->MOS6DPgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS6DPgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6sNodePrime != 0) && (here->MOS6gNode != 0)) {
|
||||
while (here->MOS6SPgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS6SPgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6sNodePrime != 0) && (here->MOS6sNode != 0)) {
|
||||
while (here->MOS6SPsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS6SPsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6dNodePrime != 0) && (here->MOS6bNode != 0)) {
|
||||
while (here->MOS6DPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS6DPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6sNodePrime != 0) && (here->MOS6bNode != 0)) {
|
||||
while (here->MOS6SPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS6SPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MOS6sNodePrime != 0) && (here->MOS6dNodePrime != 0)) {
|
||||
while (here->MOS6SPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS6SPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -0,0 +1,308 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "mos9defs.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
MOS9bindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
MOS9model *model = (MOS9model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the mos9 models */
|
||||
for( ; model != NULL; model = model->MOS9nextModel ) {
|
||||
MOS9instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->MOS9instances; here != NULL ;
|
||||
here = here->MOS9nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9dNode != 0) && (here-> MOS9dNode != 0)) {
|
||||
while (here->MOS9DdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS9DdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9gNode != 0) && (here-> MOS9gNode != 0)) {
|
||||
while (here->MOS9GgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS9GgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9sNode != 0) && (here-> MOS9sNode != 0)) {
|
||||
while (here->MOS9SsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS9SsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9bNode != 0) && (here-> MOS9bNode != 0)) {
|
||||
while (here->MOS9BbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS9BbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9dNodePrime != 0) && (here-> MOS9dNodePrime != 0)) {
|
||||
while (here->MOS9DPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS9DPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9sNodePrime != 0) && (here-> MOS9sNodePrime != 0)) {
|
||||
while (here->MOS9SPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS9SPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9dNode != 0) && (here-> MOS9dNodePrime != 0)) {
|
||||
while (here->MOS9DdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS9DdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9gNode != 0) && (here-> MOS9bNode != 0)) {
|
||||
while (here->MOS9GbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS9GbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9gNode != 0) && (here-> MOS9dNodePrime != 0)) {
|
||||
while (here->MOS9GdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS9GdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9gNode != 0) && (here-> MOS9sNodePrime != 0)) {
|
||||
while (here->MOS9GspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS9GspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9sNode != 0) && (here-> MOS9sNodePrime != 0)) {
|
||||
while (here->MOS9SspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS9SspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9bNode != 0) && (here-> MOS9dNodePrime != 0)) {
|
||||
while (here->MOS9BdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS9BdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9bNode != 0) && (here-> MOS9sNodePrime != 0)) {
|
||||
while (here->MOS9BspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS9BspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9dNodePrime != 0) && (here-> MOS9sNodePrime != 0)) {
|
||||
while (here->MOS9DPspPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS9DPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9dNodePrime != 0) && (here-> MOS9dNode != 0)) {
|
||||
while (here->MOS9DPdPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS9DPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9bNode != 0) && (here-> MOS9gNode != 0)) {
|
||||
while (here->MOS9BgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS9BgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9dNodePrime != 0) && (here-> MOS9gNode != 0)) {
|
||||
while (here->MOS9DPgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS9DPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9sNodePrime != 0) && (here-> MOS9gNode != 0)) {
|
||||
while (here->MOS9SPgPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS9SPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9sNodePrime != 0) && (here-> MOS9sNode != 0)) {
|
||||
while (here->MOS9SPsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS9SPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9dNodePrime != 0) && (here-> MOS9bNode != 0)) {
|
||||
while (here->MOS9DPbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS9DPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9sNodePrime != 0) && (here-> MOS9bNode != 0)) {
|
||||
while (here->MOS9SPbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS9SPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9sNodePrime != 0) && (here-> MOS9dNodePrime != 0)) {
|
||||
while (here->MOS9SPdpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->MOS9SPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
MOS9bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
MOS9model *model = (MOS9model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the mos9 models */
|
||||
for( ; model != NULL; model = model->MOS9nextModel ) {
|
||||
MOS9instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->MOS9instances; here != NULL ;
|
||||
here = here->MOS9nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9dNode != 0) && (here-> MOS9dNode != 0)) {
|
||||
while (here->MOS9DdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS9DdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9gNode != 0) && (here-> MOS9gNode != 0)) {
|
||||
while (here->MOS9GgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS9GgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9sNode != 0) && (here-> MOS9sNode != 0)) {
|
||||
while (here->MOS9SsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS9SsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9bNode != 0) && (here-> MOS9bNode != 0)) {
|
||||
while (here->MOS9BbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS9BbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9dNodePrime != 0) && (here-> MOS9dNodePrime != 0)) {
|
||||
while (here->MOS9DPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS9DPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9sNodePrime != 0) && (here-> MOS9sNodePrime != 0)) {
|
||||
while (here->MOS9SPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS9SPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9dNode != 0) && (here-> MOS9dNodePrime != 0)) {
|
||||
while (here->MOS9DdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS9DdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9gNode != 0) && (here-> MOS9bNode != 0)) {
|
||||
while (here->MOS9GbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS9GbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9gNode != 0) && (here-> MOS9dNodePrime != 0)) {
|
||||
while (here->MOS9GdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS9GdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9gNode != 0) && (here-> MOS9sNodePrime != 0)) {
|
||||
while (here->MOS9GspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS9GspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9sNode != 0) && (here-> MOS9sNodePrime != 0)) {
|
||||
while (here->MOS9SspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS9SspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9bNode != 0) && (here-> MOS9dNodePrime != 0)) {
|
||||
while (here->MOS9BdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS9BdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9bNode != 0) && (here-> MOS9sNodePrime != 0)) {
|
||||
while (here->MOS9BspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS9BspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9dNodePrime != 0) && (here-> MOS9sNodePrime != 0)) {
|
||||
while (here->MOS9DPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS9DPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9dNodePrime != 0) && (here-> MOS9dNode != 0)) {
|
||||
while (here->MOS9DPdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS9DPdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9bNode != 0) && (here-> MOS9gNode != 0)) {
|
||||
while (here->MOS9BgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS9BgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9dNodePrime != 0) && (here-> MOS9gNode != 0)) {
|
||||
while (here->MOS9DPgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS9DPgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9sNodePrime != 0) && (here-> MOS9gNode != 0)) {
|
||||
while (here->MOS9SPgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS9SPgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9sNodePrime != 0) && (here-> MOS9sNode != 0)) {
|
||||
while (here->MOS9SPsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS9SPsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9dNodePrime != 0) && (here-> MOS9bNode != 0)) {
|
||||
while (here->MOS9DPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS9DPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9sNodePrime != 0) && (here-> MOS9bNode != 0)) {
|
||||
while (here->MOS9SPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS9SPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> MOS9sNodePrime != 0) && (here-> MOS9dNodePrime != 0)) {
|
||||
while (here->MOS9SPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->MOS9SPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -8,7 +8,7 @@ Author: 2012 Francesco Lannutti
|
|||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
RESbindklu(GENmodel *inModel, CKTcircuit *ckt)
|
||||
RESbindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
RESmodel *model = (RESmodel *)inModel;
|
||||
int i ;
|
||||
|
|
@ -23,26 +23,26 @@ RESbindklu(GENmodel *inModel, CKTcircuit *ckt)
|
|||
|
||||
i = 0 ;
|
||||
if ((here->RESposNode != 0) && (here->RESposNode != 0)) {
|
||||
while (here->RESposPosptr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->RESposPosptr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
while (here->RESposPosptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->RESposPosptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->RESnegNode != 0) && (here->RESnegNode != 0)) {
|
||||
while (here->RESnegNegptr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->RESnegNegptr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
while (here->RESnegNegptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->RESnegNegptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->RESposNode != 0) && (here->RESnegNode != 0)) {
|
||||
while (here->RESposNegptr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->RESposNegptr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
while (here->RESposNegptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->RESposNegptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->RESnegNode != 0) && (here->RESposNode != 0)) {
|
||||
while (here->RESnegPosptr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->RESnegPosptr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
while (here->RESnegPosptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->RESnegPosptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -50,7 +50,7 @@ RESbindklu(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
|
||||
int
|
||||
RESbindkluComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
RESbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
RESmodel *model = (RESmodel *)inModel;
|
||||
int i ;
|
||||
|
|
@ -65,26 +65,26 @@ RESbindkluComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
|
||||
i = 0 ;
|
||||
if ((here->RESposNode != 0) && (here->RESposNode != 0)) {
|
||||
while (here->RESposPosptr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->RESposPosptr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
while (here->RESposPosptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->RESposPosptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->RESnegNode != 0) && (here->RESnegNode != 0)) {
|
||||
while (here->RESnegNegptr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->RESnegNegptr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
while (here->RESnegNegptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->RESnegNegptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->RESposNode != 0) && (here->RESnegNode != 0)) {
|
||||
while (here->RESposNegptr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->RESposNegptr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
while (here->RESposNegptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->RESposNegptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->RESnegNode != 0) && (here->RESposNode != 0)) {
|
||||
while (here->RESnegPosptr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->RESnegPosptr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
while (here->RESnegPosptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->RESnegPosptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,678 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "soi3defs.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
SOI3bindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
SOI3model *model = (SOI3model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the soi3 models */
|
||||
for( ; model != NULL; model = model->SOI3nextModel ) {
|
||||
SOI3instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->SOI3instances; here != NULL ;
|
||||
here = here->SOI3nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->SOI3dNode != 0) && (here->SOI3dNode != 0)) {
|
||||
while (here->SOI3D_dPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3D_dPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3dNode != 0) && (here->SOI3dNodePrime != 0)) {
|
||||
while (here->SOI3D_dpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3D_dpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3dNodePrime != 0) && (here->SOI3dNode != 0)) {
|
||||
while (here->SOI3DP_dPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3DP_dPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3sNode != 0) && (here->SOI3sNode != 0)) {
|
||||
while (here->SOI3S_sPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3S_sPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3sNode != 0) && (here->SOI3sNodePrime != 0)) {
|
||||
while (here->SOI3S_spPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3S_spPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3sNodePrime != 0) && (here->SOI3sNode != 0)) {
|
||||
while (here->SOI3SP_sPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3SP_sPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3gfNode != 0) && (here->SOI3gfNode != 0)) {
|
||||
while (here->SOI3GF_gfPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3GF_gfPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3gfNode != 0) && (here->SOI3gbNode != 0)) {
|
||||
while (here->SOI3GF_gbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3GF_gbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3gfNode != 0) && (here->SOI3dNodePrime != 0)) {
|
||||
while (here->SOI3GF_dpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3GF_dpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3gfNode != 0) && (here->SOI3sNodePrime != 0)) {
|
||||
while (here->SOI3GF_spPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3GF_spPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3gfNode != 0) && (here->SOI3bNode != 0)) {
|
||||
while (here->SOI3GF_bPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3GF_bPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3gbNode != 0) && (here->SOI3gfNode != 0)) {
|
||||
while (here->SOI3GB_gfPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3GB_gfPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3gbNode != 0) && (here->SOI3gbNode != 0)) {
|
||||
while (here->SOI3GB_gbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3GB_gbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3gbNode != 0) && (here->SOI3dNodePrime != 0)) {
|
||||
while (here->SOI3GB_dpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3GB_dpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3gbNode != 0) && (here->SOI3sNodePrime != 0)) {
|
||||
while (here->SOI3GB_spPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3GB_spPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3gbNode != 0) && (here->SOI3bNode != 0)) {
|
||||
while (here->SOI3GB_bPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3GB_bPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3bNode != 0) && (here->SOI3gfNode != 0)) {
|
||||
while (here->SOI3B_gfPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3B_gfPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3bNode != 0) && (here->SOI3gbNode != 0)) {
|
||||
while (here->SOI3B_gbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3B_gbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3bNode != 0) && (here->SOI3dNodePrime != 0)) {
|
||||
while (here->SOI3B_dpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3B_dpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3bNode != 0) && (here->SOI3sNodePrime != 0)) {
|
||||
while (here->SOI3B_spPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3B_spPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3bNode != 0) && (here->SOI3bNode != 0)) {
|
||||
while (here->SOI3B_bPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3B_bPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3dNodePrime != 0) && (here->SOI3gfNode != 0)) {
|
||||
while (here->SOI3DP_gfPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3DP_gfPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3dNodePrime != 0) && (here->SOI3gbNode != 0)) {
|
||||
while (here->SOI3DP_gbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3DP_gbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3dNodePrime != 0) && (here->SOI3dNodePrime != 0)) {
|
||||
while (here->SOI3DP_dpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3DP_dpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3dNodePrime != 0) && (here->SOI3sNodePrime != 0)) {
|
||||
while (here->SOI3DP_spPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3DP_spPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3dNodePrime != 0) && (here->SOI3bNode != 0)) {
|
||||
while (here->SOI3DP_bPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3DP_bPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3sNodePrime != 0) && (here->SOI3gfNode != 0)) {
|
||||
while (here->SOI3SP_gfPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3SP_gfPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3sNodePrime != 0) && (here->SOI3gbNode != 0)) {
|
||||
while (here->SOI3SP_gbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3SP_gbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3sNodePrime != 0) && (here->SOI3dNodePrime != 0)) {
|
||||
while (here->SOI3SP_dpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3SP_dpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3sNodePrime != 0) && (here->SOI3sNodePrime != 0)) {
|
||||
while (here->SOI3SP_spPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3SP_spPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3sNodePrime != 0) && (here->SOI3bNode != 0)) {
|
||||
while (here->SOI3SP_bPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3SP_bPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
if (here->SOI3rt == 0)
|
||||
{
|
||||
|
||||
i = 0 ;
|
||||
if ((here->SOI3toutNode != 0) && (here->SOI3branch != 0)) {
|
||||
while (here->SOI3TOUT_ibrPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3TOUT_ibrPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3branch != 0) && (here->SOI3toutNode != 0)) {
|
||||
while (here->SOI3IBR_toutPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3IBR_toutPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
} /* IF */
|
||||
|
||||
else
|
||||
{
|
||||
|
||||
i = 0 ;
|
||||
if ((here->SOI3toutNode != 0) && (here->SOI3toutNode != 0)) {
|
||||
while (here->SOI3TOUT_toutPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3TOUT_toutPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
if (here->SOI3numThermalNodes > 1)
|
||||
{
|
||||
|
||||
i = 0 ;
|
||||
if ((here->SOI3toutNode != 0) && (here->SOI3tout1Node != 0)) {
|
||||
while (here->SOI3TOUT_tout1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3TOUT_tout1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3tout1Node != 0) && (here->SOI3toutNode != 0)) {
|
||||
while (here->SOI3TOUT1_toutPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3TOUT1_toutPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3tout1Node != 0) && (here->SOI3tout1Node != 0)) {
|
||||
while (here->SOI3TOUT1_tout1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3TOUT1_tout1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
|
||||
if (here->SOI3numThermalNodes > 2)
|
||||
{
|
||||
|
||||
i = 0 ;
|
||||
if ((here->SOI3tout1Node != 0) && (here->SOI3tout2Node != 0)) {
|
||||
while (here->SOI3TOUT1_tout2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3TOUT1_tout2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3tout2Node != 0) && (here->SOI3tout1Node != 0)) {
|
||||
while (here->SOI3TOUT2_tout1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3TOUT2_tout1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3tout2Node != 0) && (here->SOI3tout2Node != 0)) {
|
||||
while (here->SOI3TOUT2_tout2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3TOUT2_tout2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
|
||||
if (here->SOI3numThermalNodes > 3)
|
||||
{
|
||||
|
||||
i = 0 ;
|
||||
if ((here->SOI3tout2Node != 0) && (here->SOI3tout3Node != 0)) {
|
||||
while (here->SOI3TOUT2_tout3Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3TOUT2_tout3Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3tout3Node != 0) && (here->SOI3tout2Node != 0)) {
|
||||
while (here->SOI3TOUT3_tout2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3TOUT3_tout2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3tout3Node != 0) && (here->SOI3tout3Node != 0)) {
|
||||
while (here->SOI3TOUT3_tout3Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3TOUT3_tout3Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
|
||||
if (here->SOI3numThermalNodes > 4)
|
||||
{
|
||||
|
||||
i = 0 ;
|
||||
if ((here->SOI3tout3Node != 0) && (here->SOI3tout4Node != 0)) {
|
||||
while (here->SOI3TOUT3_tout4Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3TOUT3_tout4Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3tout4Node != 0) && (here->SOI3tout3Node != 0)) {
|
||||
while (here->SOI3TOUT4_tout3Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3TOUT4_tout3Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3tout4Node != 0) && (here->SOI3tout4Node != 0)) {
|
||||
while (here->SOI3TOUT4_tout4Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3TOUT4_tout4Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->SOI3toutNode != 0) && (here->SOI3toutNode != 0)) {
|
||||
while (here->SOI3TOUT_toutPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3TOUT_toutPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3toutNode != 0) && (here->SOI3gfNode != 0)) {
|
||||
while (here->SOI3TOUT_gfPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3TOUT_gfPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3toutNode != 0) && (here->SOI3gbNode != 0)) {
|
||||
while (here->SOI3TOUT_gbPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3TOUT_gbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3toutNode != 0) && (here->SOI3dNodePrime != 0)) {
|
||||
while (here->SOI3TOUT_dpPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3TOUT_dpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3toutNode != 0) && (here->SOI3sNodePrime != 0)) {
|
||||
while (here->SOI3TOUT_spPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3TOUT_spPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3toutNode != 0) && (here->SOI3bNode != 0)) {
|
||||
while (here->SOI3TOUT_bPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3TOUT_bPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3gfNode != 0) && (here->SOI3toutNode != 0)) {
|
||||
while (here->SOI3GF_toutPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3GF_toutPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3gbNode != 0) && (here->SOI3toutNode != 0)) {
|
||||
while (here->SOI3GB_toutPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3GB_toutPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3dNodePrime != 0) && (here->SOI3toutNode != 0)) {
|
||||
while (here->SOI3DP_toutPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3DP_toutPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3sNodePrime != 0) && (here->SOI3toutNode != 0)) {
|
||||
while (here->SOI3SP_toutPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3SP_toutPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3bNode != 0) && (here->SOI3toutNode != 0)) {
|
||||
while (here->SOI3B_toutPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SOI3B_toutPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
} /* ELSE */
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
SOI3bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
SOI3model *model = (SOI3model *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the soi3 models */
|
||||
for( ; model != NULL; model = model->SOI3nextModel ) {
|
||||
SOI3instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->SOI3instances; here != NULL ;
|
||||
here = here->SOI3nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->SOI3dNode != 0) && (here->SOI3dNode != 0)) {
|
||||
while (here->SOI3D_dPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3D_dPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3dNode != 0) && (here->SOI3dNodePrime != 0)) {
|
||||
while (here->SOI3D_dpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3D_dpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3dNodePrime != 0) && (here->SOI3dNode != 0)) {
|
||||
while (here->SOI3DP_dPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3DP_dPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3sNode != 0) && (here->SOI3sNode != 0)) {
|
||||
while (here->SOI3S_sPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3S_sPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3sNode != 0) && (here->SOI3sNodePrime != 0)) {
|
||||
while (here->SOI3S_spPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3S_spPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3sNodePrime != 0) && (here->SOI3sNode != 0)) {
|
||||
while (here->SOI3SP_sPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3SP_sPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3gfNode != 0) && (here->SOI3gfNode != 0)) {
|
||||
while (here->SOI3GF_gfPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3GF_gfPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3gfNode != 0) && (here->SOI3gbNode != 0)) {
|
||||
while (here->SOI3GF_gbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3GF_gbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3gfNode != 0) && (here->SOI3dNodePrime != 0)) {
|
||||
while (here->SOI3GF_dpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3GF_dpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3gfNode != 0) && (here->SOI3sNodePrime != 0)) {
|
||||
while (here->SOI3GF_spPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3GF_spPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3gfNode != 0) && (here->SOI3bNode != 0)) {
|
||||
while (here->SOI3GF_bPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3GF_bPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3gbNode != 0) && (here->SOI3gfNode != 0)) {
|
||||
while (here->SOI3GB_gfPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3GB_gfPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3gbNode != 0) && (here->SOI3gbNode != 0)) {
|
||||
while (here->SOI3GB_gbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3GB_gbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3gbNode != 0) && (here->SOI3dNodePrime != 0)) {
|
||||
while (here->SOI3GB_dpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3GB_dpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3gbNode != 0) && (here->SOI3sNodePrime != 0)) {
|
||||
while (here->SOI3GB_spPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3GB_spPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3gbNode != 0) && (here->SOI3bNode != 0)) {
|
||||
while (here->SOI3GB_bPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3GB_bPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3bNode != 0) && (here->SOI3gfNode != 0)) {
|
||||
while (here->SOI3B_gfPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3B_gfPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3bNode != 0) && (here->SOI3gbNode != 0)) {
|
||||
while (here->SOI3B_gbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3B_gbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3bNode != 0) && (here->SOI3dNodePrime != 0)) {
|
||||
while (here->SOI3B_dpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3B_dpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3bNode != 0) && (here->SOI3sNodePrime != 0)) {
|
||||
while (here->SOI3B_spPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3B_spPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3bNode != 0) && (here->SOI3bNode != 0)) {
|
||||
while (here->SOI3B_bPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3B_bPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3dNodePrime != 0) && (here->SOI3gfNode != 0)) {
|
||||
while (here->SOI3DP_gfPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3DP_gfPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3dNodePrime != 0) && (here->SOI3gbNode != 0)) {
|
||||
while (here->SOI3DP_gbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3DP_gbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3dNodePrime != 0) && (here->SOI3dNodePrime != 0)) {
|
||||
while (here->SOI3DP_dpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3DP_dpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3dNodePrime != 0) && (here->SOI3sNodePrime != 0)) {
|
||||
while (here->SOI3DP_spPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3DP_spPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3dNodePrime != 0) && (here->SOI3bNode != 0)) {
|
||||
while (here->SOI3DP_bPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3DP_bPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3sNodePrime != 0) && (here->SOI3gfNode != 0)) {
|
||||
while (here->SOI3SP_gfPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3SP_gfPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3sNodePrime != 0) && (here->SOI3gbNode != 0)) {
|
||||
while (here->SOI3SP_gbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3SP_gbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3sNodePrime != 0) && (here->SOI3dNodePrime != 0)) {
|
||||
while (here->SOI3SP_dpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3SP_dpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3sNodePrime != 0) && (here->SOI3sNodePrime != 0)) {
|
||||
while (here->SOI3SP_spPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3SP_spPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3sNodePrime != 0) && (here->SOI3bNode != 0)) {
|
||||
while (here->SOI3SP_bPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3SP_bPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
if (here->SOI3rt == 0)
|
||||
{
|
||||
|
||||
i = 0 ;
|
||||
if ((here->SOI3toutNode != 0) && (here->SOI3branch != 0)) {
|
||||
while (here->SOI3TOUT_ibrPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3TOUT_ibrPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3branch != 0) && (here->SOI3toutNode != 0)) {
|
||||
while (here->SOI3IBR_toutPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3IBR_toutPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
} /* IF */
|
||||
|
||||
else
|
||||
{
|
||||
|
||||
i = 0 ;
|
||||
if ((here->SOI3toutNode != 0) && (here->SOI3toutNode != 0)) {
|
||||
while (here->SOI3TOUT_toutPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3TOUT_toutPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
if (here->SOI3numThermalNodes > 1)
|
||||
{
|
||||
|
||||
i = 0 ;
|
||||
if ((here->SOI3toutNode != 0) && (here->SOI3tout1Node != 0)) {
|
||||
while (here->SOI3TOUT_tout1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3TOUT_tout1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3tout1Node != 0) && (here->SOI3toutNode != 0)) {
|
||||
while (here->SOI3TOUT1_toutPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3TOUT1_toutPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3tout1Node != 0) && (here->SOI3tout1Node != 0)) {
|
||||
while (here->SOI3TOUT1_tout1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3TOUT1_tout1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
|
||||
if (here->SOI3numThermalNodes > 2)
|
||||
{
|
||||
|
||||
i = 0 ;
|
||||
if ((here->SOI3tout1Node != 0) && (here->SOI3tout2Node != 0)) {
|
||||
while (here->SOI3TOUT1_tout2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3TOUT1_tout2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3tout2Node != 0) && (here->SOI3tout1Node != 0)) {
|
||||
while (here->SOI3TOUT2_tout1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3TOUT2_tout1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3tout2Node != 0) && (here->SOI3tout2Node != 0)) {
|
||||
while (here->SOI3TOUT2_tout2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3TOUT2_tout2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
|
||||
if (here->SOI3numThermalNodes > 3)
|
||||
{
|
||||
|
||||
i = 0 ;
|
||||
if ((here->SOI3tout2Node != 0) && (here->SOI3tout3Node != 0)) {
|
||||
while (here->SOI3TOUT2_tout3Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3TOUT2_tout3Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3tout3Node != 0) && (here->SOI3tout2Node != 0)) {
|
||||
while (here->SOI3TOUT3_tout2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3TOUT3_tout2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3tout3Node != 0) && (here->SOI3tout3Node != 0)) {
|
||||
while (here->SOI3TOUT3_tout3Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3TOUT3_tout3Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
|
||||
if (here->SOI3numThermalNodes > 4)
|
||||
{
|
||||
|
||||
i = 0 ;
|
||||
if ((here->SOI3tout3Node != 0) && (here->SOI3tout4Node != 0)) {
|
||||
while (here->SOI3TOUT3_tout4Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3TOUT3_tout4Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3tout4Node != 0) && (here->SOI3tout3Node != 0)) {
|
||||
while (here->SOI3TOUT4_tout3Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3TOUT4_tout3Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3tout4Node != 0) && (here->SOI3tout4Node != 0)) {
|
||||
while (here->SOI3TOUT4_tout4Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3TOUT4_tout4Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->SOI3toutNode != 0) && (here->SOI3toutNode != 0)) {
|
||||
while (here->SOI3TOUT_toutPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3TOUT_toutPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3toutNode != 0) && (here->SOI3gfNode != 0)) {
|
||||
while (here->SOI3TOUT_gfPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3TOUT_gfPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3toutNode != 0) && (here->SOI3gbNode != 0)) {
|
||||
while (here->SOI3TOUT_gbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3TOUT_gbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3toutNode != 0) && (here->SOI3dNodePrime != 0)) {
|
||||
while (here->SOI3TOUT_dpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3TOUT_dpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3toutNode != 0) && (here->SOI3sNodePrime != 0)) {
|
||||
while (here->SOI3TOUT_spPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3TOUT_spPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3toutNode != 0) && (here->SOI3bNode != 0)) {
|
||||
while (here->SOI3TOUT_bPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3TOUT_bPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3gfNode != 0) && (here->SOI3toutNode != 0)) {
|
||||
while (here->SOI3GF_toutPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3GF_toutPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3gbNode != 0) && (here->SOI3toutNode != 0)) {
|
||||
while (here->SOI3GB_toutPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3GB_toutPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3dNodePrime != 0) && (here->SOI3toutNode != 0)) {
|
||||
while (here->SOI3DP_toutPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3DP_toutPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3sNodePrime != 0) && (here->SOI3toutNode != 0)) {
|
||||
while (here->SOI3SP_toutPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3SP_toutPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->SOI3bNode != 0) && (here->SOI3toutNode != 0)) {
|
||||
while (here->SOI3B_toutPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SOI3B_toutPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
} /* ELSE */
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -0,0 +1,86 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "swdefs.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
SWbindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
SWmodel *model = (SWmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the sw models */
|
||||
for( ; model != NULL; model = model->SWnextModel ) {
|
||||
SWinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->SWinstances; here != NULL ;
|
||||
here = here->SWnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> SWposNode != 0) && (here-> SWposNode != 0)) {
|
||||
while (here->SWposPosptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SWposPosptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> SWposNode != 0) && (here-> SWnegNode != 0)) {
|
||||
while (here->SWposNegptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SWposNegptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> SWnegNode != 0) && (here-> SWposNode != 0)) {
|
||||
while (here->SWnegPosptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SWnegPosptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> SWnegNode != 0) && (here-> SWnegNode != 0)) {
|
||||
while (here->SWnegNegptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->SWnegNegptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
SWbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
SWmodel *model = (SWmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the sw models */
|
||||
for( ; model != NULL; model = model->SWnextModel ) {
|
||||
SWinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->SWinstances; here != NULL ;
|
||||
here = here->SWnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> SWposNode != 0) && (here-> SWposNode != 0)) {
|
||||
while (here->SWposPosptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SWposPosptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> SWposNode != 0) && (here-> SWnegNode != 0)) {
|
||||
while (here->SWposNegptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SWposNegptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> SWnegNode != 0) && (here-> SWposNode != 0)) {
|
||||
while (here->SWnegPosptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SWnegPosptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> SWnegNode != 0) && (here-> SWnegNode != 0)) {
|
||||
while (here->SWnegNegptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->SWnegNegptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -0,0 +1,266 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "tradefs.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
TRAbindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
TRAmodel *model = (TRAmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the tra models */
|
||||
for( ; model != NULL; model = model->TRAnextModel ) {
|
||||
TRAinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->TRAinstances; here != NULL ;
|
||||
here = here->TRAnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> TRAbrEq1 != 0) && (here-> TRAbrEq2 != 0)) {
|
||||
while (here->TRAibr1Ibr2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TRAibr1Ibr2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAbrEq1 != 0) && (here-> TRAintNode1 != 0)) {
|
||||
while (here->TRAibr1Int1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TRAibr1Int1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAbrEq1 != 0) && (here-> TRAnegNode1 != 0)) {
|
||||
while (here->TRAibr1Neg1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TRAibr1Neg1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAbrEq1 != 0) && (here-> TRAnegNode2 != 0)) {
|
||||
while (here->TRAibr1Neg2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TRAibr1Neg2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAbrEq1 != 0) && (here-> TRAposNode2 != 0)) {
|
||||
while (here->TRAibr1Pos2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TRAibr1Pos2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAbrEq2 != 0) && (here-> TRAbrEq1 != 0)) {
|
||||
while (here->TRAibr2Ibr1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TRAibr2Ibr1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAbrEq2 != 0) && (here-> TRAintNode2 != 0)) {
|
||||
while (here->TRAibr2Int2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TRAibr2Int2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAbrEq2 != 0) && (here-> TRAnegNode1 != 0)) {
|
||||
while (here->TRAibr2Neg1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TRAibr2Neg1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAbrEq2 != 0) && (here-> TRAnegNode2 != 0)) {
|
||||
while (here->TRAibr2Neg2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TRAibr2Neg2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAbrEq2 != 0) && (here-> TRAposNode1 != 0)) {
|
||||
while (here->TRAibr2Pos1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TRAibr2Pos1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAintNode1 != 0) && (here-> TRAbrEq1 != 0)) {
|
||||
while (here->TRAint1Ibr1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TRAint1Ibr1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAintNode1 != 0) && (here-> TRAintNode1 != 0)) {
|
||||
while (here->TRAint1Int1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TRAint1Int1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAintNode1 != 0) && (here-> TRAposNode1 != 0)) {
|
||||
while (here->TRAint1Pos1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TRAint1Pos1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAintNode2 != 0) && (here-> TRAbrEq2 != 0)) {
|
||||
while (here->TRAint2Ibr2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TRAint2Ibr2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAintNode2 != 0) && (here-> TRAintNode2 != 0)) {
|
||||
while (here->TRAint2Int2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TRAint2Int2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAintNode2 != 0) && (here-> TRAposNode2 != 0)) {
|
||||
while (here->TRAint2Pos2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TRAint2Pos2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAnegNode1 != 0) && (here-> TRAbrEq1 != 0)) {
|
||||
while (here->TRAneg1Ibr1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TRAneg1Ibr1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAnegNode2 != 0) && (here-> TRAbrEq2 != 0)) {
|
||||
while (here->TRAneg2Ibr2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TRAneg2Ibr2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAposNode1 != 0) && (here-> TRAintNode1 != 0)) {
|
||||
while (here->TRApos1Int1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TRApos1Int1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAposNode1 != 0) && (here-> TRAposNode1 != 0)) {
|
||||
while (here->TRApos1Pos1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TRApos1Pos1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAposNode2 != 0) && (here-> TRAintNode2 != 0)) {
|
||||
while (here->TRApos2Int2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TRApos2Int2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAposNode2 != 0) && (here-> TRAposNode2 != 0)) {
|
||||
while (here->TRApos2Pos2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TRApos2Pos2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
TRAbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
TRAmodel *model = (TRAmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the tra models */
|
||||
for( ; model != NULL; model = model->TRAnextModel ) {
|
||||
TRAinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->TRAinstances; here != NULL ;
|
||||
here = here->TRAnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> TRAbrEq1 != 0) && (here-> TRAbrEq2 != 0)) {
|
||||
while (here->TRAibr1Ibr2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TRAibr1Ibr2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAbrEq1 != 0) && (here-> TRAintNode1 != 0)) {
|
||||
while (here->TRAibr1Int1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TRAibr1Int1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAbrEq1 != 0) && (here-> TRAnegNode1 != 0)) {
|
||||
while (here->TRAibr1Neg1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TRAibr1Neg1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAbrEq1 != 0) && (here-> TRAnegNode2 != 0)) {
|
||||
while (here->TRAibr1Neg2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TRAibr1Neg2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAbrEq1 != 0) && (here-> TRAposNode2 != 0)) {
|
||||
while (here->TRAibr1Pos2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TRAibr1Pos2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAbrEq2 != 0) && (here-> TRAbrEq1 != 0)) {
|
||||
while (here->TRAibr2Ibr1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TRAibr2Ibr1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAbrEq2 != 0) && (here-> TRAintNode2 != 0)) {
|
||||
while (here->TRAibr2Int2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TRAibr2Int2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAbrEq2 != 0) && (here-> TRAnegNode1 != 0)) {
|
||||
while (here->TRAibr2Neg1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TRAibr2Neg1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAbrEq2 != 0) && (here-> TRAnegNode2 != 0)) {
|
||||
while (here->TRAibr2Neg2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TRAibr2Neg2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAbrEq2 != 0) && (here-> TRAposNode1 != 0)) {
|
||||
while (here->TRAibr2Pos1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TRAibr2Pos1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAintNode1 != 0) && (here-> TRAbrEq1 != 0)) {
|
||||
while (here->TRAint1Ibr1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TRAint1Ibr1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAintNode1 != 0) && (here-> TRAintNode1 != 0)) {
|
||||
while (here->TRAint1Int1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TRAint1Int1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAintNode1 != 0) && (here-> TRAposNode1 != 0)) {
|
||||
while (here->TRAint1Pos1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TRAint1Pos1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAintNode2 != 0) && (here-> TRAbrEq2 != 0)) {
|
||||
while (here->TRAint2Ibr2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TRAint2Ibr2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAintNode2 != 0) && (here-> TRAintNode2 != 0)) {
|
||||
while (here->TRAint2Int2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TRAint2Int2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAintNode2 != 0) && (here-> TRAposNode2 != 0)) {
|
||||
while (here->TRAint2Pos2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TRAint2Pos2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAnegNode1 != 0) && (here-> TRAbrEq1 != 0)) {
|
||||
while (here->TRAneg1Ibr1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TRAneg1Ibr1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAnegNode2 != 0) && (here-> TRAbrEq2 != 0)) {
|
||||
while (here->TRAneg2Ibr2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TRAneg2Ibr2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAposNode1 != 0) && (here-> TRAintNode1 != 0)) {
|
||||
while (here->TRApos1Int1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TRApos1Int1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAposNode1 != 0) && (here-> TRAposNode1 != 0)) {
|
||||
while (here->TRApos1Pos1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TRApos1Pos1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAposNode2 != 0) && (here-> TRAintNode2 != 0)) {
|
||||
while (here->TRApos2Int2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TRApos2Int2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TRAposNode2 != 0) && (here-> TRAposNode2 != 0)) {
|
||||
while (here->TRApos2Pos2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TRApos2Pos2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -0,0 +1,186 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "txldefs.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
TXLbindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
TXLmodel *model = (TXLmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the txl models */
|
||||
for( ; model != NULL; model = model->TXLnextModel ) {
|
||||
TXLinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->TXLinstances; here != NULL ;
|
||||
here = here->TXLnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> TXLposNode != 0) && (here-> TXLposNode != 0)) {
|
||||
while (here->TXLposPosptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TXLposPosptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TXLposNode != 0) && (here-> TXLnegNode != 0)) {
|
||||
while (here->TXLposNegptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TXLposNegptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TXLnegNode != 0) && (here-> TXLposNode != 0)) {
|
||||
while (here->TXLnegPosptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TXLnegPosptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TXLnegNode != 0) && (here-> TXLnegNode != 0)) {
|
||||
while (here->TXLnegNegptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TXLnegNegptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TXLibr1 != 0) && (here-> TXLposNode != 0)) {
|
||||
while (here->TXLibr1Posptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TXLibr1Posptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TXLibr2 != 0) && (here-> TXLnegNode != 0)) {
|
||||
while (here->TXLibr2Negptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TXLibr2Negptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TXLnegNode != 0) && (here-> TXLibr2 != 0)) {
|
||||
while (here->TXLnegIbr2ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TXLnegIbr2ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TXLposNode != 0) && (here-> TXLibr1 != 0)) {
|
||||
while (here->TXLposIbr1ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TXLposIbr1ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TXLibr1 != 0) && (here-> TXLibr1 != 0)) {
|
||||
while (here->TXLibr1Ibr1ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TXLibr1Ibr1ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TXLibr2 != 0) && (here-> TXLibr2 != 0)) {
|
||||
while (here->TXLibr2Ibr2ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TXLibr2Ibr2ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TXLibr1 != 0) && (here-> TXLnegNode != 0)) {
|
||||
while (here->TXLibr1Negptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TXLibr1Negptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TXLibr2 != 0) && (here-> TXLposNode != 0)) {
|
||||
while (here->TXLibr2Posptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TXLibr2Posptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TXLibr1 != 0) && (here-> TXLibr2 != 0)) {
|
||||
while (here->TXLibr1Ibr2ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TXLibr1Ibr2ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TXLibr2 != 0) && (here-> TXLibr1 != 0)) {
|
||||
while (here->TXLibr2Ibr1ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->TXLibr2Ibr1ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
TXLbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
TXLmodel *model = (TXLmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the txl models */
|
||||
for( ; model != NULL; model = model->TXLnextModel ) {
|
||||
TXLinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->TXLinstances; here != NULL ;
|
||||
here = here->TXLnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> TXLposNode != 0) && (here-> TXLposNode != 0)) {
|
||||
while (here->TXLposPosptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TXLposPosptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TXLposNode != 0) && (here-> TXLnegNode != 0)) {
|
||||
while (here->TXLposNegptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TXLposNegptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TXLnegNode != 0) && (here-> TXLposNode != 0)) {
|
||||
while (here->TXLnegPosptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TXLnegPosptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TXLnegNode != 0) && (here-> TXLnegNode != 0)) {
|
||||
while (here->TXLnegNegptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TXLnegNegptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TXLibr1 != 0) && (here-> TXLposNode != 0)) {
|
||||
while (here->TXLibr1Posptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TXLibr1Posptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TXLibr2 != 0) && (here-> TXLnegNode != 0)) {
|
||||
while (here->TXLibr2Negptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TXLibr2Negptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TXLnegNode != 0) && (here-> TXLibr2 != 0)) {
|
||||
while (here->TXLnegIbr2ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TXLnegIbr2ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TXLposNode != 0) && (here-> TXLibr1 != 0)) {
|
||||
while (here->TXLposIbr1ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TXLposIbr1ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TXLibr1 != 0) && (here-> TXLibr1 != 0)) {
|
||||
while (here->TXLibr1Ibr1ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TXLibr1Ibr1ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TXLibr2 != 0) && (here-> TXLibr2 != 0)) {
|
||||
while (here->TXLibr2Ibr2ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TXLibr2Ibr2ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TXLibr1 != 0) && (here-> TXLnegNode != 0)) {
|
||||
while (here->TXLibr1Negptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TXLibr1Negptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TXLibr2 != 0) && (here-> TXLposNode != 0)) {
|
||||
while (here->TXLibr2Posptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TXLibr2Posptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TXLibr1 != 0) && (here-> TXLibr2 != 0)) {
|
||||
while (here->TXLibr1Ibr2ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TXLibr1Ibr2ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> TXLibr2 != 0) && (here-> TXLibr1 != 0)) {
|
||||
while (here->TXLibr2Ibr1ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->TXLibr2Ibr1ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -0,0 +1,556 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "vbicdefs.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
VBICbindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
VBICmodel *model = (VBICmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the vbic models */
|
||||
for( ; model != NULL; model = model->VBICnextModel ) {
|
||||
VBICinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->VBICinstances; here != NULL ;
|
||||
here = here->VBICnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->VBICcollNode != 0) && (here->VBICcollNode != 0)) {
|
||||
while (here->VBICcollCollPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICcollCollPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseNode != 0) && (here->VBICbaseNode != 0)) {
|
||||
while (here->VBICbaseBasePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICbaseBasePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICemitNode != 0) && (here->VBICemitNode != 0)) {
|
||||
while (here->VBICemitEmitPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICemitEmitPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICsubsNode != 0) && (here->VBICsubsNode != 0)) {
|
||||
while (here->VBICsubsSubsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICsubsSubsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICcollCXNode != 0) && (here->VBICcollCXNode != 0)) {
|
||||
while (here->VBICcollCXCollCXPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICcollCXCollCXPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICcollCINode != 0) && (here->VBICcollCINode != 0)) {
|
||||
while (here->VBICcollCICollCIPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICcollCICollCIPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBXNode != 0) && (here->VBICbaseBXNode != 0)) {
|
||||
while (here->VBICbaseBXBaseBXPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICbaseBXBaseBXPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBINode != 0) && (here->VBICbaseBINode != 0)) {
|
||||
while (here->VBICbaseBIBaseBIPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICbaseBIBaseBIPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICemitEINode != 0) && (here->VBICemitEINode != 0)) {
|
||||
while (here->VBICemitEIEmitEIPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICemitEIEmitEIPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBPNode != 0) && (here->VBICbaseBPNode != 0)) {
|
||||
while (here->VBICbaseBPBaseBPPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICbaseBPBaseBPPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICsubsSINode != 0) && (here->VBICsubsSINode != 0)) {
|
||||
while (here->VBICsubsSISubsSIPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICsubsSISubsSIPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseNode != 0) && (here->VBICemitNode != 0)) {
|
||||
while (here->VBICbaseEmitPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICbaseEmitPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICemitNode != 0) && (here->VBICbaseNode != 0)) {
|
||||
while (here->VBICemitBasePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICemitBasePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseNode != 0) && (here->VBICcollNode != 0)) {
|
||||
while (here->VBICbaseCollPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICbaseCollPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICcollNode != 0) && (here->VBICbaseNode != 0)) {
|
||||
while (here->VBICcollBasePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICcollBasePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICcollNode != 0) && (here->VBICcollCXNode != 0)) {
|
||||
while (here->VBICcollCollCXPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICcollCollCXPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseNode != 0) && (here->VBICbaseBXNode != 0)) {
|
||||
while (here->VBICbaseBaseBXPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICbaseBaseBXPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICemitNode != 0) && (here->VBICemitEINode != 0)) {
|
||||
while (here->VBICemitEmitEIPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICemitEmitEIPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICsubsNode != 0) && (here->VBICsubsSINode != 0)) {
|
||||
while (here->VBICsubsSubsSIPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICsubsSubsSIPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICcollCXNode != 0) && (here->VBICcollCINode != 0)) {
|
||||
while (here->VBICcollCXCollCIPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICcollCXCollCIPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICcollCXNode != 0) && (here->VBICbaseBXNode != 0)) {
|
||||
while (here->VBICcollCXBaseBXPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICcollCXBaseBXPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICcollCXNode != 0) && (here->VBICbaseBINode != 0)) {
|
||||
while (here->VBICcollCXBaseBIPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICcollCXBaseBIPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICcollCXNode != 0) && (here->VBICbaseBPNode != 0)) {
|
||||
while (here->VBICcollCXBaseBPPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICcollCXBaseBPPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICcollCINode != 0) && (here->VBICbaseBINode != 0)) {
|
||||
while (here->VBICcollCIBaseBIPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICcollCIBaseBIPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICcollCINode != 0) && (here->VBICemitEINode != 0)) {
|
||||
while (here->VBICcollCIEmitEIPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICcollCIEmitEIPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBXNode != 0) && (here->VBICbaseBINode != 0)) {
|
||||
while (here->VBICbaseBXBaseBIPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICbaseBXBaseBIPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBXNode != 0) && (here->VBICemitEINode != 0)) {
|
||||
while (here->VBICbaseBXEmitEIPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICbaseBXEmitEIPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBXNode != 0) && (here->VBICbaseBPNode != 0)) {
|
||||
while (here->VBICbaseBXBaseBPPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICbaseBXBaseBPPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBXNode != 0) && (here->VBICsubsSINode != 0)) {
|
||||
while (here->VBICbaseBXSubsSIPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICbaseBXSubsSIPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBINode != 0) && (here->VBICemitEINode != 0)) {
|
||||
while (here->VBICbaseBIEmitEIPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICbaseBIEmitEIPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBPNode != 0) && (here->VBICsubsSINode != 0)) {
|
||||
while (here->VBICbaseBPSubsSIPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICbaseBPSubsSIPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICcollCXNode != 0) && (here->VBICcollNode != 0)) {
|
||||
while (here->VBICcollCXCollPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICcollCXCollPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBXNode != 0) && (here->VBICbaseNode != 0)) {
|
||||
while (here->VBICbaseBXBasePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICbaseBXBasePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICemitEINode != 0) && (here->VBICemitNode != 0)) {
|
||||
while (here->VBICemitEIEmitPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICemitEIEmitPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICsubsSINode != 0) && (here->VBICsubsNode != 0)) {
|
||||
while (here->VBICsubsSISubsPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICsubsSISubsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICcollCINode != 0) && (here->VBICcollCXNode != 0)) {
|
||||
while (here->VBICcollCICollCXPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICcollCICollCXPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBINode != 0) && (here->VBICcollCXNode != 0)) {
|
||||
while (here->VBICbaseBICollCXPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICbaseBICollCXPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBPNode != 0) && (here->VBICcollCXNode != 0)) {
|
||||
while (here->VBICbaseBPCollCXPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICbaseBPCollCXPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBXNode != 0) && (here->VBICcollCINode != 0)) {
|
||||
while (here->VBICbaseBXCollCIPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICbaseBXCollCIPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBINode != 0) && (here->VBICcollCINode != 0)) {
|
||||
while (here->VBICbaseBICollCIPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICbaseBICollCIPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICemitEINode != 0) && (here->VBICcollCINode != 0)) {
|
||||
while (here->VBICemitEICollCIPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICemitEICollCIPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBPNode != 0) && (here->VBICcollCINode != 0)) {
|
||||
while (here->VBICbaseBPCollCIPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICbaseBPCollCIPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBINode != 0) && (here->VBICbaseBXNode != 0)) {
|
||||
while (here->VBICbaseBIBaseBXPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICbaseBIBaseBXPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICemitEINode != 0) && (here->VBICbaseBXNode != 0)) {
|
||||
while (here->VBICemitEIBaseBXPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICemitEIBaseBXPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBPNode != 0) && (here->VBICbaseBXNode != 0)) {
|
||||
while (here->VBICbaseBPBaseBXPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICbaseBPBaseBXPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICsubsSINode != 0) && (here->VBICbaseBXNode != 0)) {
|
||||
while (here->VBICsubsSIBaseBXPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICsubsSIBaseBXPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICemitEINode != 0) && (here->VBICbaseBINode != 0)) {
|
||||
while (here->VBICemitEIBaseBIPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICemitEIBaseBIPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBPNode != 0) && (here->VBICbaseBINode != 0)) {
|
||||
while (here->VBICbaseBPBaseBIPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICbaseBPBaseBIPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICsubsSINode != 0) && (here->VBICcollCINode != 0)) {
|
||||
while (here->VBICsubsSICollCIPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICsubsSICollCIPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICsubsSINode != 0) && (here->VBICbaseBINode != 0)) {
|
||||
while (here->VBICsubsSIBaseBIPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICsubsSIBaseBIPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICsubsSINode != 0) && (here->VBICbaseBPNode != 0)) {
|
||||
while (here->VBICsubsSIBaseBPPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VBICsubsSIBaseBPPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
VBICbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
VBICmodel *model = (VBICmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the vbic models */
|
||||
for( ; model != NULL; model = model->VBICnextModel ) {
|
||||
VBICinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->VBICinstances; here != NULL ;
|
||||
here = here->VBICnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->VBICcollNode != 0) && (here->VBICcollNode != 0)) {
|
||||
while (here->VBICcollCollPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICcollCollPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseNode != 0) && (here->VBICbaseNode != 0)) {
|
||||
while (here->VBICbaseBasePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICbaseBasePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICemitNode != 0) && (here->VBICemitNode != 0)) {
|
||||
while (here->VBICemitEmitPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICemitEmitPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICsubsNode != 0) && (here->VBICsubsNode != 0)) {
|
||||
while (here->VBICsubsSubsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICsubsSubsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICcollCXNode != 0) && (here->VBICcollCXNode != 0)) {
|
||||
while (here->VBICcollCXCollCXPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICcollCXCollCXPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICcollCINode != 0) && (here->VBICcollCINode != 0)) {
|
||||
while (here->VBICcollCICollCIPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICcollCICollCIPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBXNode != 0) && (here->VBICbaseBXNode != 0)) {
|
||||
while (here->VBICbaseBXBaseBXPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICbaseBXBaseBXPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBINode != 0) && (here->VBICbaseBINode != 0)) {
|
||||
while (here->VBICbaseBIBaseBIPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICbaseBIBaseBIPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICemitEINode != 0) && (here->VBICemitEINode != 0)) {
|
||||
while (here->VBICemitEIEmitEIPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICemitEIEmitEIPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBPNode != 0) && (here->VBICbaseBPNode != 0)) {
|
||||
while (here->VBICbaseBPBaseBPPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICbaseBPBaseBPPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICsubsSINode != 0) && (here->VBICsubsSINode != 0)) {
|
||||
while (here->VBICsubsSISubsSIPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICsubsSISubsSIPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseNode != 0) && (here->VBICemitNode != 0)) {
|
||||
while (here->VBICbaseEmitPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICbaseEmitPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICemitNode != 0) && (here->VBICbaseNode != 0)) {
|
||||
while (here->VBICemitBasePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICemitBasePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseNode != 0) && (here->VBICcollNode != 0)) {
|
||||
while (here->VBICbaseCollPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICbaseCollPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICcollNode != 0) && (here->VBICbaseNode != 0)) {
|
||||
while (here->VBICcollBasePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICcollBasePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICcollNode != 0) && (here->VBICcollCXNode != 0)) {
|
||||
while (here->VBICcollCollCXPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICcollCollCXPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseNode != 0) && (here->VBICbaseBXNode != 0)) {
|
||||
while (here->VBICbaseBaseBXPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICbaseBaseBXPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICemitNode != 0) && (here->VBICemitEINode != 0)) {
|
||||
while (here->VBICemitEmitEIPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICemitEmitEIPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICsubsNode != 0) && (here->VBICsubsSINode != 0)) {
|
||||
while (here->VBICsubsSubsSIPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICsubsSubsSIPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICcollCXNode != 0) && (here->VBICcollCINode != 0)) {
|
||||
while (here->VBICcollCXCollCIPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICcollCXCollCIPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICcollCXNode != 0) && (here->VBICbaseBXNode != 0)) {
|
||||
while (here->VBICcollCXBaseBXPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICcollCXBaseBXPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICcollCXNode != 0) && (here->VBICbaseBINode != 0)) {
|
||||
while (here->VBICcollCXBaseBIPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICcollCXBaseBIPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICcollCXNode != 0) && (here->VBICbaseBPNode != 0)) {
|
||||
while (here->VBICcollCXBaseBPPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICcollCXBaseBPPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICcollCINode != 0) && (here->VBICbaseBINode != 0)) {
|
||||
while (here->VBICcollCIBaseBIPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICcollCIBaseBIPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICcollCINode != 0) && (here->VBICemitEINode != 0)) {
|
||||
while (here->VBICcollCIEmitEIPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICcollCIEmitEIPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBXNode != 0) && (here->VBICbaseBINode != 0)) {
|
||||
while (here->VBICbaseBXBaseBIPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICbaseBXBaseBIPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBXNode != 0) && (here->VBICemitEINode != 0)) {
|
||||
while (here->VBICbaseBXEmitEIPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICbaseBXEmitEIPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBXNode != 0) && (here->VBICbaseBPNode != 0)) {
|
||||
while (here->VBICbaseBXBaseBPPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICbaseBXBaseBPPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBXNode != 0) && (here->VBICsubsSINode != 0)) {
|
||||
while (here->VBICbaseBXSubsSIPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICbaseBXSubsSIPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBINode != 0) && (here->VBICemitEINode != 0)) {
|
||||
while (here->VBICbaseBIEmitEIPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICbaseBIEmitEIPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBPNode != 0) && (here->VBICsubsSINode != 0)) {
|
||||
while (here->VBICbaseBPSubsSIPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICbaseBPSubsSIPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICcollCXNode != 0) && (here->VBICcollNode != 0)) {
|
||||
while (here->VBICcollCXCollPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICcollCXCollPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBXNode != 0) && (here->VBICbaseNode != 0)) {
|
||||
while (here->VBICbaseBXBasePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICbaseBXBasePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICemitEINode != 0) && (here->VBICemitNode != 0)) {
|
||||
while (here->VBICemitEIEmitPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICemitEIEmitPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICsubsSINode != 0) && (here->VBICsubsNode != 0)) {
|
||||
while (here->VBICsubsSISubsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICsubsSISubsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICcollCINode != 0) && (here->VBICcollCXNode != 0)) {
|
||||
while (here->VBICcollCICollCXPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICcollCICollCXPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBINode != 0) && (here->VBICcollCXNode != 0)) {
|
||||
while (here->VBICbaseBICollCXPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICbaseBICollCXPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBPNode != 0) && (here->VBICcollCXNode != 0)) {
|
||||
while (here->VBICbaseBPCollCXPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICbaseBPCollCXPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBXNode != 0) && (here->VBICcollCINode != 0)) {
|
||||
while (here->VBICbaseBXCollCIPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICbaseBXCollCIPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBINode != 0) && (here->VBICcollCINode != 0)) {
|
||||
while (here->VBICbaseBICollCIPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICbaseBICollCIPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICemitEINode != 0) && (here->VBICcollCINode != 0)) {
|
||||
while (here->VBICemitEICollCIPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICemitEICollCIPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBPNode != 0) && (here->VBICcollCINode != 0)) {
|
||||
while (here->VBICbaseBPCollCIPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICbaseBPCollCIPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBINode != 0) && (here->VBICbaseBXNode != 0)) {
|
||||
while (here->VBICbaseBIBaseBXPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICbaseBIBaseBXPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICemitEINode != 0) && (here->VBICbaseBXNode != 0)) {
|
||||
while (here->VBICemitEIBaseBXPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICemitEIBaseBXPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBPNode != 0) && (here->VBICbaseBXNode != 0)) {
|
||||
while (here->VBICbaseBPBaseBXPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICbaseBPBaseBXPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICsubsSINode != 0) && (here->VBICbaseBXNode != 0)) {
|
||||
while (here->VBICsubsSIBaseBXPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICsubsSIBaseBXPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICemitEINode != 0) && (here->VBICbaseBINode != 0)) {
|
||||
while (here->VBICemitEIBaseBIPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICemitEIBaseBIPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICbaseBPNode != 0) && (here->VBICbaseBINode != 0)) {
|
||||
while (here->VBICbaseBPBaseBIPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICbaseBPBaseBIPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICsubsSINode != 0) && (here->VBICcollCINode != 0)) {
|
||||
while (here->VBICsubsSICollCIPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICsubsSICollCIPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICsubsSINode != 0) && (here->VBICbaseBINode != 0)) {
|
||||
while (here->VBICsubsSIBaseBIPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICsubsSIBaseBIPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here->VBICsubsSINode != 0) && (here->VBICbaseBPNode != 0)) {
|
||||
while (here->VBICsubsSIBaseBPPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VBICsubsSIBaseBPPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -0,0 +1,86 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "vccsdefs.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
VCCSbindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
VCCSmodel *model = (VCCSmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the vccs models */
|
||||
for( ; model != NULL; model = model->VCCSnextModel ) {
|
||||
VCCSinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->VCCSinstances; here != NULL ;
|
||||
here = here->VCCSnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> VCCSposNode != 0) && (here-> VCCScontPosNode != 0)) {
|
||||
while (here->VCCSposContPosptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VCCSposContPosptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> VCCSposNode != 0) && (here-> VCCScontNegNode != 0)) {
|
||||
while (here->VCCSposContNegptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VCCSposContNegptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> VCCSnegNode != 0) && (here-> VCCScontPosNode != 0)) {
|
||||
while (here->VCCSnegContPosptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VCCSnegContPosptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> VCCSnegNode != 0) && (here-> VCCScontNegNode != 0)) {
|
||||
while (here->VCCSnegContNegptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VCCSnegContNegptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
VCCSbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
VCCSmodel *model = (VCCSmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the vccs models */
|
||||
for( ; model != NULL; model = model->VCCSnextModel ) {
|
||||
VCCSinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->VCCSinstances; here != NULL ;
|
||||
here = here->VCCSnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> VCCSposNode != 0) && (here-> VCCScontPosNode != 0)) {
|
||||
while (here->VCCSposContPosptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VCCSposContPosptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> VCCSposNode != 0) && (here-> VCCScontNegNode != 0)) {
|
||||
while (here->VCCSposContNegptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VCCSposContNegptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> VCCSnegNode != 0) && (here-> VCCScontPosNode != 0)) {
|
||||
while (here->VCCSnegContPosptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VCCSnegContPosptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> VCCSnegNode != 0) && (here-> VCCScontNegNode != 0)) {
|
||||
while (here->VCCSnegContNegptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VCCSnegContNegptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -0,0 +1,106 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
#include "ngspice/cktdefs.h"
|
||||
#include "vcvsdefs.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
VCVSbindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
VCVSmodel *model = (VCVSmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the vcvs models */
|
||||
for( ; model != NULL; model = model->VCVSnextModel ) {
|
||||
VCVSinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->VCVSinstances; here != NULL ;
|
||||
here = here->VCVSnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> VCVSposNode != 0) && (here-> VCVSbranch != 0)) {
|
||||
while (here->VCVSposIbrptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VCVSposIbrptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> VCVSnegNode != 0) && (here-> VCVSbranch != 0)) {
|
||||
while (here->VCVSnegIbrptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VCVSnegIbrptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> VCVSbranch != 0) && (here-> VCVSnegNode != 0)) {
|
||||
while (here->VCVSibrNegptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VCVSibrNegptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> VCVSbranch != 0) && (here-> VCVSposNode != 0)) {
|
||||
while (here->VCVSibrPosptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VCVSibrPosptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> VCVSbranch != 0) && (here-> VCVScontPosNode != 0)) {
|
||||
while (here->VCVSibrContPosptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VCVSibrContPosptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> VCVSbranch != 0) && (here-> VCVScontNegNode != 0)) {
|
||||
while (here->VCVSibrContNegptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VCVSibrContNegptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
VCVSbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
VCVSmodel *model = (VCVSmodel *)inModel;
|
||||
int i ;
|
||||
|
||||
/* loop through all the vcvs models */
|
||||
for( ; model != NULL; model = model->VCVSnextModel ) {
|
||||
VCVSinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->VCVSinstances; here != NULL ;
|
||||
here = here->VCVSnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> VCVSposNode != 0) && (here-> VCVSbranch != 0)) {
|
||||
while (here->VCVSposIbrptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VCVSposIbrptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> VCVSnegNode != 0) && (here-> VCVSbranch != 0)) {
|
||||
while (here->VCVSnegIbrptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VCVSnegIbrptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> VCVSbranch != 0) && (here-> VCVSnegNode != 0)) {
|
||||
while (here->VCVSibrNegptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VCVSibrNegptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> VCVSbranch != 0) && (here-> VCVSposNode != 0)) {
|
||||
while (here->VCVSibrPosptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VCVSibrPosptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> VCVSbranch != 0) && (here-> VCVScontPosNode != 0)) {
|
||||
while (here->VCVSibrContPosptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VCVSibrContPosptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
i = 0 ;
|
||||
if ((here-> VCVSbranch != 0) && (here-> VCVScontNegNode != 0)) {
|
||||
while (here->VCVSibrContNegptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VCVSibrContNegptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
}
|
||||
|
|
@ -8,7 +8,7 @@ Author: 2012 Francesco Lannutti
|
|||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
VSRCbindklu(GENmodel *inModel, CKTcircuit *ckt)
|
||||
VSRCbindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
VSRCmodel *model = (VSRCmodel *)inModel;
|
||||
int i ;
|
||||
|
|
@ -23,26 +23,26 @@ VSRCbindklu(GENmodel *inModel, CKTcircuit *ckt)
|
|||
|
||||
i = 0 ;
|
||||
if ((here->VSRCposNode != 0) && (here->VSRCbranch != 0)) {
|
||||
while (here->VSRCposIbrptr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->VSRCposIbrptr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
while (here->VSRCposIbrptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VSRCposIbrptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->VSRCnegNode != 0) && (here->VSRCbranch != 0)) {
|
||||
while (here->VSRCnegIbrptr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->VSRCnegIbrptr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
while (here->VSRCnegIbrptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VSRCnegIbrptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->VSRCbranch != 0) && (here->VSRCnegNode != 0)) {
|
||||
while (here->VSRCibrNegptr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->VSRCibrNegptr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
while (here->VSRCibrNegptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VSRCibrNegptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->VSRCbranch != 0) && (here->VSRCposNode != 0)) {
|
||||
while (here->VSRCibrPosptr != ckt->CKTmatrix->CKTkluBind_Sparse [i]) i ++ ;
|
||||
here->VSRCibrPosptr = ckt->CKTmatrix->CKTkluBind_KLU [i] ;
|
||||
while (here->VSRCibrPosptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->VSRCibrPosptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -50,7 +50,7 @@ VSRCbindklu(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
|
||||
int
|
||||
VSRCbindkluComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
VSRCbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
VSRCmodel *model = (VSRCmodel *)inModel;
|
||||
int i ;
|
||||
|
|
@ -65,26 +65,26 @@ VSRCbindkluComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
|
||||
i = 0 ;
|
||||
if ((here->VSRCposNode != 0) && (here->VSRCbranch != 0)) {
|
||||
while (here->VSRCposIbrptr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->VSRCposIbrptr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
while (here->VSRCposIbrptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VSRCposIbrptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->VSRCnegNode != 0) && (here->VSRCbranch != 0)) {
|
||||
while (here->VSRCnegIbrptr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->VSRCnegIbrptr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
while (here->VSRCnegIbrptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VSRCnegIbrptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->VSRCbranch != 0) && (here->VSRCnegNode != 0)) {
|
||||
while (here->VSRCibrNegptr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->VSRCibrNegptr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
while (here->VSRCibrNegptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VSRCibrNegptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->VSRCbranch != 0) && (here->VSRCposNode != 0)) {
|
||||
while (here->VSRCibrPosptr != ckt->CKTmatrix->CKTkluBind_KLU [i]) i ++ ;
|
||||
here->VSRCibrPosptr = ckt->CKTmatrix->CKTkluBind_KLU_Complex [i] ;
|
||||
while (here->VSRCibrPosptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->VSRCibrPosptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue