49 #include <Xyce_config.h>
53 #include <N_UTL_Misc.h>
63 #include <N_LAS_Matrix.h>
64 #include <N_LAS_Vector.h>
81 .setExpressionAccess(
NO_DOC)
84 .setDescription(
"Internal-use parameter for setting device instance temperature");
87 .setDescription(
"Number of devices in parallel");
101 .setExpressionAccess(
NO_DOC)
104 .setDescription(
"Internal-use parameter for setting device model temperature");
108 .setDescription(
"Nominal temperature");
113 .setDescription(
"Extrinsic Collector resistance");
118 .setDescription(
"Intrinsic Collector resistance");
122 .setDescription(
"Epi drift saturation voltage");
126 .setDescription(
"Epi doping parameter");
130 .setDescription(
"High current RC factor");
135 .setDescription(
"Extrinsic base resistance");
140 .setDescription(
"Intrinsic base resistance");
145 .setDescription(
"Emitter resistance");
150 .setDescription(
"Substrate resistance");
155 .setDescription(
"Parasitic base resistance");
159 .setDescription(
"Transport saturation current");
163 .setDescription(
"Forward emission coefficient");
167 .setDescription(
"Reverse emission coefficient");
171 .setDescription(
"Forward-bias depletion capacitance limit");
176 .setDescription(
"Extrinsic B-E overlap capacitance");
181 .setDescription(
"B-E zero-bias capacitance");
185 .setDescription(
"B-E built-in potential");
189 .setDescription(
"B-E grading coefficient");
193 .setDescription(
"Base-Emitter capacitor smoothing factor");
198 .setDescription(
"Extrinsic B-C overlap capacitance");
203 .setDescription(
"B-C zero-bias capacitance");
207 .setDescription(
"Epi charge parameter");
212 .setDescription(
"S-E zero-bias capacitance");
216 .setDescription(
"B-C built-in potential");
220 .setDescription(
"B-C grading coefficient");
224 .setDescription(
"Base-Collector capacitor smoothing factor");
229 .setDescription(
"S-C zero-bias capacitance");
233 .setDescription(
"S-C built-in potential");
237 .setDescription(
"S-C grading coefficient");
241 .setDescription(
"Substrate-collector capacitor smoothing factor (unused)");
245 .setDescription(
"Ideal B-E saturation current");
249 .setDescription(
"Portion of Ibei from Vbei");
253 .setDescription(
"Ideal B-E emission coefficient");
257 .setDescription(
"Nonideal B-E saturation current");
261 .setDescription(
"Non-ideal B-E emission coefficient");
265 .setDescription(
"Ideal B-C saturation current");
269 .setDescription(
"Ideal B-C emission coefficient");
273 .setDescription(
"Nonideal B-C saturation current");
277 .setDescription(
"Non-ideal B-C emission coefficient");
281 .setDescription(
"B-C weak avalanche parameter");
285 .setDescription(
"B-C weak avalanche parameter");
289 .setDescription(
"Parasitic transport saturation current");
293 .setDescription(
"Portion of Iccp from Vbep");
297 .setDescription(
"Parasitic forward emission coefficient");
301 .setDescription(
"Ideal parasitic B-E saturation current");
305 .setDescription(
"Nonideal parasitic B-E saturation current");
309 .setDescription(
"Ideal parasitic B-C saturation current");
313 .setDescription(
"Ideal parasitic B-C emission coefficient");
317 .setDescription(
"Nonideal parasitic B-C saturation current");
321 .setDescription(
"Non-ideal parasitic B-C emission coefficient");
325 .setDescription(
"Forward Early voltage");
329 .setDescription(
"Reverse Early voltage");
333 .setDescription(
"Forward knee current");
337 .setDescription(
"Reverse knee current");
341 .setDescription(
"Parasitic knee current");
345 .setDescription(
"Forward transit time");
349 .setDescription(
"Variation of tf with base width modulation");
353 .setDescription(
"Coefficient of tf with bias dependence");
357 .setDescription(
"Coefficient of tf dependence on Vbc");
361 .setDescription(
"Coefficient of tf dependence on Ic");
365 .setDescription(
"Reverse transit time");
369 .setDescription(
"Forward excess-phase delay time (unused in this version)");
373 .setDescription(
"B-E flicker (1/f) noise coefficient (unused)");
377 .setDescription(
"Base-Emitter Flicker Noise coefficient (unused)");
381 .setDescription(
"B-E flicker noise dependence (unused)");
385 .setDescription(
"Temperature exponent of re");
397 .setDescription(
"Temperature exponent of rs");
401 .setDescription(
"Temperature exponent of vo");
405 .setDescription(
"Activation energy for IS");
409 .setDescription(
"Activation energy for IBEI");
413 .setDescription(
"Activation energy for IBCI");
417 .setDescription(
"Activation energy for IBCIP");
421 .setDescription(
"Activation energy for IBEN");
425 .setDescription(
"Activation energy for IBCN");
429 .setDescription(
"Activation energy for IBCNP");
433 .setDescription(
"Temperature exponent of IS");
437 .setDescription(
"Temperature exponent of Ibei, Ibci, Ibeip, and Ibcip");
441 .setDescription(
"Temperature exponent of Iben, Ibcn, Ibenp, and Ibcnp");
445 .setDescription(
"Temperature coefficient of Nf");
449 .setDescription(
"Temperature coefficient of Avc2");
453 .setDescription(
"Thermal resistance, must be given for self-heating");
457 .setDescription(
"Thermal capacitance");
469 .setDescription(
"(unused)");
497 .setDescription(
"Saturation current for reverse operation");
501 .setDescription(
"Temperature exponent of ISRR");
505 .setDescription(
"Activation energy for ISRR");
509 .setDescription(
"Activation energy for ISP");
537 .setDescription(
"(unused)");
541 .setDescription(
"Device temperature (use 0.0 for ambient)");
545 .setDescription(
"Version of this VBIC model");
570 UserError0(*
this) <<
"ADMSvbic: Parameter M value " <<
M <<
" out of range [ 1, (+inf) [";
601 :
DeviceInstance(instance_block, configuration.getInstanceParameters(), factory_block),
614 f_bi_Equ_bi_Node_Ptr(0),
615 f_bi_Equ_ei_Node_Ptr(0),
616 f_ei_Equ_bi_Node_Ptr(0),
617 f_ei_Equ_ei_Node_Ptr(0),
618 f_bi_Equ_dt_Node_Ptr(0),
619 f_ei_Equ_dt_Node_Ptr(0),
620 f_bx_Equ_bx_Node_Ptr(0),
621 f_bx_Equ_ei_Node_Ptr(0),
622 f_ei_Equ_bx_Node_Ptr(0),
623 f_bx_Equ_dt_Node_Ptr(0),
624 f_ci_Equ_bi_Node_Ptr(0),
625 f_ci_Equ_ci_Node_Ptr(0),
626 f_ei_Equ_ci_Node_Ptr(0),
627 f_ci_Equ_ei_Node_Ptr(0),
628 f_ci_Equ_dt_Node_Ptr(0),
629 f_bi_Equ_ci_Node_Ptr(0),
630 f_bx_Equ_bp_Node_Ptr(0),
631 f_bp_Equ_bx_Node_Ptr(0),
632 f_bp_Equ_bp_Node_Ptr(0),
633 f_bp_Equ_dt_Node_Ptr(0),
634 f_c_Equ_dt_Node_Ptr(0),
635 f_cx_Equ_dt_Node_Ptr(0),
636 f_c_Equ_c_Node_Ptr(0),
637 f_c_Equ_cx_Node_Ptr(0),
638 f_cx_Equ_c_Node_Ptr(0),
639 f_cx_Equ_cx_Node_Ptr(0),
640 f_cx_Equ_bi_Node_Ptr(0),
641 f_ci_Equ_cx_Node_Ptr(0),
642 f_cx_Equ_ci_Node_Ptr(0),
643 f_b_Equ_dt_Node_Ptr(0),
644 f_b_Equ_b_Node_Ptr(0),
645 f_b_Equ_bx_Node_Ptr(0),
646 f_bx_Equ_b_Node_Ptr(0),
647 f_bx_Equ_bi_Node_Ptr(0),
648 f_bx_Equ_ci_Node_Ptr(0),
649 f_bi_Equ_bx_Node_Ptr(0),
650 f_e_Equ_dt_Node_Ptr(0),
651 f_e_Equ_e_Node_Ptr(0),
652 f_e_Equ_ei_Node_Ptr(0),
653 f_ei_Equ_e_Node_Ptr(0),
654 f_bp_Equ_bi_Node_Ptr(0),
655 f_bp_Equ_ci_Node_Ptr(0),
656 f_cx_Equ_bx_Node_Ptr(0),
657 f_cx_Equ_bp_Node_Ptr(0),
658 f_bp_Equ_cx_Node_Ptr(0),
659 f_bi_Equ_cx_Node_Ptr(0),
660 f_b_Equ_e_Node_Ptr(0),
661 f_e_Equ_b_Node_Ptr(0),
662 f_b_Equ_c_Node_Ptr(0),
663 f_c_Equ_b_Node_Ptr(0),
664 f_dt_Equ_dt_Node_Ptr(0),
665 f_dt_Equ_bp_Node_Ptr(0),
666 f_dt_Equ_cx_Node_Ptr(0),
667 f_dt_Equ_e_Node_Ptr(0),
668 f_dt_Equ_ei_Node_Ptr(0),
669 f_dt_Equ_bx_Node_Ptr(0),
670 f_dt_Equ_bi_Node_Ptr(0),
671 f_dt_Equ_b_Node_Ptr(0),
672 f_dt_Equ_ci_Node_Ptr(0),
673 f_dt_Equ_c_Node_Ptr(0),
674 q_bi_Equ_bi_Node_Ptr(0),
675 q_bi_Equ_ei_Node_Ptr(0),
676 q_ei_Equ_bi_Node_Ptr(0),
677 q_ei_Equ_ei_Node_Ptr(0),
678 q_bi_Equ_dt_Node_Ptr(0),
679 q_ei_Equ_dt_Node_Ptr(0),
680 q_bx_Equ_bx_Node_Ptr(0),
681 q_bx_Equ_ei_Node_Ptr(0),
682 q_ei_Equ_bx_Node_Ptr(0),
683 q_bx_Equ_dt_Node_Ptr(0),
684 q_ci_Equ_bi_Node_Ptr(0),
685 q_ci_Equ_ci_Node_Ptr(0),
686 q_ei_Equ_ci_Node_Ptr(0),
687 q_ci_Equ_ei_Node_Ptr(0),
688 q_ci_Equ_dt_Node_Ptr(0),
689 q_bi_Equ_ci_Node_Ptr(0),
690 q_bx_Equ_bp_Node_Ptr(0),
691 q_bp_Equ_bx_Node_Ptr(0),
692 q_bp_Equ_bp_Node_Ptr(0),
693 q_bp_Equ_dt_Node_Ptr(0),
694 q_c_Equ_dt_Node_Ptr(0),
695 q_cx_Equ_dt_Node_Ptr(0),
696 q_c_Equ_c_Node_Ptr(0),
697 q_c_Equ_cx_Node_Ptr(0),
698 q_cx_Equ_c_Node_Ptr(0),
699 q_cx_Equ_cx_Node_Ptr(0),
700 q_cx_Equ_bi_Node_Ptr(0),
701 q_ci_Equ_cx_Node_Ptr(0),
702 q_cx_Equ_ci_Node_Ptr(0),
703 q_b_Equ_dt_Node_Ptr(0),
704 q_b_Equ_b_Node_Ptr(0),
705 q_b_Equ_bx_Node_Ptr(0),
706 q_bx_Equ_b_Node_Ptr(0),
707 q_bx_Equ_bi_Node_Ptr(0),
708 q_bx_Equ_ci_Node_Ptr(0),
709 q_bi_Equ_bx_Node_Ptr(0),
710 q_e_Equ_dt_Node_Ptr(0),
711 q_e_Equ_e_Node_Ptr(0),
712 q_e_Equ_ei_Node_Ptr(0),
713 q_ei_Equ_e_Node_Ptr(0),
714 q_bp_Equ_bi_Node_Ptr(0),
715 q_bp_Equ_ci_Node_Ptr(0),
716 q_cx_Equ_bx_Node_Ptr(0),
717 q_cx_Equ_bp_Node_Ptr(0),
718 q_bp_Equ_cx_Node_Ptr(0),
719 q_bi_Equ_cx_Node_Ptr(0),
720 q_b_Equ_e_Node_Ptr(0),
721 q_e_Equ_b_Node_Ptr(0),
722 q_b_Equ_c_Node_Ptr(0),
723 q_c_Equ_b_Node_Ptr(0),
724 q_dt_Equ_dt_Node_Ptr(0),
725 q_dt_Equ_bp_Node_Ptr(0),
726 q_dt_Equ_cx_Node_Ptr(0),
727 q_dt_Equ_e_Node_Ptr(0),
728 q_dt_Equ_ei_Node_Ptr(0),
729 q_dt_Equ_bx_Node_Ptr(0),
730 q_dt_Equ_bi_Node_Ptr(0),
731 q_dt_Equ_b_Node_Ptr(0),
732 q_dt_Equ_ci_Node_Ptr(0),
733 q_dt_Equ_c_Node_Ptr(0),
734 admsTemperature(getDeviceOptions().temp.getImmutableValue<double>()),
735 externalNodeMode(false)
850 for (
int i=0;i<mapSize;++i)
855 for (
int j=0;j<rowSize;++j)
878 if (!
given(
"XYCEADMSINSTTEMP"))
894 DevelFatal0(*
this) <<
"Instance " <<
getName() <<
" has wrong number of external nodes!"
895 <<
" If you specify any internal nodes as external, you must set all that exist. ";
964 std::vector< std::vector<int> > tempStamp;
965 std::vector<int> tempMap;
966 std::vector< std::vector<int> > tempMap2;
968 int OriginalSize =
jacMap.size();
978 tempStamp.clear(); tempMap.clear(); tempMap2.clear();
980 tempStamp, tempMap, tempMap2,
989 tempStamp.clear(); tempMap.clear(); tempMap2.clear();
991 tempStamp, tempMap, tempMap2,
1000 tempStamp.clear(); tempMap.clear(); tempMap2.clear();
1002 tempStamp, tempMap, tempMap2,
1032 const std::vector<int> & extLIDVecRef)
1037 #ifdef Xyce_DEBUG_DEVICE
1041 Xyce::dout() << std::endl << section_divider << std::endl;
1042 Xyce::dout() <<
"In ADMSvbic::Instance::register LIDs\n\n";
1043 Xyce::dout() <<
"name = " <<
getName() << std::endl;
1044 Xyce::dout() <<
"number of internal variables: " <<
numIntVars << std::endl;
1045 Xyce::dout() <<
"number of external variables: " <<
numExtVars << std::endl;
1056 li_c = extLIDVecRef[i++];
1057 li_b = extLIDVecRef[i++];
1058 li_e = extLIDVecRef[i++];
1059 li_dt = extLIDVecRef[i++];
1066 li_cx = extLIDVecRef[i++];
1068 li_cx = intLIDVecRef[j++];
1073 li_ci = extLIDVecRef[i++];
1075 li_ci = intLIDVecRef[j++];
1080 li_bx = extLIDVecRef[i++];
1082 li_bx = intLIDVecRef[j++];
1087 li_bi = extLIDVecRef[i++];
1089 li_bi = intLIDVecRef[j++];
1093 li_ei = extLIDVecRef[i++];
1095 li_ei = intLIDVecRef[j++];
1099 li_bp = intLIDVecRef[j++];
1102 #ifdef Xyce_DEBUG_DEVICE
1105 Xyce::dout() <<
"\nSolution and RHS variables:\n";
1106 Xyce::dout() <<
"\nli_c = " <<
li_c << std::endl;
1107 Xyce::dout() <<
"\nli_b = " <<
li_b << std::endl;
1108 Xyce::dout() <<
"\nli_e = " <<
li_e << std::endl;
1109 Xyce::dout() <<
"\nli_dt = " <<
li_dt << std::endl;
1110 Xyce::dout() <<
"\nli_cx = " <<
li_cx << std::endl;
1111 Xyce::dout() <<
"\nli_ci = " <<
li_ci << std::endl;
1112 Xyce::dout() <<
"\nli_bx = " <<
li_bx << std::endl;
1113 Xyce::dout() <<
"\nli_bi = " <<
li_bi << std::endl;
1114 Xyce::dout() <<
"\nli_ei = " <<
li_ei << std::endl;
1115 Xyce::dout() <<
"\nli_bp = " <<
li_bp << std::endl;
1119 #ifdef Xyce_DEBUG_DEVICE
1122 Xyce::dout() <<
"\nEnd of ADMSvbic::Instance::register LIDs\n";
1123 Xyce::dout() << section_divider << std::endl;
1182 int numSta = staLIDVecRef.size();
1223 std::vector<int> & map=
jacMap;
1224 std::vector< std::vector<int> > & map2=
jacMap2;
1465 bool bsuccess =
true;
1498 bool bsuccess =
true;
1520 #ifdef Xyce_DEBUG_DEVICE
1523 Xyce::dout() << std::endl << subsection_divider << std::endl;
1524 Xyce::dout() <<
" In ADMSvbic::Instance::updateIntermediateVars\n\n";
1525 Xyce::dout() <<
" name = " <<
getName() << std::endl;
1715 double Vbe_orig,Vbe_limited,Vbe_old;
1716 double Vrth_orig,Vrth_limited,Vrth_old;
1717 double Vbep_orig,Vbep_limited,Vbep_old;
1718 double Vbcx_orig,Vbcx_limited,Vbcx_old;
1719 double Vbex_orig,Vbex_limited,Vbex_old;
1720 double Vbci_orig,Vbci_limited,Vbci_old;
1721 double Vbei_orig,Vbei_limited,Vbei_old;
1737 for (
int i=0; i < 10+0 ; ++i)
1745 for (
int i=0; i < 15 ; ++i)
1834 if ((*flagSolVectorPtr)[
li_e] == 0 ||
1835 (*flagSolVectorPtr)[
li_ei] == 0 ||
1836 (*flagSolVectorPtr)[
li_b] == 0 ||
1837 (*flagSolVectorPtr)[
li_bi] == 0 ||
1838 (*flagSolVectorPtr)[
li_bx] == 0 ||
1839 (*flagSolVectorPtr)[
li_bp] == 0 ||
1840 (*flagSolVectorPtr)[
li_c] == 0 ||
1841 (*flagSolVectorPtr)[
li_ci] == 0 ||
1842 (*flagSolVectorPtr)[
li_cx] == 0 ||
1843 (*flagSolVectorPtr)[
li_dt] == 0 )
1845 Vbci_limited = Vbcx_limited = Vbep_limited = 0;
1846 Vbe_limited = Vbei_limited = Vbex_limited = tVCrit;
1853 Vbci_limited = Vbcx_limited = Vbep_limited = 0;
1854 Vbe_limited = Vbei_limited = Vbex_limited = tVCrit;
1857 #ifdef Xyce_DEBUG_DEVICE
1860 Xyce::dout() <<
" Setting device initial condition to Base-Emitter drop=tVCrit (" << tVCrit <<
")"<<std::endl;
1879 Vbe_old = Vbe_limited;
1880 Vrth_old = Vrth_limited;
1881 Vbep_old = Vbep_limited;
1882 Vbcx_old = Vbcx_limited;
1883 Vbex_old = Vbex_limited;
1884 Vbci_old = Vbci_limited;
1885 Vbei_old = Vbei_limited;
1994 if (Vrth_limited != Vrth_orig)
2035 Vtv = ((1.380662e-23*Tdev)/1.602189e-19);
2062 psiio = ((2.0*(Vtv/rT))*log((exp((((0.5*(
model_.
PE))*rT)/Vtv))-exp(((((-0.5)*(
model_.
PE))*rT)/Vtv)))));
2063 psiin = (((psiio*rT)-((3.0*Vtv)*log(rT)))-((
model_.
EAIE)*(rT-1.0)));
2064 PEatT = (psiin+((2.0*Vtv)*log((0.5*(1.0+sqrt((1.0+(4.0*exp(((-psiin)/Vtv))))))))));
2065 psiio = ((2.0*(Vtv/rT))*log((exp((((0.5*(
model_.
PC))*rT)/Vtv))-exp(((((-0.5)*(
model_.
PC))*rT)/Vtv)))));
2066 psiin = (((psiio*rT)-((3.0*Vtv)*log(rT)))-((
model_.
EAIC)*(rT-1.0)));
2067 PCatT = (psiin+((2.0*Vtv)*log((0.5*(1.0+sqrt((1.0+(4.0*exp(((-psiin)/Vtv))))))))));
2068 psiio = ((2.0*(Vtv/rT))*log((exp((((0.5*(
model_.
PS))*rT)/Vtv))-exp(((((-0.5)*(
model_.
PS))*rT)/Vtv)))));
2069 psiin = (((psiio*rT)-((3.0*Vtv)*log(rT)))-((
model_.
EAIS)*(rT-1.0)));
2070 PSatT = (psiin+((2.0*Vtv)*log((0.5*(1.0+sqrt((1.0+(4.0*exp(((-psiin)/Vtv))))))))));
2077 EBBEatT = exp(((-VBBEatT)/(NBBEatT*Vtv)));
2083 IIKF = (1.0/IKFatT);
2099 dvh_vbei = (Vbei+dv0);
2104 qhi_vbei = ((dvh_vbei*((1.0-(
model_.
FC))+(((0.5*(
model_.
ME))*dvh_vbei)/PEatT)))*pwq);
2108 qlo_vbei = ((PEatT*(1.0-pow((1.0-(Vbei/PEatT)),(1.0-(
model_.
ME)))))/(1.0-(
model_.
ME)));
2111 qdbe = (qlo_vbei+qhi_vbei);
2116 vl0 = ((-0.5)*(dv0+mv0));
2117 q0 = (((-PEatT)*pow((1.0-(vl0/PEatT)),(1.0-(
model_.
ME))))/(1.0-(
model_.
ME)));
2118 dv_vbei = (Vbei+dv0);
2120 vl_vbei = ((0.5*(dv_vbei-mv_vbei))-dv0);
2121 qlo_vbei = (((-PEatT)*pow((1.0-(vl_vbei/PEatT)),(1.0-(
model_.
ME))))/(1.0-(
model_.
ME)));
2122 qdbe = ((qlo_vbei+(pow((1.0-(
model_.
FC)),(-(
model_.
ME)))*((Vbei-vl_vbei)+vl0)))-q0);
2127 dvh_vbex = (Vbex+dv0);
2132 qhi_vbex = ((dvh_vbex*((1.0-(
model_.
FC))+(((0.5*(
model_.
ME))*dvh_vbex)/PEatT)))*pwq);
2136 qlo_vbex = ((PEatT*(1.0-pow((1.0-(Vbex/PEatT)),(1.0-(
model_.
ME)))))/(1.0-(
model_.
ME)));
2139 qdbex = (qlo_vbex+qhi_vbex);
2144 vl0 = ((-0.5)*(dv0+mv0));
2145 q0 = (((-PEatT)*pow((1.0-(vl0/PEatT)),(1.0-(
model_.
ME))))/(1.0-(
model_.
ME)));
2146 dv_vbex = (Vbex+dv0);
2148 vl_vbex = ((0.5*(dv_vbex-mv_vbex))-dv0);
2149 qlo_vbex = (((-PEatT)*pow((1.0-(vl_vbex/PEatT)),(1.0-(
model_.
ME))))/(1.0-(
model_.
ME)));
2150 qdbex = ((qlo_vbex+(pow((1.0-(
model_.
FC)),(-(
model_.
ME)))*((Vbex-vl_vbex)+vl0)))-q0);
2155 dvh_vbci = (Vbci+dv0);
2160 qhi_vbci = ((dvh_vbci*((1.0-(
model_.
FC))+(((0.5*(
model_.
MC))*dvh_vbci)/PCatT)))*pwq);
2170 qlo_vbci = ((PCatT*(1.0-pow((1.0-(Vbci/PCatT)),(1.0-(
model_.
MC)))))/(1.0-(
model_.
MC)));
2174 qdbc = (qlo_vbci+qhi_vbci);
2183 qlo0 = ((PCatT*(1.0-pow((1.0-(vl0/PCatT)),(1.0-(
model_.
MC)))))/(1.0-(
model_.
MC)));
2187 qlo_vbci = ((PCatT*(1.0-pow((1.0-(vl_vbci/PCatT)),(1.0-(
model_.
MC)))))/(1.0-(
model_.
MC)));
2188 sel_vbci = (0.5*(vnl_vbci+1.0));
2190 cmx = pow((1.0+(dv0/PCatT)),(-(
model_.
MC)));
2191 cl_vbci = (((1.0-sel_vbci)*crt)+(sel_vbci*cmx));
2192 ql_vbci = (((Vbci-vl_vbci)+vl0)*cl_vbci);
2193 qdbc = ((ql_vbci+qlo_vbci)-qlo0);
2198 vl0 = ((-0.5)*(dv0+mv0));
2199 q0 = (((-PCatT)*pow((1.0-(vl0/PCatT)),(1.0-(
model_.
MC))))/(1.0-(
model_.
MC)));
2200 dv_vbci = (Vbci+dv0);
2202 vl_vbci = ((0.5*(dv_vbci-mv_vbci))-dv0);
2203 qlo_vbci = (((-PCatT)*pow((1.0-(vl_vbci/PCatT)),(1.0-(
model_.
MC))))/(1.0-(
model_.
MC)));
2204 qdbc = ((qlo_vbci+(pow((1.0-(
model_.
FC)),(-(
model_.
MC)))*((Vbci-vl_vbci)+vl0)))-q0);
2210 dvh_vbep = (Vbep+dv0);
2215 qhi_vbep = ((dvh_vbep*((1.0-(
model_.
FC))+(((0.5*(
model_.
MC))*dvh_vbep)/PCatT)))*pwq);
2225 qlo_vbep = ((PCatT*(1.0-pow((1.0-(Vbep/PCatT)),(1.0-(
model_.
MC)))))/(1.0-(
model_.
MC)));
2229 qdbep = (qlo_vbep+qhi_vbep);
2238 qlo0 = ((PCatT*(1.0-pow((1.0-(vl0/PCatT)),(1.0-(
model_.
MC)))))/(1.0-(
model_.
MC)));
2242 qlo_vbep = ((PCatT*(1.0-pow((1.0-(vl_vbep/PCatT)),(1.0-(
model_.
MC)))))/(1.0-(
model_.
MC)));
2243 sel_vbep = (0.5*(vnl_vbep+1.0));
2245 cmx = pow((1.0+(dv0/PCatT)),(-(
model_.
MC)));
2246 cl_vbep = (((1.0-sel_vbep)*crt)+(sel_vbep*cmx));
2247 ql_vbep = (((Vbep-vl_vbep)+vl0)*cl_vbep);
2248 qdbep = ((ql_vbep+qlo_vbep)-qlo0);
2253 vl0 = ((-0.5)*(dv0+mv0));
2254 q0 = (((-PCatT)*pow((1.0-(vl0/PCatT)),(1.0-(
model_.
MC))))/(1.0-(
model_.
MC)));
2255 dv_vbep = (Vbep+dv0);
2257 vl_vbep = ((0.5*(dv_vbep-mv_vbep))-dv0);
2258 qlo_vbep = (((-PCatT)*pow((1.0-(vl_vbep/PCatT)),(1.0-(
model_.
MC))))/(1.0-(
model_.
MC)));
2259 qdbep = ((qlo_vbep+(pow((1.0-(
model_.
FC)),(-(
model_.
MC)))*((Vbep-vl_vbep)+vl0)))-q0);
2262 argi_vbei = (Vbei/(NFatT*Vtv));
2263 expi_vbei = limexp<AdmsFadType>(argi_vbei);
2264 Ifi = (ISatT*(expi_vbei-1.0));
2265 argi_vbci = (Vbci/(NRatT*Vtv));
2266 expi_vbci = limexp<AdmsFadType>(argi_vbci);
2267 Iri = ((ISatT*ISRRatT)*(expi_vbci-1.0));
2268 q1z = ((1.0+(qdbe*IVER))+(qdbc*IVEF));
2269 q1 = ((0.5*((sqrt((((q1z-1.0e-4)*(q1z-1.0e-4))+1.0e-8))+q1z)-1.0e-4))+1.0e-4);
2270 q2 = ((Ifi*IIKF)+(Iri*IIKR));
2279 qb = ((0.5*q1)*(1.0+pow((1.0+(4.0*q2)),(
model_.
NKF))));
2291 expi_vbep = limexp<AdmsFadType>(argi_vbep);
2293 expx_vbci = limexp<AdmsFadType>(argx_vbci);
2296 qbp = (0.5*(1.0+sqrt((1.0+(4.0*q2p)))));
2306 expi_vbei = limexp<AdmsFadType>(argi_vbei);
2308 expn_vbei = limexp<AdmsFadType>(argn_vbei);
2311 argx_vbei = (((-VBBEatT)-Vbei)/(NBBEatT*Vtv));
2312 expx_vbei = limexp<AdmsFadType>(argx_vbei);
2313 Ibe = (((IBEIatT*(expi_vbei-1.0))+(IBENatT*(expn_vbei-1.0)))-((
model_.
IBBE)*(expx_vbei-EBBEatT)));
2317 Ibe = ((IBEIatT*(expi_vbei-1.0))+(IBENatT*(expn_vbei-1.0)));
2327 expi_vbex = limexp<AdmsFadType>(argi_vbex);
2329 expn_vbex = limexp<AdmsFadType>(argn_vbex);
2332 argx_vbex = (((-VBBEatT)-Vbex)/(NBBEatT*Vtv));
2333 expx_vbex = limexp<AdmsFadType>(argx_vbex);
2334 Ibex = (((IBEIatT*(expi_vbex-1.0))+(IBENatT*(expn_vbex-1.0)))-((
model_.
IBBE)*(expx_vbex-EBBEatT)));
2338 Ibex = ((IBEIatT*(expi_vbex-1.0))+(IBENatT*(expn_vbex-1.0)));
2344 expi_vbei = limexp<AdmsFadType>(argi_vbei);
2346 expn_vbei = limexp<AdmsFadType>(argn_vbei);
2349 argx_vbei = (((-VBBEatT)-Vbei)/(NBBEatT*Vtv));
2350 expx_vbei = limexp<AdmsFadType>(argx_vbei);
2351 Ibe = ((
model_.
WBE)*(((IBEIatT*(expi_vbei-1.0))+(IBENatT*(expn_vbei-1.0)))-((
model_.
IBBE)*(expx_vbei-EBBEatT))));
2355 Ibe = ((
model_.
WBE)*((IBEIatT*(expi_vbei-1.0))+(IBENatT*(expn_vbei-1.0))));
2358 expi_vbex = limexp<AdmsFadType>(argi_vbex);
2360 expn_vbex = limexp<AdmsFadType>(argn_vbex);
2363 argx_vbex = (((-VBBEatT)-Vbex)/(NBBEatT*Vtv));
2364 expx_vbex = limexp<AdmsFadType>(argx_vbex);
2365 Ibex = ((1.0-(
model_.
WBE))*(((IBEIatT*(expi_vbex-1.0))+(IBENatT*(expn_vbex-1.0)))-((
model_.
IBBE)*(expx_vbex-EBBEatT))));
2369 Ibex = ((1.0-(
model_.
WBE))*((IBEIatT*(expi_vbex-1.0))+(IBENatT*(expn_vbex-1.0))));
2374 expi_vbci = limexp<AdmsFadType>(argi_vbci);
2376 expn_vbci = limexp<AdmsFadType>(argn_vbci);
2377 Ibcj = ((IBCIatT*(expi_vbci-1.0))+(IBCNatT*(expn_vbci-1.0)));
2381 expi_vbep = limexp<AdmsFadType>(argi_vbep);
2383 expn_vbep = limexp<AdmsFadType>(argn_vbep);
2384 Ibep = ((IBEIPatT*(expi_vbep-1.0))+(IBENPatT*(expn_vbep-1.0)));
2392 vl_vbci = (0.5*(sqrt((((PCatT-Vbci)*(PCatT-Vbci))+0.01))+(PCatT-Vbci)));
2393 avalf_exparg = ((-AVC2atT)*pow(vl_vbci,((
model_.
MC)-1.0)));
2394 avalf = (((
model_.
AVC1)*vl_vbci)*limexp<AdmsFadType>(avalf_exparg));
2395 Igc = (((Itzf-Itzr)-Ibcj)*avalf);
2404 Ircx = (Vrcx/RCXatT);
2410 argi_vbci = (Vbci/Vtv);
2411 expi_vbci = limexp<AdmsFadType>(argi_vbci);
2412 argx_vbcx = (Vbcx/Vtv);
2413 expx_vbcx = limexp<AdmsFadType>(argx_vbcx);
2414 Kbci = sqrt((1.0+(GAMMatT*expi_vbci)));
2415 Kbcx = sqrt((1.0+(GAMMatT*expx_vbcx)));
2418 rKp1 = ((Kbci+1.0)/(Kbcx+1.0));
2419 Iohm = ((Vrci+(Vtv*((Kbci-Kbcx)-log(rKp1))))/RCIatT);
2420 derf = (((IVO*RCIatT)*Iohm)/(1.0+(((0.5*IVO)*IHRCF)*sqrt(((Vrci*Vrci)+0.01)))));
2421 Irci = (Iohm/sqrt((1+(derf*derf))));
2429 Irbx = (Vrbx/RBXatT);
2437 Irbi = ((Vrbi*qb)/RBIatT);
2453 Irbp = ((Vrbp*qbp)/RBPatT);
2459 sgIf = ((Ifi>0.0)?1.0:0.0);
2460 rIf = ((Ifi*sgIf)*IITF);
2461 mIf = (rIf/(rIf+1.0));
2462 tff_exparg = ((Vbci*IVTF)/1.44);
2463 tff = (((
model_.
TF)*(1.0+((
model_.
QTF)*q1)))*(1.0+((((
model_.
XTF)*limexp<AdmsFadType>(tff_exparg))*(slTF+(mIf*mIf)))*sgIf)));
2464 Qbe = (((CJEatT*qdbe)*(
model_.
WBE))+((tff*Ifi)/qb));
2465 Qbex = ((CJEatT*qdbex)*(1.0-(
model_.
WBE)));
2468 Qbep = ((CJEPatT*qdbep)+((
model_.
TR)*Ifp));
2471 Ith = (-(((((((((((Ibe*Vbei)+(Ibc*Vbci))+((Itzf-Itzr)*Vcei))+(Ibex*Vbex))+(Ibep*Vbep))+(Ircx*Vrcx))+(Irci*Vrci))+(Irbx*Vrbx))+(Irbi*Vrbi))+(Ire*Vre))+(Irbp*Vrbp)));
2707 contribTemp= (Qcth);
2715 #ifdef Xyce_DEBUG_DEVICE
2718 Xyce::dout() <<
" probeVars[admsProbeID_V_ci_ei] = "
2720 Xyce::dout() <<
" probeVars[admsProbeID_V_b_c] = "
2722 Xyce::dout() <<
" probeVars[admsProbeID_V_bp_cx] = "
2724 Xyce::dout() <<
" probeVars[admsProbeID_V_e_ei] = "
2726 Xyce::dout() <<
" probeVars[admsProbeID_V_b_bx] = "
2728 Xyce::dout() <<
" probeVars[admsProbeID_V_bx_bi] = "
2730 Xyce::dout() <<
" probeVars[admsProbeID_V_cx_ci] = "
2732 Xyce::dout() <<
" probeVars[admsProbeID_V_c_cx] = "
2734 Xyce::dout() <<
" probeVars[admsProbeID_V_b_e] = "
2736 Xyce::dout() <<
" probeVars[admsProbeID_V_dt_GND] = "
2738 Xyce::dout() <<
" probeVars[admsProbeID_V_bx_bp] = "
2740 Xyce::dout() <<
" probeVars[admsProbeID_V_bi_cx] = "
2742 Xyce::dout() <<
" probeVars[admsProbeID_V_bx_ei] = "
2744 Xyce::dout() <<
" probeVars[admsProbeID_V_bi_ci] = "
2746 Xyce::dout() <<
" probeVars[admsProbeID_V_bi_ei] = "
2748 Xyce::dout() <<
" staticContributions[admsNodeID_c] = "
2750 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_ci_ei) << std::endl;
2752 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_bp_cx) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_bp_cx) << std::endl;
2753 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_e_ei) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_e_ei) << std::endl;
2754 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_b_bx) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_b_bx) << std::endl;
2755 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_bx_bi) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_bx_bi) << std::endl;
2756 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_cx_ci) << std::endl;
2757 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_c_cx) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_c_cx) << std::endl;
2765 Xyce::dout() <<
" dynamicContributions[admsNodeID_c] = "
2767 Xyce::dout() <<
" dynamicContributions[admsNodeID_c].dx(admsProbeID_V_ci_ei) = " <<
dynamicContributions[
admsNodeID_c].dx(admsProbeID_V_ci_ei) << std::endl;
2769 Xyce::dout() <<
" dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bp_cx) = " <<
dynamicContributions[
admsNodeID_c].dx(admsProbeID_V_bp_cx) << std::endl;
2772 Xyce::dout() <<
" dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bx_bi) = " <<
dynamicContributions[
admsNodeID_c].dx(admsProbeID_V_bx_bi) << std::endl;
2773 Xyce::dout() <<
" dynamicContributions[admsNodeID_c].dx(admsProbeID_V_cx_ci) = " <<
dynamicContributions[
admsNodeID_c].dx(admsProbeID_V_cx_ci) << std::endl;
2782 Xyce::dout() <<
" Jdxp_static[admsNodeID_c] = "
2784 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_c] = "
2786 Xyce::dout() <<
" staticContributions[admsNodeID_b] = "
2788 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_ci_ei) << std::endl;
2790 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_bp_cx) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_bp_cx) << std::endl;
2791 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_e_ei) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_e_ei) << std::endl;
2792 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_b_bx) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_b_bx) << std::endl;
2793 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_bx_bi) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_bx_bi) << std::endl;
2794 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_cx_ci) << std::endl;
2795 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_c_cx) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_c_cx) << std::endl;
2803 Xyce::dout() <<
" dynamicContributions[admsNodeID_b] = "
2805 Xyce::dout() <<
" dynamicContributions[admsNodeID_b].dx(admsProbeID_V_ci_ei) = " <<
dynamicContributions[
admsNodeID_b].dx(admsProbeID_V_ci_ei) << std::endl;
2807 Xyce::dout() <<
" dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bp_cx) = " <<
dynamicContributions[
admsNodeID_b].dx(admsProbeID_V_bp_cx) << std::endl;
2810 Xyce::dout() <<
" dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bx_bi) = " <<
dynamicContributions[
admsNodeID_b].dx(admsProbeID_V_bx_bi) << std::endl;
2811 Xyce::dout() <<
" dynamicContributions[admsNodeID_b].dx(admsProbeID_V_cx_ci) = " <<
dynamicContributions[
admsNodeID_b].dx(admsProbeID_V_cx_ci) << std::endl;
2820 Xyce::dout() <<
" Jdxp_static[admsNodeID_b] = "
2822 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_b] = "
2824 Xyce::dout() <<
" staticContributions[admsNodeID_e] = "
2826 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_ci_ei) << std::endl;
2828 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_bp_cx) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_bp_cx) << std::endl;
2829 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_e_ei) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_e_ei) << std::endl;
2830 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_b_bx) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_b_bx) << std::endl;
2831 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_bx_bi) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_bx_bi) << std::endl;
2832 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_cx_ci) << std::endl;
2833 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_c_cx) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_c_cx) << std::endl;
2841 Xyce::dout() <<
" dynamicContributions[admsNodeID_e] = "
2843 Xyce::dout() <<
" dynamicContributions[admsNodeID_e].dx(admsProbeID_V_ci_ei) = " <<
dynamicContributions[
admsNodeID_e].dx(admsProbeID_V_ci_ei) << std::endl;
2845 Xyce::dout() <<
" dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bp_cx) = " <<
dynamicContributions[
admsNodeID_e].dx(admsProbeID_V_bp_cx) << std::endl;
2848 Xyce::dout() <<
" dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bx_bi) = " <<
dynamicContributions[
admsNodeID_e].dx(admsProbeID_V_bx_bi) << std::endl;
2849 Xyce::dout() <<
" dynamicContributions[admsNodeID_e].dx(admsProbeID_V_cx_ci) = " <<
dynamicContributions[
admsNodeID_e].dx(admsProbeID_V_cx_ci) << std::endl;
2858 Xyce::dout() <<
" Jdxp_static[admsNodeID_e] = "
2860 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_e] = "
2862 Xyce::dout() <<
" staticContributions[admsNodeID_dt] = "
2864 Xyce::dout() <<
" staticContributions[admsNodeID_dt].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_dt].dx(admsProbeID_V_ci_ei) << std::endl;
2866 Xyce::dout() <<
" staticContributions[admsNodeID_dt].dx(admsProbeID_V_bp_cx) = " <<
staticContributions[
admsNodeID_dt].dx(admsProbeID_V_bp_cx) << std::endl;
2869 Xyce::dout() <<
" staticContributions[admsNodeID_dt].dx(admsProbeID_V_bx_bi) = " <<
staticContributions[
admsNodeID_dt].dx(admsProbeID_V_bx_bi) << std::endl;
2870 Xyce::dout() <<
" staticContributions[admsNodeID_dt].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_dt].dx(admsProbeID_V_cx_ci) << std::endl;
2879 Xyce::dout() <<
" dynamicContributions[admsNodeID_dt] = "
2896 Xyce::dout() <<
" Jdxp_static[admsNodeID_dt] = "
2898 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_dt] = "
2900 Xyce::dout() <<
" staticContributions[admsNodeID_cx] = "
2902 Xyce::dout() <<
" staticContributions[admsNodeID_cx].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_cx].dx(admsProbeID_V_ci_ei) << std::endl;
2904 Xyce::dout() <<
" staticContributions[admsNodeID_cx].dx(admsProbeID_V_bp_cx) = " <<
staticContributions[
admsNodeID_cx].dx(admsProbeID_V_bp_cx) << std::endl;
2907 Xyce::dout() <<
" staticContributions[admsNodeID_cx].dx(admsProbeID_V_bx_bi) = " <<
staticContributions[
admsNodeID_cx].dx(admsProbeID_V_bx_bi) << std::endl;
2908 Xyce::dout() <<
" staticContributions[admsNodeID_cx].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_cx].dx(admsProbeID_V_cx_ci) << std::endl;
2917 Xyce::dout() <<
" dynamicContributions[admsNodeID_cx] = "
2934 Xyce::dout() <<
" Jdxp_static[admsNodeID_cx] = "
2936 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_cx] = "
2938 Xyce::dout() <<
" staticContributions[admsNodeID_ci] = "
2940 Xyce::dout() <<
" staticContributions[admsNodeID_ci].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_ci].dx(admsProbeID_V_ci_ei) << std::endl;
2942 Xyce::dout() <<
" staticContributions[admsNodeID_ci].dx(admsProbeID_V_bp_cx) = " <<
staticContributions[
admsNodeID_ci].dx(admsProbeID_V_bp_cx) << std::endl;
2945 Xyce::dout() <<
" staticContributions[admsNodeID_ci].dx(admsProbeID_V_bx_bi) = " <<
staticContributions[
admsNodeID_ci].dx(admsProbeID_V_bx_bi) << std::endl;
2946 Xyce::dout() <<
" staticContributions[admsNodeID_ci].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_ci].dx(admsProbeID_V_cx_ci) << std::endl;
2955 Xyce::dout() <<
" dynamicContributions[admsNodeID_ci] = "
2972 Xyce::dout() <<
" Jdxp_static[admsNodeID_ci] = "
2974 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_ci] = "
2976 Xyce::dout() <<
" staticContributions[admsNodeID_bx] = "
2978 Xyce::dout() <<
" staticContributions[admsNodeID_bx].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_bx].dx(admsProbeID_V_ci_ei) << std::endl;
2980 Xyce::dout() <<
" staticContributions[admsNodeID_bx].dx(admsProbeID_V_bp_cx) = " <<
staticContributions[
admsNodeID_bx].dx(admsProbeID_V_bp_cx) << std::endl;
2983 Xyce::dout() <<
" staticContributions[admsNodeID_bx].dx(admsProbeID_V_bx_bi) = " <<
staticContributions[
admsNodeID_bx].dx(admsProbeID_V_bx_bi) << std::endl;
2984 Xyce::dout() <<
" staticContributions[admsNodeID_bx].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_bx].dx(admsProbeID_V_cx_ci) << std::endl;
2993 Xyce::dout() <<
" dynamicContributions[admsNodeID_bx] = "
3010 Xyce::dout() <<
" Jdxp_static[admsNodeID_bx] = "
3012 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_bx] = "
3014 Xyce::dout() <<
" staticContributions[admsNodeID_bi] = "
3016 Xyce::dout() <<
" staticContributions[admsNodeID_bi].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_bi].dx(admsProbeID_V_ci_ei) << std::endl;
3018 Xyce::dout() <<
" staticContributions[admsNodeID_bi].dx(admsProbeID_V_bp_cx) = " <<
staticContributions[
admsNodeID_bi].dx(admsProbeID_V_bp_cx) << std::endl;
3021 Xyce::dout() <<
" staticContributions[admsNodeID_bi].dx(admsProbeID_V_bx_bi) = " <<
staticContributions[
admsNodeID_bi].dx(admsProbeID_V_bx_bi) << std::endl;
3022 Xyce::dout() <<
" staticContributions[admsNodeID_bi].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_bi].dx(admsProbeID_V_cx_ci) << std::endl;
3031 Xyce::dout() <<
" dynamicContributions[admsNodeID_bi] = "
3048 Xyce::dout() <<
" Jdxp_static[admsNodeID_bi] = "
3050 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_bi] = "
3052 Xyce::dout() <<
" staticContributions[admsNodeID_ei] = "
3054 Xyce::dout() <<
" staticContributions[admsNodeID_ei].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_ei].dx(admsProbeID_V_ci_ei) << std::endl;
3056 Xyce::dout() <<
" staticContributions[admsNodeID_ei].dx(admsProbeID_V_bp_cx) = " <<
staticContributions[
admsNodeID_ei].dx(admsProbeID_V_bp_cx) << std::endl;
3059 Xyce::dout() <<
" staticContributions[admsNodeID_ei].dx(admsProbeID_V_bx_bi) = " <<
staticContributions[
admsNodeID_ei].dx(admsProbeID_V_bx_bi) << std::endl;
3060 Xyce::dout() <<
" staticContributions[admsNodeID_ei].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_ei].dx(admsProbeID_V_cx_ci) << std::endl;
3069 Xyce::dout() <<
" dynamicContributions[admsNodeID_ei] = "
3086 Xyce::dout() <<
" Jdxp_static[admsNodeID_ei] = "
3088 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_ei] = "
3090 Xyce::dout() <<
" staticContributions[admsNodeID_bp] = "
3092 Xyce::dout() <<
" staticContributions[admsNodeID_bp].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_bp].dx(admsProbeID_V_ci_ei) << std::endl;
3094 Xyce::dout() <<
" staticContributions[admsNodeID_bp].dx(admsProbeID_V_bp_cx) = " <<
staticContributions[
admsNodeID_bp].dx(admsProbeID_V_bp_cx) << std::endl;
3097 Xyce::dout() <<
" staticContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bi) = " <<
staticContributions[
admsNodeID_bp].dx(admsProbeID_V_bx_bi) << std::endl;
3098 Xyce::dout() <<
" staticContributions[admsNodeID_bp].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_bp].dx(admsProbeID_V_cx_ci) << std::endl;
3107 Xyce::dout() <<
" dynamicContributions[admsNodeID_bp] = "
3124 Xyce::dout() <<
" Jdxp_static[admsNodeID_bp] = "
3126 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_bp] = "
3131 Xyce::dout() <<
"This step was limited by this device." << std::endl;
3132 Xyce::dout() <<
" Vbei_limited = " << Vbei_limited <<
" _orig = " << Vbei_orig <<
" diff = " << Vbei_limited - Vbei_orig << std::endl;
3133 Xyce::dout() <<
" Vbci_limited = " << Vbci_limited <<
" _orig = " << Vbci_orig <<
" diff = " << Vbci_limited - Vbci_orig << std::endl;
3134 Xyce::dout() <<
" Vbex_limited = " << Vbex_limited <<
" _orig = " << Vbex_orig <<
" diff = " << Vbex_limited - Vbex_orig << std::endl;
3135 Xyce::dout() <<
" Vbcx_limited = " << Vbcx_limited <<
" _orig = " << Vbcx_orig <<
" diff = " << Vbcx_limited - Vbcx_orig << std::endl;
3136 Xyce::dout() <<
" Vbep_limited = " << Vbep_limited <<
" _orig = " << Vbep_orig <<
" diff = " << Vbep_limited - Vbep_orig << std::endl;
3137 Xyce::dout() <<
" Vrth_limited = " << Vrth_limited <<
" _orig = " << Vrth_orig <<
" diff = " << Vrth_limited - Vrth_orig << std::endl;
3140 #endif // Xyce_DEBUG_DEVICE
3154 bool bsuccess =
true;
3157 #ifdef Xyce_DEBUG_DEVICE
3160 Xyce::dout() << subsection_divider << std::endl;
3161 Xyce::dout() <<
"ADMSvbic::Instance::loadDAEdFdx (" <<
getName() <<
"):" << std::endl;
3167 #ifdef Xyce_DEBUG_DEVICE
3176 #ifdef Xyce_DEBUG_DEVICE
3185 #ifdef Xyce_DEBUG_DEVICE
3194 #ifdef Xyce_DEBUG_DEVICE
3203 #ifdef Xyce_DEBUG_DEVICE
3212 #ifdef Xyce_DEBUG_DEVICE
3221 #ifdef Xyce_DEBUG_DEVICE
3230 #ifdef Xyce_DEBUG_DEVICE
3239 #ifdef Xyce_DEBUG_DEVICE
3248 #ifdef Xyce_DEBUG_DEVICE
3257 #ifdef Xyce_DEBUG_DEVICE
3266 #ifdef Xyce_DEBUG_DEVICE
3275 #ifdef Xyce_DEBUG_DEVICE
3284 #ifdef Xyce_DEBUG_DEVICE
3293 #ifdef Xyce_DEBUG_DEVICE
3302 #ifdef Xyce_DEBUG_DEVICE
3311 #ifdef Xyce_DEBUG_DEVICE
3320 #ifdef Xyce_DEBUG_DEVICE
3329 #ifdef Xyce_DEBUG_DEVICE
3338 #ifdef Xyce_DEBUG_DEVICE
3347 #ifdef Xyce_DEBUG_DEVICE
3356 #ifdef Xyce_DEBUG_DEVICE
3365 #ifdef Xyce_DEBUG_DEVICE
3374 #ifdef Xyce_DEBUG_DEVICE
3383 #ifdef Xyce_DEBUG_DEVICE
3392 #ifdef Xyce_DEBUG_DEVICE
3401 #ifdef Xyce_DEBUG_DEVICE
3410 #ifdef Xyce_DEBUG_DEVICE
3419 #ifdef Xyce_DEBUG_DEVICE
3428 #ifdef Xyce_DEBUG_DEVICE
3437 #ifdef Xyce_DEBUG_DEVICE
3446 #ifdef Xyce_DEBUG_DEVICE
3455 #ifdef Xyce_DEBUG_DEVICE
3464 #ifdef Xyce_DEBUG_DEVICE
3473 #ifdef Xyce_DEBUG_DEVICE
3482 #ifdef Xyce_DEBUG_DEVICE
3491 #ifdef Xyce_DEBUG_DEVICE
3500 #ifdef Xyce_DEBUG_DEVICE
3509 #ifdef Xyce_DEBUG_DEVICE
3518 #ifdef Xyce_DEBUG_DEVICE
3527 #ifdef Xyce_DEBUG_DEVICE
3536 #ifdef Xyce_DEBUG_DEVICE
3545 #ifdef Xyce_DEBUG_DEVICE
3554 #ifdef Xyce_DEBUG_DEVICE
3563 #ifdef Xyce_DEBUG_DEVICE
3572 #ifdef Xyce_DEBUG_DEVICE
3581 #ifdef Xyce_DEBUG_DEVICE
3590 #ifdef Xyce_DEBUG_DEVICE
3599 #ifdef Xyce_DEBUG_DEVICE
3608 #ifdef Xyce_DEBUG_DEVICE
3617 #ifdef Xyce_DEBUG_DEVICE
3626 #ifdef Xyce_DEBUG_DEVICE
3635 #ifdef Xyce_DEBUG_DEVICE
3644 #ifdef Xyce_DEBUG_DEVICE
3653 #ifdef Xyce_DEBUG_DEVICE
3675 bool bsuccess =
true;
3678 #ifdef Xyce_DEBUG_DEVICE
3681 Xyce::dout() << subsection_divider << std::endl;
3682 Xyce::dout() <<
"ADMSvbic::Instance::loadDAEdQdx (" <<
getName() <<
"):" << std::endl;
3688 #ifdef Xyce_DEBUG_DEVICE
3697 #ifdef Xyce_DEBUG_DEVICE
3706 #ifdef Xyce_DEBUG_DEVICE
3715 #ifdef Xyce_DEBUG_DEVICE
3724 #ifdef Xyce_DEBUG_DEVICE
3733 #ifdef Xyce_DEBUG_DEVICE
3742 #ifdef Xyce_DEBUG_DEVICE
3751 #ifdef Xyce_DEBUG_DEVICE
3760 #ifdef Xyce_DEBUG_DEVICE
3769 #ifdef Xyce_DEBUG_DEVICE
3778 #ifdef Xyce_DEBUG_DEVICE
3787 #ifdef Xyce_DEBUG_DEVICE
3796 #ifdef Xyce_DEBUG_DEVICE
3805 #ifdef Xyce_DEBUG_DEVICE
3814 #ifdef Xyce_DEBUG_DEVICE
3823 #ifdef Xyce_DEBUG_DEVICE
3832 #ifdef Xyce_DEBUG_DEVICE
3841 #ifdef Xyce_DEBUG_DEVICE
3850 #ifdef Xyce_DEBUG_DEVICE
3859 #ifdef Xyce_DEBUG_DEVICE
3868 #ifdef Xyce_DEBUG_DEVICE
3877 #ifdef Xyce_DEBUG_DEVICE
3886 #ifdef Xyce_DEBUG_DEVICE
3895 #ifdef Xyce_DEBUG_DEVICE
3904 #ifdef Xyce_DEBUG_DEVICE
3913 #ifdef Xyce_DEBUG_DEVICE
3922 #ifdef Xyce_DEBUG_DEVICE
3931 #ifdef Xyce_DEBUG_DEVICE
3940 #ifdef Xyce_DEBUG_DEVICE
3949 #ifdef Xyce_DEBUG_DEVICE
3958 #ifdef Xyce_DEBUG_DEVICE
3967 #ifdef Xyce_DEBUG_DEVICE
3976 #ifdef Xyce_DEBUG_DEVICE
3985 #ifdef Xyce_DEBUG_DEVICE
3994 #ifdef Xyce_DEBUG_DEVICE
4040 if ( (!((
RCX >=0.0))) )
4042 UserError0(*
this) <<
"ADMSvbic: Parameter RCX value " <<
RCX <<
" out of range [ 0.0, (+inf) [";
4046 if ( (!((
RCI >=0.0))) )
4048 UserError0(*
this) <<
"ADMSvbic: Parameter RCI value " <<
RCI <<
" out of range [ 0.0, (+inf) [";
4052 if ( (!((
VO >=0.0))) )
4054 UserError0(*
this) <<
"ADMSvbic: Parameter VO value " <<
VO <<
" out of range [ 0.0, (+inf) [";
4058 if ( (!((
GAMM >=0.0))) )
4060 UserError0(*
this) <<
"ADMSvbic: Parameter GAMM value " <<
GAMM <<
" out of range [ 0.0, (+inf) [";
4064 if ( (!((
HRCF >=0.0))) )
4066 UserError0(*
this) <<
"ADMSvbic: Parameter HRCF value " <<
HRCF <<
" out of range [ 0.0, (+inf) [";
4070 if ( (!((
RBX >=0.0))) )
4072 UserError0(*
this) <<
"ADMSvbic: Parameter RBX value " <<
RBX <<
" out of range [ 0.0, (+inf) [";
4076 if ( (!((
RBI >=0.0))) )
4078 UserError0(*
this) <<
"ADMSvbic: Parameter RBI value " <<
RBI <<
" out of range [ 0.0, (+inf) [";
4082 if ( (!((
RE >=0.0))) )
4084 UserError0(*
this) <<
"ADMSvbic: Parameter RE value " <<
RE <<
" out of range [ 0.0, (+inf) [";
4088 if ( (!((
RS >=0.0))) )
4090 UserError0(*
this) <<
"ADMSvbic: Parameter RS value " <<
RS <<
" out of range [ 0.0, (+inf) [";
4094 if ( (!((
RBP >=0.0))) )
4096 UserError0(*
this) <<
"ADMSvbic: Parameter RBP value " <<
RBP <<
" out of range [ 0.0, (+inf) [";
4100 if ( (!((
IS >0.0))) )
4102 UserError0(*
this) <<
"ADMSvbic: Parameter IS value " <<
IS <<
" out of range ] 0.0, (+inf) [";
4106 if ( (!((
NF >0.0))) )
4108 UserError0(*
this) <<
"ADMSvbic: Parameter NF value " <<
NF <<
" out of range ] 0.0, (+inf) [";
4112 if ( (!((
NR >0.0))) )
4114 UserError0(*
this) <<
"ADMSvbic: Parameter NR value " <<
NR <<
" out of range ] 0.0, (+inf) [";
4118 if ( (!((
FC >=0.0 &&
FC <1.0 ))) )
4120 UserError0(*
this) <<
"ADMSvbic: Parameter FC value " <<
FC <<
" out of range [ 0.0, 1.0 [";
4124 if ( (!((
CBEO >=0.0))) )
4126 UserError0(*
this) <<
"ADMSvbic: Parameter CBEO value " <<
CBEO <<
" out of range [ 0.0, (+inf) [";
4130 if ( (!((
CJE >=0.0))) )
4132 UserError0(*
this) <<
"ADMSvbic: Parameter CJE value " <<
CJE <<
" out of range [ 0.0, (+inf) [";
4136 if ( (!((
PE >0.0))) )
4138 UserError0(*
this) <<
"ADMSvbic: Parameter PE value " <<
PE <<
" out of range ] 0.0, (+inf) [";
4142 if ( (!((
ME >0.0 &&
ME <=1.0 ))) )
4144 UserError0(*
this) <<
"ADMSvbic: Parameter ME value " <<
ME <<
" out of range ] 0.0, 1.0 ]";
4148 if ( (!((
CBCO >=0.0))) )
4150 UserError0(*
this) <<
"ADMSvbic: Parameter CBCO value " <<
CBCO <<
" out of range [ 0.0, (+inf) [";
4154 if ( (!((
CJC >=0.0))) )
4156 UserError0(*
this) <<
"ADMSvbic: Parameter CJC value " <<
CJC <<
" out of range [ 0.0, (+inf) [";
4160 if ( (!((
QCO >=0.0))) )
4162 UserError0(*
this) <<
"ADMSvbic: Parameter QCO value " <<
QCO <<
" out of range [ 0.0, (+inf) [";
4166 if ( (!((
CJEP >=0.0))) )
4168 UserError0(*
this) <<
"ADMSvbic: Parameter CJEP value " <<
CJEP <<
" out of range [ 0.0, (+inf) [";
4172 if ( (!((
PC >0.0))) )
4174 UserError0(*
this) <<
"ADMSvbic: Parameter PC value " <<
PC <<
" out of range ] 0.0, (+inf) [";
4178 if ( (!((
MC >0.0 &&
MC <=1.0 ))) )
4180 UserError0(*
this) <<
"ADMSvbic: Parameter MC value " <<
MC <<
" out of range ] 0.0, 1.0 ]";
4184 if ( (!((
CJCP >=0.0))) )
4186 UserError0(*
this) <<
"ADMSvbic: Parameter CJCP value " <<
CJCP <<
" out of range [ 0.0, (+inf) [";
4190 if ( (!((
PS >0.0))) )
4192 UserError0(*
this) <<
"ADMSvbic: Parameter PS value " <<
PS <<
" out of range ] 0.0, (+inf) [";
4196 if ( (!((
MS >0.0 &&
MS <=1.0 ))) )
4198 UserError0(*
this) <<
"ADMSvbic: Parameter MS value " <<
MS <<
" out of range ] 0.0, 1.0 ]";
4202 if ( (!((
IBEI >0.0))) )
4204 UserError0(*
this) <<
"ADMSvbic: Parameter IBEI value " <<
IBEI <<
" out of range ] 0.0, (+inf) [";
4208 if ( (!((
WBE >=0.0 &&
WBE <=1.0 ))) )
4210 UserError0(*
this) <<
"ADMSvbic: Parameter WBE value " <<
WBE <<
" out of range [ 0.0, 1.0 ]";
4214 if ( (!((
NEI >0.0))) )
4216 UserError0(*
this) <<
"ADMSvbic: Parameter NEI value " <<
NEI <<
" out of range ] 0.0, (+inf) [";
4220 if ( (!((
IBEN >=0.0))) )
4222 UserError0(*
this) <<
"ADMSvbic: Parameter IBEN value " <<
IBEN <<
" out of range [ 0.0, (+inf) [";
4226 if ( (!((
NEN >0.0))) )
4228 UserError0(*
this) <<
"ADMSvbic: Parameter NEN value " <<
NEN <<
" out of range ] 0.0, (+inf) [";
4232 if ( (!((
IBCI >0.0))) )
4234 UserError0(*
this) <<
"ADMSvbic: Parameter IBCI value " <<
IBCI <<
" out of range ] 0.0, (+inf) [";
4238 if ( (!((
NCI >0.0))) )
4240 UserError0(*
this) <<
"ADMSvbic: Parameter NCI value " <<
NCI <<
" out of range ] 0.0, (+inf) [";
4244 if ( (!((
IBCN >=0.0))) )
4246 UserError0(*
this) <<
"ADMSvbic: Parameter IBCN value " <<
IBCN <<
" out of range [ 0.0, (+inf) [";
4250 if ( (!((
NCN >0.0))) )
4252 UserError0(*
this) <<
"ADMSvbic: Parameter NCN value " <<
NCN <<
" out of range ] 0.0, (+inf) [";
4256 if ( (!((
AVC1 >=0.0))) )
4258 UserError0(*
this) <<
"ADMSvbic: Parameter AVC1 value " <<
AVC1 <<
" out of range [ 0.0, (+inf) [";
4262 if ( (!((
AVC2 >=0.0))) )
4264 UserError0(*
this) <<
"ADMSvbic: Parameter AVC2 value " <<
AVC2 <<
" out of range [ 0.0, (+inf) [";
4268 if ( (!((
ISP >=0.0))) )
4270 UserError0(*
this) <<
"ADMSvbic: Parameter ISP value " <<
ISP <<
" out of range [ 0.0, (+inf) [";
4274 if ( (!((
WSP >=0.0 &&
WSP <=1.0 ))) )
4276 UserError0(*
this) <<
"ADMSvbic: Parameter WSP value " <<
WSP <<
" out of range [ 0.0, 1.0 ]";
4280 if ( (!((
NFP >0.0))) )
4282 UserError0(*
this) <<
"ADMSvbic: Parameter NFP value " <<
NFP <<
" out of range ] 0.0, (+inf) [";
4286 if ( (!((
IBEIP >=0.0))) )
4288 UserError0(*
this) <<
"ADMSvbic: Parameter IBEIP value " <<
IBEIP <<
" out of range [ 0.0, (+inf) [";
4292 if ( (!((
IBENP >=0.0))) )
4294 UserError0(*
this) <<
"ADMSvbic: Parameter IBENP value " <<
IBENP <<
" out of range [ 0.0, (+inf) [";
4298 if ( (!((
IBCIP >=0.0))) )
4300 UserError0(*
this) <<
"ADMSvbic: Parameter IBCIP value " <<
IBCIP <<
" out of range [ 0.0, (+inf) [";
4304 if ( (!((
NCIP >0.0))) )
4306 UserError0(*
this) <<
"ADMSvbic: Parameter NCIP value " <<
NCIP <<
" out of range ] 0.0, (+inf) [";
4310 if ( (!((
IBCNP >=0.0))) )
4312 UserError0(*
this) <<
"ADMSvbic: Parameter IBCNP value " <<
IBCNP <<
" out of range [ 0.0, (+inf) [";
4316 if ( (!((
NCNP >0.0))) )
4318 UserError0(*
this) <<
"ADMSvbic: Parameter NCNP value " <<
NCNP <<
" out of range ] 0.0, (+inf) [";
4322 if ( (!((
VEF >=0.0))) )
4324 UserError0(*
this) <<
"ADMSvbic: Parameter VEF value " <<
VEF <<
" out of range [ 0.0, (+inf) [";
4328 if ( (!((
VER >=0.0))) )
4330 UserError0(*
this) <<
"ADMSvbic: Parameter VER value " <<
VER <<
" out of range [ 0.0, (+inf) [";
4334 if ( (!((
IKF >=0.0))) )
4336 UserError0(*
this) <<
"ADMSvbic: Parameter IKF value " <<
IKF <<
" out of range [ 0.0, (+inf) [";
4340 if ( (!((
IKR >=0.0))) )
4342 UserError0(*
this) <<
"ADMSvbic: Parameter IKR value " <<
IKR <<
" out of range [ 0.0, (+inf) [";
4346 if ( (!((
IKP >=0.0))) )
4348 UserError0(*
this) <<
"ADMSvbic: Parameter IKP value " <<
IKP <<
" out of range [ 0.0, (+inf) [";
4352 if ( (!((
TF >=0.0))) )
4354 UserError0(*
this) <<
"ADMSvbic: Parameter TF value " <<
TF <<
" out of range [ 0.0, (+inf) [";
4358 if ( (!((
QTF >=0.0))) )
4360 UserError0(*
this) <<
"ADMSvbic: Parameter QTF value " <<
QTF <<
" out of range [ 0.0, (+inf) [";
4364 if ( (!((
XTF >=0.0))) )
4366 UserError0(*
this) <<
"ADMSvbic: Parameter XTF value " <<
XTF <<
" out of range [ 0.0, (+inf) [";
4370 if ( (!((
VTF >=0.0))) )
4372 UserError0(*
this) <<
"ADMSvbic: Parameter VTF value " <<
VTF <<
" out of range [ 0.0, (+inf) [";
4376 if ( (!((
ITF >=0.0))) )
4378 UserError0(*
this) <<
"ADMSvbic: Parameter ITF value " <<
ITF <<
" out of range [ 0.0, (+inf) [";
4382 if ( (!((
TR >=0.0))) )
4384 UserError0(*
this) <<
"ADMSvbic: Parameter TR value " <<
TR <<
" out of range [ 0.0, (+inf) [";
4388 if ( (!((
TD >=0.0))) )
4390 UserError0(*
this) <<
"ADMSvbic: Parameter TD value " <<
TD <<
" out of range [ 0.0, (+inf) [";
4394 if ( (!((
KFN >=0.0))) )
4396 UserError0(*
this) <<
"ADMSvbic: Parameter KFN value " <<
KFN <<
" out of range [ 0.0, (+inf) [";
4400 if ( (!((
AFN >0.0))) )
4402 UserError0(*
this) <<
"ADMSvbic: Parameter AFN value " <<
AFN <<
" out of range ] 0.0, (+inf) [";
4406 if ( (!((
BFN >0.0))) )
4408 UserError0(*
this) <<
"ADMSvbic: Parameter BFN value " <<
BFN <<
" out of range ] 0.0, (+inf) [";
4412 if ( (!((
RTH >=0.0))) )
4414 UserError0(*
this) <<
"ADMSvbic: Parameter RTH value " <<
RTH <<
" out of range [ 0.0, (+inf) [";
4418 if ( (!((
CTH >=0.0))) )
4420 UserError0(*
this) <<
"ADMSvbic: Parameter CTH value " <<
CTH <<
" out of range [ 0.0, (+inf) [";
4424 if ( (!((
VRT >=0.0))) )
4426 UserError0(*
this) <<
"ADMSvbic: Parameter VRT value " <<
VRT <<
" out of range [ 0.0, (+inf) [";
4430 if ( (!((
ART >0.0))) )
4432 UserError0(*
this) <<
"ADMSvbic: Parameter ART value " <<
ART <<
" out of range ] 0.0, (+inf) [";
4436 if ( (!((
CCSO >=0.0))) )
4438 UserError0(*
this) <<
"ADMSvbic: Parameter CCSO value " <<
CCSO <<
" out of range [ 0.0, (+inf) [";
4442 if ( (!((
NKF >0.0))) )
4444 UserError0(*
this) <<
"ADMSvbic: Parameter NKF value " <<
NKF <<
" out of range ] 0.0, (+inf) [";
4448 if ( (!((
ISRR >0.0))) )
4450 UserError0(*
this) <<
"ADMSvbic: Parameter ISRR value " <<
ISRR <<
" out of range ] 0.0, (+inf) [";
4454 if ( (!((
NBBE >0.0))) )
4456 UserError0(*
this) <<
"ADMSvbic: Parameter NBBE value " <<
NBBE <<
" out of range ] 0.0, (+inf) [";
4462 UserError0(*
this) <<
"ADMSvbic: Parameter dtype value " <<
dtype <<
" out of range [ (-1), 1 ] or in excluded range [ 0, 0 ]";
4483 std::vector<Instance*>::iterator iter;
4487 for (iter=first; iter!=last; ++iter)
4489 (*iter)->processParams();
4507 :
DeviceModel(model_block, configuration.getModelParameters(), factory_block),
4629 if (!
given(
"XYCEADMSMODTEMP"))
4660 std::vector<Instance*>::iterator iterI;
4665 for (iterI = firstI; iterI != lastI; ++iterI)
4681 std::vector<Instance*>::const_iterator iter;
4687 os <<
" name model name Parameters" << std::endl;
4688 for (i=0, iter=first; iter!=last; ++iter, ++i)
4690 os <<
" " << i <<
": " << (*iter)->getName() <<
" ";
4694 os <<
"M = " << (*iter)->M << std::endl;
4719 for (std::vector<Instance *>::const_iterator it = instanceContainer.begin(); it != instanceContainer.end(); ++it)
4731 .registerDevice(
"q", 10)
4732 .registerModelType(
"npn", 10)
4733 .registerModelType(
"pnp", 10);