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;
1201 int numSta = staLIDVecRef.size();
1242 std::vector<int> & map=
jacMap;
1243 std::vector< std::vector<int> > & map2=
jacMap2;
1484 bool bsuccess =
true;
1517 bool bsuccess =
true;
1539 #ifdef Xyce_DEBUG_DEVICE
1542 Xyce::dout() << std::endl << subsection_divider << std::endl;
1543 Xyce::dout() <<
" In ADMSvbic::Instance::updateIntermediateVars\n\n";
1544 Xyce::dout() <<
" name = " <<
getName() << std::endl;
1734 double Vbe_orig,Vbe_limited,Vbe_old;
1735 double Vrth_orig,Vrth_limited,Vrth_old;
1736 double Vbep_orig,Vbep_limited,Vbep_old;
1737 double Vbcx_orig,Vbcx_limited,Vbcx_old;
1738 double Vbex_orig,Vbex_limited,Vbex_old;
1739 double Vbci_orig,Vbci_limited,Vbci_old;
1740 double Vbei_orig,Vbei_limited,Vbei_old;
1756 for (
int i=0; i < 10+0 ; ++i)
1764 for (
int i=0; i < 15 ; ++i)
1853 if ((*flagSolVectorPtr)[
li_e] == 0 ||
1854 (*flagSolVectorPtr)[
li_ei] == 0 ||
1855 (*flagSolVectorPtr)[
li_b] == 0 ||
1856 (*flagSolVectorPtr)[
li_bi] == 0 ||
1857 (*flagSolVectorPtr)[
li_bx] == 0 ||
1858 (*flagSolVectorPtr)[
li_bp] == 0 ||
1859 (*flagSolVectorPtr)[
li_c] == 0 ||
1860 (*flagSolVectorPtr)[
li_ci] == 0 ||
1861 (*flagSolVectorPtr)[
li_cx] == 0 ||
1862 (*flagSolVectorPtr)[
li_dt] == 0 )
1864 Vbci_limited = Vbcx_limited = Vbep_limited = 0;
1865 Vbe_limited = Vbei_limited = Vbex_limited = tVCrit;
1872 Vbci_limited = Vbcx_limited = Vbep_limited = 0;
1873 Vbe_limited = Vbei_limited = Vbex_limited = tVCrit;
1876 #ifdef Xyce_DEBUG_DEVICE
1879 Xyce::dout() <<
" Setting device initial condition to Base-Emitter drop=tVCrit (" << tVCrit <<
")"<<std::endl;
1898 Vbe_old = Vbe_limited;
1899 Vrth_old = Vrth_limited;
1900 Vbep_old = Vbep_limited;
1901 Vbcx_old = Vbcx_limited;
1902 Vbex_old = Vbex_limited;
1903 Vbci_old = Vbci_limited;
1904 Vbei_old = Vbei_limited;
2013 if (Vrth_limited != Vrth_orig)
2054 Vtv = ((1.380662e-23*Tdev)/1.602189e-19);
2081 psiio = ((2.0*(Vtv/rT))*log((exp((((0.5*(
model_.
PE))*rT)/Vtv))-exp(((((-0.5)*(
model_.
PE))*rT)/Vtv)))));
2082 psiin = (((psiio*rT)-((3.0*Vtv)*log(rT)))-((
model_.
EAIE)*(rT-1.0)));
2083 PEatT = (psiin+((2.0*Vtv)*log((0.5*(1.0+sqrt((1.0+(4.0*exp(((-psiin)/Vtv))))))))));
2084 psiio = ((2.0*(Vtv/rT))*log((exp((((0.5*(
model_.
PC))*rT)/Vtv))-exp(((((-0.5)*(
model_.
PC))*rT)/Vtv)))));
2085 psiin = (((psiio*rT)-((3.0*Vtv)*log(rT)))-((
model_.
EAIC)*(rT-1.0)));
2086 PCatT = (psiin+((2.0*Vtv)*log((0.5*(1.0+sqrt((1.0+(4.0*exp(((-psiin)/Vtv))))))))));
2087 psiio = ((2.0*(Vtv/rT))*log((exp((((0.5*(
model_.
PS))*rT)/Vtv))-exp(((((-0.5)*(
model_.
PS))*rT)/Vtv)))));
2088 psiin = (((psiio*rT)-((3.0*Vtv)*log(rT)))-((
model_.
EAIS)*(rT-1.0)));
2089 PSatT = (psiin+((2.0*Vtv)*log((0.5*(1.0+sqrt((1.0+(4.0*exp(((-psiin)/Vtv))))))))));
2096 EBBEatT = exp(((-VBBEatT)/(NBBEatT*Vtv)));
2102 IIKF = (1.0/IKFatT);
2118 dvh_vbei = (Vbei+dv0);
2123 qhi_vbei = ((dvh_vbei*((1.0-(
model_.
FC))+(((0.5*(
model_.
ME))*dvh_vbei)/PEatT)))*pwq);
2127 qlo_vbei = ((PEatT*(1.0-pow((1.0-(Vbei/PEatT)),(1.0-(
model_.
ME)))))/(1.0-(
model_.
ME)));
2130 qdbe = (qlo_vbei+qhi_vbei);
2135 vl0 = ((-0.5)*(dv0+mv0));
2136 q0 = (((-PEatT)*pow((1.0-(vl0/PEatT)),(1.0-(
model_.
ME))))/(1.0-(
model_.
ME)));
2137 dv_vbei = (Vbei+dv0);
2139 vl_vbei = ((0.5*(dv_vbei-mv_vbei))-dv0);
2140 qlo_vbei = (((-PEatT)*pow((1.0-(vl_vbei/PEatT)),(1.0-(
model_.
ME))))/(1.0-(
model_.
ME)));
2141 qdbe = ((qlo_vbei+(pow((1.0-(
model_.
FC)),(-(
model_.
ME)))*((Vbei-vl_vbei)+vl0)))-q0);
2146 dvh_vbex = (Vbex+dv0);
2151 qhi_vbex = ((dvh_vbex*((1.0-(
model_.
FC))+(((0.5*(
model_.
ME))*dvh_vbex)/PEatT)))*pwq);
2155 qlo_vbex = ((PEatT*(1.0-pow((1.0-(Vbex/PEatT)),(1.0-(
model_.
ME)))))/(1.0-(
model_.
ME)));
2158 qdbex = (qlo_vbex+qhi_vbex);
2163 vl0 = ((-0.5)*(dv0+mv0));
2164 q0 = (((-PEatT)*pow((1.0-(vl0/PEatT)),(1.0-(
model_.
ME))))/(1.0-(
model_.
ME)));
2165 dv_vbex = (Vbex+dv0);
2167 vl_vbex = ((0.5*(dv_vbex-mv_vbex))-dv0);
2168 qlo_vbex = (((-PEatT)*pow((1.0-(vl_vbex/PEatT)),(1.0-(
model_.
ME))))/(1.0-(
model_.
ME)));
2169 qdbex = ((qlo_vbex+(pow((1.0-(
model_.
FC)),(-(
model_.
ME)))*((Vbex-vl_vbex)+vl0)))-q0);
2174 dvh_vbci = (Vbci+dv0);
2179 qhi_vbci = ((dvh_vbci*((1.0-(
model_.
FC))+(((0.5*(
model_.
MC))*dvh_vbci)/PCatT)))*pwq);
2189 qlo_vbci = ((PCatT*(1.0-pow((1.0-(Vbci/PCatT)),(1.0-(
model_.
MC)))))/(1.0-(
model_.
MC)));
2193 qdbc = (qlo_vbci+qhi_vbci);
2202 qlo0 = ((PCatT*(1.0-pow((1.0-(vl0/PCatT)),(1.0-(
model_.
MC)))))/(1.0-(
model_.
MC)));
2206 qlo_vbci = ((PCatT*(1.0-pow((1.0-(vl_vbci/PCatT)),(1.0-(
model_.
MC)))))/(1.0-(
model_.
MC)));
2207 sel_vbci = (0.5*(vnl_vbci+1.0));
2209 cmx = pow((1.0+(dv0/PCatT)),(-(
model_.
MC)));
2210 cl_vbci = (((1.0-sel_vbci)*crt)+(sel_vbci*cmx));
2211 ql_vbci = (((Vbci-vl_vbci)+vl0)*cl_vbci);
2212 qdbc = ((ql_vbci+qlo_vbci)-qlo0);
2217 vl0 = ((-0.5)*(dv0+mv0));
2218 q0 = (((-PCatT)*pow((1.0-(vl0/PCatT)),(1.0-(
model_.
MC))))/(1.0-(
model_.
MC)));
2219 dv_vbci = (Vbci+dv0);
2221 vl_vbci = ((0.5*(dv_vbci-mv_vbci))-dv0);
2222 qlo_vbci = (((-PCatT)*pow((1.0-(vl_vbci/PCatT)),(1.0-(
model_.
MC))))/(1.0-(
model_.
MC)));
2223 qdbc = ((qlo_vbci+(pow((1.0-(
model_.
FC)),(-(
model_.
MC)))*((Vbci-vl_vbci)+vl0)))-q0);
2229 dvh_vbep = (Vbep+dv0);
2234 qhi_vbep = ((dvh_vbep*((1.0-(
model_.
FC))+(((0.5*(
model_.
MC))*dvh_vbep)/PCatT)))*pwq);
2244 qlo_vbep = ((PCatT*(1.0-pow((1.0-(Vbep/PCatT)),(1.0-(
model_.
MC)))))/(1.0-(
model_.
MC)));
2248 qdbep = (qlo_vbep+qhi_vbep);
2257 qlo0 = ((PCatT*(1.0-pow((1.0-(vl0/PCatT)),(1.0-(
model_.
MC)))))/(1.0-(
model_.
MC)));
2261 qlo_vbep = ((PCatT*(1.0-pow((1.0-(vl_vbep/PCatT)),(1.0-(
model_.
MC)))))/(1.0-(
model_.
MC)));
2262 sel_vbep = (0.5*(vnl_vbep+1.0));
2264 cmx = pow((1.0+(dv0/PCatT)),(-(
model_.
MC)));
2265 cl_vbep = (((1.0-sel_vbep)*crt)+(sel_vbep*cmx));
2266 ql_vbep = (((Vbep-vl_vbep)+vl0)*cl_vbep);
2267 qdbep = ((ql_vbep+qlo_vbep)-qlo0);
2272 vl0 = ((-0.5)*(dv0+mv0));
2273 q0 = (((-PCatT)*pow((1.0-(vl0/PCatT)),(1.0-(
model_.
MC))))/(1.0-(
model_.
MC)));
2274 dv_vbep = (Vbep+dv0);
2276 vl_vbep = ((0.5*(dv_vbep-mv_vbep))-dv0);
2277 qlo_vbep = (((-PCatT)*pow((1.0-(vl_vbep/PCatT)),(1.0-(
model_.
MC))))/(1.0-(
model_.
MC)));
2278 qdbep = ((qlo_vbep+(pow((1.0-(
model_.
FC)),(-(
model_.
MC)))*((Vbep-vl_vbep)+vl0)))-q0);
2281 argi_vbei = (Vbei/(NFatT*Vtv));
2282 expi_vbei = limexp<AdmsFadType>(argi_vbei);
2283 Ifi = (ISatT*(expi_vbei-1.0));
2284 argi_vbci = (Vbci/(NRatT*Vtv));
2285 expi_vbci = limexp<AdmsFadType>(argi_vbci);
2286 Iri = ((ISatT*ISRRatT)*(expi_vbci-1.0));
2287 q1z = ((1.0+(qdbe*IVER))+(qdbc*IVEF));
2288 q1 = ((0.5*((sqrt((((q1z-1.0e-4)*(q1z-1.0e-4))+1.0e-8))+q1z)-1.0e-4))+1.0e-4);
2289 q2 = ((Ifi*IIKF)+(Iri*IIKR));
2298 qb = ((0.5*q1)*(1.0+pow((1.0+(4.0*q2)),(
model_.
NKF))));
2310 expi_vbep = limexp<AdmsFadType>(argi_vbep);
2312 expx_vbci = limexp<AdmsFadType>(argx_vbci);
2315 qbp = (0.5*(1.0+sqrt((1.0+(4.0*q2p)))));
2325 expi_vbei = limexp<AdmsFadType>(argi_vbei);
2327 expn_vbei = limexp<AdmsFadType>(argn_vbei);
2330 argx_vbei = (((-VBBEatT)-Vbei)/(NBBEatT*Vtv));
2331 expx_vbei = limexp<AdmsFadType>(argx_vbei);
2332 Ibe = (((IBEIatT*(expi_vbei-1.0))+(IBENatT*(expn_vbei-1.0)))-((
model_.
IBBE)*(expx_vbei-EBBEatT)));
2336 Ibe = ((IBEIatT*(expi_vbei-1.0))+(IBENatT*(expn_vbei-1.0)));
2346 expi_vbex = limexp<AdmsFadType>(argi_vbex);
2348 expn_vbex = limexp<AdmsFadType>(argn_vbex);
2351 argx_vbex = (((-VBBEatT)-Vbex)/(NBBEatT*Vtv));
2352 expx_vbex = limexp<AdmsFadType>(argx_vbex);
2353 Ibex = (((IBEIatT*(expi_vbex-1.0))+(IBENatT*(expn_vbex-1.0)))-((
model_.
IBBE)*(expx_vbex-EBBEatT)));
2357 Ibex = ((IBEIatT*(expi_vbex-1.0))+(IBENatT*(expn_vbex-1.0)));
2363 expi_vbei = limexp<AdmsFadType>(argi_vbei);
2365 expn_vbei = limexp<AdmsFadType>(argn_vbei);
2368 argx_vbei = (((-VBBEatT)-Vbei)/(NBBEatT*Vtv));
2369 expx_vbei = limexp<AdmsFadType>(argx_vbei);
2370 Ibe = ((
model_.
WBE)*(((IBEIatT*(expi_vbei-1.0))+(IBENatT*(expn_vbei-1.0)))-((
model_.
IBBE)*(expx_vbei-EBBEatT))));
2374 Ibe = ((
model_.
WBE)*((IBEIatT*(expi_vbei-1.0))+(IBENatT*(expn_vbei-1.0))));
2377 expi_vbex = limexp<AdmsFadType>(argi_vbex);
2379 expn_vbex = limexp<AdmsFadType>(argn_vbex);
2382 argx_vbex = (((-VBBEatT)-Vbex)/(NBBEatT*Vtv));
2383 expx_vbex = limexp<AdmsFadType>(argx_vbex);
2384 Ibex = ((1.0-(
model_.
WBE))*(((IBEIatT*(expi_vbex-1.0))+(IBENatT*(expn_vbex-1.0)))-((
model_.
IBBE)*(expx_vbex-EBBEatT))));
2388 Ibex = ((1.0-(
model_.
WBE))*((IBEIatT*(expi_vbex-1.0))+(IBENatT*(expn_vbex-1.0))));
2393 expi_vbci = limexp<AdmsFadType>(argi_vbci);
2395 expn_vbci = limexp<AdmsFadType>(argn_vbci);
2396 Ibcj = ((IBCIatT*(expi_vbci-1.0))+(IBCNatT*(expn_vbci-1.0)));
2400 expi_vbep = limexp<AdmsFadType>(argi_vbep);
2402 expn_vbep = limexp<AdmsFadType>(argn_vbep);
2403 Ibep = ((IBEIPatT*(expi_vbep-1.0))+(IBENPatT*(expn_vbep-1.0)));
2411 vl_vbci = (0.5*(sqrt((((PCatT-Vbci)*(PCatT-Vbci))+0.01))+(PCatT-Vbci)));
2412 avalf_exparg = ((-AVC2atT)*pow(vl_vbci,((
model_.
MC)-1.0)));
2413 avalf = (((
model_.
AVC1)*vl_vbci)*limexp<AdmsFadType>(avalf_exparg));
2414 Igc = (((Itzf-Itzr)-Ibcj)*avalf);
2423 Ircx = (Vrcx/RCXatT);
2429 argi_vbci = (Vbci/Vtv);
2430 expi_vbci = limexp<AdmsFadType>(argi_vbci);
2431 argx_vbcx = (Vbcx/Vtv);
2432 expx_vbcx = limexp<AdmsFadType>(argx_vbcx);
2433 Kbci = sqrt((1.0+(GAMMatT*expi_vbci)));
2434 Kbcx = sqrt((1.0+(GAMMatT*expx_vbcx)));
2437 rKp1 = ((Kbci+1.0)/(Kbcx+1.0));
2438 Iohm = ((Vrci+(Vtv*((Kbci-Kbcx)-log(rKp1))))/RCIatT);
2439 derf = (((IVO*RCIatT)*Iohm)/(1.0+(((0.5*IVO)*IHRCF)*sqrt(((Vrci*Vrci)+0.01)))));
2440 Irci = (Iohm/sqrt((1+(derf*derf))));
2448 Irbx = (Vrbx/RBXatT);
2456 Irbi = ((Vrbi*qb)/RBIatT);
2472 Irbp = ((Vrbp*qbp)/RBPatT);
2478 sgIf = ((Ifi>0.0)?1.0:0.0);
2479 rIf = ((Ifi*sgIf)*IITF);
2480 mIf = (rIf/(rIf+1.0));
2481 tff_exparg = ((Vbci*IVTF)/1.44);
2482 tff = (((
model_.
TF)*(1.0+((
model_.
QTF)*q1)))*(1.0+((((
model_.
XTF)*limexp<AdmsFadType>(tff_exparg))*(slTF+(mIf*mIf)))*sgIf)));
2483 Qbe = (((CJEatT*qdbe)*(
model_.
WBE))+((tff*Ifi)/qb));
2484 Qbex = ((CJEatT*qdbex)*(1.0-(
model_.
WBE)));
2487 Qbep = ((CJEPatT*qdbep)+((
model_.
TR)*Ifp));
2490 Ith = (-(((((((((((Ibe*Vbei)+(Ibc*Vbci))+((Itzf-Itzr)*Vcei))+(Ibex*Vbex))+(Ibep*Vbep))+(Ircx*Vrcx))+(Irci*Vrci))+(Irbx*Vrbx))+(Irbi*Vrbi))+(Ire*Vre))+(Irbp*Vrbp)));
2726 contribTemp= (Qcth);
2734 #ifdef Xyce_DEBUG_DEVICE
2737 Xyce::dout() <<
" probeVars[admsProbeID_V_ci_ei] = "
2739 Xyce::dout() <<
" probeVars[admsProbeID_V_b_c] = "
2741 Xyce::dout() <<
" probeVars[admsProbeID_V_bp_cx] = "
2743 Xyce::dout() <<
" probeVars[admsProbeID_V_e_ei] = "
2745 Xyce::dout() <<
" probeVars[admsProbeID_V_b_bx] = "
2747 Xyce::dout() <<
" probeVars[admsProbeID_V_bx_bi] = "
2749 Xyce::dout() <<
" probeVars[admsProbeID_V_cx_ci] = "
2751 Xyce::dout() <<
" probeVars[admsProbeID_V_c_cx] = "
2753 Xyce::dout() <<
" probeVars[admsProbeID_V_b_e] = "
2755 Xyce::dout() <<
" probeVars[admsProbeID_V_dt_GND] = "
2757 Xyce::dout() <<
" probeVars[admsProbeID_V_bx_bp] = "
2759 Xyce::dout() <<
" probeVars[admsProbeID_V_bi_cx] = "
2761 Xyce::dout() <<
" probeVars[admsProbeID_V_bx_ei] = "
2763 Xyce::dout() <<
" probeVars[admsProbeID_V_bi_ci] = "
2765 Xyce::dout() <<
" probeVars[admsProbeID_V_bi_ei] = "
2767 Xyce::dout() <<
" staticContributions[admsNodeID_c] = "
2769 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_ci_ei) << std::endl;
2771 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_bp_cx) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_bp_cx) << std::endl;
2772 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_e_ei) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_e_ei) << std::endl;
2773 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_b_bx) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_b_bx) << std::endl;
2774 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_bx_bi) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_bx_bi) << std::endl;
2775 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_cx_ci) << std::endl;
2776 Xyce::dout() <<
" staticContributions[admsNodeID_c].dx(admsProbeID_V_c_cx) = " <<
staticContributions[
admsNodeID_c].dx(admsProbeID_V_c_cx) << std::endl;
2784 Xyce::dout() <<
" dynamicContributions[admsNodeID_c] = "
2786 Xyce::dout() <<
" dynamicContributions[admsNodeID_c].dx(admsProbeID_V_ci_ei) = " <<
dynamicContributions[
admsNodeID_c].dx(admsProbeID_V_ci_ei) << std::endl;
2788 Xyce::dout() <<
" dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bp_cx) = " <<
dynamicContributions[
admsNodeID_c].dx(admsProbeID_V_bp_cx) << std::endl;
2791 Xyce::dout() <<
" dynamicContributions[admsNodeID_c].dx(admsProbeID_V_bx_bi) = " <<
dynamicContributions[
admsNodeID_c].dx(admsProbeID_V_bx_bi) << std::endl;
2792 Xyce::dout() <<
" dynamicContributions[admsNodeID_c].dx(admsProbeID_V_cx_ci) = " <<
dynamicContributions[
admsNodeID_c].dx(admsProbeID_V_cx_ci) << std::endl;
2801 Xyce::dout() <<
" Jdxp_static[admsNodeID_c] = "
2803 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_c] = "
2805 Xyce::dout() <<
" staticContributions[admsNodeID_b] = "
2807 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_ci_ei) << std::endl;
2809 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_bp_cx) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_bp_cx) << std::endl;
2810 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_e_ei) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_e_ei) << std::endl;
2811 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_b_bx) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_b_bx) << std::endl;
2812 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_bx_bi) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_bx_bi) << std::endl;
2813 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_cx_ci) << std::endl;
2814 Xyce::dout() <<
" staticContributions[admsNodeID_b].dx(admsProbeID_V_c_cx) = " <<
staticContributions[
admsNodeID_b].dx(admsProbeID_V_c_cx) << std::endl;
2822 Xyce::dout() <<
" dynamicContributions[admsNodeID_b] = "
2824 Xyce::dout() <<
" dynamicContributions[admsNodeID_b].dx(admsProbeID_V_ci_ei) = " <<
dynamicContributions[
admsNodeID_b].dx(admsProbeID_V_ci_ei) << std::endl;
2826 Xyce::dout() <<
" dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bp_cx) = " <<
dynamicContributions[
admsNodeID_b].dx(admsProbeID_V_bp_cx) << std::endl;
2829 Xyce::dout() <<
" dynamicContributions[admsNodeID_b].dx(admsProbeID_V_bx_bi) = " <<
dynamicContributions[
admsNodeID_b].dx(admsProbeID_V_bx_bi) << std::endl;
2830 Xyce::dout() <<
" dynamicContributions[admsNodeID_b].dx(admsProbeID_V_cx_ci) = " <<
dynamicContributions[
admsNodeID_b].dx(admsProbeID_V_cx_ci) << std::endl;
2839 Xyce::dout() <<
" Jdxp_static[admsNodeID_b] = "
2841 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_b] = "
2843 Xyce::dout() <<
" staticContributions[admsNodeID_e] = "
2845 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_ci_ei) << std::endl;
2847 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_bp_cx) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_bp_cx) << std::endl;
2848 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_e_ei) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_e_ei) << std::endl;
2849 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_b_bx) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_b_bx) << std::endl;
2850 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_bx_bi) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_bx_bi) << std::endl;
2851 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_cx_ci) << std::endl;
2852 Xyce::dout() <<
" staticContributions[admsNodeID_e].dx(admsProbeID_V_c_cx) = " <<
staticContributions[
admsNodeID_e].dx(admsProbeID_V_c_cx) << std::endl;
2860 Xyce::dout() <<
" dynamicContributions[admsNodeID_e] = "
2862 Xyce::dout() <<
" dynamicContributions[admsNodeID_e].dx(admsProbeID_V_ci_ei) = " <<
dynamicContributions[
admsNodeID_e].dx(admsProbeID_V_ci_ei) << std::endl;
2864 Xyce::dout() <<
" dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bp_cx) = " <<
dynamicContributions[
admsNodeID_e].dx(admsProbeID_V_bp_cx) << std::endl;
2867 Xyce::dout() <<
" dynamicContributions[admsNodeID_e].dx(admsProbeID_V_bx_bi) = " <<
dynamicContributions[
admsNodeID_e].dx(admsProbeID_V_bx_bi) << std::endl;
2868 Xyce::dout() <<
" dynamicContributions[admsNodeID_e].dx(admsProbeID_V_cx_ci) = " <<
dynamicContributions[
admsNodeID_e].dx(admsProbeID_V_cx_ci) << std::endl;
2877 Xyce::dout() <<
" Jdxp_static[admsNodeID_e] = "
2879 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_e] = "
2881 Xyce::dout() <<
" staticContributions[admsNodeID_dt] = "
2883 Xyce::dout() <<
" staticContributions[admsNodeID_dt].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_dt].dx(admsProbeID_V_ci_ei) << std::endl;
2885 Xyce::dout() <<
" staticContributions[admsNodeID_dt].dx(admsProbeID_V_bp_cx) = " <<
staticContributions[
admsNodeID_dt].dx(admsProbeID_V_bp_cx) << std::endl;
2888 Xyce::dout() <<
" staticContributions[admsNodeID_dt].dx(admsProbeID_V_bx_bi) = " <<
staticContributions[
admsNodeID_dt].dx(admsProbeID_V_bx_bi) << std::endl;
2889 Xyce::dout() <<
" staticContributions[admsNodeID_dt].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_dt].dx(admsProbeID_V_cx_ci) << std::endl;
2898 Xyce::dout() <<
" dynamicContributions[admsNodeID_dt] = "
2915 Xyce::dout() <<
" Jdxp_static[admsNodeID_dt] = "
2917 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_dt] = "
2919 Xyce::dout() <<
" staticContributions[admsNodeID_cx] = "
2921 Xyce::dout() <<
" staticContributions[admsNodeID_cx].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_cx].dx(admsProbeID_V_ci_ei) << std::endl;
2923 Xyce::dout() <<
" staticContributions[admsNodeID_cx].dx(admsProbeID_V_bp_cx) = " <<
staticContributions[
admsNodeID_cx].dx(admsProbeID_V_bp_cx) << std::endl;
2926 Xyce::dout() <<
" staticContributions[admsNodeID_cx].dx(admsProbeID_V_bx_bi) = " <<
staticContributions[
admsNodeID_cx].dx(admsProbeID_V_bx_bi) << std::endl;
2927 Xyce::dout() <<
" staticContributions[admsNodeID_cx].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_cx].dx(admsProbeID_V_cx_ci) << std::endl;
2936 Xyce::dout() <<
" dynamicContributions[admsNodeID_cx] = "
2953 Xyce::dout() <<
" Jdxp_static[admsNodeID_cx] = "
2955 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_cx] = "
2957 Xyce::dout() <<
" staticContributions[admsNodeID_ci] = "
2959 Xyce::dout() <<
" staticContributions[admsNodeID_ci].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_ci].dx(admsProbeID_V_ci_ei) << std::endl;
2961 Xyce::dout() <<
" staticContributions[admsNodeID_ci].dx(admsProbeID_V_bp_cx) = " <<
staticContributions[
admsNodeID_ci].dx(admsProbeID_V_bp_cx) << std::endl;
2964 Xyce::dout() <<
" staticContributions[admsNodeID_ci].dx(admsProbeID_V_bx_bi) = " <<
staticContributions[
admsNodeID_ci].dx(admsProbeID_V_bx_bi) << std::endl;
2965 Xyce::dout() <<
" staticContributions[admsNodeID_ci].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_ci].dx(admsProbeID_V_cx_ci) << std::endl;
2974 Xyce::dout() <<
" dynamicContributions[admsNodeID_ci] = "
2991 Xyce::dout() <<
" Jdxp_static[admsNodeID_ci] = "
2993 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_ci] = "
2995 Xyce::dout() <<
" staticContributions[admsNodeID_bx] = "
2997 Xyce::dout() <<
" staticContributions[admsNodeID_bx].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_bx].dx(admsProbeID_V_ci_ei) << std::endl;
2999 Xyce::dout() <<
" staticContributions[admsNodeID_bx].dx(admsProbeID_V_bp_cx) = " <<
staticContributions[
admsNodeID_bx].dx(admsProbeID_V_bp_cx) << std::endl;
3002 Xyce::dout() <<
" staticContributions[admsNodeID_bx].dx(admsProbeID_V_bx_bi) = " <<
staticContributions[
admsNodeID_bx].dx(admsProbeID_V_bx_bi) << std::endl;
3003 Xyce::dout() <<
" staticContributions[admsNodeID_bx].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_bx].dx(admsProbeID_V_cx_ci) << std::endl;
3012 Xyce::dout() <<
" dynamicContributions[admsNodeID_bx] = "
3029 Xyce::dout() <<
" Jdxp_static[admsNodeID_bx] = "
3031 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_bx] = "
3033 Xyce::dout() <<
" staticContributions[admsNodeID_bi] = "
3035 Xyce::dout() <<
" staticContributions[admsNodeID_bi].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_bi].dx(admsProbeID_V_ci_ei) << std::endl;
3037 Xyce::dout() <<
" staticContributions[admsNodeID_bi].dx(admsProbeID_V_bp_cx) = " <<
staticContributions[
admsNodeID_bi].dx(admsProbeID_V_bp_cx) << std::endl;
3040 Xyce::dout() <<
" staticContributions[admsNodeID_bi].dx(admsProbeID_V_bx_bi) = " <<
staticContributions[
admsNodeID_bi].dx(admsProbeID_V_bx_bi) << std::endl;
3041 Xyce::dout() <<
" staticContributions[admsNodeID_bi].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_bi].dx(admsProbeID_V_cx_ci) << std::endl;
3050 Xyce::dout() <<
" dynamicContributions[admsNodeID_bi] = "
3067 Xyce::dout() <<
" Jdxp_static[admsNodeID_bi] = "
3069 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_bi] = "
3071 Xyce::dout() <<
" staticContributions[admsNodeID_ei] = "
3073 Xyce::dout() <<
" staticContributions[admsNodeID_ei].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_ei].dx(admsProbeID_V_ci_ei) << std::endl;
3075 Xyce::dout() <<
" staticContributions[admsNodeID_ei].dx(admsProbeID_V_bp_cx) = " <<
staticContributions[
admsNodeID_ei].dx(admsProbeID_V_bp_cx) << std::endl;
3078 Xyce::dout() <<
" staticContributions[admsNodeID_ei].dx(admsProbeID_V_bx_bi) = " <<
staticContributions[
admsNodeID_ei].dx(admsProbeID_V_bx_bi) << std::endl;
3079 Xyce::dout() <<
" staticContributions[admsNodeID_ei].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_ei].dx(admsProbeID_V_cx_ci) << std::endl;
3088 Xyce::dout() <<
" dynamicContributions[admsNodeID_ei] = "
3105 Xyce::dout() <<
" Jdxp_static[admsNodeID_ei] = "
3107 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_ei] = "
3109 Xyce::dout() <<
" staticContributions[admsNodeID_bp] = "
3111 Xyce::dout() <<
" staticContributions[admsNodeID_bp].dx(admsProbeID_V_ci_ei) = " <<
staticContributions[
admsNodeID_bp].dx(admsProbeID_V_ci_ei) << std::endl;
3113 Xyce::dout() <<
" staticContributions[admsNodeID_bp].dx(admsProbeID_V_bp_cx) = " <<
staticContributions[
admsNodeID_bp].dx(admsProbeID_V_bp_cx) << std::endl;
3116 Xyce::dout() <<
" staticContributions[admsNodeID_bp].dx(admsProbeID_V_bx_bi) = " <<
staticContributions[
admsNodeID_bp].dx(admsProbeID_V_bx_bi) << std::endl;
3117 Xyce::dout() <<
" staticContributions[admsNodeID_bp].dx(admsProbeID_V_cx_ci) = " <<
staticContributions[
admsNodeID_bp].dx(admsProbeID_V_cx_ci) << std::endl;
3126 Xyce::dout() <<
" dynamicContributions[admsNodeID_bp] = "
3143 Xyce::dout() <<
" Jdxp_static[admsNodeID_bp] = "
3145 Xyce::dout() <<
" Jdxp_dynamic[admsNodeID_bp] = "
3150 Xyce::dout() <<
"This step was limited by this device." << std::endl;
3151 Xyce::dout() <<
" Vbei_limited = " << Vbei_limited <<
" _orig = " << Vbei_orig <<
" diff = " << Vbei_limited - Vbei_orig << std::endl;
3152 Xyce::dout() <<
" Vbci_limited = " << Vbci_limited <<
" _orig = " << Vbci_orig <<
" diff = " << Vbci_limited - Vbci_orig << std::endl;
3153 Xyce::dout() <<
" Vbex_limited = " << Vbex_limited <<
" _orig = " << Vbex_orig <<
" diff = " << Vbex_limited - Vbex_orig << std::endl;
3154 Xyce::dout() <<
" Vbcx_limited = " << Vbcx_limited <<
" _orig = " << Vbcx_orig <<
" diff = " << Vbcx_limited - Vbcx_orig << std::endl;
3155 Xyce::dout() <<
" Vbep_limited = " << Vbep_limited <<
" _orig = " << Vbep_orig <<
" diff = " << Vbep_limited - Vbep_orig << std::endl;
3156 Xyce::dout() <<
" Vrth_limited = " << Vrth_limited <<
" _orig = " << Vrth_orig <<
" diff = " << Vrth_limited - Vrth_orig << std::endl;
3159 #endif // Xyce_DEBUG_DEVICE
3173 bool bsuccess =
true;
3176 #ifdef Xyce_DEBUG_DEVICE
3179 Xyce::dout() << subsection_divider << std::endl;
3180 Xyce::dout() <<
"ADMSvbic::Instance::loadDAEdFdx (" <<
getName() <<
"):" << std::endl;
3186 #ifdef Xyce_DEBUG_DEVICE
3195 #ifdef Xyce_DEBUG_DEVICE
3204 #ifdef Xyce_DEBUG_DEVICE
3213 #ifdef Xyce_DEBUG_DEVICE
3222 #ifdef Xyce_DEBUG_DEVICE
3231 #ifdef Xyce_DEBUG_DEVICE
3240 #ifdef Xyce_DEBUG_DEVICE
3249 #ifdef Xyce_DEBUG_DEVICE
3258 #ifdef Xyce_DEBUG_DEVICE
3267 #ifdef Xyce_DEBUG_DEVICE
3276 #ifdef Xyce_DEBUG_DEVICE
3285 #ifdef Xyce_DEBUG_DEVICE
3294 #ifdef Xyce_DEBUG_DEVICE
3303 #ifdef Xyce_DEBUG_DEVICE
3312 #ifdef Xyce_DEBUG_DEVICE
3321 #ifdef Xyce_DEBUG_DEVICE
3330 #ifdef Xyce_DEBUG_DEVICE
3339 #ifdef Xyce_DEBUG_DEVICE
3348 #ifdef Xyce_DEBUG_DEVICE
3357 #ifdef Xyce_DEBUG_DEVICE
3366 #ifdef Xyce_DEBUG_DEVICE
3375 #ifdef Xyce_DEBUG_DEVICE
3384 #ifdef Xyce_DEBUG_DEVICE
3393 #ifdef Xyce_DEBUG_DEVICE
3402 #ifdef Xyce_DEBUG_DEVICE
3411 #ifdef Xyce_DEBUG_DEVICE
3420 #ifdef Xyce_DEBUG_DEVICE
3429 #ifdef Xyce_DEBUG_DEVICE
3438 #ifdef Xyce_DEBUG_DEVICE
3447 #ifdef Xyce_DEBUG_DEVICE
3456 #ifdef Xyce_DEBUG_DEVICE
3465 #ifdef Xyce_DEBUG_DEVICE
3474 #ifdef Xyce_DEBUG_DEVICE
3483 #ifdef Xyce_DEBUG_DEVICE
3492 #ifdef Xyce_DEBUG_DEVICE
3501 #ifdef Xyce_DEBUG_DEVICE
3510 #ifdef Xyce_DEBUG_DEVICE
3519 #ifdef Xyce_DEBUG_DEVICE
3528 #ifdef Xyce_DEBUG_DEVICE
3537 #ifdef Xyce_DEBUG_DEVICE
3546 #ifdef Xyce_DEBUG_DEVICE
3555 #ifdef Xyce_DEBUG_DEVICE
3564 #ifdef Xyce_DEBUG_DEVICE
3573 #ifdef Xyce_DEBUG_DEVICE
3582 #ifdef Xyce_DEBUG_DEVICE
3591 #ifdef Xyce_DEBUG_DEVICE
3600 #ifdef Xyce_DEBUG_DEVICE
3609 #ifdef Xyce_DEBUG_DEVICE
3618 #ifdef Xyce_DEBUG_DEVICE
3627 #ifdef Xyce_DEBUG_DEVICE
3636 #ifdef Xyce_DEBUG_DEVICE
3645 #ifdef Xyce_DEBUG_DEVICE
3654 #ifdef Xyce_DEBUG_DEVICE
3663 #ifdef Xyce_DEBUG_DEVICE
3672 #ifdef Xyce_DEBUG_DEVICE
3694 bool bsuccess =
true;
3697 #ifdef Xyce_DEBUG_DEVICE
3700 Xyce::dout() << subsection_divider << std::endl;
3701 Xyce::dout() <<
"ADMSvbic::Instance::loadDAEdQdx (" <<
getName() <<
"):" << std::endl;
3707 #ifdef Xyce_DEBUG_DEVICE
3716 #ifdef Xyce_DEBUG_DEVICE
3725 #ifdef Xyce_DEBUG_DEVICE
3734 #ifdef Xyce_DEBUG_DEVICE
3743 #ifdef Xyce_DEBUG_DEVICE
3752 #ifdef Xyce_DEBUG_DEVICE
3761 #ifdef Xyce_DEBUG_DEVICE
3770 #ifdef Xyce_DEBUG_DEVICE
3779 #ifdef Xyce_DEBUG_DEVICE
3788 #ifdef Xyce_DEBUG_DEVICE
3797 #ifdef Xyce_DEBUG_DEVICE
3806 #ifdef Xyce_DEBUG_DEVICE
3815 #ifdef Xyce_DEBUG_DEVICE
3824 #ifdef Xyce_DEBUG_DEVICE
3833 #ifdef Xyce_DEBUG_DEVICE
3842 #ifdef Xyce_DEBUG_DEVICE
3851 #ifdef Xyce_DEBUG_DEVICE
3860 #ifdef Xyce_DEBUG_DEVICE
3869 #ifdef Xyce_DEBUG_DEVICE
3878 #ifdef Xyce_DEBUG_DEVICE
3887 #ifdef Xyce_DEBUG_DEVICE
3896 #ifdef Xyce_DEBUG_DEVICE
3905 #ifdef Xyce_DEBUG_DEVICE
3914 #ifdef Xyce_DEBUG_DEVICE
3923 #ifdef Xyce_DEBUG_DEVICE
3932 #ifdef Xyce_DEBUG_DEVICE
3941 #ifdef Xyce_DEBUG_DEVICE
3950 #ifdef Xyce_DEBUG_DEVICE
3959 #ifdef Xyce_DEBUG_DEVICE
3968 #ifdef Xyce_DEBUG_DEVICE
3977 #ifdef Xyce_DEBUG_DEVICE
3986 #ifdef Xyce_DEBUG_DEVICE
3995 #ifdef Xyce_DEBUG_DEVICE
4004 #ifdef Xyce_DEBUG_DEVICE
4013 #ifdef Xyce_DEBUG_DEVICE
4059 if ( (!((
RCX >=0.0))) )
4061 UserError0(*
this) <<
"ADMSvbic: Parameter RCX value " <<
RCX <<
" out of range [ 0.0, (+inf) [";
4065 if ( (!((
RCI >=0.0))) )
4067 UserError0(*
this) <<
"ADMSvbic: Parameter RCI value " <<
RCI <<
" out of range [ 0.0, (+inf) [";
4071 if ( (!((
VO >=0.0))) )
4073 UserError0(*
this) <<
"ADMSvbic: Parameter VO value " <<
VO <<
" out of range [ 0.0, (+inf) [";
4077 if ( (!((
GAMM >=0.0))) )
4079 UserError0(*
this) <<
"ADMSvbic: Parameter GAMM value " <<
GAMM <<
" out of range [ 0.0, (+inf) [";
4083 if ( (!((
HRCF >=0.0))) )
4085 UserError0(*
this) <<
"ADMSvbic: Parameter HRCF value " <<
HRCF <<
" out of range [ 0.0, (+inf) [";
4089 if ( (!((
RBX >=0.0))) )
4091 UserError0(*
this) <<
"ADMSvbic: Parameter RBX value " <<
RBX <<
" out of range [ 0.0, (+inf) [";
4095 if ( (!((
RBI >=0.0))) )
4097 UserError0(*
this) <<
"ADMSvbic: Parameter RBI value " <<
RBI <<
" out of range [ 0.0, (+inf) [";
4101 if ( (!((
RE >=0.0))) )
4103 UserError0(*
this) <<
"ADMSvbic: Parameter RE value " <<
RE <<
" out of range [ 0.0, (+inf) [";
4107 if ( (!((
RS >=0.0))) )
4109 UserError0(*
this) <<
"ADMSvbic: Parameter RS value " <<
RS <<
" out of range [ 0.0, (+inf) [";
4113 if ( (!((
RBP >=0.0))) )
4115 UserError0(*
this) <<
"ADMSvbic: Parameter RBP value " <<
RBP <<
" out of range [ 0.0, (+inf) [";
4119 if ( (!((
IS >0.0))) )
4121 UserError0(*
this) <<
"ADMSvbic: Parameter IS value " <<
IS <<
" out of range ] 0.0, (+inf) [";
4125 if ( (!((
NF >0.0))) )
4127 UserError0(*
this) <<
"ADMSvbic: Parameter NF value " <<
NF <<
" out of range ] 0.0, (+inf) [";
4131 if ( (!((
NR >0.0))) )
4133 UserError0(*
this) <<
"ADMSvbic: Parameter NR value " <<
NR <<
" out of range ] 0.0, (+inf) [";
4137 if ( (!((
FC >=0.0 &&
FC <1.0 ))) )
4139 UserError0(*
this) <<
"ADMSvbic: Parameter FC value " <<
FC <<
" out of range [ 0.0, 1.0 [";
4143 if ( (!((
CBEO >=0.0))) )
4145 UserError0(*
this) <<
"ADMSvbic: Parameter CBEO value " <<
CBEO <<
" out of range [ 0.0, (+inf) [";
4149 if ( (!((
CJE >=0.0))) )
4151 UserError0(*
this) <<
"ADMSvbic: Parameter CJE value " <<
CJE <<
" out of range [ 0.0, (+inf) [";
4155 if ( (!((
PE >0.0))) )
4157 UserError0(*
this) <<
"ADMSvbic: Parameter PE value " <<
PE <<
" out of range ] 0.0, (+inf) [";
4161 if ( (!((
ME >0.0 &&
ME <=1.0 ))) )
4163 UserError0(*
this) <<
"ADMSvbic: Parameter ME value " <<
ME <<
" out of range ] 0.0, 1.0 ]";
4167 if ( (!((
CBCO >=0.0))) )
4169 UserError0(*
this) <<
"ADMSvbic: Parameter CBCO value " <<
CBCO <<
" out of range [ 0.0, (+inf) [";
4173 if ( (!((
CJC >=0.0))) )
4175 UserError0(*
this) <<
"ADMSvbic: Parameter CJC value " <<
CJC <<
" out of range [ 0.0, (+inf) [";
4179 if ( (!((
QCO >=0.0))) )
4181 UserError0(*
this) <<
"ADMSvbic: Parameter QCO value " <<
QCO <<
" out of range [ 0.0, (+inf) [";
4185 if ( (!((
CJEP >=0.0))) )
4187 UserError0(*
this) <<
"ADMSvbic: Parameter CJEP value " <<
CJEP <<
" out of range [ 0.0, (+inf) [";
4191 if ( (!((
PC >0.0))) )
4193 UserError0(*
this) <<
"ADMSvbic: Parameter PC value " <<
PC <<
" out of range ] 0.0, (+inf) [";
4197 if ( (!((
MC >0.0 &&
MC <=1.0 ))) )
4199 UserError0(*
this) <<
"ADMSvbic: Parameter MC value " <<
MC <<
" out of range ] 0.0, 1.0 ]";
4203 if ( (!((
CJCP >=0.0))) )
4205 UserError0(*
this) <<
"ADMSvbic: Parameter CJCP value " <<
CJCP <<
" out of range [ 0.0, (+inf) [";
4209 if ( (!((
PS >0.0))) )
4211 UserError0(*
this) <<
"ADMSvbic: Parameter PS value " <<
PS <<
" out of range ] 0.0, (+inf) [";
4215 if ( (!((
MS >0.0 &&
MS <=1.0 ))) )
4217 UserError0(*
this) <<
"ADMSvbic: Parameter MS value " <<
MS <<
" out of range ] 0.0, 1.0 ]";
4221 if ( (!((
IBEI >0.0))) )
4223 UserError0(*
this) <<
"ADMSvbic: Parameter IBEI value " <<
IBEI <<
" out of range ] 0.0, (+inf) [";
4227 if ( (!((
WBE >=0.0 &&
WBE <=1.0 ))) )
4229 UserError0(*
this) <<
"ADMSvbic: Parameter WBE value " <<
WBE <<
" out of range [ 0.0, 1.0 ]";
4233 if ( (!((
NEI >0.0))) )
4235 UserError0(*
this) <<
"ADMSvbic: Parameter NEI value " <<
NEI <<
" out of range ] 0.0, (+inf) [";
4239 if ( (!((
IBEN >=0.0))) )
4241 UserError0(*
this) <<
"ADMSvbic: Parameter IBEN value " <<
IBEN <<
" out of range [ 0.0, (+inf) [";
4245 if ( (!((
NEN >0.0))) )
4247 UserError0(*
this) <<
"ADMSvbic: Parameter NEN value " <<
NEN <<
" out of range ] 0.0, (+inf) [";
4251 if ( (!((
IBCI >0.0))) )
4253 UserError0(*
this) <<
"ADMSvbic: Parameter IBCI value " <<
IBCI <<
" out of range ] 0.0, (+inf) [";
4257 if ( (!((
NCI >0.0))) )
4259 UserError0(*
this) <<
"ADMSvbic: Parameter NCI value " <<
NCI <<
" out of range ] 0.0, (+inf) [";
4263 if ( (!((
IBCN >=0.0))) )
4265 UserError0(*
this) <<
"ADMSvbic: Parameter IBCN value " <<
IBCN <<
" out of range [ 0.0, (+inf) [";
4269 if ( (!((
NCN >0.0))) )
4271 UserError0(*
this) <<
"ADMSvbic: Parameter NCN value " <<
NCN <<
" out of range ] 0.0, (+inf) [";
4275 if ( (!((
AVC1 >=0.0))) )
4277 UserError0(*
this) <<
"ADMSvbic: Parameter AVC1 value " <<
AVC1 <<
" out of range [ 0.0, (+inf) [";
4281 if ( (!((
AVC2 >=0.0))) )
4283 UserError0(*
this) <<
"ADMSvbic: Parameter AVC2 value " <<
AVC2 <<
" out of range [ 0.0, (+inf) [";
4287 if ( (!((
ISP >=0.0))) )
4289 UserError0(*
this) <<
"ADMSvbic: Parameter ISP value " <<
ISP <<
" out of range [ 0.0, (+inf) [";
4293 if ( (!((
WSP >=0.0 &&
WSP <=1.0 ))) )
4295 UserError0(*
this) <<
"ADMSvbic: Parameter WSP value " <<
WSP <<
" out of range [ 0.0, 1.0 ]";
4299 if ( (!((
NFP >0.0))) )
4301 UserError0(*
this) <<
"ADMSvbic: Parameter NFP value " <<
NFP <<
" out of range ] 0.0, (+inf) [";
4305 if ( (!((
IBEIP >=0.0))) )
4307 UserError0(*
this) <<
"ADMSvbic: Parameter IBEIP value " <<
IBEIP <<
" out of range [ 0.0, (+inf) [";
4311 if ( (!((
IBENP >=0.0))) )
4313 UserError0(*
this) <<
"ADMSvbic: Parameter IBENP value " <<
IBENP <<
" out of range [ 0.0, (+inf) [";
4317 if ( (!((
IBCIP >=0.0))) )
4319 UserError0(*
this) <<
"ADMSvbic: Parameter IBCIP value " <<
IBCIP <<
" out of range [ 0.0, (+inf) [";
4323 if ( (!((
NCIP >0.0))) )
4325 UserError0(*
this) <<
"ADMSvbic: Parameter NCIP value " <<
NCIP <<
" out of range ] 0.0, (+inf) [";
4329 if ( (!((
IBCNP >=0.0))) )
4331 UserError0(*
this) <<
"ADMSvbic: Parameter IBCNP value " <<
IBCNP <<
" out of range [ 0.0, (+inf) [";
4335 if ( (!((
NCNP >0.0))) )
4337 UserError0(*
this) <<
"ADMSvbic: Parameter NCNP value " <<
NCNP <<
" out of range ] 0.0, (+inf) [";
4341 if ( (!((
VEF >=0.0))) )
4343 UserError0(*
this) <<
"ADMSvbic: Parameter VEF value " <<
VEF <<
" out of range [ 0.0, (+inf) [";
4347 if ( (!((
VER >=0.0))) )
4349 UserError0(*
this) <<
"ADMSvbic: Parameter VER value " <<
VER <<
" out of range [ 0.0, (+inf) [";
4353 if ( (!((
IKF >=0.0))) )
4355 UserError0(*
this) <<
"ADMSvbic: Parameter IKF value " <<
IKF <<
" out of range [ 0.0, (+inf) [";
4359 if ( (!((
IKR >=0.0))) )
4361 UserError0(*
this) <<
"ADMSvbic: Parameter IKR value " <<
IKR <<
" out of range [ 0.0, (+inf) [";
4365 if ( (!((
IKP >=0.0))) )
4367 UserError0(*
this) <<
"ADMSvbic: Parameter IKP value " <<
IKP <<
" out of range [ 0.0, (+inf) [";
4371 if ( (!((
TF >=0.0))) )
4373 UserError0(*
this) <<
"ADMSvbic: Parameter TF value " <<
TF <<
" out of range [ 0.0, (+inf) [";
4377 if ( (!((
QTF >=0.0))) )
4379 UserError0(*
this) <<
"ADMSvbic: Parameter QTF value " <<
QTF <<
" out of range [ 0.0, (+inf) [";
4383 if ( (!((
XTF >=0.0))) )
4385 UserError0(*
this) <<
"ADMSvbic: Parameter XTF value " <<
XTF <<
" out of range [ 0.0, (+inf) [";
4389 if ( (!((
VTF >=0.0))) )
4391 UserError0(*
this) <<
"ADMSvbic: Parameter VTF value " <<
VTF <<
" out of range [ 0.0, (+inf) [";
4395 if ( (!((
ITF >=0.0))) )
4397 UserError0(*
this) <<
"ADMSvbic: Parameter ITF value " <<
ITF <<
" out of range [ 0.0, (+inf) [";
4401 if ( (!((
TR >=0.0))) )
4403 UserError0(*
this) <<
"ADMSvbic: Parameter TR value " <<
TR <<
" out of range [ 0.0, (+inf) [";
4407 if ( (!((
TD >=0.0))) )
4409 UserError0(*
this) <<
"ADMSvbic: Parameter TD value " <<
TD <<
" out of range [ 0.0, (+inf) [";
4413 if ( (!((
KFN >=0.0))) )
4415 UserError0(*
this) <<
"ADMSvbic: Parameter KFN value " <<
KFN <<
" out of range [ 0.0, (+inf) [";
4419 if ( (!((
AFN >0.0))) )
4421 UserError0(*
this) <<
"ADMSvbic: Parameter AFN value " <<
AFN <<
" out of range ] 0.0, (+inf) [";
4425 if ( (!((
BFN >0.0))) )
4427 UserError0(*
this) <<
"ADMSvbic: Parameter BFN value " <<
BFN <<
" out of range ] 0.0, (+inf) [";
4431 if ( (!((
RTH >=0.0))) )
4433 UserError0(*
this) <<
"ADMSvbic: Parameter RTH value " <<
RTH <<
" out of range [ 0.0, (+inf) [";
4437 if ( (!((
CTH >=0.0))) )
4439 UserError0(*
this) <<
"ADMSvbic: Parameter CTH value " <<
CTH <<
" out of range [ 0.0, (+inf) [";
4443 if ( (!((
VRT >=0.0))) )
4445 UserError0(*
this) <<
"ADMSvbic: Parameter VRT value " <<
VRT <<
" out of range [ 0.0, (+inf) [";
4449 if ( (!((
ART >0.0))) )
4451 UserError0(*
this) <<
"ADMSvbic: Parameter ART value " <<
ART <<
" out of range ] 0.0, (+inf) [";
4455 if ( (!((
CCSO >=0.0))) )
4457 UserError0(*
this) <<
"ADMSvbic: Parameter CCSO value " <<
CCSO <<
" out of range [ 0.0, (+inf) [";
4461 if ( (!((
NKF >0.0))) )
4463 UserError0(*
this) <<
"ADMSvbic: Parameter NKF value " <<
NKF <<
" out of range ] 0.0, (+inf) [";
4467 if ( (!((
ISRR >0.0))) )
4469 UserError0(*
this) <<
"ADMSvbic: Parameter ISRR value " <<
ISRR <<
" out of range ] 0.0, (+inf) [";
4473 if ( (!((
NBBE >0.0))) )
4475 UserError0(*
this) <<
"ADMSvbic: Parameter NBBE value " <<
NBBE <<
" out of range ] 0.0, (+inf) [";
4481 UserError0(*
this) <<
"ADMSvbic: Parameter dtype value " <<
dtype <<
" out of range [ (-1), 1 ] or in excluded range [ 0, 0 ]";
4502 std::vector<Instance*>::iterator iter;
4506 for (iter=first; iter!=last; ++iter)
4508 (*iter)->processParams();
4526 :
DeviceModel(model_block, configuration.getModelParameters(), factory_block),
4648 if (!
given(
"XYCEADMSMODTEMP"))
4679 std::vector<Instance*>::iterator iterI;
4684 for (iterI = firstI; iterI != lastI; ++iterI)
4700 std::vector<Instance*>::const_iterator iter;
4706 os <<
" name model name Parameters" << std::endl;
4707 for (i=0, iter=first; iter!=last; ++iter, ++i)
4709 os <<
" " << i <<
": " << (*iter)->getName() <<
" ";
4713 os <<
"M = " << (*iter)->M << std::endl;
4738 for (std::vector<Instance *>::const_iterator it = instanceContainer.begin(); it != instanceContainer.end(); ++it)
4750 .registerDevice(
"q", 10)
4751 .registerModelType(
"npn", 10)
4752 .registerModelType(
"pnp", 10);