more additions in hicum2 corr noise plus ADS reference
This commit is contained in:
parent
83175eee79
commit
5e6f1b15df
|
|
@ -45,7 +45,7 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
double Iciei_Vxf2;
|
||||
|
||||
|
||||
double Ibpbi_Vbpbi;
|
||||
double Ibpbi_Vbpbi;
|
||||
double Ibpbi_Vbici;
|
||||
double Ibpbi_Vbiei;
|
||||
double Ibpbi_Vrth;
|
||||
|
|
@ -55,7 +55,7 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
double Ieie_Veie, Ieie_Vrth;
|
||||
double Ibbp_Vbbp, Ibbp_Vrth;
|
||||
|
||||
double Ibpsi_Vbpci;
|
||||
double Ibpsi_Vbpci;
|
||||
double Ibpsi_Vsici;
|
||||
double Ibpsi_Vrth;
|
||||
|
||||
|
|
@ -122,6 +122,7 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
|
||||
int selfheat = ( (model->HICUMflsh > 0) && (model->HICUMrthGiven) && (model->HICUMrth > 0.0));
|
||||
int nqs = ( (model->HICUMflnqs != 0 || model->HICUMflcomp < 2.3) && (model->HICUMalit > 0 || model->HICUMalqf > 0));
|
||||
int correlated_noise = (model->HICUMflcono == 1 && (model->HICUMalit > 0 && model->HICUMalqf > 0)); // CORRELATED_NOISE
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for( here = HICUMinstances(model); here!= NULL;
|
||||
|
|
@ -236,7 +237,7 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(here->HICUMbaseBPEmitEIPtr) += -Ibpei_Vbpei;
|
||||
*(here->HICUMemitEIBaseBPPtr) += -Ibpei_Vbpei;;
|
||||
|
||||
// Stamp element: Ibici
|
||||
// Stamp element: Ibici
|
||||
*(here->HICUMbaseBIBaseBIPtr) += Ibici_Vbici;
|
||||
*(here->HICUMcollCICollCIPtr) += Ibici_Vbici;
|
||||
*(here->HICUMcollCIBaseBIPtr) += -Ibici_Vbici;
|
||||
|
|
@ -251,11 +252,11 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(here->HICUMemitEIEmitEIPtr) += Iciei_Vbiei;
|
||||
*(here->HICUMcollCIEmitEIPtr) += -Iciei_Vbiei;
|
||||
*(here->HICUMemitEIBaseBIPtr) += -Iciei_Vbiei;
|
||||
*(here->HICUMcollCIBaseBIPtr) += Iciei_Vbici;
|
||||
*(here->HICUMcollCIBaseBIPtr) += Iciei_Vbici;
|
||||
*(here->HICUMemitEICollCIPtr) += Iciei_Vbici;
|
||||
*(here->HICUMcollCICollCIPtr) += -Iciei_Vbici;
|
||||
*(here->HICUMemitEIBaseBIPtr) += -Iciei_Vbici;
|
||||
if (nqs) {
|
||||
if (nqs) {
|
||||
*(here->HICUMcollCIXf2Ptr) += Iciei_Vxf2;
|
||||
*(here->HICUMemitEIXf2Ptr) += -Iciei_Vxf2;
|
||||
}
|
||||
|
|
@ -287,15 +288,15 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
|
||||
// Stamp element: Ibpbi
|
||||
if (here->HICUMrbi>0.0) {
|
||||
*(here->HICUMbaseBPBaseBPPtr) += Ibpbi_Vbpbi;
|
||||
*(here->HICUMbaseBPBaseBPPtr) += Ibpbi_Vbpbi;
|
||||
*(here->HICUMbaseBIBaseBIPtr) += Ibpbi_Vbpbi;
|
||||
*(here->HICUMbaseBPBaseBIPtr) += -Ibpbi_Vbpbi;
|
||||
*(here->HICUMbaseBIBaseBPPtr) += -Ibpbi_Vbpbi;
|
||||
*(here->HICUMbaseBPBaseBIPtr) += Ibpbi_Vbiei;
|
||||
*(here->HICUMbaseBPBaseBIPtr) += Ibpbi_Vbiei;
|
||||
*(here->HICUMbaseBIEmitEIPtr) += Ibpbi_Vbiei;
|
||||
*(here->HICUMbaseBPEmitEIPtr) += -Ibpbi_Vbiei;
|
||||
*(here->HICUMbaseBIBaseBIPtr) += -Ibpbi_Vbiei;
|
||||
*(here->HICUMbaseBPBaseBIPtr) += Ibpbi_Vbici;
|
||||
*(here->HICUMbaseBPBaseBIPtr) += Ibpbi_Vbici;
|
||||
*(here->HICUMbaseBICollCIPtr) += Ibpbi_Vbici;
|
||||
*(here->HICUMbaseBPCollCIPtr) += -Ibpbi_Vbici;
|
||||
*(here->HICUMbaseBIBaseBIPtr) += -Ibpbi_Vbici;
|
||||
|
|
@ -323,7 +324,7 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(here->HICUMsubsSISubsPtr) += -Isis_Vsis;
|
||||
*(here->HICUMsubsSubsSIPtr) += -Isis_Vsis;
|
||||
|
||||
if (nqs) {
|
||||
if (nqs) {
|
||||
//Ixf1
|
||||
*(here->HICUMxf1BaseBIPtr) += +Ixf1_Vbiei;
|
||||
*(here->HICUMxf1EmitEIPtr) += -Ixf1_Vbiei;
|
||||
|
|
@ -408,15 +409,15 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
|
||||
//Qrbi f_bp=+ f_bi=-
|
||||
if (here->HICUMrbi>0.0) {
|
||||
*(here->HICUMbaseBPBaseBPPtr + 1) += XQrbi_Vbpbi;
|
||||
*(here->HICUMbaseBPBaseBPPtr + 1) += XQrbi_Vbpbi;
|
||||
*(here->HICUMbaseBIBaseBIPtr + 1) += XQrbi_Vbpbi;
|
||||
*(here->HICUMbaseBPBaseBIPtr + 1) += -XQrbi_Vbpbi;
|
||||
*(here->HICUMbaseBIBaseBPPtr + 1) += -XQrbi_Vbpbi;
|
||||
*(here->HICUMbaseBPBaseBIPtr + 1) += XQrbi_Vbiei;
|
||||
*(here->HICUMbaseBPBaseBIPtr + 1) += XQrbi_Vbiei;
|
||||
*(here->HICUMbaseBIEmitEIPtr + 1) += XQrbi_Vbiei;
|
||||
*(here->HICUMbaseBPEmitEIPtr + 1) += -XQrbi_Vbiei;
|
||||
*(here->HICUMbaseBIBaseBIPtr + 1) += -XQrbi_Vbiei;
|
||||
*(here->HICUMbaseBPBaseBIPtr + 1) += XQrbi_Vbici;
|
||||
*(here->HICUMbaseBPBaseBIPtr + 1) += XQrbi_Vbici;
|
||||
*(here->HICUMbaseBICollCIPtr + 1) += XQrbi_Vbici;
|
||||
*(here->HICUMbaseBPCollCIPtr + 1) += -XQrbi_Vbici;
|
||||
*(here->HICUMbaseBIBaseBIPtr + 1) += -XQrbi_Vbici;
|
||||
|
|
@ -435,7 +436,7 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(here->HICUMemitEICollCIPtr +1) += XQf_Vbici;
|
||||
*(here->HICUMbaseBICollCIPtr +1) += -XQf_Vbici;
|
||||
*(here->HICUMemitEIBaseBIPtr +1) += -XQf_Vbici;
|
||||
if (nqs) {
|
||||
if (nqs) {
|
||||
*(here->HICUMbaseBIXfPtr +1) += XQf_Vxf;
|
||||
*(here->HICUMemitEIXfPtr +1) += -XQf_Vxf;
|
||||
}
|
||||
|
|
@ -512,7 +513,7 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(here->HICUMsubsSISubsSIPtr + 1) += XQsu_Vsis;
|
||||
*(here->HICUMsubsSISubsPtr + 1) += -XQsu_Vsis;
|
||||
*(here->HICUMsubsSubsSIPtr + 1) += -XQsu_Vsis;
|
||||
if (nqs) {
|
||||
if (nqs) {
|
||||
//Qxf1
|
||||
*(here->HICUMxf1Xf1Ptr + 1) += +XQxf1_Vxf1;
|
||||
//Qxf2
|
||||
|
|
@ -522,7 +523,7 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
|
||||
// Stamps with SH
|
||||
if (selfheat) {
|
||||
if (selfheat) {
|
||||
// Stamp element: Ibiei f_Bi = + f_Ei = -
|
||||
*(here->HICUMbaseBItempPtr) += Ibiei_Vrth;
|
||||
*(here->HICUMemitEItempPtr) += -Ibiei_Vrth;
|
||||
|
|
@ -557,16 +558,16 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
// Branch: bpsi, Stamp element: Its
|
||||
*(here->HICUMbaseBPtempPtr) += Ibpsi_Vrth;
|
||||
*(here->HICUMsubsSItempPtr) += -Ibpsi_Vrth;
|
||||
if (nqs) {
|
||||
// Stamp element: Ixf f_xf = +
|
||||
if (nqs) {
|
||||
// Stamp element: Ixf f_xf = +
|
||||
*(here->HICUMxfTempPtr) += Ixf_Vrth;
|
||||
// Stamp element: Ixf1 f_xf1 = +
|
||||
// Stamp element: Ixf1 f_xf1 = +
|
||||
*(here->HICUMxf1TempPtr) += Ixf1_Vrth;
|
||||
// Stamp element: Ixf2 f_xf2 = +
|
||||
// Stamp element: Ixf2 f_xf2 = +
|
||||
*(here->HICUMxf2TempPtr) += Ixf2_Vrth;
|
||||
}
|
||||
|
||||
// Stamp element: Ith f_T = - Ith
|
||||
// Stamp element: Ith f_T = - Ith
|
||||
// with respect to Potential Vrth
|
||||
*(here->HICUMtempTempPtr) += -Ith_Vrth;
|
||||
// with respect to Potential Vbiei
|
||||
|
|
@ -626,7 +627,7 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(here->HICUMcollTempPtr + 1) += -XQscp_Vrth;
|
||||
*(here->HICUMtempTempPtr + 1) += +XQcth_Vrth;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -315,6 +315,7 @@ typedef struct sHICUMinstance {
|
|||
|
||||
/* correlated noise */
|
||||
double *HICUMn1N1Ptr;
|
||||
double *HICUMn1N2Ptr;
|
||||
double *HICUMn2N2Ptr;
|
||||
|
||||
unsigned HICUMareaGiven :1; /* flag to indicate area was specified */
|
||||
|
|
|
|||
|
|
@ -499,6 +499,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
double Qxf_Vxf, Qxf1_Vxf1, Qxf2_Vxf2;
|
||||
// correlated noise
|
||||
double In1=0.0, In1_Vn1=0.0, In1_Vn2=0.0; // CORRELATED_NOISE
|
||||
double Vn1=0.0, Vn2=0.0;
|
||||
int n_w = 1;
|
||||
|
||||
// SH
|
||||
|
|
@ -1223,6 +1224,8 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
Vxf = *(ckt->CKTrhsOld + here->HICUMxfNode);
|
||||
Vxf1 = *(ckt->CKTrhsOld + here->HICUMxf1Node);
|
||||
Vxf2 = *(ckt->CKTrhsOld + here->HICUMxf2Node);
|
||||
Vn1 = *(ckt->CKTrhsOld + here->HICUMNoise1Node); // Correlated_Noise
|
||||
Vn2 = *(ckt->CKTrhsOld + here->HICUMNoise2Node);
|
||||
if (selfheat) {
|
||||
Vrth = *(ckt->CKTstate0 + here->HICUMvrth);
|
||||
}
|
||||
|
|
@ -1262,6 +1265,8 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
Vxf = *(ckt->CKTrhsOld + here->HICUMxfNode);
|
||||
Vxf1 = *(ckt->CKTrhsOld + here->HICUMxf1Node);
|
||||
Vxf2 = *(ckt->CKTrhsOld + here->HICUMxf2Node);
|
||||
Vn1 = *(ckt->CKTrhsOld + here->HICUMNoise1Node); // Correlated_Noise
|
||||
Vn2 = *(ckt->CKTrhsOld + here->HICUMNoise2Node);
|
||||
if (selfheat) {
|
||||
Vrth = *(ckt->CKTstate1 + here->HICUMvrth);
|
||||
}
|
||||
|
|
@ -1282,6 +1287,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
Vsis = 0.0;
|
||||
Icth = 0.0, Icth_Vrth=0.0;
|
||||
Vxf=Vxf1=Vxf2=0.0;
|
||||
Vn1=Vn2=0.0; // Correlated_Noise
|
||||
} else if((ckt->CKTmode & MODEINITJCT) && (here->HICUMoff==0)) {
|
||||
Vbiei = here->HICUMtVcrit;
|
||||
Vbici = 0.0;
|
||||
|
|
@ -1298,6 +1304,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
Vsis = 0.0;
|
||||
Icth = 0.0, Icth_Vrth=0.0;
|
||||
Vxf=Vxf1=Vxf2=0.0;
|
||||
Vn1=Vn2=0.0; // Correlated_Noise
|
||||
} else if((ckt->CKTmode & MODEINITJCT) ||
|
||||
( (ckt->CKTmode & MODEINITFIX) && (here->HICUMoff!=0))) {
|
||||
Vbe=0.0;
|
||||
|
|
@ -1310,6 +1317,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
Vcic=Veie=Vsis=0.0;
|
||||
Vrth=0.0,Icth=0.0,Icth_Vrth=0.0;
|
||||
Vxf=Vxf1=Vxf2=0.0;
|
||||
Vn1=Vn2=0.0; // Correlated_Noise
|
||||
} else {
|
||||
#ifndef PREDICTOR
|
||||
if(ckt->CKTmode & MODEINITPRED) {
|
||||
|
|
@ -1340,6 +1348,10 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
xfact * *(ckt->CKTstate2 + here->HICUMvcic);
|
||||
Vbbp = (1+xfact) * *(ckt->CKTstate1 + here->HICUMvbbp)-
|
||||
xfact * *(ckt->CKTstate2 + here->HICUMvbbp);
|
||||
Vn1 = (1+xfact) * *(ckt->CKTstate1 + here->HICUMvn1)-
|
||||
xfact * *(ckt->CKTstate2 + here->HICUMvn1);
|
||||
Vn2 = (1+xfact) * *(ckt->CKTstate1 + here->HICUMvn2)-
|
||||
xfact * *(ckt->CKTstate2 + here->HICUMvn2); // Correlated_Noise
|
||||
/////////////////////////
|
||||
// begin copy state vector
|
||||
/////////////////////////
|
||||
|
|
@ -1505,6 +1517,8 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
Vxf = *(ckt->CKTrhsOld + here->HICUMxfNode);
|
||||
Vxf1 = *(ckt->CKTrhsOld + here->HICUMxf1Node);
|
||||
Vxf2 = *(ckt->CKTrhsOld + here->HICUMxf2Node);
|
||||
Vn1 = *(ckt->CKTrhsOld + here->HICUMNoise1Node); // Correlated_Noise
|
||||
Vn2 = *(ckt->CKTrhsOld + here->HICUMNoise2Node);
|
||||
Vciei = Vbiei - Vbici;
|
||||
if (selfheat) {
|
||||
Vrth = *(ckt->CKTrhsOld + here->HICUMtempNode);
|
||||
|
|
@ -1559,6 +1573,8 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
Vxf = *(ckt->CKTrhsOld + here->HICUMxfNode);
|
||||
Vxf1 = *(ckt->CKTrhsOld + here->HICUMxf1Node);
|
||||
Vxf2 = *(ckt->CKTrhsOld + here->HICUMxf2Node);
|
||||
Vn1 = *(ckt->CKTrhsOld + here->HICUMNoise1Node); // Correlated_Noise
|
||||
Vn2 = *(ckt->CKTrhsOld + here->HICUMNoise2Node);
|
||||
if (selfheat) {
|
||||
Vrth = *(ckt->CKTrhsOld + here->HICUMtempNode);
|
||||
}
|
||||
|
|
@ -1690,6 +1706,8 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
Vxf = *(ckt->CKTstate0 + here->HICUMvxf);
|
||||
Vxf1 = *(ckt->CKTstate0 + here->HICUMvxf1);
|
||||
Vxf2 = *(ckt->CKTstate0 + here->HICUMvxf2);
|
||||
Vn1 = *(ckt->CKTstate0 + here->HICUMvn1); // Correlated_Noise
|
||||
Vn2 = *(ckt->CKTstate0 + here->HICUMvn2);
|
||||
|
||||
Ibiei = *(ckt->CKTstate0 + here->HICUMibiei);
|
||||
Ibiei_Vbiei = *(ckt->CKTstate0 + here->HICUMibiei_Vbiei);
|
||||
|
|
@ -2717,20 +2735,6 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
Icth = *(ckt->CKTstate0 + here->HICUMcqcth);
|
||||
}
|
||||
|
||||
if (correlated_noise) // CORRELATED_NOISE
|
||||
{
|
||||
// I(bi,ei) <+ ddt(n_w * Vn1);
|
||||
error = NIintegrate(ckt, &geq, &ceq, n_w, here->HICUMqn1);
|
||||
if(error) return(error);
|
||||
In1_Vn1 = geq;
|
||||
In1 = *(ckt->CKTstate0 + here->HICUMcqn1);
|
||||
// I(bi,ei) <+ ddt(n_w * Vn2);
|
||||
error = NIintegrate(ckt, &geq, &ceq, n_w, here->HICUMqn2);
|
||||
if(error) return(error);
|
||||
In1_Vn2 = geq;
|
||||
In1 += *(ckt->CKTstate0 + here->HICUMcqn2);
|
||||
}
|
||||
|
||||
if(ckt->CKTmode & MODEINITTRAN) {
|
||||
//copy from state1 to state0
|
||||
*(ckt->CKTstate1 + here->HICUMcqrbi) =
|
||||
|
|
@ -2803,14 +2807,20 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
// Isis += ddt(model->HICUMcsu*Vsis);
|
||||
error = NIintegrate(ckt,&gqsu,&cqsu,model->HICUMcsu,here->HICUMqsu);
|
||||
if(error) return(error);
|
||||
// CORRELATED_NOISE
|
||||
// @Dietmar: brauchen wir das 2x ?
|
||||
|
||||
if (correlated_noise) // CORRELATED_NOISE
|
||||
{ // these caps are constant, so place them here...
|
||||
// I(bi,ei) <+ ddt(n_w * Vn1);
|
||||
error = NIintegrate(ckt, &geq, &ceq, n_w, here->HICUMqn1);
|
||||
if(error) return(error);
|
||||
error = NIintegrate(ckt, &geq, &ceq, n_w, here->HICUMqn1);
|
||||
if(error) return(error);
|
||||
In1_Vn1 = geq;
|
||||
In1 = *(ckt->CKTstate0 + here->HICUMcqn1);
|
||||
// I(bi,ei) <+ ddt(n_w * Vn2);
|
||||
error = NIintegrate(ckt, &geq, &ceq, n_w, here->HICUMqn2);
|
||||
if(error) return(error);
|
||||
error = NIintegrate(ckt, &geq, &ceq, n_w, here->HICUMqn2);
|
||||
if(error) return(error);
|
||||
In1_Vn2 = geq;
|
||||
In1 += *(ckt->CKTstate0 + here->HICUMcqn2);
|
||||
}
|
||||
|
||||
if(ckt->CKTmode & MODEINITTRAN) {
|
||||
*(ckt->CKTstate1 + here->HICUMcqbepar1) =
|
||||
|
|
@ -2844,6 +2854,8 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(ckt->CKTstate0 + here->HICUMvxf1) = Vxf1;
|
||||
*(ckt->CKTstate0 + here->HICUMvxf2) = Vxf2;
|
||||
*(ckt->CKTstate0 + here->HICUMvxf) = Vxf;
|
||||
*(ckt->CKTstate0 + here->HICUMvn1) = Vn1;
|
||||
*(ckt->CKTstate0 + here->HICUMvn2) = Vn2;
|
||||
|
||||
*(ckt->CKTstate0 + here->HICUMibiei) = Ibiei;
|
||||
*(ckt->CKTstate0 + here->HICUMibiei_Vbiei) = Ibiei_Vbiei;
|
||||
|
|
@ -3423,17 +3435,17 @@ load:
|
|||
// Stamp element: Ibiei f_Bi = + f_Ei = -
|
||||
// realization of modified base shot noise source I1(bi,ei)
|
||||
// I(bi,ei) <+ n_2/n_w*ddt(n_w* *(ckt->CKTstate0 + here->HICUMvn1));
|
||||
rhs_current = n_2/n_w * (*(ckt->CKTstate0 + here->HICUMcqn1) - Vn1 * gqn1);
|
||||
In1_Vn1 += n_2/n_w*In1_Vn1;
|
||||
rhs_current = n_2/n_w * (*(ckt->CKTstate0 + here->HICUMcqn1) - Vn1 * In1_Vn1);
|
||||
In1_Vn1 += n_2/n_w*In1_Vn1;
|
||||
|
||||
*(ckt->CKTrhs + here->HICUMcollCINode) += -rhs_current;
|
||||
*(ckt->CKTrhs + here->HICUMemitEINode) += rhs_current;
|
||||
*(here->HICUMn1N1Ptr) += +In1_Vn1;
|
||||
*(here->HICUMn1N1Ptr) += +In1_Vn1;
|
||||
|
||||
// realization of controlled base noise source I2(bi,ei)
|
||||
// I(bi,ei) <+ n_1/n_w*ddt(n_w* *(ckt->CKTstate0 + here->HICUMvn2));
|
||||
rhs_current = n_2/n_w * (*(ckt->CKTstate0 + here->HICUMcqn1) - Vn2 * In1_Vn2);
|
||||
In1_Vn2 += n_2/n_w*In1_Vn2;
|
||||
rhs_current = n_2/n_w * (*(ckt->CKTstate0 + here->HICUMcqn1) - Vn2 * gqn2);
|
||||
|
||||
*(ckt->CKTrhs + here->HICUMcollCINode) += -rhs_current;
|
||||
*(ckt->CKTrhs + here->HICUMemitEINode) += rhs_current;
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,65 @@
|
|||
; ADS Noise test -> SG13G2 correlated vs non-correlated noise
|
||||
|
||||
Options ResourceUsage=yes UseNutmegFormat=no EnableOptim=no ASCII_Rawfile=yes \
|
||||
TopDesignName="test_lib:cell_4:schematic" DcopOutputNodeVoltages=yes \
|
||||
DcopOutputPinCurrents=yes DcopOutputAllSweepPoints=no DcopOutputDcopType=0
|
||||
simulator lang = spectre
|
||||
global 0
|
||||
ahdl_include "../../../src/spicelib/devices/adms/hicum2/admsva/hicum2.va"
|
||||
|
||||
|
||||
simulator lang = ads
|
||||
define SG13G2_0p13 ( C B E S th )
|
||||
;parameters
|
||||
simulator lang = spectre
|
||||
X1 (C B E S th) hic2_full c10=2.962E-30 qp0=6.336E-14 ich=0.0 hf0=40 hfe=10 hfc=20 hjei=3.367E+00 ahjei=0.0 rhjei=2.0 hjci=2.000E-01 ibeis=7.210E-20 mbei=1.027E+00 ireis=1.320E-33 mrei=1.000E+00 ibeps=5.842E-20 mbep=1.042 ireps=1.070E-33 mrep=1.000E+00 mcf=1.0 tbhrec=5.000E-11 ibcis=6.414E-19 mbci=1.044 ibcxs=2.219E-17 mbcx=1.150 ibets=1.093E-02 abet=2.400E+01 tunode=1 favl=1.895E+01 qavl=3.677E-14 kavl=0.0 alfav=-2.400E-03 alqav=-6.284E-04 alkav=0.0 rbi0=3.426E+00 rbx=4.897E+00 fgeo=6.662E-01 fdqr0=0.0 fcrbi=0.0 fqi=1.0 re=2.751E+00 rcx=2.555E+00 itss=9.691E-21 msf=1.056E+00 iscs=1.562E-15 msc=1.018E+00 tsf=3.000E-08 rsu=0.0 csu=0.0 cjei0=5.576E-15 vdei=7.138E-01 zei=2.489E-01 ajei=1.650E+00 cjep0=1.170E-15 vdep=8.500E-01 zep=2.632E-01 ajep=1.600E+00 cjci0=2.647E-15 vdci=8.200E-01 zci=2.857E-01 vptci=1.790E+00 cjcx0=4.712E-15 vdcx=8.200E-01 zcx=2.858E-01 vptcx=1.977E+00 fbcpar=9.000E-01 fbepar=1.0 cjs0=2.090E-15 vds=9.996E-01 zs=4.295E-01 vpts=100 cscp0=0.0 vdsp=0.6 zsp=0.5 vptsp=100 t0=2.490E-13 dt0h=8.000E-14 tbvl=8.250E-14 tef0=3.274E-13 gtfe=3.548E+00 thcs=5.000E-12 ahc=5.000E-02 fthc=7.000E-01 rci0=1.515E+01 vlim=7.000E-01 vces=1.000E-02 vpt=2.000E+00 aick=1e-3 delck=2.0 tr=0.0 vcbar=0.0 icbar=0.0 acbar=0.01 cbepar=1.212E-14 cbcpar=1.029E-14 alqf=0.2 alit=0.4 flnqs=1 kf=0.0 af=2.0 cfbe=(- 1) flcono=0 kfre=0.0 afre=2.0 latb=0.0 latl=0.0 vgb=9.100E-01 alt0=4.000E-03 kt0=6.588E-05 zetaci=5.800E-01 alvs=9.982E-04 alces=-2.286E-01 zetarbi=3.876E-01 zetarbx=1.423E-01 zetarcx=9.453E-02 zetare=-9.541E-01 zetacx=1.0 vge=9.730E-01 vgc=1.023E+00 vgs=1.049E+00 f1vg=(- 1.02377e-4) f2vg=4.3215e-4 zetact=5.000E+00 zetabet=4.892E+00 alb=0.0 dvgbe=-1.688E-01 zetahjei=0 zetavgbe=1.339E+00 flsh=1 rth=1.923E+03 zetarth=0.0 alrth=0.0 cth=2.476E-12 flcomp=2.3 tnom=25.0 dt=0.0 type=1
|
||||
simulator lang = ads
|
||||
end SG13G2_0p13
|
||||
|
||||
define SG13G2_0p13_cono ( C B E S th )
|
||||
;parameters
|
||||
simulator lang = spectre
|
||||
X1 (C B E S th) hic2_full c10=2.962E-30 qp0=6.336E-14 ich=0.0 hf0=40 hfe=10 hfc=20 hjei=3.367E+00 ahjei=0.0 rhjei=2.0 hjci=2.000E-01 ibeis=7.210E-20 mbei=1.027E+00 ireis=1.320E-33 mrei=1.000E+00 ibeps=5.842E-20 mbep=1.042 ireps=1.070E-33 mrep=1.000E+00 mcf=1.0 tbhrec=5.000E-11 ibcis=6.414E-19 mbci=1.044 ibcxs=2.219E-17 mbcx=1.150 ibets=1.093E-02 abet=2.400E+01 tunode=1 favl=1.895E+01 qavl=3.677E-14 kavl=0.0 alfav=-2.400E-03 alqav=-6.284E-04 alkav=0.0 rbi0=3.426E+00 rbx=4.897E+00 fgeo=6.662E-01 fdqr0=0.0 fcrbi=0.0 fqi=1.0 re=2.751E+00 rcx=2.555E+00 itss=9.691E-21 msf=1.056E+00 iscs=1.562E-15 msc=1.018E+00 tsf=3.000E-08 rsu=0.0 csu=0.0 cjei0=5.576E-15 vdei=7.138E-01 zei=2.489E-01 ajei=1.650E+00 cjep0=1.170E-15 vdep=8.500E-01 zep=2.632E-01 ajep=1.600E+00 cjci0=2.647E-15 vdci=8.200E-01 zci=2.857E-01 vptci=1.790E+00 cjcx0=4.712E-15 vdcx=8.200E-01 zcx=2.858E-01 vptcx=1.977E+00 fbcpar=9.000E-01 fbepar=1.0 cjs0=2.090E-15 vds=9.996E-01 zs=4.295E-01 vpts=100 cscp0=0.0 vdsp=0.6 zsp=0.5 vptsp=100 t0=2.490E-13 dt0h=8.000E-14 tbvl=8.250E-14 tef0=3.274E-13 gtfe=3.548E+00 thcs=5.000E-12 ahc=5.000E-02 fthc=7.000E-01 rci0=1.515E+01 vlim=7.000E-01 vces=1.000E-02 vpt=2.000E+00 aick=1e-3 delck=2.0 tr=0.0 vcbar=0.0 icbar=0.0 acbar=0.01 cbepar=1.212E-14 cbcpar=1.029E-14 alqf=0.2 alit=0.4 flnqs=1 kf=0.0 af=2.0 cfbe=(- 1) flcono=1 kfre=0.0 afre=2.0 latb=0.0 latl=0.0 vgb=9.100E-01 alt0=4.000E-03 kt0=6.588E-05 zetaci=5.800E-01 alvs=9.982E-04 alces=-2.286E-01 zetarbi=3.876E-01 zetarbx=1.423E-01 zetarcx=9.453E-02 zetare=-9.541E-01 zetacx=1.0 vge=9.730E-01 vgc=1.023E+00 vgs=1.049E+00 f1vg=(- 1.02377e-4) f2vg=4.3215e-4 zetact=5.000E+00 zetabet=4.892E+00 alb=0.0 dvgbe=-1.688E-01 zetahjei=0 zetavgbe=1.339E+00 flsh=1 rth=1.923E+03 zetarth=0.0 alrth=0.0 cth=2.476E-12 flcomp=2.3 tnom=25.0 dt=0.0 type=1
|
||||
simulator lang = ads
|
||||
end SG13G2_0p13_cono
|
||||
|
||||
V_Source:V_B1 N__VB1 0 Type="V_DC" Vdc=0.9 V Vac=1 V SaveCurrent=1
|
||||
V_Source:V_C1 N__VC1 0 Type="V_DC" Vdc=1.0 V SaveCurrent=1
|
||||
R:R_B1 N__VB1 N__B R=1 mOhm Temp=27
|
||||
R:R_C1 N__VC1 N__C R=1 mOhm Temp=27
|
||||
R:R_th1 N__th1 0 R=1 MOhm Temp=27
|
||||
SG13G2_0p13:X1 N__C N__B 0 0 N__th1
|
||||
|
||||
|
||||
V_Source:V_B2 N__VB2 0 Type="V_DC" Vdc=0.9 V Vac=1 V SaveCurrent=1
|
||||
V_Source:V_C2 N__VC2 0 Type="V_DC" Vdc=1.0 V SaveCurrent=1
|
||||
|
||||
R:R_B2 N__VB2 N__Bcono R=1 mOhm Temp=27
|
||||
R:R_C2 N__VC2 N__Ccono R=1 mOhm Temp=27
|
||||
R:R_th2 N__th2 0 R=1 MOhm Temp=27
|
||||
SG13G2_0p13_cono:X2 N__Ccono N__Bcono 0 0 N__th2
|
||||
|
||||
AC:AC1 \
|
||||
CalcNoise=yes NoiseNode[1]="N__C" NoiseNode[2]="N__Ccono" NoiseNode[3]="N__B" NoiseNode[4]="N__Bcono" SortNoise=1 BandwidthForNoise=1 Hz FreqConversion=no UseFiniteDiff=no \
|
||||
StatusLevel=2 OutputBudgetIV=no DevOpPtLevel=0 \
|
||||
SweepVar="freq" SweepPlan="AC1_stim" OutputPlan="AC1_Output"
|
||||
|
||||
SweepPlan: AC1_stim Start=1.0 GHz Stop=1.0 THz Dec=3
|
||||
|
||||
OutputPlan:AC1_Output \
|
||||
Type="Output" \
|
||||
UseNodeNestLevel=yes \
|
||||
NodeNestLevel=2 \
|
||||
UseEquationNestLevel=yes \
|
||||
EquationNestLevel=2 \
|
||||
UseSavedEquationNestLevel=yes \
|
||||
SavedEquationNestLevel=2 \
|
||||
UseDeviceCurrentNestLevel=no \
|
||||
DeviceCurrentNestLevel=0 \
|
||||
DeviceCurrentDeviceType="All" \
|
||||
DeviceCurrentSymSyntax=yes \
|
||||
UseCurrentNestLevel=yes \
|
||||
CurrentNestLevel=999 \
|
||||
UseDeviceVoltageNestLevel=no \
|
||||
DeviceVoltageNestLevel=0 \
|
||||
DeviceVoltageDeviceType="All"
|
||||
Binary file not shown.
|
|
@ -0,0 +1,27 @@
|
|||
|
||||
hpeesofsim (*) 512.update2.0 Feb 29 2020, MINT version 5
|
||||
(64-bit linux built: Sat Feb 29, 2020 15:54:36 +0000)
|
||||
|
||||
Parsing the netlist ...
|
||||
Processing VAMS source '/home/mario/Documents/work/ngspice/src/spicelib/devices/adms/hicum2/admsva/hicum2.va'
|
||||
compiled source cache is valid
|
||||
Flattening the netlist ...
|
||||
Analog module platform compile:
|
||||
[1] amswork.hic2_full (valid object cache, no platform compile required)
|
||||
Analog module design library exists, no link required.
|
||||
|
||||
AC AC1[1] <ads_noise_test.ckt> freq=(1 GHz->1 THz)
|
||||
|
||||
Checking for unresolved variables ...
|
||||
Flushing data (please wait) ...
|
||||
... data flush done.
|
||||
|
||||
Resource usage:
|
||||
User time = 0.30 seconds.
|
||||
System time = 0.05 seconds.
|
||||
Total CPU time = 0.35 seconds.
|
||||
Total stopwatch time = 1.27 seconds.
|
||||
|
||||
Physical memory used: 116 MBytes.
|
||||
Incremental virtual memory (data only) used: 43.3 MBytes.
|
||||
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
""" using a Python script to convert the ADS data to readable CSV and create a small plot of the results -> using DMT (our extraction toolkit)
|
||||
"""
|
||||
from DMT.core import DutType
|
||||
from DMT.ADS import DutAds
|
||||
|
||||
dut = DutAds(None, DutType.npn, 'not used', reference_node='E')
|
||||
|
||||
dut.import_output_data('tests/hicum2/noise/spectra.raw', key='results')
|
||||
|
||||
df = dut.data['results']
|
||||
|
||||
df.to_csv('result.csv')
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<DCOPData Time="Di. Aug. 25 18:17:15 2020" Simulator="hpeesofsim" Version="1.0">
|
||||
<Controller name="AC1">
|
||||
<SweepCondition>
|
||||
<P>freq: 1.0000000000000000e+09</P>
|
||||
</SweepCondition>
|
||||
<DC_OPDeclaration/>
|
||||
<DC_Voltages>
|
||||
<V>0: 0.0000000000000000e+00</V>
|
||||
<V>N__B: 8.9999995793610155e-01</V>
|
||||
<V>N__Bcono: 8.9999995793610155e-01</V>
|
||||
<V>N__C: 9.9998741577816541e-01</V>
|
||||
<V>N__Ccono: 9.9998741577816541e-01</V>
|
||||
<V>N__VB1: 9.0000000000000002e-01</V>
|
||||
<V>N__VB2: 9.0000000000000002e-01</V>
|
||||
<V>N__VC1: 1.0000000000000000e+00</V>
|
||||
<V>N__VC2: 1.0000000000000000e+00</V>
|
||||
<V>N__th1: 2.2588254492485362e+01</V>
|
||||
<V>N__th2: 2.2588254492485362e+01</V>
|
||||
<V>X1.B: 8.9999995793610155e-01</V>
|
||||
<V>X1.C: 9.9998741577816541e-01</V>
|
||||
<V>X1.E: 0.0000000000000000e+00</V>
|
||||
<V>X1.S: 0.0000000000000000e+00</V>
|
||||
<V>X1.th: 2.2588254492485362e+01</V>
|
||||
<V>X2.B: 8.9999995793610155e-01</V>
|
||||
<V>X2.C: 9.9998741577816541e-01</V>
|
||||
<V>X2.E: 0.0000000000000000e+00</V>
|
||||
<V>X2.S: 0.0000000000000000e+00</V>
|
||||
<V>X2.th: 2.2588254492485362e+01</V>
|
||||
<GV>0: 0.0000000000000000e+00</GV>
|
||||
</DC_Voltages>
|
||||
<DC_PinCurrents>
|
||||
<I>R4: 1.2584221834570922e-02, -1.2584221834570922e-02</I>
|
||||
<I>R5: 4.2063898520717906e-05, -4.2063898520717906e-05</I>
|
||||
<I>R6: 2.2588254492485362e-05, -2.2588254492485362e-05</I>
|
||||
<I>R_B1: 4.2063898520717906e-05, -4.2063898520717906e-05</I>
|
||||
<I>R_C1: 1.2584221834570922e-02, -1.2584221834570922e-02</I>
|
||||
<I>R_th1: 2.2588254492485362e-05, -2.2588254492485362e-05</I>
|
||||
<I>SRC1: -4.2063898520717906e-05, 4.2063898520717906e-05</I>
|
||||
<I>SRC2: -1.2584221834570922e-02, 1.2584221834570922e-02</I>
|
||||
<I>SRC3: -4.2063898520717906e-05, 4.2063898520717906e-05</I>
|
||||
<I>SRC4: -1.2584221834570922e-02, 1.2584221834570922e-02</I>
|
||||
<I>X1: 1.2584221834570902e-02, 4.2063898520737523e-05, 0.0000000000000000e+00, -2.2588254492488316e-05, 0.0000000000000000e+00</I>
|
||||
<I>X1.X1: 1.2584221834570902e-02, 4.2063898520737523e-05, 0.0000000000000000e+00, -2.2588254492488316e-05</I>
|
||||
<I>X2: 1.2584221834570902e-02, 4.2063898520737523e-05, 0.0000000000000000e+00, -2.2588254492488316e-05, 0.0000000000000000e+00</I>
|
||||
<I>X2.X1: 1.2584221834570902e-02, 4.2063898520737523e-05, 0.0000000000000000e+00, -2.2588254492488316e-05</I>
|
||||
</DC_PinCurrents>
|
||||
<DC_OPInstances/>
|
||||
</Controller>
|
||||
</DCOPData>
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<annotation_files Time="Di. Aug. 25 18:17:15 2020" Simulator="hpeesofsim" Version="1.0">
|
||||
<File name="annotation_1.xml">
|
||||
<Controller name="AC1">
|
||||
<P>freq: 1.0000000000000000e+09</P>
|
||||
</Controller>
|
||||
</File>
|
||||
</annotation_files>
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
"freq
|
||||
References : ['N__B.noise','N__C.noise','N__Bcono.noise','N__Ccono.noise']
|
||||
Dependency : [?]
|
||||
Num. Points : [?]
|
||||
Matrix Size : ?
|
||||
Type : ?","N__B.noise
|
||||
References : []
|
||||
Dependency : [freq]
|
||||
Num. Points : [10]
|
||||
Matrix Size : scalar
|
||||
Type : Real","N__C.noise
|
||||
References : []
|
||||
Dependency : [freq]
|
||||
Num. Points : [10]
|
||||
Matrix Size : scalar
|
||||
Type : Real","N__Bcono.noise
|
||||
References : []
|
||||
Dependency : [freq]
|
||||
Num. Points : [10]
|
||||
Matrix Size : scalar
|
||||
Type : Real","N__Ccono.noise
|
||||
References : []
|
||||
Dependency : [freq]
|
||||
Num. Points : [10]
|
||||
Matrix Size : scalar
|
||||
Type : Real"
|
||||
1.00000000 GHz,4.07138376 pV,4.07220062 pV,4.07138376 pV,4.07220060 pV
|
||||
2.15443469 GHz,4.07138375 pV,4.07220038 pV,4.07138375 pV,4.07220036 pV
|
||||
4.64158883 GHz,4.07138368 pV,4.07220018 pV,4.07138368 pV,4.07220010 pV
|
||||
10.0000000 GHz,4.07138335 pV,4.07219944 pV,4.07138337 pV,4.07219907 pV
|
||||
21.5443469 GHz,4.07138187 pV,4.07219605 pV,4.07138193 pV,4.07219441 pV
|
||||
46.4158883 GHz,4.07137526 pV,4.07218090 pV,4.07137552 pV,4.07217358 pV
|
||||
100.000000 GHz,4.07134929 pV,4.07212135 pV,4.07135032 pV,4.07209178 pV
|
||||
215.443469 GHz,4.07128271 pV,4.07196810 pV,4.07128561 pV,4.07188276 pV
|
||||
464.158883 GHz,4.07120869 pV,4.07179303 pV,4.07121273 pV,4.07165533 pV
|
||||
1.00000000 THz,4.07116484 pV,4.07166705 pV,4.07116607 pV,4.07154342 pV
|
||||
|
Binary file not shown.
|
After Width: | Height: | Size: 118 KiB |
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue