bsim6.va, split temporary variable T2 into two variables
to avoid a dependency related problem in the xml files. T2 and T2y, one of them have the OPdependent flag set which surpresses variable declarations to be emited.
This commit is contained in:
parent
504ef5f5e5
commit
5b93bf1695
|
|
@ -394,13 +394,13 @@
|
|||
`BSIM6NumFingerDiff(nf, minSD, nuIntD, nuEndD, nuIntS, nuEndS) \
|
||||
T0 = DMCG + DMCI;\
|
||||
T1 = DMCG + DMCG;\
|
||||
T2 = DMDG + DMDG;\
|
||||
T2y = DMDG + DMDG;\
|
||||
PSiso = T0 + T0 + Weffcj;\
|
||||
PDiso = T0 + T0 + Weffcj;\
|
||||
PSsha = T1;\
|
||||
PDsha = T1;\
|
||||
PSmer = T2;\
|
||||
PDmer = T2;\
|
||||
PSmer = T2y;\
|
||||
PDmer = T2y;\
|
||||
ASiso = T0 * Weffcj;\
|
||||
ADiso = T0 * Weffcj;\
|
||||
ASsha = DMCG * Weffcj;\
|
||||
|
|
@ -1729,7 +1729,7 @@ endfunction
|
|||
// Common Variables
|
||||
real PSiso,PDiso,PSsha,PDsha,PSmer,PDmer,ASiso,ADiso,ASsha,ADsha,ASmer,ADmer;
|
||||
real T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12;
|
||||
real T3y;
|
||||
real T2y, T3y;
|
||||
real Tb;
|
||||
real epssi, epsox, ni, Weff, Leff, Weff1, Leff1, Wact, Lact, Weffcj, Eg, Eg0;
|
||||
real dLIV, dWIV, dLB, dWB, dLCV, dWCV, dWJ, Cox, epsratio;
|
||||
|
|
@ -2684,9 +2684,9 @@ analog begin
|
|||
|
||||
T0 = TOXE * TOXE;
|
||||
T1 = TOXE * POXEDGE_i;
|
||||
T2 = T1 * T1;
|
||||
T2y = T1 * T1;
|
||||
ToxRatio = exp(NTOX_i * ln(TOXREF / TOXE))/ T0;
|
||||
ToxRatioEdge = exp(NTOX_i * ln(TOXREF / T1)) /T2;
|
||||
ToxRatioEdge = exp(NTOX_i * ln(TOXREF / T1)) /T2y;
|
||||
|
||||
Aechvb = (TYPE == `ntype) ? 4.97232e-7 : 3.42537e-7;
|
||||
Bechvb = (TYPE == `ntype) ? 7.45669e11 : 1.16645e12;
|
||||
|
|
@ -2927,14 +2927,14 @@ DevTemp = $temperature + DTEMP;
|
|||
if(Isbs > 0.0) begin
|
||||
Nvtms = Vtm * NJS;
|
||||
XExpBVS = lexp(-BVS / Nvtms) * XJBVS;
|
||||
T2 = max(IJTHSFWD / Isbs, 10.0);
|
||||
Tb = 1.0 + T2 - XExpBVS;
|
||||
T2y = max(IJTHSFWD / Isbs, 10.0);
|
||||
Tb = 1.0 + T2y - XExpBVS;
|
||||
VjsmFwd = Nvtms * lln(0.5 * (Tb + sqrt(Tb * Tb + 4 * XExpBVS)));
|
||||
T0 = lexp(VjsmFwd / Nvtms);
|
||||
IVjsmFwd = Isbs * (T0 - XExpBVS / T0 + XExpBVS - 1.0);
|
||||
SslpFwd = Isbs * (T0 + XExpBVS / T0) / Nvtms;
|
||||
T2 = hypsmooth(IJTHSREV / Isbs - 10.0, 1.0E-3) + 10.0;
|
||||
VjsmRev = -BVS - Nvtms * lln((T2 - 1.0) / XJBVS);
|
||||
T2y = hypsmooth(IJTHSREV / Isbs - 10.0, 1.0E-3) + 10.0;
|
||||
VjsmRev = -BVS - Nvtms * lln((T2y - 1.0) / XJBVS);
|
||||
T1 = XJBVS * lexp(-(BVS + VjsmRev) / Nvtms);
|
||||
IVjsmRev = Isbs * (1.0 + T1);
|
||||
SslpRev = -Isbs * T1 / Nvtms;
|
||||
|
|
@ -2954,14 +2954,14 @@ DevTemp = $temperature + DTEMP;
|
|||
if(Isbd > 0.0) begin
|
||||
Nvtmd = Vtm * NJD;
|
||||
XExpBVD = lexp(-BVD / Nvtmd) * XJBVD;
|
||||
T2 = max(IJTHDFWD / Isbd, 10.0);
|
||||
Tb = 1.0 + T2 - XExpBVD;
|
||||
T2y = max(IJTHDFWD / Isbd, 10.0);
|
||||
Tb = 1.0 + T2y - XExpBVD;
|
||||
VjdmFwd = Nvtmd * lln(0.5 * (Tb + sqrt(Tb * Tb + 4 * XExpBVD)));
|
||||
T0 = lexp(VjdmFwd / Nvtmd);
|
||||
IVjdmFwd = Isbd * (T0 - XExpBVD / T0 + XExpBVD - 1.0);
|
||||
DslpFwd = Isbd * (T0 + XExpBVD / T0) / Nvtmd;
|
||||
T2 = hypsmooth(IJTHDREV / Isbd - 10.0, 1.0E-3) + 10.0;
|
||||
VjdmRev = -BVD - Nvtmd * lln((T2 - 1.0) / XJBVD);
|
||||
T2y = hypsmooth(IJTHDREV / Isbd - 10.0, 1.0E-3) + 10.0;
|
||||
VjdmRev = -BVD - Nvtmd * lln((T2y - 1.0) / XJBVD);
|
||||
T1 = XJBVD * lexp(-(BVD + VjdmRev) / Nvtmd);
|
||||
IVjdmRev = Isbd * (1.0 + T1);
|
||||
DslpRev = -Isbd * T1 / Nvtmd;
|
||||
|
|
@ -3044,14 +3044,14 @@ DevTemp = $temperature + DTEMP;
|
|||
if(!$param_given(SCA) && !$param_given(SCB) && !$param_given(SCC)) begin
|
||||
if($param_given(SC) && SC > 0.0) begin
|
||||
T1 = SC + Wdrn;
|
||||
T2 = 1.0 / SCREF;
|
||||
T2y = 1.0 / SCREF;
|
||||
local_sca = SCREF * SCREF / (SC * T1);
|
||||
local_scb = ( (0.1 * SC + 0.01 * SCREF) *
|
||||
exp(-10.0 * SC * T2) - (0.1 * T1 + 0.01 * SCREF) *
|
||||
exp(-10.0 * T1 * T2) ) / Wdrn;
|
||||
exp(-10.0 * SC * T2y) - (0.1 * T1 + 0.01 * SCREF) *
|
||||
exp(-10.0 * T1 * T2y) ) / Wdrn;
|
||||
local_scc = ( (0.05 * SC + 0.0025 * SCREF) *
|
||||
exp(-20.0 * SC * T2) - (0.05 * T1 + 0.0025 * SCREF) *
|
||||
exp(-20.0 * T1 * T2) ) / Wdrn;
|
||||
exp(-20.0 * SC * T2y) - (0.05 * T1 + 0.0025 * SCREF) *
|
||||
exp(-20.0 * T1 * T2y) ) / Wdrn;
|
||||
end
|
||||
else
|
||||
`STROBE("Warning: (Instance BSIM6) No WPE as none of SCA, SCB, SCC, SC is given and/or SC not positive.");
|
||||
|
|
@ -3426,8 +3426,8 @@ DevTemp = $temperature + DTEMP;
|
|||
// Calculate Vadits -- Ref BSIM4
|
||||
T1 = lexp(PDITSD_i * Vds);
|
||||
if (PDITS_i > 0.0) begin
|
||||
T2 = 1.0 + PDITSL * Leff;
|
||||
VaDITS = (1.0 + T2 * T1) / PDITS_i;
|
||||
T2y = 1.0 + PDITSL * Leff;
|
||||
VaDITS = (1.0 + T2y * T1) / PDITS_i;
|
||||
VaDITS = VaDITS * Fp;
|
||||
end else
|
||||
VaDITS = `MAX_EXPL;
|
||||
|
|
@ -3937,7 +3937,7 @@ DevTemp = $temperature + DTEMP;
|
|||
if (DelClm < 0.0) DelClm = 0.0;
|
||||
end
|
||||
T1 = `q * `q * `q * Vt * abs(ids) * ueff;
|
||||
T2 = 1.0e10 * Cox * Leffnoisq;
|
||||
T2y = 1.0e10 * Cox * Leffnoisq;
|
||||
N0 = 2.0 * nq * Cox * Vt * qs / `q;
|
||||
Nl = 2.0 * nq * Cox * Vt * qdeff / `q;
|
||||
Nstar = Vt / `q * (Cox + Cdep + CIT);
|
||||
|
|
@ -3948,7 +3948,7 @@ DevTemp = $temperature + DTEMP;
|
|||
T7 = 1.0e10 * Leffnoisq * Weff * NF;
|
||||
T8 = NOIA + NOIB * Nl + NOIC * Nl * Nl;
|
||||
T9 = (Nl + Nstar) * (Nl + Nstar);
|
||||
Ssi = T1 / T2 * (T3 + T4 + T5) + T6 / T7 * DelClm * T8 / T9;
|
||||
Ssi = T1 / T2y * (T3 + T4 + T5) + T6 / T7 * DelClm * T8 / T9;
|
||||
T10 = NOIA * `q * Vt;
|
||||
T11 = Weff * NF * Leffnoi * 1.0e10 * Nstar * Nstar;
|
||||
Swi = T10 / T11 * ids * ids;
|
||||
|
|
|
|||
Loading…
Reference in New Issue