Fixed the KCL Resistor Model. Added the Source and Drain Resistances to the KCL BSIM4 Model
This commit is contained in:
parent
8d015a5a6f
commit
2b3caacc21
|
|
@ -5349,81 +5349,95 @@ line900:
|
|||
#ifdef KIRCHHOFF
|
||||
///////////////////////////////////////////
|
||||
|
||||
/* KCL - Non-Linear and Dynamic Linear Parts */
|
||||
*(ckt->CKTfvk+here->BSIM4dNodePrime) -= m * (ceqjd_fvk - ceqbd_fvk - ceqdrn_fvk - ceqqd_fvk + Idtoteq_fvk) ; /* NO ceqgdtot in FVK */
|
||||
*(here->KCLcurrentdNodePrime_1) = -(m * ceqjd_fvk) ;
|
||||
*(here->KCLcurrentdNodePrime_2) = m * ceqbd_fvk ;
|
||||
*(here->KCLcurrentdNodePrime_3) = m * ceqdrn_fvk ;
|
||||
*(here->KCLcurrentdNodePrime_4) = m * ceqqd_fvk ;
|
||||
*(here->KCLcurrentdNodePrime_5) = -(m * Idtoteq_fvk) ;
|
||||
*(here->KCLcurrentdNodePrimeRHS_1) = -(m * ceqjd_fvk) ;
|
||||
*(here->KCLcurrentdNodePrimeRHS_2) = m * ceqbd_fvk ;
|
||||
*(here->KCLcurrentdNodePrimeRHS_3) = m * ceqdrn_fvk ;
|
||||
*(here->KCLcurrentdNodePrimeRHS_4) = m * ceqqd_fvk ;
|
||||
*(here->KCLcurrentdNodePrimeRHS_5) = -(m * Idtoteq_fvk) ;
|
||||
|
||||
*(ckt->CKTfvk+here->BSIM4gNodePrime) += m * (ceqqg_fvk + Igtoteq_fvk) ; /* NO ceqgcrg in FVK */
|
||||
*(here->KCLcurrentgNodePrime_1) = m * ceqqg_fvk ;
|
||||
*(here->KCLcurrentgNodePrime_2) = m * Igtoteq_fvk ;
|
||||
*(here->KCLcurrentgNodePrimeRHS_1) = m * ceqqg_fvk ;
|
||||
*(here->KCLcurrentgNodePrimeRHS_2) = m * Igtoteq_fvk ;
|
||||
|
||||
if (here->BSIM4rgateMod == 3)
|
||||
{
|
||||
*(ckt->CKTfvk+here->BSIM4gNodeMid) += m * ceqqgmid_fvk ; /* NO ceqgcrg in FVK */
|
||||
*(here->KCLcurrentgNodeMid) = m * ceqqgmid_fvk ;
|
||||
*(here->KCLcurrentgNodeMidRHS) = m * ceqqgmid_fvk ;
|
||||
}
|
||||
|
||||
if (!here->BSIM4rbodyMod)
|
||||
{
|
||||
*(ckt->CKTfvk+here->BSIM4bNodePrime) -= m * (ceqbd_fvk + ceqbs_fvk - ceqjd_fvk - ceqjs_fvk - ceqqb_fvk + Ibtoteq_fvk) ;
|
||||
*(here->KCLcurrentbNodePrime_1) = -(m * ceqbd_fvk) ;
|
||||
*(here->KCLcurrentbNodePrime_2) = -(m * ceqbs_fvk) ;
|
||||
*(here->KCLcurrentbNodePrime_3) = m * ceqjd_fvk ;
|
||||
*(here->KCLcurrentbNodePrime_4) = m * ceqjs_fvk ;
|
||||
*(here->KCLcurrentbNodePrime_5) = m * ceqqb_fvk ;
|
||||
*(here->KCLcurrentbNodePrime_6) = -(m * Ibtoteq_fvk) ;
|
||||
*(here->KCLcurrentbNodePrimeRHS_1) = -(m * ceqbd_fvk) ;
|
||||
*(here->KCLcurrentbNodePrimeRHS_2) = -(m * ceqbs_fvk) ;
|
||||
*(here->KCLcurrentbNodePrimeRHS_3) = m * ceqjd_fvk ;
|
||||
*(here->KCLcurrentbNodePrimeRHS_4) = m * ceqjs_fvk ;
|
||||
*(here->KCLcurrentbNodePrimeRHS_5) = m * ceqqb_fvk ;
|
||||
*(here->KCLcurrentbNodePrimeRHS_6) = -(m * Ibtoteq_fvk) ;
|
||||
|
||||
*(ckt->CKTfvk+here->BSIM4sNodePrime) -= m * (ceqdrn_fvk - ceqbs_fvk + ceqjs_fvk
|
||||
+ ceqqg_fvk + ceqqb_fvk + ceqqd_fvk
|
||||
+ ceqqgmid_fvk + Istoteq_fvk) ; /* NO ceqgstot in FVK */
|
||||
*(here->KCLcurrentsNodePrime_1) = -(m * ceqdrn_fvk) ;
|
||||
*(here->KCLcurrentsNodePrime_2) = m * ceqbs_fvk ;
|
||||
*(here->KCLcurrentsNodePrime_3) = -(m * ceqjs_fvk) ;
|
||||
*(here->KCLcurrentsNodePrime_4) = -(m * ceqqg_fvk) ;
|
||||
*(here->KCLcurrentsNodePrime_5) = -(m * ceqqb_fvk) ;
|
||||
*(here->KCLcurrentsNodePrime_6) = -(m * ceqqd_fvk) ;
|
||||
*(here->KCLcurrentsNodePrime_7) = -(m * ceqqgmid_fvk) ;
|
||||
*(here->KCLcurrentsNodePrime_8) = -(m * Istoteq_fvk) ;
|
||||
*(here->KCLcurrentsNodePrimeRHS_1) = -(m * ceqdrn_fvk) ;
|
||||
*(here->KCLcurrentsNodePrimeRHS_2) = m * ceqbs_fvk ;
|
||||
*(here->KCLcurrentsNodePrimeRHS_3) = -(m * ceqjs_fvk) ;
|
||||
*(here->KCLcurrentsNodePrimeRHS_4) = -(m * ceqqg_fvk) ;
|
||||
*(here->KCLcurrentsNodePrimeRHS_5) = -(m * ceqqb_fvk) ;
|
||||
*(here->KCLcurrentsNodePrimeRHS_6) = -(m * ceqqd_fvk) ;
|
||||
*(here->KCLcurrentsNodePrimeRHS_7) = -(m * ceqqgmid_fvk) ;
|
||||
*(here->KCLcurrentsNodePrimeRHS_8) = -(m * Istoteq_fvk) ;
|
||||
} else {
|
||||
*(ckt->CKTfvk+here->BSIM4dbNode) += m * (ceqjd_fvk + ceqqjd_fvk) ;
|
||||
*(here->KCLcurrentdbNode_1) = m * ceqjd_fvk ;
|
||||
*(here->KCLcurrentdbNode_2) = m * ceqqjd_fvk ;
|
||||
*(here->KCLcurrentdbNodeRHS_1) = m * ceqjd_fvk ;
|
||||
*(here->KCLcurrentdbNodeRHS_2) = m * ceqqjd_fvk ;
|
||||
|
||||
*(ckt->CKTfvk+here->BSIM4bNodePrime) -= m * (ceqbd_fvk + ceqbs_fvk - ceqqb_fvk + Ibtoteq_fvk) ;
|
||||
*(here->KCLcurrentbNodePrime_1) = -(m * ceqbd_fvk) ;
|
||||
*(here->KCLcurrentbNodePrime_2) = -(m * ceqbs_fvk) ;
|
||||
*(here->KCLcurrentbNodePrime_3) = m * ceqqb_fvk ;
|
||||
*(here->KCLcurrentbNodePrime_4) = -(m * Ibtoteq_fvk) ;
|
||||
*(here->KCLcurrentbNodePrimeRHS_1) = -(m * ceqbd_fvk) ;
|
||||
*(here->KCLcurrentbNodePrimeRHS_2) = -(m * ceqbs_fvk) ;
|
||||
*(here->KCLcurrentbNodePrimeRHS_3) = m * ceqqb_fvk ;
|
||||
*(here->KCLcurrentbNodePrimeRHS_4) = -(m * Ibtoteq_fvk) ;
|
||||
|
||||
*(ckt->CKTfvk+here->BSIM4sbNode) += m * (ceqjs_fvk + ceqqjs_fvk) ;
|
||||
*(here->KCLcurrentsbNode_1) = m * ceqjs_fvk ;
|
||||
*(here->KCLcurrentsbNode_2) = m * ceqqjs_fvk ;
|
||||
*(here->KCLcurrentsbNodeRHS_1) = m * ceqjs_fvk ;
|
||||
*(here->KCLcurrentsbNodeRHS_2) = m * ceqqjs_fvk ;
|
||||
|
||||
*(ckt->CKTfvk+here->BSIM4sNodePrime) -= m * (ceqdrn_fvk - ceqbs_fvk + ceqjs_fvk + ceqqd_fvk
|
||||
+ ceqqg_fvk + ceqqb_fvk + ceqqjd_fvk + ceqqjs_fvk
|
||||
+ ceqqgmid_fvk + Istoteq_fvk) ; /* NO ceqgstot in FVK */
|
||||
*(here->KCLcurrentsNodePrime_1) = -(m * ceqdrn_fvk) ;
|
||||
*(here->KCLcurrentsNodePrime_2) = m * ceqbs_fvk ;
|
||||
*(here->KCLcurrentsNodePrime_3) = -(m * ceqjs_fvk) ;
|
||||
*(here->KCLcurrentsNodePrime_4) = -(m * ceqqd_fvk) ;
|
||||
*(here->KCLcurrentsNodePrime_5) = -(m * ceqqg_fvk) ;
|
||||
*(here->KCLcurrentsNodePrime_6) = -(m * ceqqb_fvk) ;
|
||||
*(here->KCLcurrentsNodePrime_7) = -(m * ceqqjd_fvk) ;
|
||||
*(here->KCLcurrentsNodePrime_8) = -(m * ceqqjs_fvk) ;
|
||||
*(here->KCLcurrentsNodePrime_9) = -(m * ceqqgmid_fvk) ;
|
||||
*(here->KCLcurrentsNodePrime_10) = -(m * Istoteq_fvk) ;
|
||||
*(here->KCLcurrentsNodePrimeRHS_1) = -(m * ceqdrn_fvk) ;
|
||||
*(here->KCLcurrentsNodePrimeRHS_2) = m * ceqbs_fvk ;
|
||||
*(here->KCLcurrentsNodePrimeRHS_3) = -(m * ceqjs_fvk) ;
|
||||
*(here->KCLcurrentsNodePrimeRHS_4) = -(m * ceqqd_fvk) ;
|
||||
*(here->KCLcurrentsNodePrimeRHS_5) = -(m * ceqqg_fvk) ;
|
||||
*(here->KCLcurrentsNodePrimeRHS_6) = -(m * ceqqb_fvk) ;
|
||||
*(here->KCLcurrentsNodePrimeRHS_7) = -(m * ceqqjd_fvk) ;
|
||||
*(here->KCLcurrentsNodePrimeRHS_8) = -(m * ceqqjs_fvk) ;
|
||||
*(here->KCLcurrentsNodePrimeRHS_9) = -(m * ceqqgmid_fvk) ;
|
||||
*(here->KCLcurrentsNodePrimeRHS_10) = -(m * Istoteq_fvk) ;
|
||||
}
|
||||
|
||||
if (here->BSIM4trnqsMod)
|
||||
{
|
||||
*(ckt->CKTfvk+here->BSIM4qNode) -= m * (cqcheq_fvk - cqdef_fvk) ;
|
||||
*(here->KCLcurrentqNode_1) = -(m * cqcheq_fvk) ;
|
||||
*(here->KCLcurrentqNode_2) = m * cqdef_fvk ;
|
||||
*(here->KCLcurrentqNodeRHS_1) = -(m * cqcheq_fvk) ;
|
||||
*(here->KCLcurrentqNodeRHS_2) = m * cqdef_fvk ;
|
||||
}
|
||||
|
||||
|
||||
/* KCL - Static Linear Part */
|
||||
*(ckt->CKTfvk+here->BSIM4dNodePrime) += m * gdpr * (*(ckt->CKTrhsOld+here->BSIM4dNodePrime) - *(ckt->CKTrhsOld+here->BSIM4dNode)) ;
|
||||
*(here->KCLcurrentdNodePrime) = m * gdpr * (*(ckt->CKTrhsOld+here->BSIM4dNodePrime) - *(ckt->CKTrhsOld+here->BSIM4dNode)) ;
|
||||
|
||||
*(ckt->CKTfvk+here->BSIM4dNode) -= m * gdpr * (*(ckt->CKTrhsOld+here->BSIM4dNodePrime) - *(ckt->CKTrhsOld+here->BSIM4dNode)) ;
|
||||
*(here->KCLcurrentdNode) = -(m * gdpr * (*(ckt->CKTrhsOld+here->BSIM4dNodePrime) - *(ckt->CKTrhsOld+here->BSIM4dNode))) ;
|
||||
|
||||
*(ckt->CKTfvk+here->BSIM4sNodePrime) += m * gspr * (*(ckt->CKTrhsOld+here->BSIM4sNodePrime) - *(ckt->CKTrhsOld+here->BSIM4sNode)) ;
|
||||
*(here->KCLcurrentsNodePrime) = m * gspr * (*(ckt->CKTrhsOld+here->BSIM4sNodePrime) - *(ckt->CKTrhsOld+here->BSIM4sNode)) ;
|
||||
|
||||
*(ckt->CKTfvk+here->BSIM4sNode) -= m * gspr * (*(ckt->CKTrhsOld+here->BSIM4sNodePrime) - *(ckt->CKTrhsOld+here->BSIM4sNode)) ;
|
||||
*(here->KCLcurrentsNode) = -(m * gspr * (*(ckt->CKTrhsOld+here->BSIM4sNodePrime) - *(ckt->CKTrhsOld+here->BSIM4sNode))) ;
|
||||
///////////////////////////////////////////
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -42,57 +42,65 @@ BSIM4nodeIsNonLinear (GENmodel *inModel, CKTcircuit *ckt)
|
|||
ckt->CKTnodeIsLinear [here->BSIM4qNode] = 0 ;
|
||||
|
||||
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4dNodePrime, &(here->KCLcurrentdNodePrime_1)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4dNodePrime, &(here->KCLcurrentdNodePrime_2)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4dNodePrime, &(here->KCLcurrentdNodePrime_3)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4dNodePrime, &(here->KCLcurrentdNodePrime_4)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4dNodePrime, &(here->KCLcurrentdNodePrime_5)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4gNodePrime, &(here->KCLcurrentgNodePrime_1)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4gNodePrime, &(here->KCLcurrentgNodePrime_2)) ;
|
||||
/* KCL - Non-Linear and Dynamic Linear Parts */
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4dNodePrime, &(here->KCLcurrentdNodePrimeRHS_1)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4dNodePrime, &(here->KCLcurrentdNodePrimeRHS_2)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4dNodePrime, &(here->KCLcurrentdNodePrimeRHS_3)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4dNodePrime, &(here->KCLcurrentdNodePrimeRHS_4)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4dNodePrime, &(here->KCLcurrentdNodePrimeRHS_5)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4gNodePrime, &(here->KCLcurrentgNodePrimeRHS_1)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4gNodePrime, &(here->KCLcurrentgNodePrimeRHS_2)) ;
|
||||
|
||||
if (here->BSIM4rgateMod == 3)
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4gNodeMid, &(here->KCLcurrentgNodeMid)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4gNodeMid, &(here->KCLcurrentgNodeMidRHS)) ;
|
||||
|
||||
if (!here->BSIM4rbodyMod)
|
||||
{
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4bNodePrime, &(here->KCLcurrentbNodePrime_1)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4bNodePrime, &(here->KCLcurrentbNodePrime_2)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4bNodePrime, &(here->KCLcurrentbNodePrime_3)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4bNodePrime, &(here->KCLcurrentbNodePrime_4)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4bNodePrime, &(here->KCLcurrentbNodePrime_5)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4bNodePrime, &(here->KCLcurrentbNodePrime_6)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrime_1)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrime_2)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrime_3)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrime_4)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrime_5)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrime_6)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrime_7)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrime_8)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4bNodePrime, &(here->KCLcurrentbNodePrimeRHS_1)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4bNodePrime, &(here->KCLcurrentbNodePrimeRHS_2)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4bNodePrime, &(here->KCLcurrentbNodePrimeRHS_3)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4bNodePrime, &(here->KCLcurrentbNodePrimeRHS_4)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4bNodePrime, &(here->KCLcurrentbNodePrimeRHS_5)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4bNodePrime, &(here->KCLcurrentbNodePrimeRHS_6)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrimeRHS_1)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrimeRHS_2)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrimeRHS_3)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrimeRHS_4)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrimeRHS_5)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrimeRHS_6)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrimeRHS_7)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrimeRHS_8)) ;
|
||||
} else {
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4dbNode, &(here->KCLcurrentdbNode_1)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4dbNode, &(here->KCLcurrentdbNode_2)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4bNodePrime, &(here->KCLcurrentbNodePrime_1)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4bNodePrime, &(here->KCLcurrentbNodePrime_2)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4bNodePrime, &(here->KCLcurrentbNodePrime_3)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4bNodePrime, &(here->KCLcurrentbNodePrime_4)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sbNode, &(here->KCLcurrentsbNode_1)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sbNode, &(here->KCLcurrentsbNode_2)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrime_1)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrime_2)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrime_3)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrime_4)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrime_5)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrime_6)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrime_7)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrime_8)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrime_9)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrime_10)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4dbNode, &(here->KCLcurrentdbNodeRHS_1)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4dbNode, &(here->KCLcurrentdbNodeRHS_2)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4bNodePrime, &(here->KCLcurrentbNodePrimeRHS_1)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4bNodePrime, &(here->KCLcurrentbNodePrimeRHS_2)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4bNodePrime, &(here->KCLcurrentbNodePrimeRHS_3)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4bNodePrime, &(here->KCLcurrentbNodePrimeRHS_4)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sbNode, &(here->KCLcurrentsbNodeRHS_1)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sbNode, &(here->KCLcurrentsbNodeRHS_2)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrimeRHS_1)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrimeRHS_2)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrimeRHS_3)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrimeRHS_4)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrimeRHS_5)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrimeRHS_6)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrimeRHS_7)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrimeRHS_8)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrimeRHS_9)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrimeRHS_10)) ;
|
||||
}
|
||||
|
||||
if (here->BSIM4trnqsMod)
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4qNode, &(here->KCLcurrentqNode_1)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4qNode, &(here->KCLcurrentqNode_2)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4qNode, &(here->KCLcurrentqNodeRHS_1)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4qNode, &(here->KCLcurrentqNodeRHS_2)) ;
|
||||
|
||||
|
||||
/* KCL - Static Linear Part */
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4dNodePrime, &(here->KCLcurrentdNodePrime)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4dNode, &(here->KCLcurrentdNode)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNodePrime, &(here->KCLcurrentsNodePrime)) ;
|
||||
error = CKTmkCurKCL (ckt, here->BSIM4sNode, &(here->KCLcurrentsNode)) ;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -570,36 +570,41 @@ typedef struct sBSIM4instance
|
|||
#endif /* NONOISE */
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
double *KCLcurrentdNodePrime_1 ;
|
||||
double *KCLcurrentdNodePrime_2 ;
|
||||
double *KCLcurrentdNodePrime_3 ;
|
||||
double *KCLcurrentdNodePrime_4 ;
|
||||
double *KCLcurrentdNodePrime_5 ;
|
||||
double *KCLcurrentgNodePrime_1 ;
|
||||
double *KCLcurrentgNodePrime_2 ;
|
||||
double *KCLcurrentgNodeMid ;
|
||||
double *KCLcurrentbNodePrime_1 ;
|
||||
double *KCLcurrentbNodePrime_2 ;
|
||||
double *KCLcurrentbNodePrime_3 ;
|
||||
double *KCLcurrentbNodePrime_4 ;
|
||||
double *KCLcurrentbNodePrime_5 ;
|
||||
double *KCLcurrentbNodePrime_6 ;
|
||||
double *KCLcurrentsNodePrime_1 ;
|
||||
double *KCLcurrentsNodePrime_2 ;
|
||||
double *KCLcurrentsNodePrime_3 ;
|
||||
double *KCLcurrentsNodePrime_4 ;
|
||||
double *KCLcurrentsNodePrime_5 ;
|
||||
double *KCLcurrentsNodePrime_6 ;
|
||||
double *KCLcurrentsNodePrime_7 ;
|
||||
double *KCLcurrentsNodePrime_8 ;
|
||||
double *KCLcurrentsNodePrime_9 ;
|
||||
double *KCLcurrentsNodePrime_10 ;
|
||||
double *KCLcurrentdbNode_1 ;
|
||||
double *KCLcurrentdbNode_2 ;
|
||||
double *KCLcurrentsbNode_1 ;
|
||||
double *KCLcurrentsbNode_2 ;
|
||||
double *KCLcurrentqNode_1 ;
|
||||
double *KCLcurrentqNode_2 ;
|
||||
double *KCLcurrentdNodePrimeRHS_1 ;
|
||||
double *KCLcurrentdNodePrimeRHS_2 ;
|
||||
double *KCLcurrentdNodePrimeRHS_3 ;
|
||||
double *KCLcurrentdNodePrimeRHS_4 ;
|
||||
double *KCLcurrentdNodePrimeRHS_5 ;
|
||||
double *KCLcurrentgNodePrimeRHS_1 ;
|
||||
double *KCLcurrentgNodePrimeRHS_2 ;
|
||||
double *KCLcurrentgNodeMidRHS ;
|
||||
double *KCLcurrentbNodePrimeRHS_1 ;
|
||||
double *KCLcurrentbNodePrimeRHS_2 ;
|
||||
double *KCLcurrentbNodePrimeRHS_3 ;
|
||||
double *KCLcurrentbNodePrimeRHS_4 ;
|
||||
double *KCLcurrentbNodePrimeRHS_5 ;
|
||||
double *KCLcurrentbNodePrimeRHS_6 ;
|
||||
double *KCLcurrentsNodePrimeRHS_1 ;
|
||||
double *KCLcurrentsNodePrimeRHS_2 ;
|
||||
double *KCLcurrentsNodePrimeRHS_3 ;
|
||||
double *KCLcurrentsNodePrimeRHS_4 ;
|
||||
double *KCLcurrentsNodePrimeRHS_5 ;
|
||||
double *KCLcurrentsNodePrimeRHS_6 ;
|
||||
double *KCLcurrentsNodePrimeRHS_7 ;
|
||||
double *KCLcurrentsNodePrimeRHS_8 ;
|
||||
double *KCLcurrentsNodePrimeRHS_9 ;
|
||||
double *KCLcurrentsNodePrimeRHS_10 ;
|
||||
double *KCLcurrentdbNodeRHS_1 ;
|
||||
double *KCLcurrentdbNodeRHS_2 ;
|
||||
double *KCLcurrentsbNodeRHS_1 ;
|
||||
double *KCLcurrentsbNodeRHS_2 ;
|
||||
double *KCLcurrentqNodeRHS_1 ;
|
||||
double *KCLcurrentqNodeRHS_2 ;
|
||||
|
||||
double *KCLcurrentdNodePrime ;
|
||||
double *KCLcurrentdNode ;
|
||||
double *KCLcurrentsNodePrime ;
|
||||
double *KCLcurrentsNode ;
|
||||
#endif
|
||||
|
||||
} BSIM4instance ;
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ SPICEdev RESinfo = {
|
|||
/* DEVmodSize */ &RESmSize,
|
||||
|
||||
#ifdef KIRCHHOFF
|
||||
/* DEVnodeIsNonLinear */ NULL
|
||||
/* DEVnodeIsNonLinear */ RESnodeIsNonLinear
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue