Browse Source

correct pnp type bipolar transistor current convention

pre-master-46
dwarning 4 years ago
committed by Holger Vogt
parent
commit
eaf67ac940
  1. 8
      src/spicelib/devices/bjt/bjtask.c
  2. 6
      src/spicelib/devices/hicum2/hicum2ask.c
  3. 4
      src/spicelib/devices/vbic/vbicask.c

8
src/spicelib/devices/bjt/bjtask.c

@ -94,7 +94,7 @@ BJTask(CKTcircuit *ckt, GENinstance *instPtr, int which, IFvalue *value, IFvalue
return(OK); return(OK);
case BJT_QUEST_CC: case BJT_QUEST_CC:
value->rValue = *(ckt->CKTstate0 + here->BJTcc); value->rValue = *(ckt->CKTstate0 + here->BJTcc);
value->rValue *= here->BJTm;
value->rValue *= here->BJTm * BJTmodPtr(here)->BJTtype;
return(OK); return(OK);
case BJT_QUEST_CB: case BJT_QUEST_CB:
value->rValue = *(ckt->CKTstate0 + here->BJTcb); value->rValue = *(ckt->CKTstate0 + here->BJTcb);
@ -105,7 +105,7 @@ BJTask(CKTcircuit *ckt, GENinstance *instPtr, int which, IFvalue *value, IFvalue
value->rValue -= *(ckt->CKTstate0 + here->BJTcqsub); value->rValue -= *(ckt->CKTstate0 + here->BJTcqsub);
} }
} }
value->rValue *= here->BJTm;
value->rValue *= here->BJTm * BJTmodPtr(here)->BJTtype;
return(OK); return(OK);
case BJT_QUEST_GPI: case BJT_QUEST_GPI:
value->rValue = *(ckt->CKTstate0 + here->BJTgpi); value->rValue = *(ckt->CKTstate0 + here->BJTgpi);
@ -255,7 +255,7 @@ BJTask(CKTcircuit *ckt, GENinstance *instPtr, int which, IFvalue *value, IFvalue
(*(ckt->CKTstate0 + here->BJTcqsub) + (*(ckt->CKTstate0 + here->BJTcqsub) +
*(ckt->CKTstate0 + here->BJTcdsub))); *(ckt->CKTstate0 + here->BJTcdsub)));
} }
value->rValue *= here->BJTm;
value->rValue *= here->BJTm * BJTmodPtr(here)->BJTtype;
return(OK); return(OK);
case BJT_QUEST_CE : case BJT_QUEST_CE :
if (ckt->CKTcurrentAnalysis & DOING_AC) { if (ckt->CKTcurrentAnalysis & DOING_AC) {
@ -274,7 +274,7 @@ BJTask(CKTcircuit *ckt, GENinstance *instPtr, int which, IFvalue *value, IFvalue
} }
} }
} }
value->rValue *= here->BJTm;
value->rValue *= here->BJTm * BJTmodPtr(here)->BJTtype;
return(OK); return(OK);
case BJT_QUEST_POWER : case BJT_QUEST_POWER :
if (ckt->CKTcurrentAnalysis & DOING_AC) { if (ckt->CKTcurrentAnalysis & DOING_AC) {

6
src/spicelib/devices/hicum2/hicum2ask.c

@ -99,26 +99,29 @@ HICUMask(CKTcircuit *ckt, GENinstance *instPtr, int which, IFvalue *value, IFval
return(OK); return(OK);
/* currents */ /* currents */
case HICUM_QUEST_CC: case HICUM_QUEST_CC:
// value->rValue = 0.0;
value->rValue = *(ckt->CKTstate0 + here->HICUMiciei) - value->rValue = *(ckt->CKTstate0 + here->HICUMiciei) -
*(ckt->CKTstate0 + here->HICUMibici) - *(ckt->CKTstate0 + here->HICUMibici) -
*(ckt->CKTstate0 + here->HICUMibpci) - *(ckt->CKTstate0 + here->HICUMibpci) -
*(ckt->CKTstate0 + here->HICUMisici); *(ckt->CKTstate0 + here->HICUMisici);
value->rValue *= HICUMmodPtr(here)->HICUMtype;
return(OK); return(OK);
case HICUM_QUEST_CB: case HICUM_QUEST_CB:
value->rValue = *(ckt->CKTstate0 + here->HICUMibiei) + value->rValue = *(ckt->CKTstate0 + here->HICUMibiei) +
*(ckt->CKTstate0 + here->HICUMibici) + *(ckt->CKTstate0 + here->HICUMibici) +
*(ckt->CKTstate0 + here->HICUMibpci) + *(ckt->CKTstate0 + here->HICUMibpci) +
*(ckt->CKTstate0 + here->HICUMibpsi); *(ckt->CKTstate0 + here->HICUMibpsi);
value->rValue *= HICUMmodPtr(here)->HICUMtype;
return(OK); return(OK);
case HICUM_QUEST_CE: case HICUM_QUEST_CE:
value->rValue = - *(ckt->CKTstate0 + here->HICUMibiei) - value->rValue = - *(ckt->CKTstate0 + here->HICUMibiei) -
*(ckt->CKTstate0 + here->HICUMibpei) - *(ckt->CKTstate0 + here->HICUMibpei) -
*(ckt->CKTstate0 + here->HICUMiciei); *(ckt->CKTstate0 + here->HICUMiciei);
value->rValue *= HICUMmodPtr(here)->HICUMtype;
return(OK); return(OK);
case HICUM_QUEST_CS: case HICUM_QUEST_CS:
value->rValue = *(ckt->CKTstate0 + here->HICUMisici) - value->rValue = *(ckt->CKTstate0 + here->HICUMisici) -
*(ckt->CKTstate0 + here->HICUMibpsi); *(ckt->CKTstate0 + here->HICUMibpsi);
value->rValue *= HICUMmodPtr(here)->HICUMtype;
return(OK); return(OK);
case HICUM_QUEST_CAVL: case HICUM_QUEST_CAVL:
value->rValue = here->HICUMiavl; value->rValue = here->HICUMiavl;
@ -129,7 +132,6 @@ HICUMask(CKTcircuit *ckt, GENinstance *instPtr, int which, IFvalue *value, IFval
case HICUM_QUEST_CBCI: case HICUM_QUEST_CBCI:
value->rValue = *(ckt->CKTstate0 + here->HICUMibici); value->rValue = *(ckt->CKTstate0 + here->HICUMibici);
return(OK); return(OK);
/* resistances */ /* resistances */
case HICUM_QUEST_RCX_T: case HICUM_QUEST_RCX_T:
value->rValue = here->HICUMrcx_t.rpart; value->rValue = here->HICUMrcx_t.rpart;

4
src/spicelib/devices/vbic/vbicask.c

@ -78,6 +78,7 @@ VBICask(CKTcircuit *ckt, GENinstance *instPtr, int which, IFvalue *value, IFvalu
value->rValue = *(ckt->CKTstate0 + here->VBICitzf) - value->rValue = *(ckt->CKTstate0 + here->VBICitzf) -
*(ckt->CKTstate0 + here->VBICitzr) - *(ckt->CKTstate0 + here->VBICitzr) -
*(ckt->CKTstate0 + here->VBICibc); *(ckt->CKTstate0 + here->VBICibc);
value->rValue *= VBICmodPtr(here)->VBICtype;
return(OK); return(OK);
case VBIC_QUEST_CB: case VBIC_QUEST_CB:
value->rValue = *(ckt->CKTstate0 + here->VBICibe) + value->rValue = *(ckt->CKTstate0 + here->VBICibe) +
@ -85,16 +86,19 @@ VBICask(CKTcircuit *ckt, GENinstance *instPtr, int which, IFvalue *value, IFvalu
*(ckt->CKTstate0 + here->VBICibex) + *(ckt->CKTstate0 + here->VBICibex) +
*(ckt->CKTstate0 + here->VBICibep) + *(ckt->CKTstate0 + here->VBICibep) +
*(ckt->CKTstate0 + here->VBICiccp); *(ckt->CKTstate0 + here->VBICiccp);
value->rValue *= VBICmodPtr(here)->VBICtype;
return(OK); return(OK);
case VBIC_QUEST_CE: case VBIC_QUEST_CE:
value->rValue = - *(ckt->CKTstate0 + here->VBICibe) - value->rValue = - *(ckt->CKTstate0 + here->VBICibe) -
*(ckt->CKTstate0 + here->VBICibex) - *(ckt->CKTstate0 + here->VBICibex) -
*(ckt->CKTstate0 + here->VBICitzf) + *(ckt->CKTstate0 + here->VBICitzf) +
*(ckt->CKTstate0 + here->VBICitzr); *(ckt->CKTstate0 + here->VBICitzr);
value->rValue *= VBICmodPtr(here)->VBICtype;
return(OK); return(OK);
case VBIC_QUEST_CS: case VBIC_QUEST_CS:
value->rValue = *(ckt->CKTstate0 + here->VBICiccp) - value->rValue = *(ckt->CKTstate0 + here->VBICiccp) -
*(ckt->CKTstate0 + here->VBICibcp); *(ckt->CKTstate0 + here->VBICibcp);
value->rValue *= VBICmodPtr(here)->VBICtype;
return(OK); return(OK);
case VBIC_QUEST_POWER: case VBIC_QUEST_POWER:
VBICask(ckt, instPtr, VBIC_QUEST_CC, &IC, select); VBICask(ckt, instPtr, VBIC_QUEST_CC, &IC, select);

Loading…
Cancel
Save