Fixed Rg(V) for the KCL Verification
This commit is contained in:
parent
23b1480d9b
commit
c05cb7a437
|
|
@ -5341,7 +5341,6 @@ line900:
|
|||
}
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
///////////////////////////////////////////
|
||||
|
||||
/* KCL - Non-Linear and Dynamic Linear Parts */
|
||||
ceqgdtot_fvk_dNodePrime = (- gdtotd * *(ckt->CKTrhsOld+here->BSIM4dNodePrime)
|
||||
|
|
@ -5359,19 +5358,14 @@ line900:
|
|||
*(here->KCLcurrentdNodePrimeRHS_5) = m * ceqqd_fvk ;
|
||||
*(here->KCLcurrentdNodePrimeRHS_6) = -(m * Idtoteq_fvk) ;
|
||||
|
||||
*(ckt->CKTfvk+here->BSIM4gNodePrime) += m * (ceqqg_fvk - ceqgcrg + Igtoteq_fvk) ;
|
||||
*(ckt->CKTfvk+here->BSIM4gNodePrime) += m * (ceqqg_fvk + Igtoteq_fvk) ;
|
||||
*(here->KCLcurrentgNodePrimeRHS_1) = m * ceqqg_fvk ;
|
||||
*(here->KCLcurrentgNodePrimeRHS_2) = -(m * ceqgcrg) ;
|
||||
*(here->KCLcurrentgNodePrimeRHS_3) = m * Igtoteq_fvk ;
|
||||
*(here->KCLcurrentgNodePrimeRHS_2) = m * Igtoteq_fvk ;
|
||||
|
||||
if (here->BSIM4rgateMod == 2)
|
||||
if (here->BSIM4rgateMod == 3)
|
||||
{
|
||||
*(ckt->CKTfvk+here->BSIM4gNodeExt) += m * ceqgcrg ;
|
||||
*(here->KCLcurrentgNodeExtRHS) = m * ceqgcrg ;
|
||||
} else if (here->BSIM4rgateMod == 3) {
|
||||
*(ckt->CKTfvk+here->BSIM4gNodeMid) += m * (ceqqgmid_fvk + ceqgcrg) ;
|
||||
*(here->KCLcurrentgNodeMidRHS_1) = m * ceqqgmid_fvk ;
|
||||
*(here->KCLcurrentgNodeMidRHS_2) = m * ceqgcrg ;
|
||||
*(ckt->CKTfvk+here->BSIM4gNodeMid) += m * ceqqgmid_fvk ;
|
||||
*(here->KCLcurrentgNodeMidRHS) = m * ceqqgmid_fvk ;
|
||||
}
|
||||
|
||||
ceqgstot_fvk_sNodePrime = (- gstotd * *(ckt->CKTrhsOld+here->BSIM4dNodePrime)
|
||||
|
|
@ -5487,12 +5481,24 @@ line900:
|
|||
|
||||
*(ckt->CKTfvk+here->BSIM4gNodePrime) -= m * geltd * (*(ckt->CKTrhsOld+here->BSIM4gNodeExt) - *(ckt->CKTrhsOld+here->BSIM4gNodePrime)) ;
|
||||
*(here->KCLcurrentgNodePrime) = -(m * geltd * (*(ckt->CKTrhsOld+here->BSIM4gNodeExt) - *(ckt->CKTrhsOld+here->BSIM4gNodePrime))) ;
|
||||
} else if (here->BSIM4rgateMod == 2) {
|
||||
*(ckt->CKTfvk+here->BSIM4gNodeExt) += m * gcrg * (*(ckt->CKTrhsOld+here->BSIM4gNodeExt) - *(ckt->CKTrhsOld+here->BSIM4gNodePrime)) ;
|
||||
*(here->KCLcurrentgNodeExt) = m * gcrg * (*(ckt->CKTrhsOld+here->BSIM4gNodeExt) - *(ckt->CKTrhsOld+here->BSIM4gNodePrime)) ;
|
||||
|
||||
*(ckt->CKTfvk+here->BSIM4gNodePrime) -= m * gcrg * (*(ckt->CKTrhsOld+here->BSIM4gNodeExt) - *(ckt->CKTrhsOld+here->BSIM4gNodePrime)) ;
|
||||
*(here->KCLcurrentgNodePrime) = -(m * gcrg * (*(ckt->CKTrhsOld+here->BSIM4gNodeExt) - *(ckt->CKTrhsOld+here->BSIM4gNodePrime))) ;
|
||||
} else if (here->BSIM4rgateMod == 3) {
|
||||
*(ckt->CKTfvk+here->BSIM4gNodeExt) += m * geltd * (*(ckt->CKTrhsOld+here->BSIM4gNodeExt) - *(ckt->CKTrhsOld+here->BSIM4gNodeMid)) ;
|
||||
*(here->KCLcurrentgNodeExt) = m * geltd * (*(ckt->CKTrhsOld+here->BSIM4gNodeExt) - *(ckt->CKTrhsOld+here->BSIM4gNodeMid)) ;
|
||||
|
||||
*(ckt->CKTfvk+here->BSIM4gNodeMid) -= m * geltd * (*(ckt->CKTrhsOld+here->BSIM4gNodeExt) - *(ckt->CKTrhsOld+here->BSIM4gNodeMid)) ;
|
||||
*(here->KCLcurrentgNodeMid) = -(m * geltd * (*(ckt->CKTrhsOld+here->BSIM4gNodeExt) - *(ckt->CKTrhsOld+here->BSIM4gNodeMid))) ;
|
||||
*(here->KCLcurrentgNodeMid_1) = -(m * geltd * (*(ckt->CKTrhsOld+here->BSIM4gNodeExt) - *(ckt->CKTrhsOld+here->BSIM4gNodeMid))) ;
|
||||
|
||||
*(ckt->CKTfvk+here->BSIM4gNodeMid) += m * gcrg * (*(ckt->CKTrhsOld+here->BSIM4gNodeMid) - *(ckt->CKTrhsOld+here->BSIM4gNodePrime)) ;
|
||||
*(here->KCLcurrentgNodeMid_2) = m * gcrg * (*(ckt->CKTrhsOld+here->BSIM4gNodeMid) - *(ckt->CKTrhsOld+here->BSIM4gNodePrime)) ;
|
||||
|
||||
*(ckt->CKTfvk+here->BSIM4gNodePrime) -= m * gcrg * (*(ckt->CKTrhsOld+here->BSIM4gNodeExt) - *(ckt->CKTrhsOld+here->BSIM4gNodePrime)) ;
|
||||
*(here->KCLcurrentgNodePrime) = -(m * gcrg * (*(ckt->CKTrhsOld+here->BSIM4gNodeExt) - *(ckt->CKTrhsOld+here->BSIM4gNodePrime))) ;
|
||||
}
|
||||
|
||||
if (here->BSIM4rbodyMod)
|
||||
|
|
|
|||
|
|
@ -65,14 +65,10 @@ BSIM4nodeIsNonLinear (GENmodel *inModel, CKTcircuit *ckt)
|
|||
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4gNodePrime, &(here->KCLcurrentgNodePrimeRHS_1)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4gNodePrime, &(here->KCLcurrentgNodePrimeRHS_2)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4gNodePrime, &(here->KCLcurrentgNodePrimeRHS_3)) ;
|
||||
|
||||
if (here->BSIM4rgateMod == 2)
|
||||
if (here->BSIM4rgateMod == 3)
|
||||
{
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4gNodeExt, &(here->KCLcurrentgNodeExtRHS)) ;
|
||||
} else if (here->BSIM4rgateMod == 3) {
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4gNodeMid, &(here->KCLcurrentgNodeMidRHS_1)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4gNodeMid, &(here->KCLcurrentgNodeMidRHS_2)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4gNodeMid, &(here->KCLcurrentgNodeMidRHS)) ;
|
||||
}
|
||||
|
||||
if (!here->BSIM4rbodyMod)
|
||||
|
|
@ -137,16 +133,20 @@ BSIM4nodeIsNonLinear (GENmodel *inModel, CKTcircuit *ckt)
|
|||
error = CKTmkCurKCL (ckt, here->BSIM4dNode, &(here->KCLcurrentdNode)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrime)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNode, &(here->KCLcurrentsNode)) ;
|
||||
} else {
|
||||
}
|
||||
|
||||
if (here->BSIM4rgateMod == 1)
|
||||
{
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4gNodeExt, &(here->KCLcurrentgNodeExt)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4gNodePrime, &(here->KCLcurrentgNodePrime)) ;
|
||||
} else if (here->BSIM4rgateMod == 2) {
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4gNodeExt, &(here->KCLcurrentgNodeExt)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4gNodePrime, &(here->KCLcurrentgNodePrime)) ;
|
||||
} else if (here->BSIM4rgateMod == 3) {
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4gNodeExt, &(here->KCLcurrentgNodeExt)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4gNodeMid, &(here->KCLcurrentgNodeMid)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4gNodeMid, &(here->KCLcurrentgNodeMid_1)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4gNodeMid, &(here->KCLcurrentgNodeMid_2)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4gNodePrime, &(here->KCLcurrentgNodePrime)) ;
|
||||
}
|
||||
|
||||
if (here->BSIM4rbodyMod)
|
||||
|
|
|
|||
|
|
@ -580,12 +580,8 @@ typedef struct sBSIM4instance
|
|||
|
||||
double *KCLcurrentgNodePrimeRHS_1 ;
|
||||
double *KCLcurrentgNodePrimeRHS_2 ;
|
||||
double *KCLcurrentgNodePrimeRHS_3 ;
|
||||
|
||||
double *KCLcurrentgNodeExtRHS ;
|
||||
|
||||
double *KCLcurrentgNodeMidRHS_1 ;
|
||||
double *KCLcurrentgNodeMidRHS_2 ;
|
||||
double *KCLcurrentgNodeMidRHS ;
|
||||
|
||||
double *KCLcurrentbNodePrimeRHS_1 ;
|
||||
double *KCLcurrentbNodePrimeRHS_2 ;
|
||||
|
|
@ -624,9 +620,14 @@ typedef struct sBSIM4instance
|
|||
double *KCLcurrentdNode ;
|
||||
double *KCLcurrentsNodePrime ;
|
||||
double *KCLcurrentsNode ;
|
||||
double *KCLcurrentgNodePrime ;
|
||||
double *KCLcurrentgNodeMid ;
|
||||
|
||||
double *KCLcurrentgNodeExt ;
|
||||
|
||||
double *KCLcurrentgNodePrime ;
|
||||
|
||||
double *KCLcurrentgNodeMid_1 ;
|
||||
double *KCLcurrentgNodeMid_2 ;
|
||||
|
||||
double *KCLcurrentdbNode_1 ;
|
||||
double *KCLcurrentdbNode_2 ;
|
||||
double *KCLcurrentbNodePrime_1 ;
|
||||
|
|
|
|||
Loading…
Reference in New Issue