39 double lcapbe1,lcapbe2,lcapbe3;
40 double lcapbx1,lcapbx2,lcapbx3;
107 double lcapbc1 = 0.0;
108 double lcapbc2 = 0.0;
109 double lcapbc3 = 0.0;
111 double lcapsc1 = 0.0;
112 double lcapsc2 = 0.0;
113 double lcapsc3 = 0.0;
117 Dderivs d_dummy, d_q1, d_qb, d_dummy2;
118 Dderivs d_arg, d_sqarg, d_ic, d_q2;
119 Dderivs d_z, d_tanz, d_vbb, d_ibb, d_rbb;
120 Dderivs d_ib, d_cbe, d_tff, d_qbe;
240 cbe=csat*(evbe-1)+ckt->
CKTgmin*vbe;
241 gbe=csat*evbe/vtn+ckt->
CKTgmin;
242 gbe2 = csat*evbe/vtn/vtn;
260 gbe2=gbe3=gben2=gben3=0;
268 cbc=csat*(evbc-1)+ckt->
CKTgmin*vbc;
269 gbc=csat*evbc/vtn+ckt->
CKTgmin;
270 gbc2=csat*evbc/vtn/vtn;
307 if(oik == 0 && oikr == 0) {
315 d_q2.
d1_q = oikr*gbc;
316 d_q2.
d2_p2 = oik*gbe2;
317 d_q2.
d2_q2 = oikr*gbc2;
318 d_q2.
d3_p3 = oik*gbe3;
319 d_q2.
d3_q3 = oikr*gbc3;
343 d_dummy.
value += 1.0;
353 d_dummy.
value = cbe-cbc;
355 d_dummy.
d2_r2 = gbe2;
356 d_dummy.
d3_r3 = gbe3;
358 d_dummy.
d2_q2 = -gbc2;
359 d_dummy.
d3_q3 = -gbc3;
374 if ( !((rbpr == 0.0) && (rbpi == 0.0)))
383 if((xjrb != 0.0) && (rbpi != 0.0)) {
385 dummy=
MAX(cb/xjrb,1
e-9);
388 d_dummy.
d1_p = 1/xjrb;
396 d_dummy2.
value = 1+14.59025*
MAX(cb/xjrb,1
e-9);
397 d_dummy2.
d1_p = 14.59025/xjrb;
399 d_dummy2.
value -= 1.0;
401 DivDeriv(&d_z, &d_dummy2, &d_dummy);
411 DivDeriv(&d_rbb , &d_dummy, &d_dummy2);
419 if (d_vbb.
d1_p != 0) {
421 gbb2 = -(d_vbb.
d2_p2*0.5)*gbb1*gbb1;
422 gbb3 = gbb1*gbb1*gbb1*gbb1*(-(d_vbb.
d3_p3/6.0)
423 + 2*(d_vbb.
d2_p2*0.5)*(d_vbb.
d2_p2*0.5)*gbb1);
426 printf(
"\nd_vbb.d1_p = 0 in base spread resistance calculations\n");
433 d_ibb.
d2_r2 = 2*gbb2;
434 d_ibb.
d3_r3 = 6.0*gbb3;
507 if(tf != 0 && vbe >0) {
517 d_dummy.
value = vbc*ovtf;
529 d_dummy2.
value += xjtf;
530 DivDeriv(&d_dummy2, &d_cbe, &d_dummy2);
531 MultDeriv (&d_dummy2, &d_dummy2, &d_dummy2);
536 d_dummy2.
value = 1.0;
572 sarg=exp(-xme*log(arg));
575 0.5*czbe*xme*sarg/(arg*pe);
577 czbe*xme*(xme+1)*sarg/(arg*arg*pe*pe*6);
583 lcapbe1 = czbef2*(f3+xme*vbe/pe);
584 lcapbe2 = 0.5*xme*czbef2/pe;
587 d_qbe.
d1_p += lcapbe1;
588 d_qbe.
d2_p2 += lcapbe2*2.;
589 d_qbe.
d3_p3 += lcapbe3*6.;
598 sarg=exp(-xmc*log(arg));
601 0.5*czbc*xmc*sarg/(arg*
pc);
603 czbc*xmc*(xmc+1)*sarg/(arg*arg*pc*pc*6);
606 lcapbc1 = czbcf2*(f3+xmc*vbc/
pc);
607 lcapbc2 = 0.5*xmc*czbcf2/
pc;
612 sarg=exp(-xmc*log(arg));
615 0.5*czbx*xmc*sarg/(arg*
pc);
617 czbx*xmc*(xmc+1)*sarg/(arg*arg*pc*pc*6);
620 lcapbx1 = czbxf2*(f3+xmc*vbx/
pc);
621 lcapbx2 = 0.5*xmc*czbxf2/
pc;
626 sarg=exp(-xms*log(arg));
629 0.5*czcs*xms*sarg/(arg*ps);
631 czcs*xms*(xms+1)*sarg/(arg*arg*ps*ps*6);
633 lcapsc1 = czcs*(1+xms*vsc/ps);
634 lcapsc2 = czcs*0.5*xms/ps;
641 here->ic_x = d_ic.
d1_p;
642 here->ic_y = d_ic.
d1_q;
643 here->ic_xd = d_ic.
d1_r;
650 here->ic_x3 = d_ic.
d3_p3/6.;
651 here->ic_y3 = d_ic.
d3_q3/6.;
652 here->ic_w3 = d_ic.
d3_r3/6.;
653 here->ic_x2w = 0.5*d_ic.
d3_p2r;
654 here->ic_x2y = 0.5*d_ic.
d3_p2q;
655 here->ic_y2w = 0.5*d_ic.
d3_q2r;
656 here->ic_xy2 = 0.5*d_ic.
d3_pq2;
657 here->ic_xw2 = 0.5*d_ic.
d3_pr2;
658 here->ic_yw2 = 0.5*d_ic.
d3_qr2;
659 here->ic_xyw = d_ic.
d3_pqr;
661 here->ib_x = d_ib.
d1_p;
662 here->ib_y = d_ib.
d1_q;
666 here->ib_x3 = d_ib.
d3_p3/6.;
667 here->ib_y3 = d_ib.
d3_q3/6.;
668 here->ib_x2y = 0.5*d_ib.
d3_p2q;
669 here->ib_xy2 = 0.5*d_ib.
d3_pq2;
671 here->ibb_x = d_ibb.
d1_p;
672 here->ibb_y = d_ibb.
d1_q;
673 here->ibb_z = d_ibb.
d1_r;
680 here->ibb_x3 = d_ibb.
d3_p3/6.;
681 here->ibb_y3 = d_ibb.
d3_q3/6.;
682 here->ibb_z3 = d_ibb.
d3_r3/6.;
683 here->ibb_x2z = 0.5*d_ibb.
d3_p2r;
684 here->ibb_x2y = 0.5*d_ibb.
d3_p2q;
685 here->ibb_y2z = 0.5*d_ibb.
d3_q2r;
686 here->ibb_xy2 = 0.5*d_ibb.
d3_pq2;
687 here->ibb_xz2 = 0.5*d_ibb.
d3_pr2;
688 here->ibb_yz2 = 0.5*d_ibb.
d3_qr2;
689 here->ibb_xyz = d_ibb.
d3_pqr;
691 here->qbe_x = d_qbe.
d1_p;
692 here->qbe_y = d_qbe.
d1_q;
696 here->qbe_x3 = d_qbe.
d3_p3/6.;
697 here->qbe_y3 = d_qbe.
d3_q3/6.;
698 here->qbe_x2y = 0.5*d_qbe.
d3_p2q;
699 here->qbe_xy2 = 0.5*d_qbe.
d3_pq2;
701 here->capbc1 = lcapbc1;
702 here->capbc2 = lcapbc2;
703 here->capbc3 = lcapbc3;
705 here->capbx1 = lcapbx1;
706 here->capbx2 = lcapbx2;
707 here->capbx3 = lcapbx3;
709 here->capsc1 = lcapsc1;
710 here->capsc2 = lcapsc2;
711 here->capsc3 = lcapsc3;
int BJTdSetup(GENmodel *inModel, CKTcircuit *ckt)
BJTinstance * BJTinstances
double BJTbaseCurrentHalfResist
struct sBJTmodel * BJTnextModel
double BJTtransitTimeHighCurrentF
void TanDeriv(Dderivs *new, Dderivs *old)
void PlusDeriv(Dderivs *new, Dderivs *old1, Dderivs *old2)
double BJTexponentialSubstrate
void SqrtDeriv(Dderivs *new, Dderivs *old)
void MultDeriv(Dderivs *new, Dderivs *old1, Dderivs *old2)
struct sBJTinstance * BJTnextInstance
void ExpDeriv(Dderivs *new, Dderivs *old)
double BJTpotentialSubstrate
double BJTtransitTimeVBCFactor
double BJTleakBEemissionCoeff
double BJTtransitTimeBiasCoeffF
void DivDeriv(Dderivs *new, Dderivs *old1, Dderivs *old2)
void TimesDeriv(Dderivs *new, Dderivs *old, double k)
double BJTleakBCemissionCoeff
void InvDeriv(Dderivs *new, Dderivs *old)
double BJTbaseFractionBCcap
void EqualDeriv(Dderivs *new, Dderivs *old)