New Binding Method extended to BSIM2 device
This commit is contained in:
parent
cb424bd94b
commit
7717c748d9
|
|
@ -1,5 +1,5 @@
|
||||||
/**********
|
/**********
|
||||||
Author: 2012 Francesco Lannutti
|
Author: 2013 Francesco Lannutti
|
||||||
**********/
|
**********/
|
||||||
|
|
||||||
#include "ngspice/ngspice.h"
|
#include "ngspice/ngspice.h"
|
||||||
|
|
@ -7,304 +7,303 @@ Author: 2012 Francesco Lannutti
|
||||||
#include "bsim2def.h"
|
#include "bsim2def.h"
|
||||||
#include "ngspice/sperror.h"
|
#include "ngspice/sperror.h"
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
static
|
||||||
int
|
int
|
||||||
B2bindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
BindCompare (const void *a, const void *b)
|
||||||
{
|
{
|
||||||
B2model *model = (B2model *)inModel;
|
BindElement *A, *B ;
|
||||||
int i ;
|
A = (BindElement *)a ;
|
||||||
|
B = (BindElement *)b ;
|
||||||
|
|
||||||
/* loop through all the b2 models */
|
return ((int)(A->Sparse - B->Sparse)) ;
|
||||||
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
|
int
|
||||||
B2bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
B2bindCSC (GENmodel *inModel, CKTcircuit *ckt)
|
||||||
{
|
{
|
||||||
B2model *model = (B2model *)inModel;
|
B2model *model = (B2model *)inModel ;
|
||||||
int i ;
|
B2instance *here ;
|
||||||
|
double *i ;
|
||||||
|
BindElement *matched, *BindStruct ;
|
||||||
|
size_t nz ;
|
||||||
|
|
||||||
/* loop through all the b2 models */
|
BindStruct = ckt->CKTmatrix->CKTbindStruct ;
|
||||||
for( ; model != NULL; model = model->B2nextModel ) {
|
nz = (size_t)ckt->CKTmatrix->CKTklunz ;
|
||||||
B2instance *here;
|
|
||||||
|
|
||||||
|
/* loop through all the B2 models */
|
||||||
|
for ( ; model != NULL ; model = model->B2nextModel)
|
||||||
|
{
|
||||||
/* loop through all the instances of the model */
|
/* loop through all the instances of the model */
|
||||||
for (here = model->B2instances; here != NULL ;
|
for (here = model->B2instances ; here != NULL ; here = here->B2nextInstance)
|
||||||
here = here->B2nextInstance) {
|
{
|
||||||
|
if ((here-> B2dNode != 0) && (here-> B2dNode != 0))
|
||||||
|
{
|
||||||
|
i = here->B2DdPtr ;
|
||||||
|
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||||
|
here->B2DdStructPtr = matched ;
|
||||||
|
here->B2DdPtr = matched->CSC ;
|
||||||
|
}
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2gNode != 0) && (here-> B2gNode != 0))
|
||||||
if ((here-> B2dNode != 0) && (here-> B2dNode != 0)) {
|
{
|
||||||
while (here->B2DdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
i = here->B2GgPtr ;
|
||||||
here->B2DdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||||
}
|
here->B2GgStructPtr = matched ;
|
||||||
|
here->B2GgPtr = matched->CSC ;
|
||||||
|
}
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2sNode != 0) && (here-> B2sNode != 0))
|
||||||
if ((here-> B2gNode != 0) && (here-> B2gNode != 0)) {
|
{
|
||||||
while (here->B2GgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
i = here->B2SsPtr ;
|
||||||
here->B2GgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||||
}
|
here->B2SsStructPtr = matched ;
|
||||||
|
here->B2SsPtr = matched->CSC ;
|
||||||
|
}
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2bNode != 0) && (here-> B2bNode != 0))
|
||||||
if ((here-> B2sNode != 0) && (here-> B2sNode != 0)) {
|
{
|
||||||
while (here->B2SsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
i = here->B2BbPtr ;
|
||||||
here->B2SsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||||
}
|
here->B2BbStructPtr = matched ;
|
||||||
|
here->B2BbPtr = matched->CSC ;
|
||||||
|
}
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2dNodePrime != 0) && (here-> B2dNodePrime != 0))
|
||||||
if ((here-> B2bNode != 0) && (here-> B2bNode != 0)) {
|
{
|
||||||
while (here->B2BbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
i = here->B2DPdpPtr ;
|
||||||
here->B2BbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||||
}
|
here->B2DPdpStructPtr = matched ;
|
||||||
|
here->B2DPdpPtr = matched->CSC ;
|
||||||
|
}
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2sNodePrime != 0) && (here-> B2sNodePrime != 0))
|
||||||
if ((here-> B2dNodePrime != 0) && (here-> B2dNodePrime != 0)) {
|
{
|
||||||
while (here->B2DPdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
i = here->B2SPspPtr ;
|
||||||
here->B2DPdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||||
}
|
here->B2SPspStructPtr = matched ;
|
||||||
|
here->B2SPspPtr = matched->CSC ;
|
||||||
|
}
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2dNode != 0) && (here-> B2dNodePrime != 0))
|
||||||
if ((here-> B2sNodePrime != 0) && (here-> B2sNodePrime != 0)) {
|
{
|
||||||
while (here->B2SPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
i = here->B2DdpPtr ;
|
||||||
here->B2SPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||||
}
|
here->B2DdpStructPtr = matched ;
|
||||||
|
here->B2DdpPtr = matched->CSC ;
|
||||||
|
}
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2gNode != 0) && (here-> B2bNode != 0))
|
||||||
if ((here-> B2dNode != 0) && (here-> B2dNodePrime != 0)) {
|
{
|
||||||
while (here->B2DdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
i = here->B2GbPtr ;
|
||||||
here->B2DdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||||
}
|
here->B2GbStructPtr = matched ;
|
||||||
|
here->B2GbPtr = matched->CSC ;
|
||||||
|
}
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2gNode != 0) && (here-> B2dNodePrime != 0))
|
||||||
if ((here-> B2gNode != 0) && (here-> B2bNode != 0)) {
|
{
|
||||||
while (here->B2GbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
i = here->B2GdpPtr ;
|
||||||
here->B2GbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||||
}
|
here->B2GdpStructPtr = matched ;
|
||||||
|
here->B2GdpPtr = matched->CSC ;
|
||||||
|
}
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2gNode != 0) && (here-> B2sNodePrime != 0))
|
||||||
if ((here-> B2gNode != 0) && (here-> B2dNodePrime != 0)) {
|
{
|
||||||
while (here->B2GdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
i = here->B2GspPtr ;
|
||||||
here->B2GdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||||
}
|
here->B2GspStructPtr = matched ;
|
||||||
|
here->B2GspPtr = matched->CSC ;
|
||||||
|
}
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2sNode != 0) && (here-> B2sNodePrime != 0))
|
||||||
if ((here-> B2gNode != 0) && (here-> B2sNodePrime != 0)) {
|
{
|
||||||
while (here->B2GspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
i = here->B2SspPtr ;
|
||||||
here->B2GspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||||
}
|
here->B2SspStructPtr = matched ;
|
||||||
|
here->B2SspPtr = matched->CSC ;
|
||||||
|
}
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2bNode != 0) && (here-> B2dNodePrime != 0))
|
||||||
if ((here-> B2sNode != 0) && (here-> B2sNodePrime != 0)) {
|
{
|
||||||
while (here->B2SspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
i = here->B2BdpPtr ;
|
||||||
here->B2SspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||||
}
|
here->B2BdpStructPtr = matched ;
|
||||||
|
here->B2BdpPtr = matched->CSC ;
|
||||||
|
}
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2bNode != 0) && (here-> B2sNodePrime != 0))
|
||||||
if ((here-> B2bNode != 0) && (here-> B2dNodePrime != 0)) {
|
{
|
||||||
while (here->B2BdpPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
i = here->B2BspPtr ;
|
||||||
here->B2BdpPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||||
}
|
here->B2BspStructPtr = matched ;
|
||||||
|
here->B2BspPtr = matched->CSC ;
|
||||||
|
}
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2dNodePrime != 0) && (here-> B2sNodePrime != 0))
|
||||||
if ((here-> B2bNode != 0) && (here-> B2sNodePrime != 0)) {
|
{
|
||||||
while (here->B2BspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
i = here->B2DPspPtr ;
|
||||||
here->B2BspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||||
}
|
here->B2DPspStructPtr = matched ;
|
||||||
|
here->B2DPspPtr = matched->CSC ;
|
||||||
|
}
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2dNodePrime != 0) && (here-> B2dNode != 0))
|
||||||
if ((here-> B2dNodePrime != 0) && (here-> B2sNodePrime != 0)) {
|
{
|
||||||
while (here->B2DPspPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
i = here->B2DPdPtr ;
|
||||||
here->B2DPspPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||||
}
|
here->B2DPdStructPtr = matched ;
|
||||||
|
here->B2DPdPtr = matched->CSC ;
|
||||||
|
}
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2bNode != 0) && (here-> B2gNode != 0))
|
||||||
if ((here-> B2dNodePrime != 0) && (here-> B2dNode != 0)) {
|
{
|
||||||
while (here->B2DPdPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
i = here->B2BgPtr ;
|
||||||
here->B2DPdPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||||
}
|
here->B2BgStructPtr = matched ;
|
||||||
|
here->B2BgPtr = matched->CSC ;
|
||||||
|
}
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2dNodePrime != 0) && (here-> B2gNode != 0))
|
||||||
if ((here-> B2bNode != 0) && (here-> B2gNode != 0)) {
|
{
|
||||||
while (here->B2BgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
i = here->B2DPgPtr ;
|
||||||
here->B2BgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||||
}
|
here->B2DPgStructPtr = matched ;
|
||||||
|
here->B2DPgPtr = matched->CSC ;
|
||||||
|
}
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2sNodePrime != 0) && (here-> B2gNode != 0))
|
||||||
if ((here-> B2dNodePrime != 0) && (here-> B2gNode != 0)) {
|
{
|
||||||
while (here->B2DPgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
i = here->B2SPgPtr ;
|
||||||
here->B2DPgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||||
}
|
here->B2SPgStructPtr = matched ;
|
||||||
|
here->B2SPgPtr = matched->CSC ;
|
||||||
|
}
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2sNodePrime != 0) && (here-> B2sNode != 0))
|
||||||
if ((here-> B2sNodePrime != 0) && (here-> B2gNode != 0)) {
|
{
|
||||||
while (here->B2SPgPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
i = here->B2SPsPtr ;
|
||||||
here->B2SPgPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||||
}
|
here->B2SPsStructPtr = matched ;
|
||||||
|
here->B2SPsPtr = matched->CSC ;
|
||||||
|
}
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2dNodePrime != 0) && (here-> B2bNode != 0))
|
||||||
if ((here-> B2sNodePrime != 0) && (here-> B2sNode != 0)) {
|
{
|
||||||
while (here->B2SPsPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
i = here->B2DPbPtr ;
|
||||||
here->B2SPsPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||||
}
|
here->B2DPbStructPtr = matched ;
|
||||||
|
here->B2DPbPtr = matched->CSC ;
|
||||||
|
}
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2sNodePrime != 0) && (here-> B2bNode != 0))
|
||||||
if ((here-> B2dNodePrime != 0) && (here-> B2bNode != 0)) {
|
{
|
||||||
while (here->B2DPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
i = here->B2SPbPtr ;
|
||||||
here->B2DPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||||
}
|
here->B2SPbStructPtr = matched ;
|
||||||
|
here->B2SPbPtr = matched->CSC ;
|
||||||
|
}
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2sNodePrime != 0) && (here-> B2dNodePrime != 0))
|
||||||
if ((here-> B2sNodePrime != 0) && (here-> B2bNode != 0)) {
|
{
|
||||||
while (here->B2SPbPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
i = here->B2SPdpPtr ;
|
||||||
here->B2SPbPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||||
}
|
here->B2SPdpStructPtr = matched ;
|
||||||
|
here->B2SPdpPtr = matched->CSC ;
|
||||||
|
}
|
||||||
|
|
||||||
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);
|
|
||||||
|
return (OK) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
B2bindCSCComplex (GENmodel *inModel, CKTcircuit *ckt)
|
||||||
|
{
|
||||||
|
B2model *model = (B2model *)inModel ;
|
||||||
|
B2instance *here ;
|
||||||
|
|
||||||
|
NG_IGNORE (ckt) ;
|
||||||
|
|
||||||
|
/* loop through all the B2 models */
|
||||||
|
for ( ; model != NULL ; model = model->B2nextModel)
|
||||||
|
{
|
||||||
|
/* loop through all the instances of the model */
|
||||||
|
for (here = model->B2instances ; here != NULL ; here = here->B2nextInstance)
|
||||||
|
{
|
||||||
|
if ((here-> B2dNode != 0) && (here-> B2dNode != 0))
|
||||||
|
here->B2DdPtr = here->B2DdStructPtr->CSC_Complex ;
|
||||||
|
|
||||||
|
if ((here-> B2gNode != 0) && (here-> B2gNode != 0))
|
||||||
|
here->B2GgPtr = here->B2GgStructPtr->CSC_Complex ;
|
||||||
|
|
||||||
|
if ((here-> B2sNode != 0) && (here-> B2sNode != 0))
|
||||||
|
here->B2SsPtr = here->B2SsStructPtr->CSC_Complex ;
|
||||||
|
|
||||||
|
if ((here-> B2bNode != 0) && (here-> B2bNode != 0))
|
||||||
|
here->B2BbPtr = here->B2BbStructPtr->CSC_Complex ;
|
||||||
|
|
||||||
|
if ((here-> B2dNodePrime != 0) && (here-> B2dNodePrime != 0))
|
||||||
|
here->B2DPdpPtr = here->B2DPdpStructPtr->CSC_Complex ;
|
||||||
|
|
||||||
|
if ((here-> B2sNodePrime != 0) && (here-> B2sNodePrime != 0))
|
||||||
|
here->B2SPspPtr = here->B2SPspStructPtr->CSC_Complex ;
|
||||||
|
|
||||||
|
if ((here-> B2dNode != 0) && (here-> B2dNodePrime != 0))
|
||||||
|
here->B2DdpPtr = here->B2DdpStructPtr->CSC_Complex ;
|
||||||
|
|
||||||
|
if ((here-> B2gNode != 0) && (here-> B2bNode != 0))
|
||||||
|
here->B2GbPtr = here->B2GbStructPtr->CSC_Complex ;
|
||||||
|
|
||||||
|
if ((here-> B2gNode != 0) && (here-> B2dNodePrime != 0))
|
||||||
|
here->B2GdpPtr = here->B2GdpStructPtr->CSC_Complex ;
|
||||||
|
|
||||||
|
if ((here-> B2gNode != 0) && (here-> B2sNodePrime != 0))
|
||||||
|
here->B2GspPtr = here->B2GspStructPtr->CSC_Complex ;
|
||||||
|
|
||||||
|
if ((here-> B2sNode != 0) && (here-> B2sNodePrime != 0))
|
||||||
|
here->B2SspPtr = here->B2SspStructPtr->CSC_Complex ;
|
||||||
|
|
||||||
|
if ((here-> B2bNode != 0) && (here-> B2dNodePrime != 0))
|
||||||
|
here->B2BdpPtr = here->B2BdpStructPtr->CSC_Complex ;
|
||||||
|
|
||||||
|
if ((here-> B2bNode != 0) && (here-> B2sNodePrime != 0))
|
||||||
|
here->B2BspPtr = here->B2BspStructPtr->CSC_Complex ;
|
||||||
|
|
||||||
|
if ((here-> B2dNodePrime != 0) && (here-> B2sNodePrime != 0))
|
||||||
|
here->B2DPspPtr = here->B2DPspStructPtr->CSC_Complex ;
|
||||||
|
|
||||||
|
if ((here-> B2dNodePrime != 0) && (here-> B2dNode != 0))
|
||||||
|
here->B2DPdPtr = here->B2DPdStructPtr->CSC_Complex ;
|
||||||
|
|
||||||
|
if ((here-> B2bNode != 0) && (here-> B2gNode != 0))
|
||||||
|
here->B2BgPtr = here->B2BgStructPtr->CSC_Complex ;
|
||||||
|
|
||||||
|
if ((here-> B2dNodePrime != 0) && (here-> B2gNode != 0))
|
||||||
|
here->B2DPgPtr = here->B2DPgStructPtr->CSC_Complex ;
|
||||||
|
|
||||||
|
if ((here-> B2sNodePrime != 0) && (here-> B2gNode != 0))
|
||||||
|
here->B2SPgPtr = here->B2SPgStructPtr->CSC_Complex ;
|
||||||
|
|
||||||
|
if ((here-> B2sNodePrime != 0) && (here-> B2sNode != 0))
|
||||||
|
here->B2SPsPtr = here->B2SPsStructPtr->CSC_Complex ;
|
||||||
|
|
||||||
|
if ((here-> B2dNodePrime != 0) && (here-> B2bNode != 0))
|
||||||
|
here->B2DPbPtr = here->B2DPbStructPtr->CSC_Complex ;
|
||||||
|
|
||||||
|
if ((here-> B2sNodePrime != 0) && (here-> B2bNode != 0))
|
||||||
|
here->B2SPbPtr = here->B2SPbStructPtr->CSC_Complex ;
|
||||||
|
|
||||||
|
if ((here-> B2sNodePrime != 0) && (here-> B2dNodePrime != 0))
|
||||||
|
here->B2SPdpPtr = here->B2SPdpStructPtr->CSC_Complex ;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (OK) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|
@ -312,169 +311,83 @@ B2bindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||||
{
|
{
|
||||||
B2model *model = (B2model *)inModel ;
|
B2model *model = (B2model *)inModel ;
|
||||||
B2instance *here ;
|
B2instance *here ;
|
||||||
int i ;
|
|
||||||
|
|
||||||
/* loop through all the bsim2 models */
|
NG_IGNORE (ckt) ;
|
||||||
|
|
||||||
|
/* loop through all the B2 models */
|
||||||
for ( ; model != NULL ; model = model->B2nextModel)
|
for ( ; model != NULL ; model = model->B2nextModel)
|
||||||
{
|
{
|
||||||
/* loop through all the instances of the model */
|
/* loop through all the instances of the model */
|
||||||
for (here = model->B2instances ; here != NULL ; here = here->B2nextInstance)
|
for (here = model->B2instances ; here != NULL ; here = here->B2nextInstance)
|
||||||
{
|
{
|
||||||
i = 0 ;
|
if ((here-> B2dNode != 0) && (here-> B2dNode != 0))
|
||||||
if ((here->B2dNode != 0) && (here->B2dNode != 0))
|
here->B2DdPtr = here->B2DdStructPtr->CSC ;
|
||||||
{
|
|
||||||
while (here->B2DdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
|
||||||
here->B2DdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
|
||||||
}
|
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2gNode != 0) && (here-> B2gNode != 0))
|
||||||
if ((here->B2gNode != 0) && (here->B2gNode != 0))
|
here->B2GgPtr = here->B2GgStructPtr->CSC ;
|
||||||
{
|
|
||||||
while (here->B2GgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
|
||||||
here->B2GgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
|
||||||
}
|
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2sNode != 0) && (here-> B2sNode != 0))
|
||||||
if ((here->B2sNode != 0) && (here->B2sNode != 0))
|
here->B2SsPtr = here->B2SsStructPtr->CSC ;
|
||||||
{
|
|
||||||
while (here->B2SsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
|
||||||
here->B2SsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
|
||||||
}
|
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2bNode != 0) && (here-> B2bNode != 0))
|
||||||
if ((here->B2bNode != 0) && (here->B2bNode != 0))
|
here->B2BbPtr = here->B2BbStructPtr->CSC ;
|
||||||
{
|
|
||||||
while (here->B2BbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
|
||||||
here->B2BbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
|
||||||
}
|
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2dNodePrime != 0) && (here-> B2dNodePrime != 0))
|
||||||
if ((here->B2dNodePrime != 0) && (here->B2dNodePrime != 0))
|
here->B2DPdpPtr = here->B2DPdpStructPtr->CSC ;
|
||||||
{
|
|
||||||
while (here->B2DPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
|
||||||
here->B2DPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
|
||||||
}
|
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2sNodePrime != 0) && (here-> B2sNodePrime != 0))
|
||||||
if ((here->B2sNodePrime != 0) && (here->B2sNodePrime != 0))
|
here->B2SPspPtr = here->B2SPspStructPtr->CSC ;
|
||||||
{
|
|
||||||
while (here->B2SPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
|
||||||
here->B2SPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
|
||||||
}
|
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2dNode != 0) && (here-> B2dNodePrime != 0))
|
||||||
if ((here->B2dNode != 0) && (here->B2dNodePrime != 0))
|
here->B2DdpPtr = here->B2DdpStructPtr->CSC ;
|
||||||
{
|
|
||||||
while (here->B2DdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
|
||||||
here->B2DdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
|
||||||
}
|
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2gNode != 0) && (here-> B2bNode != 0))
|
||||||
if ((here->B2gNode != 0) && (here->B2bNode != 0))
|
here->B2GbPtr = here->B2GbStructPtr->CSC ;
|
||||||
{
|
|
||||||
while (here->B2GbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
|
||||||
here->B2GbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
|
||||||
}
|
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2gNode != 0) && (here-> B2dNodePrime != 0))
|
||||||
if ((here->B2gNode != 0) && (here->B2dNodePrime != 0))
|
here->B2GdpPtr = here->B2GdpStructPtr->CSC ;
|
||||||
{
|
|
||||||
while (here->B2GdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
|
||||||
here->B2GdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
|
||||||
}
|
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2gNode != 0) && (here-> B2sNodePrime != 0))
|
||||||
if ((here->B2gNode != 0) && (here->B2sNodePrime != 0))
|
here->B2GspPtr = here->B2GspStructPtr->CSC ;
|
||||||
{
|
|
||||||
while (here->B2GspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
|
||||||
here->B2GspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
|
||||||
}
|
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2sNode != 0) && (here-> B2sNodePrime != 0))
|
||||||
if ((here->B2sNode != 0) && (here->B2sNodePrime != 0))
|
here->B2SspPtr = here->B2SspStructPtr->CSC ;
|
||||||
{
|
|
||||||
while (here->B2SspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
|
||||||
here->B2SspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
|
||||||
}
|
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2bNode != 0) && (here-> B2dNodePrime != 0))
|
||||||
if ((here->B2bNode != 0) && (here->B2dNodePrime != 0))
|
here->B2BdpPtr = here->B2BdpStructPtr->CSC ;
|
||||||
{
|
|
||||||
while (here->B2BdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
|
||||||
here->B2BdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
|
||||||
}
|
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2bNode != 0) && (here-> B2sNodePrime != 0))
|
||||||
if ((here->B2bNode != 0) && (here->B2sNodePrime != 0))
|
here->B2BspPtr = here->B2BspStructPtr->CSC ;
|
||||||
{
|
|
||||||
while (here->B2BspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
|
||||||
here->B2BspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
|
||||||
}
|
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2dNodePrime != 0) && (here-> B2sNodePrime != 0))
|
||||||
if ((here->B2dNodePrime != 0) && (here->B2sNodePrime != 0))
|
here->B2DPspPtr = here->B2DPspStructPtr->CSC ;
|
||||||
{
|
|
||||||
while (here->B2DPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
|
||||||
here->B2DPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
|
||||||
}
|
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2dNodePrime != 0) && (here-> B2dNode != 0))
|
||||||
if ((here->B2dNodePrime != 0) && (here->B2dNode != 0))
|
here->B2DPdPtr = here->B2DPdStructPtr->CSC ;
|
||||||
{
|
|
||||||
while (here->B2DPdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
|
||||||
here->B2DPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
|
||||||
}
|
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2bNode != 0) && (here-> B2gNode != 0))
|
||||||
if ((here->B2bNode != 0) && (here->B2gNode != 0))
|
here->B2BgPtr = here->B2BgStructPtr->CSC ;
|
||||||
{
|
|
||||||
while (here->B2BgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
|
||||||
here->B2BgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
|
||||||
}
|
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2dNodePrime != 0) && (here-> B2gNode != 0))
|
||||||
if ((here->B2dNodePrime != 0) && (here->B2gNode != 0))
|
here->B2DPgPtr = here->B2DPgStructPtr->CSC ;
|
||||||
{
|
|
||||||
while (here->B2DPgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
|
||||||
here->B2DPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
|
||||||
}
|
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2sNodePrime != 0) && (here-> B2gNode != 0))
|
||||||
if ((here->B2sNodePrime != 0) && (here->B2gNode != 0))
|
here->B2SPgPtr = here->B2SPgStructPtr->CSC ;
|
||||||
{
|
|
||||||
while (here->B2SPgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
|
||||||
here->B2SPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
|
||||||
}
|
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2sNodePrime != 0) && (here-> B2sNode != 0))
|
||||||
if ((here->B2sNodePrime != 0) && (here->B2sNode != 0))
|
here->B2SPsPtr = here->B2SPsStructPtr->CSC ;
|
||||||
{
|
|
||||||
while (here->B2SPsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
|
||||||
here->B2SPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
|
||||||
}
|
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2dNodePrime != 0) && (here-> B2bNode != 0))
|
||||||
if ((here->B2dNodePrime != 0) && (here->B2bNode != 0))
|
here->B2DPbPtr = here->B2DPbStructPtr->CSC ;
|
||||||
{
|
|
||||||
while (here->B2DPbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
|
||||||
here->B2DPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
|
||||||
}
|
|
||||||
|
|
||||||
i = 0 ;
|
if ((here-> B2sNodePrime != 0) && (here-> B2bNode != 0))
|
||||||
if ((here->B2sNodePrime != 0) && (here->B2bNode != 0))
|
here->B2SPbPtr = here->B2SPbStructPtr->CSC ;
|
||||||
{
|
|
||||||
while (here->B2SPbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
if ((here-> B2sNodePrime != 0) && (here-> B2dNodePrime != 0))
|
||||||
here->B2SPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
here->B2SPdpPtr = here->B2SPdpStructPtr->CSC ;
|
||||||
}
|
|
||||||
|
|
||||||
i = 0 ;
|
|
||||||
if ((here->B2sNodePrime != 0) && (here->B2dNodePrime != 0))
|
|
||||||
{
|
|
||||||
while (here->B2SPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
|
||||||
here->B2SPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (OK) ;
|
return (OK) ;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -176,6 +176,31 @@ typedef struct sBSIM2instance {
|
||||||
|
|
||||||
#define B2numStates 35
|
#define B2numStates 35
|
||||||
|
|
||||||
|
#ifdef KLU
|
||||||
|
BindElement *B2DdStructPtr ;
|
||||||
|
BindElement *B2GgStructPtr ;
|
||||||
|
BindElement *B2SsStructPtr ;
|
||||||
|
BindElement *B2BbStructPtr ;
|
||||||
|
BindElement *B2DPdpStructPtr ;
|
||||||
|
BindElement *B2SPspStructPtr ;
|
||||||
|
BindElement *B2DdpStructPtr ;
|
||||||
|
BindElement *B2GbStructPtr ;
|
||||||
|
BindElement *B2GdpStructPtr ;
|
||||||
|
BindElement *B2GspStructPtr ;
|
||||||
|
BindElement *B2SspStructPtr ;
|
||||||
|
BindElement *B2BdpStructPtr ;
|
||||||
|
BindElement *B2BspStructPtr ;
|
||||||
|
BindElement *B2DPspStructPtr ;
|
||||||
|
BindElement *B2DPdStructPtr ;
|
||||||
|
BindElement *B2BgStructPtr ;
|
||||||
|
BindElement *B2DPgStructPtr ;
|
||||||
|
BindElement *B2SPgStructPtr ;
|
||||||
|
BindElement *B2SPsStructPtr ;
|
||||||
|
BindElement *B2DPbStructPtr ;
|
||||||
|
BindElement *B2SPbStructPtr ;
|
||||||
|
BindElement *B2SPdpStructPtr ;
|
||||||
|
#endif
|
||||||
|
|
||||||
} B2instance ;
|
} B2instance ;
|
||||||
|
|
||||||
struct bsim2SizeDependParam
|
struct bsim2SizeDependParam
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue