more additions in hicum2 corr noise plus ADS reference

This commit is contained in:
mariok 2020-08-25 18:35:51 +02:00
parent 83175eee79
commit 5e6f1b15df
14 changed files with 7738 additions and 45 deletions

View File

@ -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;
}
}
}
}

View File

@ -315,6 +315,7 @@ typedef struct sHICUMinstance {
/* correlated noise */
double *HICUMn1N1Ptr;
double *HICUMn1N2Ptr;
double *HICUMn2N2Ptr;
unsigned HICUMareaGiven :1; /* flag to indicate area was specified */

View File

@ -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;

View File

@ -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.

View File

@ -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.

View File

@ -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')

View File

@ -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>

View File

@ -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>

View File

@ -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
1 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
2 1.00000000 GHz 4.07138376 pV 4.07220062 pV 4.07138376 pV 4.07220060 pV
3 2.15443469 GHz 4.07138375 pV 4.07220038 pV 4.07138375 pV 4.07220036 pV
4 4.64158883 GHz 4.07138368 pV 4.07220018 pV 4.07138368 pV 4.07220010 pV
5 10.0000000 GHz 4.07138335 pV 4.07219944 pV 4.07138337 pV 4.07219907 pV
6 21.5443469 GHz 4.07138187 pV 4.07219605 pV 4.07138193 pV 4.07219441 pV
7 46.4158883 GHz 4.07137526 pV 4.07218090 pV 4.07137552 pV 4.07217358 pV
8 100.000000 GHz 4.07134929 pV 4.07212135 pV 4.07135032 pV 4.07209178 pV
9 215.443469 GHz 4.07128271 pV 4.07196810 pV 4.07128561 pV 4.07188276 pV
10 464.158883 GHz 4.07120869 pV 4.07179303 pV 4.07121273 pV 4.07165533 pV
11 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