Fixed KLU binding for BJT
This commit is contained in:
parent
caf1ee7c47
commit
2bfd22c8f9
|
|
@ -25,10 +25,10 @@ BJTbindCSC (GENmodel *inModel, CKTcircuit *ckt)
|
|||
/* loop through all the instances of the model */
|
||||
for (here = BJTinstances(model); here != NULL ; here = BJTnextInstance(here))
|
||||
{
|
||||
CREATE_KLU_BINDING_TABLE(BJTcolColPrimePtr, BJTcolColPrimeBinding, BJTcolNode, BJTcolPrimeNode);
|
||||
CREATE_KLU_BINDING_TABLE(BJTcollCollCXPtr, BJTcollCollCXBinding, BJTcolNode, BJTcollCXNode);
|
||||
CREATE_KLU_BINDING_TABLE(BJTbaseBasePrimePtr, BJTbaseBasePrimeBinding, BJTbaseNode, BJTbasePrimeNode);
|
||||
CREATE_KLU_BINDING_TABLE(BJTemitEmitPrimePtr, BJTemitEmitPrimeBinding, BJTemitNode, BJTemitPrimeNode);
|
||||
CREATE_KLU_BINDING_TABLE(BJTcolPrimeColPtr, BJTcolPrimeColBinding, BJTcolPrimeNode, BJTcolNode);
|
||||
CREATE_KLU_BINDING_TABLE(BJTcollCXCollPtr, BJTcollCXCollBinding, BJTcollCXNode, BJTcolNode);
|
||||
CREATE_KLU_BINDING_TABLE(BJTcolPrimeBasePrimePtr, BJTcolPrimeBasePrimeBinding, BJTcolPrimeNode, BJTbasePrimeNode);
|
||||
CREATE_KLU_BINDING_TABLE(BJTcolPrimeEmitPrimePtr, BJTcolPrimeEmitPrimeBinding, BJTcolPrimeNode, BJTemitPrimeNode);
|
||||
CREATE_KLU_BINDING_TABLE(BJTbasePrimeBasePtr, BJTbasePrimeBaseBinding, BJTbasePrimeNode, BJTbaseNode);
|
||||
|
|
@ -44,18 +44,26 @@ BJTbindCSC (GENmodel *inModel, CKTcircuit *ckt)
|
|||
CREATE_KLU_BINDING_TABLE(BJTbasePrimeBasePrimePtr, BJTbasePrimeBasePrimeBinding, BJTbasePrimeNode, BJTbasePrimeNode);
|
||||
CREATE_KLU_BINDING_TABLE(BJTemitPrimeEmitPrimePtr, BJTemitPrimeEmitPrimeBinding, BJTemitPrimeNode, BJTemitPrimeNode);
|
||||
CREATE_KLU_BINDING_TABLE(BJTsubstSubstPtr, BJTsubstSubstBinding, BJTsubstNode, BJTsubstNode);
|
||||
if (model->BJTsubs == LATERAL)
|
||||
{
|
||||
here->BJTsubstConNode = here->BJTbasePrimeNode ;
|
||||
here->BJTsubstConSubstConPtr = here->BJTbasePrimeBasePrimePtr ;
|
||||
if (model -> BJTsubs == LATERAL) {
|
||||
here -> BJTsubstConNode = here -> BJTbasePrimeNode;
|
||||
here -> BJTsubstConSubstConPtr = here -> BJTbasePrimeBasePrimePtr;
|
||||
} else {
|
||||
here->BJTsubstConNode = here->BJTcolPrimeNode ;
|
||||
here->BJTsubstConSubstConPtr = here->BJTcolPrimeColPrimePtr ;
|
||||
here -> BJTsubstConNode = here -> BJTcolPrimeNode;
|
||||
here -> BJTsubstConSubstConPtr = here -> BJTcolPrimeColPrimePtr;
|
||||
}
|
||||
CREATE_KLU_BINDING_TABLE(BJTsubstConSubstPtr, BJTsubstConSubstBinding, BJTsubstConNode, BJTsubstNode);
|
||||
CREATE_KLU_BINDING_TABLE(BJTsubstSubstConPtr, BJTsubstSubstConBinding, BJTsubstNode, BJTsubstConNode);
|
||||
CREATE_KLU_BINDING_TABLE(BJTbaseColPrimePtr, BJTbaseColPrimeBinding, BJTbaseNode, BJTcolPrimeNode);
|
||||
CREATE_KLU_BINDING_TABLE(BJTcolPrimeBasePtr, BJTcolPrimeBaseBinding, BJTcolPrimeNode, BJTbaseNode);
|
||||
|
||||
CREATE_KLU_BINDING_TABLE(BJTcollCXcollCXPtr, BJTcollCXcollCXBinding, BJTcollCXNode, BJTcollCXNode);
|
||||
|
||||
if(model->BJTintCollResistGiven) {
|
||||
CREATE_KLU_BINDING_TABLE(BJTcollCXBasePrimePtr, BJTcollCXBasePrimeBinding, BJTcollCXNode, BJTbasePrimeNode);
|
||||
CREATE_KLU_BINDING_TABLE(BJTbasePrimeCollCXPtr, BJTbasePrimeCollCXBinding, BJTbasePrimeNode, BJTcollCXNode);
|
||||
CREATE_KLU_BINDING_TABLE(BJTcolPrimeCollCXPtr, BJTcolPrimeCollCXBinding, BJTcolPrimeNode, BJTcollCXNode);
|
||||
CREATE_KLU_BINDING_TABLE(BJTcollCXColPrimePtr, BJTcollCXColPrimeBinding, BJTcollCXNode, BJTcolPrimeNode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -76,10 +84,10 @@ BJTbindCSCComplex (GENmodel *inModel, CKTcircuit *ckt)
|
|||
/* loop through all the instances of the model */
|
||||
for (here = BJTinstances(model); here != NULL ; here = BJTnextInstance(here))
|
||||
{
|
||||
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(BJTcolColPrimePtr, BJTcolColPrimeBinding, BJTcolNode, BJTcolPrimeNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(BJTcollCollCXPtr, BJTcollCollCXBinding, BJTcolNode, BJTcollCXNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(BJTbaseBasePrimePtr, BJTbaseBasePrimeBinding, BJTbaseNode, BJTbasePrimeNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(BJTemitEmitPrimePtr, BJTemitEmitPrimeBinding, BJTemitNode, BJTemitPrimeNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(BJTcolPrimeColPtr, BJTcolPrimeColBinding, BJTcolPrimeNode, BJTcolNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(BJTcollCXCollPtr, BJTcollCXCollBinding, BJTcollCXNode, BJTcolNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(BJTcolPrimeBasePrimePtr, BJTcolPrimeBasePrimeBinding, BJTcolPrimeNode, BJTbasePrimeNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(BJTcolPrimeEmitPrimePtr, BJTcolPrimeEmitPrimeBinding, BJTcolPrimeNode, BJTemitPrimeNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(BJTbasePrimeBasePtr, BJTbasePrimeBaseBinding, BJTbasePrimeNode, BJTbaseNode);
|
||||
|
|
@ -95,18 +103,26 @@ BJTbindCSCComplex (GENmodel *inModel, CKTcircuit *ckt)
|
|||
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(BJTbasePrimeBasePrimePtr, BJTbasePrimeBasePrimeBinding, BJTbasePrimeNode, BJTbasePrimeNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(BJTemitPrimeEmitPrimePtr, BJTemitPrimeEmitPrimeBinding, BJTemitPrimeNode, BJTemitPrimeNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(BJTsubstSubstPtr, BJTsubstSubstBinding, BJTsubstNode, BJTsubstNode);
|
||||
if (model->BJTsubs == LATERAL)
|
||||
{
|
||||
here->BJTsubstConNode = here->BJTbasePrimeNode ;
|
||||
here->BJTsubstConSubstConPtr = here->BJTbasePrimeBasePrimePtr ;
|
||||
if (model -> BJTsubs == LATERAL) {
|
||||
here -> BJTsubstConNode = here -> BJTbasePrimeNode;
|
||||
here -> BJTsubstConSubstConPtr = here -> BJTbasePrimeBasePrimePtr;
|
||||
} else {
|
||||
here->BJTsubstConNode = here->BJTcolPrimeNode ;
|
||||
here->BJTsubstConSubstConPtr = here->BJTcolPrimeColPrimePtr ;
|
||||
here -> BJTsubstConNode = here -> BJTcolPrimeNode;
|
||||
here -> BJTsubstConSubstConPtr = here -> BJTcolPrimeColPrimePtr;
|
||||
}
|
||||
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(BJTsubstConSubstPtr, BJTsubstConSubstBinding, BJTsubstConNode, BJTsubstNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(BJTsubstSubstConPtr, BJTsubstSubstConBinding, BJTsubstNode, BJTsubstConNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(BJTbaseColPrimePtr, BJTbaseColPrimeBinding, BJTbaseNode, BJTcolPrimeNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(BJTcolPrimeBasePtr, BJTcolPrimeBaseBinding, BJTcolPrimeNode, BJTbaseNode);
|
||||
|
||||
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(BJTcollCXcollCXPtr, BJTcollCXcollCXBinding, BJTcollCXNode, BJTcollCXNode);
|
||||
|
||||
if(model->BJTintCollResistGiven) {
|
||||
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(BJTcollCXBasePrimePtr, BJTcollCXBasePrimeBinding, BJTcollCXNode, BJTbasePrimeNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(BJTbasePrimeCollCXPtr, BJTbasePrimeCollCXBinding, BJTbasePrimeNode, BJTcollCXNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(BJTcolPrimeCollCXPtr, BJTcolPrimeCollCXBinding, BJTcolPrimeNode, BJTcollCXNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(BJTcollCXColPrimePtr, BJTcollCXColPrimeBinding, BJTcollCXNode, BJTcolPrimeNode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -127,10 +143,10 @@ BJTbindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
|||
/* loop through all the instances of the model */
|
||||
for (here = BJTinstances(model); here != NULL ; here = BJTnextInstance(here))
|
||||
{
|
||||
CONVERT_KLU_BINDING_TABLE_TO_REAL(BJTcolColPrimePtr, BJTcolColPrimeBinding, BJTcolNode, BJTcolPrimeNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_REAL(BJTcollCollCXPtr, BJTcollCollCXBinding, BJTcolNode, BJTcollCXNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_REAL(BJTbaseBasePrimePtr, BJTbaseBasePrimeBinding, BJTbaseNode, BJTbasePrimeNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_REAL(BJTemitEmitPrimePtr, BJTemitEmitPrimeBinding, BJTemitNode, BJTemitPrimeNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_REAL(BJTcolPrimeColPtr, BJTcolPrimeColBinding, BJTcolPrimeNode, BJTcolNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_REAL(BJTcollCXCollPtr, BJTcollCXCollBinding, BJTcollCXNode, BJTcolNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_REAL(BJTcolPrimeBasePrimePtr, BJTcolPrimeBasePrimeBinding, BJTcolPrimeNode, BJTbasePrimeNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_REAL(BJTcolPrimeEmitPrimePtr, BJTcolPrimeEmitPrimeBinding, BJTcolPrimeNode, BJTemitPrimeNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_REAL(BJTbasePrimeBasePtr, BJTbasePrimeBaseBinding, BJTbasePrimeNode, BJTbaseNode);
|
||||
|
|
@ -146,18 +162,26 @@ BJTbindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
|||
CONVERT_KLU_BINDING_TABLE_TO_REAL(BJTbasePrimeBasePrimePtr, BJTbasePrimeBasePrimeBinding, BJTbasePrimeNode, BJTbasePrimeNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_REAL(BJTemitPrimeEmitPrimePtr, BJTemitPrimeEmitPrimeBinding, BJTemitPrimeNode, BJTemitPrimeNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_REAL(BJTsubstSubstPtr, BJTsubstSubstBinding, BJTsubstNode, BJTsubstNode);
|
||||
if (model->BJTsubs == LATERAL)
|
||||
{
|
||||
here->BJTsubstConNode = here->BJTbasePrimeNode ;
|
||||
here->BJTsubstConSubstConPtr = here->BJTbasePrimeBasePrimePtr ;
|
||||
if (model -> BJTsubs == LATERAL) {
|
||||
here -> BJTsubstConNode = here -> BJTbasePrimeNode;
|
||||
here -> BJTsubstConSubstConPtr = here -> BJTbasePrimeBasePrimePtr;
|
||||
} else {
|
||||
here->BJTsubstConNode = here->BJTcolPrimeNode ;
|
||||
here->BJTsubstConSubstConPtr = here->BJTcolPrimeColPrimePtr ;
|
||||
here -> BJTsubstConNode = here -> BJTcolPrimeNode;
|
||||
here -> BJTsubstConSubstConPtr = here -> BJTcolPrimeColPrimePtr;
|
||||
}
|
||||
CONVERT_KLU_BINDING_TABLE_TO_REAL(BJTsubstConSubstPtr, BJTsubstConSubstBinding, BJTsubstConNode, BJTsubstNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_REAL(BJTsubstSubstConPtr, BJTsubstSubstConBinding, BJTsubstNode, BJTsubstConNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_REAL(BJTbaseColPrimePtr, BJTbaseColPrimeBinding, BJTbaseNode, BJTcolPrimeNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_REAL(BJTcolPrimeBasePtr, BJTcolPrimeBaseBinding, BJTcolPrimeNode, BJTbaseNode);
|
||||
|
||||
CONVERT_KLU_BINDING_TABLE_TO_REAL(BJTcollCXcollCXPtr, BJTcollCXcollCXBinding, BJTcollCXNode, BJTcollCXNode);
|
||||
|
||||
if(model->BJTintCollResistGiven) {
|
||||
CONVERT_KLU_BINDING_TABLE_TO_REAL(BJTcollCXBasePrimePtr, BJTcollCXBasePrimeBinding, BJTcollCXNode, BJTbasePrimeNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_REAL(BJTbasePrimeCollCXPtr, BJTbasePrimeCollCXBinding, BJTbasePrimeNode, BJTcollCXNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_REAL(BJTcolPrimeCollCXPtr, BJTcolPrimeCollCXBinding, BJTcolPrimeNode, BJTcollCXNode);
|
||||
CONVERT_KLU_BINDING_TABLE_TO_REAL(BJTcollCXColPrimePtr, BJTcollCXColPrimeBinding, BJTcollCXNode, BJTcolPrimeNode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -311,10 +311,10 @@ typedef struct sBJTinstance {
|
|||
/* the above to avoid allocating memory when it is not needed */
|
||||
|
||||
#ifdef KLU
|
||||
BindElement *BJTcolColPrimeBinding ;
|
||||
BindElement *BJTcollCollCXBinding ;
|
||||
BindElement *BJTbaseBasePrimeBinding ;
|
||||
BindElement *BJTemitEmitPrimeBinding ;
|
||||
BindElement *BJTcolPrimeColBinding ;
|
||||
BindElement *BJTcollCXCollBinding ;
|
||||
BindElement *BJTcolPrimeBasePrimeBinding ;
|
||||
BindElement *BJTcolPrimeEmitPrimeBinding ;
|
||||
BindElement *BJTbasePrimeBaseBinding ;
|
||||
|
|
@ -332,9 +332,13 @@ typedef struct sBJTinstance {
|
|||
BindElement *BJTsubstSubstBinding ;
|
||||
BindElement *BJTsubstConSubstBinding ;
|
||||
BindElement *BJTsubstSubstConBinding ;
|
||||
BindElement *BJTsubstConSubstConBinding ;
|
||||
BindElement *BJTbaseColPrimeBinding ;
|
||||
BindElement *BJTcolPrimeBaseBinding ;
|
||||
BindElement *BJTcollCXcollCXBinding ;
|
||||
BindElement *BJTcollCXBasePrimeBinding ;
|
||||
BindElement *BJTbasePrimeCollCXBinding ;
|
||||
BindElement *BJTcolPrimeCollCXBinding ;
|
||||
BindElement *BJTcollCXColPrimeBinding ;
|
||||
#endif
|
||||
|
||||
} BJTinstance ;
|
||||
|
|
|
|||
Loading…
Reference in New Issue