From 40f304bff7bd4d9cd234d63d00cb1bc55a3428d6 Mon Sep 17 00:00:00 2001 From: Romain 'Table' DROUIN <romaindrouin14@gmail.com> Date: Sat, 7 Jul 2018 16:25:50 +0200 Subject: [PATCH] =?UTF-8?q?Suppression=20des=20warning=20de=20ana=20(d?= =?UTF-8?q?=C3=A9but)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- log/src/ana/capfloat.c | 14 +- log/src/ana/devtechp.c | 5 - log/src/ana/globals.c | 23 +- log/src/ana/idiff.c | 393 +++++++++---------- log/src/ana/inter.c | 219 ++++++----- log/src/ana/iscope.c | 16 +- log/src/ana/iswitch1.c | 210 +++++----- log/src/ana/iswitch2.c | 211 +++++----- log/src/ana/main.c | 64 --- log/src/ana/mmeter.c | 8 +- log/src/ana/nfet4.c | 14 +- log/src/ana/nfet5.c | 14 +- log/src/ana/nfet7f.c | 51 +-- log/src/ana/nfet7t.c | 41 +- log/src/ana/nspc1.c | 32 +- log/src/ana/numbers.c | 2 +- log/src/ana/pfet4.c | 14 +- log/src/ana/pfet5.c | 14 +- log/src/ana/pfet6.c | 20 +- log/src/ana/pfet7f.c | 56 +-- log/src/ana/pfet7t.c | 44 +-- log/src/ana/physical.c | 5 - log/src/ana/pspc1.c | 31 +- log/src/ana/resfloat.c | 10 +- log/src/ana/stairs.c | 233 +++++------ log/src/ana/tc.c | 854 +++++++++++++++++++++-------------------- log/src/ana/thermal.c | 9 +- log/src/ana/vdiff.c | 334 ++++++++-------- log/src/ana/vswitch.c | 168 ++++---- psys/include/p2c/p2c.h | 2 +- 30 files changed, 1380 insertions(+), 1731 deletions(-) diff --git a/log/src/ana/capfloat.c b/log/src/ana/capfloat.c index 74c8313..52fba7c 100644 --- a/log/src/ana/capfloat.c +++ b/log/src/ana/capfloat.c @@ -150,7 +150,6 @@ static void GetCnf_Capfloat(ICCapfloat *NewIC) { int Found; char Arg[256], Keyword[256]; - long Dummy; ICCapfloat *WITH; char *STR1; @@ -162,7 +161,6 @@ static void GetCnf_Capfloat(ICCapfloat *NewIC) if (!strcmp(Keyword, "CAP")) { TRY(try1); WITH->ICCap = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try1); WITH->ICCap = 1e-12; ENDTRY(try1); @@ -203,12 +201,8 @@ static void initlib_Capfloat(Analog_32_action *act) static int Capfloatcheck(log_grec *Inst, long Attrnum) { int Result; - CapfloatConst *CapfloatVar; - Anainstlist *A_Gate; Result = true; - A_Gate = (Anainstlist *)Inst->info; - CapfloatVar = (CapfloatConst *)A_Gate->InstVar; switch (Attrnum) { case N_Cap: @@ -285,15 +279,9 @@ static void Dispose_Capfloat(Analog_32_action *act) static void Readgate_Capfloat(Analog_32_action *act) { - CapfloatConst *CapfloatVar; - Anainstlist *A_Gate; - log_grec *WITH1; AnaCapattrread((long)Cstart, act->inst); /*Read capacitors*/ - A_Gate = (Anainstlist *)act->inst->info; - CapfloatVar = (CapfloatConst *)A_Gate->InstVar; /*Set any internals variables to */ - WITH1 = act->inst; } static void Probe_Capfloat(Analog_32_action *act) @@ -304,7 +292,7 @@ static void Probe_Capfloat(Analog_32_action *act) char Name1[256], Name2[256]; log_grec *WITH; char STR1[22]; - char STR2[256]; + char STR2[265]; char STR3[256]; WITH = act->inst; diff --git a/log/src/ana/devtechp.c b/log/src/ana/devtechp.c index 9c5b8ac..e130b2a 100644 --- a/log/src/ana/devtechp.c +++ b/log/src/ana/devtechp.c @@ -388,12 +388,9 @@ Analog_32_action *act; static void Openconfig_Devtechp(act) Analog_32_action *act; { - long Index; - log_grec *WITH; if (!act->ok) return; - WITH = act->inst; Reload_Devtechp(act); } @@ -401,7 +398,6 @@ static void Readgate_Devtechp(act) Analog_32_action *act; { log_grec *WITH; - char STR1[256]; WITH = act->inst; if (AnaOldmodel && !WITH->attr[0].blnk) { @@ -432,7 +428,6 @@ static void Newgate_Devtechp(act) Analog_32_action *act; { Analog_32_action Newact; - char Newout[256]; Newact.inst = act->inst; Newact.ok = true; diff --git a/log/src/ana/globals.c b/log/src/ana/globals.c index 8c7d527..c1bd744 100644 --- a/log/src/ana/globals.c +++ b/log/src/ana/globals.c @@ -335,7 +335,6 @@ void AnaGetvar(Varname, Value) char *Varname; double *Value; { - long Temp; char Name[256]; double Newval; char *STR3; @@ -347,7 +346,6 @@ double *Value; gets(Name); TRY(try1); Newval = strtod(Name, &STR3); - Temp = STR3 - Name + 1; *Value = Newval; RECOVER(try1); ; @@ -568,10 +566,8 @@ void AnaCapDispose(inst) log_grec *inst; { Anainstlist *A_Gate; - long Numpins; A_Gate = (Anainstlist *)inst->info; - Numpins = inst->kind->numpins; Free(A_Gate->Pininfo); } @@ -916,7 +912,7 @@ static void Openfiles() void AnaMatdump() { - long Row, Col, Dump; + long Row, Col; char Newdata[256]; char STR3[256]; long FORLIM, FORLIM1; @@ -937,11 +933,9 @@ void AnaMatdump() if (WITH->Mat[Row][Col] >= 0) { sprintf(Newdata, "+% .*E ", P_max((int)(AnaDebugsize - 1) - 7, 1), WITH->Mat[Row][Col]); - Dump = strlen(Newdata) + 1; } else { sprintf(Newdata, "% .*E ", P_max((int)AnaDebugsize - 7, 1), WITH->Mat[Row][Col]); - Dump = strlen(Newdata) + 1; } Dataout(Newdata); } @@ -957,10 +951,8 @@ void AnaMatdump() WITH = AnaSystem; if (WITH->MatNZ[Row][Col]) { sprintf(Newdata, "F"); - Dump = strlen(Newdata) + 1; } else { sprintf(Newdata, "Z"); - Dump = strlen(Newdata) + 1; } Dataout(Newdata); } @@ -977,7 +969,6 @@ long Rownum; AnaExt_rec *A_Node; AnaInt_rec *Int_Count; int Found; - long Dump; char Newdata[256]; AnaMatRec *WITH1; @@ -994,12 +985,10 @@ long Rownum; sprintf(Newdata, " +% .*E ", P_max((int)(AnaDebugsize - 1) - 7, 1), A_Node->last + WITH1->Mat[A_Node->nodenum][AnaSysCol]); - Dump = strlen(Newdata) + 1; } else { sprintf(Newdata, " % .*E ", P_max((int)AnaDebugsize - 7, 1), A_Node->last + WITH1->Mat[A_Node->nodenum][AnaSysCol]); - Dump = strlen(Newdata) + 1; } Dataout(Newdata); } @@ -1016,12 +1005,10 @@ long Rownum; sprintf(Newdata, " +% .*E ", P_max((int)(AnaDebugsize - 1) - 7, 1), Int_Count->last + WITH1->Mat[Int_Count->nodenum][AnaSysCol]); - Dump = strlen(Newdata) + 1; } else { sprintf(Newdata, " % .*E ", P_max((int)AnaDebugsize - 7, 1), Int_Count->last + WITH1->Mat[Int_Count->nodenum][AnaSysCol]); - Dump = strlen(Newdata) + 1; } Dataout(Newdata); } @@ -1032,7 +1019,7 @@ long Rownum; void AnaDiffdump() { - long Row, Col, Dump; + long Row, Col; char Newdata[256]; long FORLIM, FORLIM1; AnaMatRec *WITH; @@ -1049,11 +1036,9 @@ void AnaDiffdump() if (WITH->Mat[Row][Col] >= 0) { sprintf(Newdata, "+% .*E ", P_max((int)(AnaDebugsize - 1) - 7, 1), WITH->Mat[Row][Col]); - Dump = strlen(Newdata) + 1; } else { sprintf(Newdata, "% .*E ", P_max((int)AnaDebugsize - 7, 1), WITH->Mat[Row][Col]); - Dump = strlen(Newdata) + 1; } Dataout(Newdata); } @@ -1069,10 +1054,8 @@ void AnaDiffdump() WITH = AnaSystem; if (WITH->MatNZ[Row][Col]) { sprintf(Newdata, "F"); - Dump = strlen(Newdata) + 1; } else { sprintf(Newdata, "Z"); - Dump = strlen(Newdata) + 1; } Dataout(Newdata); } @@ -1108,9 +1091,7 @@ int stepcount = 0; int AnaQuit() { - int AnaResult; - AnaResult = false; stepcount++; if (timers_sysclock() > AnaStoptime) { /* printf("Count = %d\n", stepcount); */ diff --git a/log/src/ana/idiff.c b/log/src/ana/idiff.c index 8b462d9..adb1191 100644 --- a/log/src/ana/idiff.c +++ b/log/src/ana/idiff.c @@ -201,86 +201,92 @@ int First; static void Ex_IDiff(act) Analog_32_action *act; { - /*IDifferent*/ - double MinI1, MinI2, dI1dV1, dI1dV2, dI2dV1, dI2dV2; - AnaExt_rec *Pin1Ptr, *Pin2Ptr; - long Pin1, Pin2; - double VPin1, VPin2; - IDiffConst *IDiffVar; - Anainstlist *A_Gate; - double Fout, Ftime, Etemp, Blend, Th; - log_grec *WITH; - AnaMatRec *WITH1; - - WITH = act->inst; - A_Gate = (Anainstlist *)WITH->info; - IDiffVar = (IDiffConst *)A_Gate->InstVar; - Pin1Ptr = (AnaExt_rec *)WITH->pin[0]->info; - Pin1 = Pin1Ptr->nodenum; - VPin1 = Pin1Ptr->last; - Pin2Ptr = (AnaExt_rec *)WITH->pin[1]->info; - Pin2 = Pin2Ptr->nodenum; - VPin2 = Pin2Ptr->last; /*Use with statement to get to internal variables*/ - if (WITH->attr[N_Freeze - 1].UU.b) - Ftime = IDiffVar->Time; - else - Ftime = IDiffVar->Time + AnaDt; - switch (WITH->attr[N_Type - 1].UU.nv) { - - case 0: - Fout = WITH->attr[N_Dc - 1].UU.r; - break; - - case 1: - Fout = Pulsemaker(act->inst, Ftime, IDiffVar->First); - break; - - case 2: - if (Ftime < WITH->attr[N_sDelay - 1].UU.r) - Fout = WITH->attr[N_sOffset - 1].UU.r + WITH->attr[N_sAmp - 1].UU.r * - sin(6.2831853 * (WITH->attr[N_sPhase - 1].UU.r / 360)); - else - Fout = WITH->attr[N_sOffset - 1].UU.r + WITH->attr[N_sAmp - 1].UU.r * - sin(6.2831853 * (WITH->attr[N_sFreq - 1].UU.r * - (Ftime - WITH->attr[N_sDelay - 1].UU.r) + - WITH->attr[N_sPhase - 1].UU.r / 360)); -/* p2c: tools.text, line 4796: Note: - * Line breaker spent 2.0+1.00 seconds, 5000 tries on line 224 [251] */ - break; - } - Th = VPin2 - VPin1 + WITH->attr[N_Crowbar - 1].UU.r; - if (fabs(Th) < 0.1) { - Etemp = AnaExpo(7080 * Th); - Blend = 1 / (1 + Etemp); - MinI2 = Fout * Blend; - dI2dV2 = Etemp * Blend * Blend; - dI2dV2 *= 7080 * Fout; - } else { - if (Th > 0) - MinI2 = 0.0; - else - MinI2 = Fout; - dI2dV2 = 0.0; - } - MinI1 = -MinI2; - dI2dV1 = -dI2dV2; - dI1dV1 = dI2dV2; - dI1dV2 = dI2dV1; - WITH1 = AnaSystem; - WITH1->Mat[Pin1][AnaSysCol] += MinI1; - WITH1->Mat[Pin1][Pin1] += dI1dV1; - WITH1->Mat[Pin1][Pin2] += dI1dV2; - WITH1->Mat[Pin2][AnaSysCol] += MinI2; - WITH1->Mat[Pin2][Pin1] += dI2dV1; - WITH1->Mat[Pin2][Pin2] += dI2dV2; - - WITH1->MatNZ[Pin1][AnaSysCol] = true; - WITH1->MatNZ[Pin1][Pin1] = true; - WITH1->MatNZ[Pin1][Pin2] = true; - WITH1->MatNZ[Pin2][AnaSysCol] = true; - WITH1->MatNZ[Pin2][Pin1] = true; - WITH1->MatNZ[Pin2][Pin2] = true; - AnaCapex(act->inst); + /*IDifferent*/ + double MinI1, MinI2, dI1dV1, dI1dV2, dI2dV1, dI2dV2; + AnaExt_rec *Pin1Ptr, *Pin2Ptr; + long Pin1, Pin2; + double VPin1, VPin2; + IDiffConst *IDiffVar; + Anainstlist *A_Gate; + double Fout, Ftime, Etemp, Blend, Th; + log_grec *WITH; + AnaMatRec *WITH1; + + WITH = act->inst; + A_Gate = (Anainstlist *)WITH->info; + IDiffVar = (IDiffConst *)A_Gate->InstVar; + Pin1Ptr = (AnaExt_rec *)WITH->pin[0]->info; + Pin1 = Pin1Ptr->nodenum; + VPin1 = Pin1Ptr->last; + Pin2Ptr = (AnaExt_rec *)WITH->pin[1]->info; + Pin2 = Pin2Ptr->nodenum; + VPin2 = Pin2Ptr->last; /*Use with statement to get to internal variables*/ + if (WITH->attr[N_Freeze - 1].UU.b) + Ftime = IDiffVar->Time; + else + Ftime = IDiffVar->Time + AnaDt; + + switch (WITH->attr[N_Type - 1].UU.nv) + { + case 0: + Fout = WITH->attr[N_Dc - 1].UU.r; + break; + + case 1: + Fout = Pulsemaker(act->inst, Ftime, IDiffVar->First); + break; + + case 2: + if (Ftime < WITH->attr[N_sDelay - 1].UU.r) + Fout = WITH->attr[N_sOffset - 1].UU.r + WITH->attr[N_sAmp - 1].UU.r * + sin(6.2831853 * (WITH->attr[N_sPhase - 1].UU.r / 360)); + else + Fout = WITH->attr[N_sOffset - 1].UU.r + WITH->attr[N_sAmp - 1].UU.r * + sin(6.2831853 * (WITH->attr[N_sFreq - 1].UU.r * + (Ftime - WITH->attr[N_sDelay - 1].UU.r) + + WITH->attr[N_sPhase - 1].UU.r / 360)); + + break; + + default: + Fout = 0; + } + Th = VPin2 - VPin1 + WITH->attr[N_Crowbar - 1].UU.r; + if (fabs(Th) < 0.1) { + Etemp = AnaExpo(7080 * Th); + Blend = 1 / (1 + Etemp); + MinI2 = Fout * Blend; + dI2dV2 = Etemp * Blend * Blend; + dI2dV2 *= 7080 * Fout; + } + else + { + if (Th > 0) + MinI2 = 0.0; + else + MinI2 = Fout; + + dI2dV2 = 0.0; + } + MinI1 = -MinI2; + dI2dV1 = -dI2dV2; + dI1dV1 = dI2dV2; + dI1dV2 = dI2dV1; + WITH1 = AnaSystem; + WITH1->Mat[Pin1][AnaSysCol] += MinI1; + WITH1->Mat[Pin1][Pin1] += dI1dV1; + WITH1->Mat[Pin1][Pin2] += dI1dV2; + WITH1->Mat[Pin2][AnaSysCol] += MinI2; + WITH1->Mat[Pin2][Pin1] += dI2dV1; + WITH1->Mat[Pin2][Pin2] += dI2dV2; + + WITH1->MatNZ[Pin1][AnaSysCol] = true; + WITH1->MatNZ[Pin1][Pin1] = true; + WITH1->MatNZ[Pin1][Pin2] = true; + WITH1->MatNZ[Pin2][AnaSysCol] = true; + WITH1->MatNZ[Pin2][Pin1] = true; + WITH1->MatNZ[Pin2][Pin2] = true; + AnaCapex(act->inst); } /*Ex_IDiff*/ @@ -292,106 +298,111 @@ Analog_32_action *act; static void Iin_IDiff(act) Analog_32_action *act; { - /*IDifferent*/ - AnaExt_rec *Pin1Ptr, *Pin2Ptr; - double VPin1, Vpin2; - IDiffConst *IDiffVar; - Anainstlist *A_Gate; - double Fout, Ftime, Th; - log_grec *WITH; - - WITH = act->inst; - A_Gate = (Anainstlist *)WITH->info; - IDiffVar = (IDiffConst *)A_Gate->InstVar; - Pin1Ptr = (AnaExt_rec *)WITH->pin[0]->info; - VPin1 = Pin1Ptr->now; - Pin2Ptr = (AnaExt_rec *)WITH->pin[1]->info; - Vpin2 = Pin2Ptr->now; - switch (act->pin) { - - case 1: - WITH = act->inst; - if (WITH->attr[N_Freeze - 1].UU.b) - Ftime = IDiffVar->Time; - else - Ftime = IDiffVar->Time + AnaDtlast; - switch (WITH->attr[N_Type - 1].UU.nv) { - - case 0: - Fout = WITH->attr[N_Dc - 1].UU.r; - break; - - case 1: - Fout = Pulsemaker(act->inst, Ftime, IDiffVar->First); - break; - - case 2: - if (Ftime < WITH->attr[N_sDelay - 1].UU.r) - Fout = WITH->attr[N_sOffset - 1].UU.r + WITH->attr[N_sAmp - 1].UU.r * - sin(6.2831853 * (WITH->attr[N_sPhase - 1].UU.r / 360)); - else - Fout = WITH->attr[N_sOffset - 1].UU.r + WITH->attr[N_sAmp - 1].UU.r * - sin(6.2831853 * (WITH->attr[N_sFreq - 1].UU.r * - (Ftime - WITH->attr[N_sDelay - 1].UU.r) + - WITH->attr[N_sPhase - 1].UU.r / 360)); -/* p2c: tools.text, line 4796: Note: - * Line breaker spent 3.0+1.00 seconds, 5000 tries on line 314 [251] */ - break; - } - Th = Vpin2 - VPin1 + WITH->attr[N_Crowbar - 1].UU.r; - if (fabs(Th) < 0.1) - act->Iin = Fout / (1 + AnaExpo(7080 * Th)) + act->Iin; - else { - if (Th < 0) - act->Iin = Fout + act->Iin; - } - AnaCapIin(act); - break; - - case 2: - WITH = act->inst; - if (WITH->attr[N_Freeze - 1].UU.b) - Ftime = IDiffVar->Time; - else - Ftime = IDiffVar->Time + AnaDtlast; - switch (WITH->attr[N_Type - 1].UU.nv) { - - case 0: - Fout = WITH->attr[N_Dc - 1].UU.r; - break; - - case 1: - Fout = Pulsemaker(act->inst, Ftime, IDiffVar->First); - break; - - case 2: - if (Ftime < WITH->attr[N_sDelay - 1].UU.r) - Fout = WITH->attr[N_sOffset - 1].UU.r + WITH->attr[N_sAmp - 1].UU.r * - sin(6.2831853 * (WITH->attr[N_sPhase - 1].UU.r / 360)); - else - Fout = WITH->attr[N_sOffset - 1].UU.r + WITH->attr[N_sAmp - 1].UU.r * - sin(6.2831853 * (WITH->attr[N_sFreq - 1].UU.r * - (Ftime - WITH->attr[N_sDelay - 1].UU.r) + - WITH->attr[N_sPhase - 1].UU.r / 360)); -/* p2c: tools.text, line 4796: - * Note: Line breaker spent 3.0 seconds, 5000 tries on line 353 [251] */ - break; - } - Th = Vpin2 - VPin1 + WITH->attr[N_Crowbar - 1].UU.r; - if (fabs(Th) < 0.1) - act->Iin = act->Iin - Fout / (1 + AnaExpo(7080 * Th)); - else { - if (Th < 0) - act->Iin = act->Iin - Fout; - } - AnaCapIin(act); - break; - - default: - printf("Data Structure Corruption\n"); - _Escape(1002); - break; - } + /*IDifferent*/ + AnaExt_rec *Pin1Ptr, *Pin2Ptr; + double VPin1, Vpin2; + IDiffConst *IDiffVar; + Anainstlist *A_Gate; + double Fout, Ftime, Th; + log_grec *WITH; + + WITH = act->inst; + A_Gate = (Anainstlist *)WITH->info; + IDiffVar = (IDiffConst *)A_Gate->InstVar; + Pin1Ptr = (AnaExt_rec *)WITH->pin[0]->info; + VPin1 = Pin1Ptr->now; + Pin2Ptr = (AnaExt_rec *)WITH->pin[1]->info; + Vpin2 = Pin2Ptr->now; + switch (act->pin) + { + case 1: + WITH = act->inst; + if (WITH->attr[N_Freeze - 1].UU.b) + Ftime = IDiffVar->Time; + else + Ftime = IDiffVar->Time + AnaDtlast; + + switch (WITH->attr[N_Type - 1].UU.nv) + { + case 0: + Fout = WITH->attr[N_Dc - 1].UU.r; + break; + + case 1: + Fout = Pulsemaker(act->inst, Ftime, IDiffVar->First); + break; + + case 2: + if (Ftime < WITH->attr[N_sDelay - 1].UU.r) + Fout = WITH->attr[N_sOffset - 1].UU.r + WITH->attr[N_sAmp - 1].UU.r * + sin(6.2831853 * (WITH->attr[N_sPhase - 1].UU.r / 360)); + else + Fout = WITH->attr[N_sOffset - 1].UU.r + WITH->attr[N_sAmp - 1].UU.r * + sin(6.2831853 * (WITH->attr[N_sFreq - 1].UU.r * + (Ftime - WITH->attr[N_sDelay - 1].UU.r) + + WITH->attr[N_sPhase - 1].UU.r / 360)); + break; + + default: + Fout = 0; + } + Th = Vpin2 - VPin1 + WITH->attr[N_Crowbar - 1].UU.r; + if (fabs(Th) < 0.1) + act->Iin = Fout / (1 + AnaExpo(7080 * Th)) + act->Iin; + else + { + if (Th < 0) + act->Iin = Fout + act->Iin; + } + AnaCapIin(act); + break; + + case 2: + WITH = act->inst; + if (WITH->attr[N_Freeze - 1].UU.b) + Ftime = IDiffVar->Time; + else + Ftime = IDiffVar->Time + AnaDtlast; + + switch (WITH->attr[N_Type - 1].UU.nv) + { + case 0: + Fout = WITH->attr[N_Dc - 1].UU.r; + break; + + case 1: + Fout = Pulsemaker(act->inst, Ftime, IDiffVar->First); + break; + + case 2: + if (Ftime < WITH->attr[N_sDelay - 1].UU.r) + Fout = WITH->attr[N_sOffset - 1].UU.r + WITH->attr[N_sAmp - 1].UU.r * + sin(6.2831853 * (WITH->attr[N_sPhase - 1].UU.r / 360)); + else + Fout = WITH->attr[N_sOffset - 1].UU.r + WITH->attr[N_sAmp - 1].UU.r * + sin(6.2831853 * (WITH->attr[N_sFreq - 1].UU.r * + (Ftime - WITH->attr[N_sDelay - 1].UU.r) + + WITH->attr[N_sPhase - 1].UU.r / 360)); + break; + + default: + Fout = 0; + } + Th = Vpin2 - VPin1 + WITH->attr[N_Crowbar - 1].UU.r; + if (fabs(Th) < 0.1) + act->Iin = act->Iin - Fout / (1 + AnaExpo(7080 * Th)); + else { + if (Th < 0) + act->Iin = act->Iin - Fout; + } + AnaCapIin(act); + break; + + default: + printf("Data Structure Corruption\n"); + _Escape(1002); + break; + } } /*Iin_IDiff*/ @@ -400,7 +411,6 @@ ICIDiff *NewIC; { int Found; char Arg[256], Keyword[256]; - long Dummy; ICIDiff *WITH; char *STR1; @@ -418,7 +428,6 @@ ICIDiff *NewIC; if (!strcmp(Keyword, "CROWBAR")) { TRY(try1); WITH->ICCrowbar = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try1); WITH->ICCrowbar = 0.1; ENDTRY(try1); @@ -438,7 +447,6 @@ ICIDiff *NewIC; if (!strcmp(Keyword, "DC")) { TRY(try2); WITH->ICdc = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try2); WITH->ICdc = 1e-9; ENDTRY(try2); @@ -448,7 +456,6 @@ ICIDiff *NewIC; if (!strcmp(Keyword, "OFFSET")) { TRY(try3); WITH->ICsOffset = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try3); WITH->ICsOffset = 5e-9; ENDTRY(try3); @@ -456,7 +463,6 @@ ICIDiff *NewIC; if (!strcmp(Keyword, "AMP")) { TRY(try4); WITH->ICsAmp = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try4); WITH->ICsAmp = 1e-9; ENDTRY(try4); @@ -464,7 +470,6 @@ ICIDiff *NewIC; if (!strcmp(Keyword, "FREQ")) { TRY(try5); WITH->ICsFreq = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try5); WITH->ICsFreq = 1 / (AnaDtmax * 10); ENDTRY(try5); @@ -472,7 +477,6 @@ ICIDiff *NewIC; if (!strcmp(Keyword, "PHASE")) { TRY(try6); WITH->ICsPhase = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try6); WITH->ICsPhase = 0.0; ENDTRY(try6); @@ -480,7 +484,6 @@ ICIDiff *NewIC; if (!strcmp(Keyword, "DELAY")) { TRY(try7); WITH->ICsDelay = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try7); WITH->ICsDelay = 0.0; ENDTRY(try7); @@ -491,7 +494,6 @@ ICIDiff *NewIC; if (!strcmp(Keyword, "IINIT")) { TRY(try8); WITH->ICpIinit = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try8); WITH->ICpIinit = 0.0; ENDTRY(try8); @@ -499,7 +501,6 @@ ICIDiff *NewIC; if (!strcmp(Keyword, "IPULSE")) { TRY(try9); WITH->ICpIpulse = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try9); WITH->ICpIpulse = 100e-9; ENDTRY(try9); @@ -507,7 +508,6 @@ ICIDiff *NewIC; if (!strcmp(Keyword, "DELAY")) { TRY(try10); WITH->ICpDelay = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try10); WITH->ICpDelay = 6 * AnaDtmax; ENDTRY(try10); @@ -515,7 +515,6 @@ ICIDiff *NewIC; if (!strcmp(Keyword, "RISE")) { TRY(try11); WITH->ICpRise = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try11); WITH->ICpRise = AnaDtmax * 3; ENDTRY(try11); @@ -523,7 +522,6 @@ ICIDiff *NewIC; if (!strcmp(Keyword, "FALL")) { TRY(try12); WITH->ICpFall = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try12); WITH->ICpFall = AnaDtmax * 3; ENDTRY(try12); @@ -531,7 +529,6 @@ ICIDiff *NewIC; if (!strcmp(Keyword, "WIDTH")) { TRY(try13); WITH->ICpWidth = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try13); WITH->ICpWidth = 6 * AnaDtmax; ENDTRY(try13); @@ -539,7 +536,6 @@ ICIDiff *NewIC; if (!strcmp(Keyword, "PERIOD")) { TRY(try14); WITH->ICpPeriod = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try14); WITH->ICpPeriod = 20 * AnaDtmax; ENDTRY(try14); @@ -547,7 +543,6 @@ ICIDiff *NewIC; if (!strcmp(Keyword, "RDELAY")) { TRY(try15); WITH->ICpRDelay = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try15); WITH->ICpRDelay = 0.0; ENDTRY(try15); @@ -609,12 +604,8 @@ log_grec *Inst; long Attrnum; { int Result; - IDiffConst *IDiffVar; - Anainstlist *A_Gate; Result = true; - A_Gate = (Anainstlist *)Inst->info; - IDiffVar = (IDiffConst *)A_Gate->InstVar; switch (Attrnum) { case N_Freeze: @@ -804,13 +795,11 @@ Analog_32_action *act; { IDiffConst *IDiffVar; Anainstlist *A_Gate; - log_grec *WITH1; char STR1[256]; AnaCapattrread((long)Cstart, act->inst); /*Read capacitors*/ A_Gate = (Anainstlist *)act->inst->info; IDiffVar = (IDiffConst *)A_Gate->InstVar; - WITH1 = act->inst; fscanf(*AnaLogglobals->actfile, "%lg%*[^\n]", &IDiffVar->Time); getc(*AnaLogglobals->actfile); fscanf(*AnaLogglobals->actfile, " %[a-zA-Z]%*[^\n]", STR1); diff --git a/log/src/ana/inter.c b/log/src/ana/inter.c index 18eb80b..3e4ca84 100644 --- a/log/src/ana/inter.c +++ b/log/src/ana/inter.c @@ -36,40 +36,31 @@ the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ static void log_histinit_32(log_action_t *Globals, int Voltage) { - na_strlist_t *Dummy; - if (Voltage) { - Dummy = strlist_append(&Globals->acttool->hlbl, + strlist_append(&Globals->acttool->hlbl, "VCyan,Orange,Yellow,Pink,Green,Red,White,Medium Red,Light Gray,Dark Cyan,Dark Yellow,Dark Red:Color"); - Dummy = strlist_append(&Globals->acttool->hlbl, "BY:Phosphor Visible?"); - Dummy = strlist_append(&Globals->acttool->hlbl, "I3:Significant Digits:"); - Dummy = strlist_append(&Globals->acttool->hlbl, - "VLinear,Log:Scaling method:"); - Dummy = strlist_append(&Globals->acttool->hlbl, - "Linear;UV,5:Volts/Division:"); - Dummy = strlist_append(&Globals->acttool->hlbl, - "Linear;UV,0:Vertical Origin"); - Dummy = strlist_append(&Globals->acttool->hlbl, "Log;UV,1e-15:Vzero:"); - Dummy = strlist_append(&Globals->acttool->hlbl, - "Log;UDiv,0:Vertical Origin"); - Dummy = strlist_append(&Globals->acttool->hlbl, ""); - Dummy = strlist_append(&Globals->acttool->hlbl, "3UV:Present Voltage:"); + strlist_append(&Globals->acttool->hlbl, "BY:Phosphor Visible?"); + strlist_append(&Globals->acttool->hlbl, "I3:Significant Digits:"); + strlist_append(&Globals->acttool->hlbl, "VLinear,Log:Scaling method:"); + strlist_append(&Globals->acttool->hlbl, "Linear;UV,5:Volts/Division:"); + strlist_append(&Globals->acttool->hlbl, "Linear;UV,0:Vertical Origin"); + strlist_append(&Globals->acttool->hlbl, "Log;UV,1e-15:Vzero:"); + strlist_append(&Globals->acttool->hlbl, "Log;UDiv,0:Vertical Origin"); + strlist_append(&Globals->acttool->hlbl, ""); + strlist_append(&Globals->acttool->hlbl, "3UV:Present Voltage:"); return; } - Dummy = strlist_append(&Globals->acttool->hlbl, + strlist_append(&Globals->acttool->hlbl, "VCyan,Orange,Yellow,Pink,Green,Red,White,Medium Red,Light Gray,Dark Cyan,Dark Yellow,Dark Red:Color"); - Dummy = strlist_append(&Globals->acttool->hlbl, "BY:Phosphor Visible?"); - Dummy = strlist_append(&Globals->acttool->hlbl, "I3:Significant Digits:"); - Dummy = strlist_append(&Globals->acttool->hlbl, - "VLinear,Log:Scaling method:"); - Dummy = strlist_append(&Globals->acttool->hlbl, - "Linear;UA,5e-9:Amps/Division:"); - Dummy = strlist_append(&Globals->acttool->hlbl, - "Linear;UA,0:Vertical Origin"); - Dummy = strlist_append(&Globals->acttool->hlbl, "Log;UA,1e-15:Izero:"); - Dummy = strlist_append(&Globals->acttool->hlbl, "Log;UDiv,0:Vertical Origin"); - Dummy = strlist_append(&Globals->acttool->hlbl, ""); - Dummy = strlist_append(&Globals->acttool->hlbl, "3UA:Present Current:"); + strlist_append(&Globals->acttool->hlbl, "BY:Phosphor Visible?"); + strlist_append(&Globals->acttool->hlbl, "I3:Significant Digits:"); + strlist_append(&Globals->acttool->hlbl, "VLinear,Log:Scaling method:"); + strlist_append(&Globals->acttool->hlbl, "Linear;UA,5e-9:Amps/Division:"); + strlist_append(&Globals->acttool->hlbl, "Linear;UA,0:Vertical Origin"); + strlist_append(&Globals->acttool->hlbl, "Log;UA,1e-15:Izero:"); + strlist_append(&Globals->acttool->hlbl, "Log;UDiv,0:Vertical Origin"); + strlist_append(&Globals->acttool->hlbl, ""); + strlist_append(&Globals->acttool->hlbl, "3UA:Present Current:"); } @@ -556,6 +547,9 @@ static long Variantmap(long Variantcolor) case 11: Result = log_dred; break; + + default: + Result = 0; } return Result; } @@ -594,28 +588,26 @@ static void log_history_32(log_action_t *Globals, int Voltage) static void log_histval_32(log_action_t *Globals, int Voltage) { - switch (Globals->actgattr[AnaH_Method - 1].UU.nv) { - - case AnaLinear: - Globals->actval = - (Globals->actval - Globals->actgattr[AnaH_LinOffset - 1].UU.r) / - Globals->actgattr[AnaH_Scale - 1].UU.r; - break; - - case AnaLog: - if (fabs(Globals->actval) < Globals->actgattr[AnaH_Vzero - 1].UU.r) - Globals->actval = -Globals->actgattr[AnaH_LogOffset - 1].UU.r; - else - Globals->actval = - AnaInvLn10 * - log(fabs(Globals->actval) / Globals->actgattr[AnaH_Vzero - 1].UU.r) - - Globals->actgattr[AnaH_LogOffset - 1].UU.r; - break; - } - if (Globals->actgattr[AnaH_PhosVis - 1].UU.b) - Globals->acty = Variantmap((long)Globals->actgattr[AnaH_Color - 1].UU.nv); - else - Globals->acty = -1; + switch (Globals->actgattr[AnaH_Method - 1].UU.nv) + { + case AnaLinear: + Globals->actval = (Globals->actval - Globals->actgattr[AnaH_LinOffset - 1].UU.r) / + Globals->actgattr[AnaH_Scale - 1].UU.r; + break; + + case AnaLog: + if (fabs(Globals->actval) < Globals->actgattr[AnaH_Vzero - 1].UU.r) + Globals->actval = -Globals->actgattr[AnaH_LogOffset - 1].UU.r; + else + Globals->actval = AnaInvLn10 * log(fabs(Globals->actval) / + Globals->actgattr[AnaH_Vzero - 1].UU.r) - + Globals->actgattr[AnaH_LogOffset - 1].UU.r; + break; + } + if (Globals->actgattr[AnaH_PhosVis - 1].UU.b) + Globals->acty = Variantmap((long)Globals->actgattr[AnaH_Color - 1].UU.nv); + else + Globals->acty = -1; } @@ -627,68 +619,73 @@ static void log_histval_32(log_action_t *Globals, int Voltage) static void log_histstr_32(log_action_t *Globals, int Voltage) { - double Temp; - char Unit[4]; - log_action_t *WITH; - - WITH = Globals; - if (!WITH->actgattr[AnaH_PhosVis - 1].UU.b) - return; - if (Voltage) - strcpy(Unit, "V"); - else - strcpy(Unit, "A"); - switch (WITH->actgattr[AnaH_Method - 1].UU.nv) { - - case AnaLinear: - switch (WITH->acty) { - - case Delta: - case Slope: - Temp = WITH->actval * WITH->actgattr[AnaH_Scale - 1].UU.r; - break; - - case Absolute: - case Value: - Temp = WITH->actval * WITH->actgattr[AnaH_Scale - 1].UU.r + - WITH->actgattr[AnaH_LinOffset - 1].UU.r; - break; - } - (*Globals->hook.realunit)(Temp, + double Temp; + char Unit[4]; + log_action_t *WITH; + + WITH = Globals; + if (!WITH->actgattr[AnaH_PhosVis - 1].UU.b) + return; + + if (Voltage) + strcpy(Unit, "V"); + else + strcpy(Unit, "A"); + + switch (WITH->actgattr[AnaH_Method - 1].UU.nv) + { + case AnaLinear: + switch (WITH->acty) + { + case Delta: + case Slope: + Temp = WITH->actval * WITH->actgattr[AnaH_Scale - 1].UU.r; + break; + + case Absolute: + case Value: + Temp = WITH->actval * WITH->actgattr[AnaH_Scale - 1].UU.r + + WITH->actgattr[AnaH_LinOffset - 1].UU.r; + break; + + default: + Temp = 0; + } + (*Globals->hook.realunit)(Temp, (int)WITH->actgattr[AnaH_Sigdig - 1].UU.U73.i1, Unit, WITH->actstr); - break; - - case AnaLog: - switch (WITH->acty) { - - case Delta: - Temp = AnaExpo(AnaLn10 * WITH->actval); - (*Globals->hook.realunit)(Temp, - (int)WITH->actgattr[AnaH_Sigdig - 1].UU.U73.i1, "", WITH->actstr); - strcat(WITH->actstr, " Ratio"); - break; - - case Absolute: - case Value: - if (WITH->actval <= -WITH->actgattr[AnaH_LogOffset - 1].UU.r) - Temp = WITH->actgattr[AnaH_Vzero - 1].UU.r; - else - Temp = WITH->actgattr[AnaH_Vzero - 1].UU.r * AnaExpo( - AnaLn10 * (WITH->actval + WITH->actgattr[AnaH_LogOffset - 1].UU.r)); - (*Globals->hook.realunit)(Temp, - (int)WITH->actgattr[AnaH_Sigdig - 1].UU.U73.i1, Unit, WITH->actstr); - break; - - case Slope: - Temp = AnaExpo(AnaLn10 * WITH->actval * WITH->actval2) / WITH->actval2; - (*Globals->hook.realunit)(Temp, - (int)WITH->actgattr[AnaH_Sigdig - 1].UU.U73.i1, "", WITH->actstr); - strcat(WITH->actstr, " Ratio"); - break; - } - break; - } + break; + + case AnaLog: + switch (WITH->acty) + { + case Delta: + Temp = AnaExpo(AnaLn10 * WITH->actval); + (*Globals->hook.realunit)(Temp, + (int)WITH->actgattr[AnaH_Sigdig - 1].UU.U73.i1, "", WITH->actstr); + strcat(WITH->actstr, " Ratio"); + break; + + case Absolute: + case Value: + if (WITH->actval <= -WITH->actgattr[AnaH_LogOffset - 1].UU.r) + Temp = WITH->actgattr[AnaH_Vzero - 1].UU.r; + else + Temp = WITH->actgattr[AnaH_Vzero - 1].UU.r * AnaExpo( + AnaLn10 * (WITH->actval + WITH->actgattr[AnaH_LogOffset - 1].UU.r)); + (*Globals->hook.realunit)(Temp, + (int)WITH->actgattr[AnaH_Sigdig - 1].UU.U73.i1, Unit, WITH->actstr); + break; + + case Slope: + Temp = AnaExpo(AnaLn10 * WITH->actval * WITH->actval2) / WITH->actval2; + (*Globals->hook.realunit)(Temp, + (int)WITH->actgattr[AnaH_Sigdig - 1].UU.U73.i1, "", WITH->actstr); + strcat(WITH->actstr, " Ratio"); + break; + } + break; + } } #undef Delta diff --git a/log/src/ana/iscope.c b/log/src/ana/iscope.c index 1ead6e4..f8549b2 100644 --- a/log/src/ana/iscope.c +++ b/log/src/ana/iscope.c @@ -346,9 +346,9 @@ Analog_32_action *act; static void Iin_Iscope(act) Analog_32_action *act; { - log_grec *WITH; +// log_grec *WITH; - WITH = act->inst; +// WITH = act->inst; } /*******************************************************************************/ @@ -394,7 +394,6 @@ ICIscope *NewIC; { int Found; char Arg[256], Keyword[256]; - long Dummy; ICIscope *WITH; char STR1[256]; char STR2[256]; @@ -428,7 +427,6 @@ ICIscope *NewIC; if (!strcmp(Keyword, "PREC")) { TRY(try1); WITH->Initprec = strtol(Arg, &STR3, 10); - Dummy = STR3 - Arg + 1; RECOVER(try1); WITH->Initprec = 3; ENDTRY(try1); @@ -474,22 +472,16 @@ Analog_32_action *act; char Oldout[256], Newout[256]; double Lastval; short tx, ty; - int Left; - AnaCell_rec *Cellptr; - ICIscope *ICptr; + int Left = 0; Imeterrec *Intptr; Anainstlist *A_Gate; Analog_32_action *WITH; - ICIscope *WITH1; log_grec *WITH2; log_gattrrec *WITH3; - Cellptr = (AnaCell_rec *)act->inst->kind->info; - ICptr = (ICIscope *)Cellptr->Ainfo; A_Gate = (Anainstlist *)act->inst->info; Intptr = (Imeterrec *)A_Gate->InstVar; WITH = act; - WITH1 = ICptr; Attrnum = WITH->pin; if ((unsigned long)Attrnum < 32 && ((1L << Attrnum) & ((1L << N_Present) | (1L << N_Format))) != 0) { @@ -542,7 +534,7 @@ Analog_32_action *act; { short tx, ty; char Oldout[256]; - int Left; + int Left = 0; AnaCell_rec *Cellptr; ICIscope *ICptr; Imeterrec *Intptr; diff --git a/log/src/ana/iswitch1.c b/log/src/ana/iswitch1.c index ffa67cc..931de29 100644 --- a/log/src/ana/iswitch1.c +++ b/log/src/ana/iswitch1.c @@ -204,56 +204,62 @@ double OldIideal; static void Ex_Iswitch1(act) Analog_32_action *act; { - double MinI1, dI1dV1; - AnaExt_rec *Pin1Ptr; - long Pin1; - double VPin1; - Iswitch1Const *Iswitch1Var; - Anainstlist *A_Gate; - double Fout, Th, Etemp, Blend; - log_grec *WITH; - AnaMatRec *WITH1; - - WITH = act->inst; - A_Gate = (Anainstlist *)WITH->info; - Iswitch1Var = (Iswitch1Const *)A_Gate->InstVar; - Pin1Ptr = (AnaExt_rec *)WITH->pin[0]->info; - Pin1 = Pin1Ptr->nodenum; - VPin1 = Pin1Ptr->last; /*Use with statement to get to internal variables*/ - switch (WITH->attr[N_Type - 1].UU.nv) { - - case Bistable: - Fout = Bistablemaker(act->inst, Iswitch1Var->Time, Iswitch1Var->State, - true, Iswitch1Var->OldIideal); - break; - - case Monostable: - Fout = Monostablemaker(act->inst, Iswitch1Var->Time, Iswitch1Var->State, - true, Iswitch1Var->OldIideal); - break; - } - Iswitch1Var->NewIideal = Fout; - Th = VPin1 - AnaVdd + WITH->attr[N_Crowbar - 1].UU.r; - if (fabs(Th) < 0.1) { - Etemp = AnaExpo(7080 * Th); - Blend = 1 / (1 + Etemp); - MinI1 = Fout * Blend; - dI1dV1 = Etemp * Blend * Blend; - dI1dV1 *= 7080 * Fout; - } else { - if (Th > 0) - MinI1 = 0.0; - else - MinI1 = Fout; - dI1dV1 = 0.0; - } - WITH1 = AnaSystem; - WITH1->Mat[Pin1][AnaSysCol] += MinI1; - WITH1->Mat[Pin1][Pin1] += dI1dV1; - - WITH1->MatNZ[Pin1][AnaSysCol] = true; - WITH1->MatNZ[Pin1][Pin1] = true; - AnaCapex(act->inst); + double MinI1, dI1dV1; + AnaExt_rec *Pin1Ptr; + long Pin1; + double VPin1; + Iswitch1Const *Iswitch1Var; + Anainstlist *A_Gate; + double Fout, Th, Etemp, Blend; + log_grec *WITH; + AnaMatRec *WITH1; + + WITH = act->inst; + A_Gate = (Anainstlist *)WITH->info; + Iswitch1Var = (Iswitch1Const *)A_Gate->InstVar; + Pin1Ptr = (AnaExt_rec *)WITH->pin[0]->info; + Pin1 = Pin1Ptr->nodenum; + VPin1 = Pin1Ptr->last; /*Use with statement to get to internal variables*/ + switch (WITH->attr[N_Type - 1].UU.nv) + { + case Bistable: + Fout = Bistablemaker(act->inst, Iswitch1Var->Time, Iswitch1Var->State, + true, Iswitch1Var->OldIideal); + break; + + case Monostable: + Fout = Monostablemaker(act->inst, Iswitch1Var->Time, Iswitch1Var->State, + true, Iswitch1Var->OldIideal); + break; + + default: + Fout = 0; + } + Iswitch1Var->NewIideal = Fout; + Th = VPin1 - AnaVdd + WITH->attr[N_Crowbar - 1].UU.r; + if (fabs(Th) < 0.1) { + Etemp = AnaExpo(7080 * Th); + Blend = 1 / (1 + Etemp); + MinI1 = Fout * Blend; + dI1dV1 = Etemp * Blend * Blend; + dI1dV1 *= 7080 * Fout; + } + else + { + if (Th > 0) + MinI1 = 0.0; + else + MinI1 = Fout; + + dI1dV1 = 0.0; + } + WITH1 = AnaSystem; + WITH1->Mat[Pin1][AnaSysCol] += MinI1; + WITH1->Mat[Pin1][Pin1] += dI1dV1; + + WITH1->MatNZ[Pin1][AnaSysCol] = true; + WITH1->MatNZ[Pin1][Pin1] = true; + AnaCapex(act->inst); } /*Ex_Iswitch1*/ @@ -265,49 +271,52 @@ Analog_32_action *act; static void Iin_Iswitch1(act) Analog_32_action *act; { - AnaExt_rec *Pin1Ptr; - double VPin1; - Iswitch1Const *Iswitch1Var; - Anainstlist *A_Gate; - double Fout, Th; - log_grec *WITH; - - WITH = act->inst; - A_Gate = (Anainstlist *)WITH->info; - Iswitch1Var = (Iswitch1Const *)A_Gate->InstVar; - Pin1Ptr = (AnaExt_rec *)WITH->pin[0]->info; - VPin1 = Pin1Ptr->now; - switch (act->pin) { - - case 1: - WITH = act->inst; - switch (WITH->attr[N_Type - 1].UU.nv) { - - case Bistable: - Fout = Bistablemaker(act->inst, Iswitch1Var->Time, Iswitch1Var->State, - false, Iswitch1Var->OldIideal); - break; - - case Monostable: - Fout = Monostablemaker(act->inst, Iswitch1Var->Time, Iswitch1Var->State, - false, Iswitch1Var->OldIideal); - break; - } - Th = VPin1 - AnaVdd + WITH->attr[N_Crowbar - 1].UU.r; - if (fabs(Th) < 0.1) - act->Iin = act->Iin - Fout / (1 + AnaExpo(7080 * Th)); - else { - if (Th < 0) - act->Iin = act->Iin - Fout; - } - AnaCapIin(act); - break; - - default: - printf("Data Structure Corruption\n"); - _Escape(1002); - break; - } + AnaExt_rec *Pin1Ptr; + double VPin1; + Iswitch1Const *Iswitch1Var; + Anainstlist *A_Gate; + double Fout, Th; + log_grec *WITH; + + WITH = act->inst; + A_Gate = (Anainstlist *)WITH->info; + Iswitch1Var = (Iswitch1Const *)A_Gate->InstVar; + Pin1Ptr = (AnaExt_rec *)WITH->pin[0]->info; + VPin1 = Pin1Ptr->now; + switch (act->pin) + { + case 1: + WITH = act->inst; + switch (WITH->attr[N_Type - 1].UU.nv) + { + case Bistable: + Fout = Bistablemaker(act->inst, Iswitch1Var->Time, Iswitch1Var->State, + false, Iswitch1Var->OldIideal); + break; + + case Monostable: + Fout = Monostablemaker(act->inst, Iswitch1Var->Time, Iswitch1Var->State, + false, Iswitch1Var->OldIideal); + break; + + default: + Fout = 0; + } + Th = VPin1 - AnaVdd + WITH->attr[N_Crowbar - 1].UU.r; + if (fabs(Th) < 0.1) + act->Iin = act->Iin - Fout / (1 + AnaExpo(7080 * Th)); + else { + if (Th < 0) + act->Iin = act->Iin - Fout; + } + AnaCapIin(act); + break; + + default: + printf("Data Structure Corruption\n"); + _Escape(1002); + break; + } } /*Iin_Iswitch1*/ @@ -316,7 +325,6 @@ ICIswitch1 *NewIC; { int Found; char Arg[256], Keyword[256]; - long Dummy; ICIswitch1 *WITH; char *STR1; @@ -328,7 +336,6 @@ ICIswitch1 *NewIC; if (!strcmp(Keyword, "CROWBAR")) { TRY(try1); WITH->ICCrowbar = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try1); WITH->ICCrowbar = 0.1; ENDTRY(try1); @@ -345,7 +352,6 @@ ICIswitch1 *NewIC; if (!strcmp(Keyword, "IINIT")) { TRY(try2); WITH->ICbIinit = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try2); WITH->ICbIinit = 0.0; ENDTRY(try2); @@ -353,7 +359,6 @@ ICIswitch1 *NewIC; if (!strcmp(Keyword, "IPULSE")) { TRY(try3); WITH->ICbIpulse = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try3); WITH->ICbIpulse = 10e-9; ENDTRY(try3); @@ -361,7 +366,6 @@ ICIswitch1 *NewIC; if (!strcmp(Keyword, "RISE")) { TRY(try4); WITH->ICbRise = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try4); WITH->ICbRise = 3 * AnaDtmax; ENDTRY(try4); @@ -369,7 +373,6 @@ ICIswitch1 *NewIC; if (!strcmp(Keyword, "FALL")) { TRY(try5); WITH->ICbFall = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try5); WITH->ICbFall = 3 * AnaDtmax; ENDTRY(try5); @@ -387,7 +390,6 @@ ICIswitch1 *NewIC; if (!strcmp(Keyword, "IINIT")) { TRY(try6); WITH->ICmIinit = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try6); WITH->ICmIinit = 0.0; ENDTRY(try6); @@ -395,7 +397,6 @@ ICIswitch1 *NewIC; if (!strcmp(Keyword, "IPULSE")) { TRY(try7); WITH->ICmIpulse = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try7); WITH->ICmIpulse = 10e-9; ENDTRY(try7); @@ -403,7 +404,6 @@ ICIswitch1 *NewIC; if (!strcmp(Keyword, "RISE")) { TRY(try8); WITH->ICmRise = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try8); WITH->ICmRise = 3 * AnaDtmax; ENDTRY(try8); @@ -411,7 +411,6 @@ ICIswitch1 *NewIC; if (!strcmp(Keyword, "FALL")) { TRY(try9); WITH->ICmFall = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try9); WITH->ICmFall = 3 * AnaDtmax; ENDTRY(try9); @@ -419,7 +418,6 @@ ICIswitch1 *NewIC; if (!strcmp(Keyword, "WIDTH")) { TRY(try10); WITH->ICmWidth = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try10); WITH->ICmWidth = 6 * AnaDtmax; ENDTRY(try10); @@ -651,13 +649,11 @@ Analog_32_action *act; { Iswitch1Const *Iswitch1Var; Anainstlist *A_Gate; - log_grec *WITH1; char STR1[256]; AnaCapattrread((long)Cstart, act->inst); /*Read capacitors*/ A_Gate = (Anainstlist *)act->inst->info; Iswitch1Var = (Iswitch1Const *)A_Gate->InstVar; - WITH1 = act->inst; fscanf(*AnaLogglobals->actfile, "%lg%*[^\n]", &Iswitch1Var->Time); getc(*AnaLogglobals->actfile); fscanf(*AnaLogglobals->actfile, " %[a-zA-Z]%*[^\n]", STR1); @@ -729,11 +725,9 @@ Analog_32_action *act; { Iswitch1Const *Iswitch1Var; Anainstlist *A_Gate; - log_grec *WITH1; A_Gate = (Anainstlist *)act->inst->info; Iswitch1Var = (Iswitch1Const *)A_Gate->InstVar; - WITH1 = act->inst; Iswitch1Var->Reset_State = Iswitch1Var->State; Iswitch1Var->Reset_Iideal = Iswitch1Var->OldIideal; Iswitch1Var->Reset_Time = Iswitch1Var->Time - AnaAccum; diff --git a/log/src/ana/iswitch2.c b/log/src/ana/iswitch2.c index fe631c7..3863af8 100644 --- a/log/src/ana/iswitch2.c +++ b/log/src/ana/iswitch2.c @@ -205,56 +205,62 @@ double OldIideal; static void Ex_Iswitch2(act) Analog_32_action *act; { - double MinI1, dI1dV1; - AnaExt_rec *Pin1Ptr; - long Pin1; - double VPin1; - Iswitch2Const *Iswitch2Var; - Anainstlist *A_Gate; - double Fout, Etemp, Blend, Th; - log_grec *WITH; - AnaMatRec *WITH1; - - WITH = act->inst; - A_Gate = (Anainstlist *)WITH->info; - Iswitch2Var = (Iswitch2Const *)A_Gate->InstVar; - Pin1Ptr = (AnaExt_rec *)WITH->pin[0]->info; - Pin1 = Pin1Ptr->nodenum; - VPin1 = Pin1Ptr->last; /*Use with statement to get to internal variables*/ - switch (WITH->attr[N_Type - 1].UU.nv) { - - case Bistable: - Fout = Bistablemaker(act->inst, Iswitch2Var->Time, Iswitch2Var->State, - true, Iswitch2Var->OldIideal); - break; - - case Monostable: - Fout = Monostablemaker(act->inst, Iswitch2Var->Time, Iswitch2Var->State, - true, Iswitch2Var->OldIideal); - break; - } - Iswitch2Var->NewIideal = Fout; - Th = WITH->attr[N_Crowbar - 1].UU.r - VPin1; - if (fabs(Th) < 0.1) { - Etemp = AnaExpo(7080 * Th); - Blend = 1 / (1 + Etemp); - MinI1 = -Fout * Blend; - dI1dV1 = Etemp * Blend * Blend; - dI1dV1 *= 7080 * Fout; - } else { - if (Th > 0) - MinI1 = 0.0; - else - MinI1 = -Fout; - dI1dV1 = 0.0; - } - WITH1 = AnaSystem; - WITH1->Mat[Pin1][AnaSysCol] += MinI1; - WITH1->Mat[Pin1][Pin1] += dI1dV1; - - WITH1->MatNZ[Pin1][AnaSysCol] = true; - WITH1->MatNZ[Pin1][Pin1] = true; - AnaCapex(act->inst); + double MinI1, dI1dV1; + AnaExt_rec *Pin1Ptr; + long Pin1; + double VPin1; + Iswitch2Const *Iswitch2Var; + Anainstlist *A_Gate; + double Fout, Etemp, Blend, Th; + log_grec *WITH; + AnaMatRec *WITH1; + + WITH = act->inst; + A_Gate = (Anainstlist *)WITH->info; + Iswitch2Var = (Iswitch2Const *)A_Gate->InstVar; + Pin1Ptr = (AnaExt_rec *)WITH->pin[0]->info; + Pin1 = Pin1Ptr->nodenum; + VPin1 = Pin1Ptr->last; /*Use with statement to get to internal variables*/ + switch (WITH->attr[N_Type - 1].UU.nv) + { + case Bistable: + Fout = Bistablemaker(act->inst, Iswitch2Var->Time, Iswitch2Var->State, + true, Iswitch2Var->OldIideal); + break; + + case Monostable: + Fout = Monostablemaker(act->inst, Iswitch2Var->Time, Iswitch2Var->State, + true, Iswitch2Var->OldIideal); + break; + + default: + Fout = 0; + } + Iswitch2Var->NewIideal = Fout; + Th = WITH->attr[N_Crowbar - 1].UU.r - VPin1; + if (fabs(Th) < 0.1) { + Etemp = AnaExpo(7080 * Th); + Blend = 1 / (1 + Etemp); + MinI1 = -Fout * Blend; + dI1dV1 = Etemp * Blend * Blend; + dI1dV1 *= 7080 * Fout; + } + else + { + if (Th > 0) + MinI1 = 0.0; + else + MinI1 = -Fout; + + dI1dV1 = 0.0; + } + WITH1 = AnaSystem; + WITH1->Mat[Pin1][AnaSysCol] += MinI1; + WITH1->Mat[Pin1][Pin1] += dI1dV1; + + WITH1->MatNZ[Pin1][AnaSysCol] = true; + WITH1->MatNZ[Pin1][Pin1] = true; + AnaCapex(act->inst); } /*Ex_Iswitch2*/ @@ -266,49 +272,53 @@ Analog_32_action *act; static void Iin_Iswitch2(act) Analog_32_action *act; { - AnaExt_rec *Pin1Ptr; - double VPin1; - Iswitch2Const *Iswitch2Var; - Anainstlist *A_Gate; - double Fout, Th; - log_grec *WITH; - - WITH = act->inst; - A_Gate = (Anainstlist *)WITH->info; - Iswitch2Var = (Iswitch2Const *)A_Gate->InstVar; - Pin1Ptr = (AnaExt_rec *)WITH->pin[0]->info; - VPin1 = Pin1Ptr->now; - switch (act->pin) { - - case 1: - WITH = act->inst; - switch (WITH->attr[N_Type - 1].UU.nv) { - - case Bistable: - Fout = Bistablemaker(act->inst, Iswitch2Var->Time, Iswitch2Var->State, - false, Iswitch2Var->OldIideal); - break; - - case Monostable: - Fout = Monostablemaker(act->inst, Iswitch2Var->Time, Iswitch2Var->State, - false, Iswitch2Var->OldIideal); - break; - } - Th = WITH->attr[N_Crowbar - 1].UU.r - VPin1; - if (fabs(Th) < 0.1) - act->Iin = Fout / (1 + AnaExpo(7080 * Th)) + act->Iin; - else { - if (Th < 0) - act->Iin = Fout + act->Iin; - } - AnaCapIin(act); - break; - - default: - printf("Data Structure Corruption\n"); - _Escape(1002); - break; - } + AnaExt_rec *Pin1Ptr; + double VPin1; + Iswitch2Const *Iswitch2Var; + Anainstlist *A_Gate; + double Fout, Th; + log_grec *WITH; + + WITH = act->inst; + A_Gate = (Anainstlist *)WITH->info; + Iswitch2Var = (Iswitch2Const *)A_Gate->InstVar; + Pin1Ptr = (AnaExt_rec *)WITH->pin[0]->info; + VPin1 = Pin1Ptr->now; + switch (act->pin) + { + case 1: + WITH = act->inst; + switch (WITH->attr[N_Type - 1].UU.nv) + { + case Bistable: + Fout = Bistablemaker(act->inst, Iswitch2Var->Time, Iswitch2Var->State, + false, Iswitch2Var->OldIideal); + break; + + case Monostable: + Fout = Monostablemaker(act->inst, Iswitch2Var->Time, Iswitch2Var->State, + false, Iswitch2Var->OldIideal); + break; + + default: + Fout = 0; + } + Th = WITH->attr[N_Crowbar - 1].UU.r - VPin1; + if (fabs(Th) < 0.1) + act->Iin = Fout / (1 + AnaExpo(7080 * Th)) + act->Iin; + else + { + if (Th < 0) + act->Iin = Fout + act->Iin; + } + AnaCapIin(act); + break; + + default: + printf("Data Structure Corruption\n"); + _Escape(1002); + break; + } } /*Iin_Iswitch2*/ static void GetCnf_Iswitch2(NewIC) @@ -316,7 +326,6 @@ ICIswitch2 *NewIC; { int Found; char Arg[256], Keyword[256]; - long Dummy; ICIswitch2 *WITH; char *STR1; @@ -328,7 +337,6 @@ ICIswitch2 *NewIC; if (!strcmp(Keyword, "CROWBAR")) { TRY(try1); WITH->ICCrowbar = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try1); WITH->ICCrowbar = 0.1; ENDTRY(try1); @@ -345,7 +353,6 @@ ICIswitch2 *NewIC; if (!strcmp(Keyword, "IINIT")) { TRY(try2); WITH->ICbIinit = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try2); WITH->ICbIinit = 0.0; ENDTRY(try2); @@ -353,7 +360,6 @@ ICIswitch2 *NewIC; if (!strcmp(Keyword, "IPULSE")) { TRY(try3); WITH->ICbIpulse = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try3); WITH->ICbIpulse = 10e-9; ENDTRY(try3); @@ -361,7 +367,6 @@ ICIswitch2 *NewIC; if (!strcmp(Keyword, "RISE")) { TRY(try4); WITH->ICbRise = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try4); WITH->ICbRise = 3 * AnaDtmax; ENDTRY(try4); @@ -369,7 +374,6 @@ ICIswitch2 *NewIC; if (!strcmp(Keyword, "FALL")) { TRY(try5); WITH->ICbFall = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try5); WITH->ICbFall = 3 * AnaDtmax; ENDTRY(try5); @@ -387,7 +391,6 @@ ICIswitch2 *NewIC; if (!strcmp(Keyword, "IINIT")) { TRY(try6); WITH->ICmIinit = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try6); WITH->ICmIinit = 0.0; ENDTRY(try6); @@ -395,7 +398,6 @@ ICIswitch2 *NewIC; if (!strcmp(Keyword, "IPULSE")) { TRY(try7); WITH->ICmIpulse = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try7); WITH->ICmIpulse = 10e-9; ENDTRY(try7); @@ -403,7 +405,6 @@ ICIswitch2 *NewIC; if (!strcmp(Keyword, "RISE")) { TRY(try8); WITH->ICmRise = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try8); WITH->ICmRise = 3 * AnaDtmax; ENDTRY(try8); @@ -411,7 +412,6 @@ ICIswitch2 *NewIC; if (!strcmp(Keyword, "FALL")) { TRY(try9); WITH->ICmFall = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try9); WITH->ICmFall = 3 * AnaDtmax; ENDTRY(try9); @@ -419,7 +419,6 @@ ICIswitch2 *NewIC; if (!strcmp(Keyword, "WIDTH")) { TRY(try10); WITH->ICmWidth = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try10); WITH->ICmWidth = 6 * AnaDtmax; ENDTRY(try10); @@ -652,13 +651,11 @@ Analog_32_action *act; { Iswitch2Const *Iswitch2Var; Anainstlist *A_Gate; - log_grec *WITH1; char STR1[256]; AnaCapattrread((long)Cstart, act->inst); /*Read capacitors*/ A_Gate = (Anainstlist *)act->inst->info; Iswitch2Var = (Iswitch2Const *)A_Gate->InstVar; - WITH1 = act->inst; fscanf(*AnaLogglobals->actfile, "%lg%*[^\n]", &Iswitch2Var->Time); getc(*AnaLogglobals->actfile); fscanf(*AnaLogglobals->actfile, " %[a-zA-Z]%*[^\n]", STR1); @@ -730,11 +727,9 @@ Analog_32_action *act; { Iswitch2Const *Iswitch2Var; Anainstlist *A_Gate; - log_grec *WITH1; A_Gate = (Anainstlist *)act->inst->info; Iswitch2Var = (Iswitch2Const *)A_Gate->InstVar; - WITH1 = act->inst; Iswitch2Var->Reset_State = Iswitch2Var->State; Iswitch2Var->Reset_Iideal = Iswitch2Var->OldIideal; Iswitch2Var->Reset_Time = Iswitch2Var->Time - AnaAccum; diff --git a/log/src/ana/main.c b/log/src/ana/main.c index e3b099e..ca7ff5e 100644 --- a/log/src/ana/main.c +++ b/log/src/ana/main.c @@ -618,7 +618,6 @@ void Analog_Systeminit() { int Found; char Arg[256], Keyword[256]; - long Dummy; char *STR1; do { @@ -628,7 +627,6 @@ void Analog_Systeminit() if (!strcmp(Keyword, "VDD")) { TRY(try1); AnaVdd = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaVdd <= AnaVddmin || AnaVdd > AnaVddmax) AnaVdd = 5.0; RECOVER(try1); @@ -638,7 +636,6 @@ void Analog_Systeminit() if (!strcmp(Keyword, "DTMAX")) { TRY(try2); AnaDtmax = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaDtmax <= AnaDtmaxmin || AnaDtmax > AnaDtmaxmax) AnaDtmax = 1e-4; RECOVER(try2); @@ -648,7 +645,6 @@ void Analog_Systeminit() if (!strcmp(Keyword, "VSTEP")) { TRY(try3); AnaVstep = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaVstep <= AnaVstepmin || AnaVstep > AnaVstepmax) AnaVstep = 0.1; AnaVshift = AnaVstep / AnaSrange; @@ -660,7 +656,6 @@ void Analog_Systeminit() if (!strcmp(Keyword, "SRANGE")) { TRY(try4); AnaSrange = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaSrange <= AnaSrangemin || AnaSrange > AnaSrangemax) AnaSrange = 10.0; AnaVshift = AnaVstep / AnaSrange; @@ -672,7 +667,6 @@ void Analog_Systeminit() if (!strcmp(Keyword, "HIGHEST")) { TRY(try5); AnaHighest = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaHighest > AnaHighestmax) AnaHighest = AnaVdd + 2; RECOVER(try5); @@ -682,7 +676,6 @@ void Analog_Systeminit() if (!strcmp(Keyword, "LOWEST")) { TRY(try6); AnaLowest = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaLowest < AnaLowestmin || AnaLowest > 0) AnaLowest = -2.0; RECOVER(try6); @@ -692,7 +685,6 @@ void Analog_Systeminit() if (!strcmp(Keyword, "SMALL")) { TRY(try7); AnaSmall = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaSmall < AnaSmallmin || AnaSmall > AnaSmallmax) AnaSmall = 0.1; RECOVER(try7); @@ -702,7 +694,6 @@ void Analog_Systeminit() if (!strcmp(Keyword, "TOL")) { TRY(try8); AnaTol = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaTol < AnaTolmin || AnaTol > AnaTolmax) AnaTol = 0.000001; RECOVER(try8); @@ -712,7 +703,6 @@ void Analog_Systeminit() if (!strcmp(Keyword, "EQN_EPSILON")) { TRY(try9); AnaEqn_Epsilon = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaEqn_Epsilon < AnaEqn_epsilonmin || AnaEqn_Epsilon > AnaEqn_epsilonmax) AnaEqn_Epsilon = 1e-40; @@ -723,7 +713,6 @@ void Analog_Systeminit() if (!strcmp(Keyword, "VARDONE_EPSILON")) { TRY(try10); AnaVardone_Epsilon = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaVardone_Epsilon < AnaVardone_epsilonmin || AnaVardone_Epsilon > AnaVardone_epsilonmax) AnaVardone_Epsilon = 1e-9; @@ -734,7 +723,6 @@ void Analog_Systeminit() if (!strcmp(Keyword, "TIMEFACTOR")) { TRY(try11); AnaTimefactor = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaTimefactor < AnaTimefactormin || AnaTimefactor > AnaTimefactormax) AnaTimefactor = 2.0; RECOVER(try11); @@ -744,7 +732,6 @@ void Analog_Systeminit() if (!strcmp(Keyword, "TIMEMIN")) { TRY(try12); AnaTimemin = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaTimemin < AnaTimeminmin || AnaTimemin > AnaTimeminmax) AnaTimemin = 1e-40; RECOVER(try12); @@ -754,7 +741,6 @@ void Analog_Systeminit() if (!strcmp(Keyword, "ITERFIRSTMAX")) { TRY(try13); AnaIterfirstmax = strtol(Arg, &STR1, 10); - Dummy = STR1 - Arg + 1; if (AnaIterfirstmax < AnaIterfirstmaxmin || AnaIterfirstmax > AnaIterfirstmaxmax) AnaIterfirstmax = 30; @@ -765,7 +751,6 @@ void Analog_Systeminit() if (!strcmp(Keyword, "TIMEINCREASE")) { TRY(try14); AnaTimeincrease = strtol(Arg, &STR1, 10); - Dummy = STR1 - Arg + 1; if (AnaTimeincrease < AnaTimeincreasemin || AnaTimeincrease > AnaTimeincreasemax) AnaTimeincrease = 2; @@ -776,7 +761,6 @@ void Analog_Systeminit() if (!strcmp(Keyword, "TIMERELAX")) { TRY(try15); AnaTimerelax = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaTimerelax < AnaTimerelaxmin || AnaTimerelax > AnaTimerelaxmax) AnaTimerelax = 1e-20; RECOVER(try15); @@ -786,7 +770,6 @@ void Analog_Systeminit() if (!strcmp(Keyword, "NODECAP")) { TRY(try16); AnaNodecap = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaNodecap < AnaNodecapmin || AnaNodecap > AnaNodecapmax) AnaNodecap = 10e-15; RECOVER(try16); @@ -804,7 +787,6 @@ void Analog_TechnologyCnf() { int Found; char Arg[256], Keyword[256]; - long Dummy; char *STR1; do { @@ -815,7 +797,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "T")) { TRY(try1); AnaPhysical.T = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaPhysical.T <= AnaMinPhysical.T || AnaPhysical.T > AnaMaxPhysical.T ) AnaPhysical.T = 300; @@ -827,7 +808,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "K")) { TRY(try1); AnaPhysical.k = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaPhysical.k <= AnaMinPhysical.k || AnaPhysical.k > AnaMaxPhysical.k ) AnaPhysical.k = 1.380658e-23; @@ -839,7 +819,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "Q")) { TRY(try1); AnaPhysical.q = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaPhysical.q <= AnaMinPhysical.q || AnaPhysical.q > AnaMaxPhysical.q ) AnaPhysical.q = 1.60217733e-19; @@ -851,7 +830,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "E_V")) { TRY(try1); AnaPhysical.e_v = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaPhysical.e_v <= AnaMinPhysical.e_v || AnaPhysical.e_v > AnaMaxPhysical.e_v ) AnaPhysical.e_v = 8.854187817e-12; @@ -863,7 +841,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "E_S")) { TRY(try1); AnaPhysical.e_s = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaPhysical.e_s <= AnaMinPhysical.e_s || AnaPhysical.e_s > AnaMaxPhysical.e_s ) AnaPhysical.e_s = 11.7*AnaPhysical.e_v; @@ -875,7 +852,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "E_OX")) { TRY(try1); AnaPhysical.e_ox = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaPhysical.e_ox <= AnaMinPhysical.e_ox || AnaPhysical.e_ox > AnaMaxPhysical.e_ox ) AnaPhysical.e_ox = 3.9*AnaPhysical.e_v; @@ -887,7 +863,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "PHI_MS")) { TRY(try1); AnaGenFab.phi_ms = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaGenFab.phi_ms <= AnaMinGenFab.phi_ms || AnaGenFab.phi_ms > AnaMaxGenFab.phi_ms ) AnaGenFab.phi_ms = -0.3; @@ -915,7 +890,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "LAMBDA")) { TRY(try1); AnaGenFab.lambda = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaGenFab.lambda <= AnaMinGenFab.lambda || AnaGenFab.lambda > AnaMaxGenFab.lambda ) AnaGenFab.lambda = 1e-6; @@ -927,7 +901,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "TOX")) { TRY(try1); AnaNFab.Tox = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaNFab.Tox <= AnaMinNFab.Tox || AnaNFab.Tox > AnaMaxNFab.Tox ) AnaNFab.Tox = 216e-10; @@ -939,7 +912,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "PSI")) { TRY(try1); AnaNFab.psi = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaNFab.psi <= AnaMinNFab.psi || AnaNFab.psi > AnaMaxNFab.psi ) AnaNFab.psi = 0.6; @@ -951,7 +923,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "NA")) { TRY(try1); AnaNFab.Na = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaNFab.Na <= AnaMinNFab.Na || AnaNFab.Na > AnaMaxNFab.Na ) AnaNFab.Na = 3.11e16; @@ -963,7 +934,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "MU0")) { TRY(try1); AnaNFab.mu0 = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaNFab.mu0 <= AnaMinNFab.mu0 || AnaNFab.mu0 > AnaMaxNFab.mu0 ) AnaNFab.mu0 = 686.6; @@ -975,7 +945,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "DELTAW")) { TRY(try1); AnaNFab.deltaW = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaNFab.deltaW <= AnaMinNFab.deltaW || AnaNFab.deltaW > AnaMaxNFab.deltaW ) AnaNFab.deltaW = -0.11e-6; @@ -987,7 +956,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "DELTAL")) { TRY(try1); AnaNFab.deltaL = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaNFab.deltaL <= AnaMinNFab.deltaL || AnaNFab.deltaL > AnaMaxNFab.deltaL ) AnaNFab.deltaL = 0.55e-6; @@ -999,7 +967,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "DEL_NAS")) { TRY(try1); AnaNFab.del_NaS = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaNFab.del_NaS <= AnaMinNFab.del_NaS || AnaNFab.del_NaS > AnaMaxNFab.del_NaS ) AnaNFab.del_NaS = 0; @@ -1011,7 +978,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "EARLY_S")) { TRY(try1); AnaNFab.Early_s = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaNFab.Early_s <= AnaMinNFab.Early_s || AnaNFab.Early_s > AnaMaxNFab.Early_s ) AnaNFab.Early_s = 0.06; @@ -1023,7 +989,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "L_0")) { TRY(try1); AnaNFab.L_0 = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaNFab.L_0 <= AnaMinNFab.L_0 || AnaNFab.L_0 > AnaMaxNFab.L_0 ) AnaNFab.L_0 = 0.04e-6; @@ -1035,7 +1000,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "ACACTIVE")) { TRY(try1); AnaNFab.aCactive = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaNFab.aCactive <= AnaMinNFab.aCactive || AnaNFab.aCactive > AnaMaxNFab.aCactive ) AnaNFab.aCactive = 280e-18; @@ -1047,7 +1011,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "ACWELL")) { TRY(try1); AnaNFab.aCwell = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaNFab.aCwell <= AnaMinNFab.aCwell || AnaNFab.aCwell > AnaMaxNFab.aCwell ) AnaNFab.aCwell = 30e-18; @@ -1059,7 +1022,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "LINCGS")) { TRY(try1); AnaNFab.linCgs = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaNFab.linCgs <= AnaMinNFab.linCgs || AnaNFab.linCgs > AnaMaxNFab.linCgs ) AnaNFab.linCgs = 3e-16; @@ -1071,7 +1033,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "ACGW")) { TRY(try1); AnaNFab.aCgw = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaNFab.aCgw <= AnaMinNFab.aCgw || AnaNFab.aCgw > AnaMaxNFab.aCgw ) AnaNFab.aCgw = 10e-18; @@ -1101,7 +1062,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "LAMBDA")) { TRY(try1); AnaGenFab.lambda = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaGenFab.lambda <= AnaMinGenFab.lambda || AnaGenFab.lambda > AnaMaxGenFab.lambda ) AnaGenFab.lambda = 1e-6; @@ -1113,7 +1073,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "TOX")) { TRY(try1); AnaPFab.Tox = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaPFab.Tox <= AnaMinPFab.Tox || AnaPFab.Tox > AnaMaxPFab.Tox ) AnaPFab.Tox = 216e-10; @@ -1125,7 +1084,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "PSI")) { TRY(try1); AnaPFab.psi = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaPFab.psi <= AnaMinPFab.psi || AnaPFab.psi > AnaMaxPFab.psi ) AnaPFab.psi = 0.6; @@ -1138,7 +1096,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "NA")) { TRY(try1); AnaPFab.Na = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaPFab.Na <= AnaMinPFab.Na || AnaPFab.Na > AnaMaxPFab.Na ) AnaPFab.Na = 2.69e16; @@ -1150,7 +1107,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "MU0")) { TRY(try1); AnaPFab.mu0 = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaPFab.mu0 <= AnaMinPFab.mu0 || AnaPFab.mu0 > AnaMaxPFab.mu0 ) AnaPFab.mu0 = 205; @@ -1162,7 +1118,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "DELTAW")) { TRY(try1); AnaPFab.deltaW = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaPFab.deltaW <= AnaMinPFab.deltaW || AnaPFab.deltaW > AnaMaxPFab.deltaW ) AnaPFab.deltaW = -0.11e-6; @@ -1174,7 +1129,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "DELTAL")) { TRY(try1); AnaPFab.deltaL = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaPFab.deltaL <= AnaMinPFab.deltaL || AnaPFab.deltaL > AnaMaxPFab.deltaL ) AnaPFab.deltaL = 0.76e-6; @@ -1186,7 +1140,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "DEL_NAS")) { TRY(try1); AnaPFab.del_NaS = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaPFab.del_NaS <= AnaMinPFab.del_NaS || AnaPFab.del_NaS > AnaMaxPFab.del_NaS ) AnaPFab.del_NaS = 0; @@ -1198,7 +1151,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "EARLY_S")) { TRY(try1); AnaPFab.Early_s = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaPFab.Early_s <= AnaMinPFab.Early_s || AnaPFab.Early_s > AnaMaxPFab.Early_s ) AnaPFab.Early_s = 0.06; @@ -1210,7 +1162,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "L_0")) { TRY(try1); AnaPFab.L_0 = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaPFab.L_0 <= AnaMinPFab.L_0 || AnaPFab.L_0 > AnaMaxPFab.L_0 ) AnaPFab.L_0 = 0.04e-6; @@ -1222,7 +1173,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "ACACTIVE")) { TRY(try1); AnaPFab.aCactive = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaPFab.aCactive <= AnaMinPFab.aCactive || AnaPFab.aCactive > AnaMaxPFab.aCactive ) AnaPFab.aCactive = 280e-18; @@ -1234,7 +1184,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "ACWELL")) { TRY(try1); AnaPFab.aCwell = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaPFab.aCwell <= AnaMinPFab.aCwell || AnaPFab.aCwell > AnaMaxPFab.aCwell ) AnaPFab.aCwell = 30e-18; @@ -1246,7 +1195,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "LINCGS")) { TRY(try1); AnaPFab.linCgs = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaPFab.linCgs <= AnaMinPFab.linCgs || AnaPFab.linCgs > AnaMaxPFab.linCgs ) AnaPFab.linCgs = 3e-16; @@ -1258,7 +1206,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "ACGW")) { TRY(try1); AnaPFab.aCgw = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaPFab.aCgw <= AnaMinPFab.aCgw || AnaPFab.aCgw > AnaMaxPFab.aCgw ) AnaPFab.aCgw = 280e-18; @@ -1287,7 +1234,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "QSS")) { TRY(try1); AnaNFab.Qss = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaNFab.Qss <= AnaMinNFab.Qss || AnaNFab.Qss > AnaMaxNFab.Qss ) AnaNFab.Qss = 0.00061; @@ -1299,7 +1245,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "DEL_NA0")) { TRY(try1); AnaNFab.del_Na0 = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaNFab.del_Na0 <= AnaMinNFab.del_Na0 || AnaNFab.del_Na0 > AnaMaxNFab.del_Na0 ) AnaNFab.del_Na0 = 1; @@ -1311,7 +1256,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "DEL_MU")) { TRY(try1); AnaNFab.del_mu = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaNFab.del_mu <= AnaMinNFab.del_mu || AnaNFab.del_mu > AnaMaxNFab.del_mu ) AnaNFab.del_mu = 1; @@ -1340,7 +1284,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "QSS")) { TRY(try1); AnaPFab.Qss = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaPFab.Qss <= AnaMinPFab.Qss || AnaPFab.Qss > AnaMaxPFab.Qss ) AnaPFab.Qss = 0.000126; @@ -1352,7 +1295,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "DEL_NA0")) { TRY(try1); AnaPFab.del_Na0 = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaPFab.del_Na0 <= AnaMinPFab.del_Na0 || AnaPFab.del_Na0 > AnaMaxPFab.del_Na0 ) AnaPFab.del_Na0 = 0.835; @@ -1364,7 +1306,6 @@ void Analog_TechnologyCnf() if (!strcmp(Keyword, "DEL_MU")) { TRY(try1); AnaPFab.del_mu = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; if (AnaPFab.del_mu <= AnaMinPFab.del_mu || AnaPFab.del_mu > AnaMaxPFab.del_mu ) AnaPFab.del_mu = 1; @@ -1731,7 +1672,6 @@ static void UnDim() /******************************************************************************/ log_grec *Count; long Pages, Numpages; - Anainstlist *A_Gate; long FORLIM; log_grec *WITH; @@ -1742,7 +1682,6 @@ static void UnDim() while (Count != NULL) { WITH = Count; if (WITH->kind->simtype->simtype == 32) { - A_Gate = (Anainstlist *)Count->info; (*AnaLogglobals->hook.setdimgate)(Count, false); } Count = Count->next; @@ -2579,7 +2518,6 @@ static void Memory() Analog_32_action Act; int Timeout; log_grec *WITH; - log_action_t *WITH1; log_tool *WITH2; Numpages = AnaLogglobals->numpages; @@ -2627,14 +2565,12 @@ static void Memory() switch (AnaTimestate) { case Anasettime: - WITH1 = AnaLogglobals; WITH2 = AnaLogglobals->acttool; WITH2->nexttstep = AnaDtlast; AnaTimestate = Anawait; break; case Anawait: - WITH1 = AnaLogglobals; WITH2 = AnaLogglobals->acttool; WITH2->nexttstep = AnaDtlast; break; diff --git a/log/src/ana/mmeter.c b/log/src/ana/mmeter.c index c9d51b0..35550c5 100644 --- a/log/src/ana/mmeter.c +++ b/log/src/ana/mmeter.c @@ -367,9 +367,9 @@ Analog_32_action *act; static void Iin_Mmeter(act) Analog_32_action *act; { - log_grec *WITH; +// log_grec *WITH; - WITH = act->inst; +// WITH = act->inst; } /*******************************************************************************/ @@ -415,7 +415,6 @@ ICMmeter *NewIC; { int Found; char Arg[256], Keyword[256]; - long Dummy; ICMmeter *WITH; char STR1[256]; char STR2[256]; @@ -449,7 +448,6 @@ ICMmeter *NewIC; if (!strcmp(Keyword, "PREC")) { TRY(try1); WITH->Initprec = strtol(Arg, &STR3, 10); - Dummy = STR3 - Arg + 1; RECOVER(try1); WITH->Initprec = 3; ENDTRY(try1); @@ -606,7 +604,7 @@ Analog_32_action *act; { short tx, ty; char Oldout[256]; - int Left; + int Left = 0; AnaCell_rec *Cellptr; ICMmeter *ICptr; Imeterrec *Intptr; diff --git a/log/src/ana/nfet4.c b/log/src/ana/nfet4.c index f86e1b4..b637cf8 100644 --- a/log/src/ana/nfet4.c +++ b/log/src/ana/nfet4.c @@ -461,7 +461,6 @@ ICNfet *NewIC; { int Found; char Arg[256], Keyword[256]; - long Dummy; ICNfet *WITH; char *STR1; @@ -473,7 +472,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "W/L")) { TRY(try1); WITH->InitRatio = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try1); WITH->InitRatio = 1.0; ENDTRY(try1); @@ -481,7 +479,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "VT")) { TRY(try2); WITH->InitVt = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try2); WITH->InitVt = 0.9; ENDTRY(try2); @@ -489,7 +486,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "I0")) { TRY(try3); WITH->InitLeakage = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try3); WITH->InitLeakage = 5e-17; ENDTRY(try3); @@ -497,7 +493,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "FITFACTOR")) { TRY(try4); WITH->InitFitFactor = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try4); WITH->InitFitFactor = 3.33; ENDTRY(try4); @@ -505,7 +500,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "KT/QN")) { TRY(try5); WITH->InitKtqn = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try5); WITH->InitKtqn = 0.04; ENDTRY(try5); @@ -513,7 +507,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "CGS")) { TRY(try6); WITH->InitCgs = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try6); WITH->InitCgs = 10e-15; ENDTRY(try6); @@ -521,7 +514,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "CGD")) { TRY(try7); WITH->InitCgd = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try7); WITH->InitCgd = 10e-15; ENDTRY(try7); @@ -529,7 +521,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "CGB")) { TRY(try8); WITH->InitCgb = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try8); WITH->InitCgb = 10e-15; ENDTRY(try8); @@ -537,7 +528,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "CDB")) { TRY(try9); WITH->InitCdb = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try9); WITH->InitCdb = 10e-15; ENDTRY(try9); @@ -545,7 +535,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "CSB")) { TRY(try10); WITH->InitCsb = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try10); WITH->InitCsb = 10e-15; ENDTRY(try10); @@ -553,7 +542,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "EARLY")) { TRY(try11); WITH->InitEarly = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try11); WITH->InitEarly = 50.0; ENDTRY(try11); @@ -872,7 +860,7 @@ Analog_32_action *act; log_grec *WITH; char STR1[18]; char STR2[12]; - char STR3[256]; + char STR3[260]; char STR4[256]; WITH = act->inst; diff --git a/log/src/ana/nfet5.c b/log/src/ana/nfet5.c index bf1a787..808f465 100644 --- a/log/src/ana/nfet5.c +++ b/log/src/ana/nfet5.c @@ -364,7 +364,6 @@ ICNfet *NewIC; { int Found; char Arg[256], Keyword[256]; - long Dummy; ICNfet *WITH; char *STR1; @@ -376,7 +375,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "W/L")) { TRY(try1); WITH->InitRatio = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try1); WITH->InitRatio = 1.0; ENDTRY(try1); @@ -384,7 +382,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "VT")) { TRY(try2); WITH->InitVt = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try2); WITH->InitVt = 0.9; ENDTRY(try2); @@ -392,7 +389,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "BETA")) { TRY(try3); WITH->InitBeta = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try3); WITH->InitBeta = 50e-6; ENDTRY(try3); @@ -400,7 +396,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "KAPPA")) { TRY(try4); WITH->InitKappa = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try4); WITH->InitKappa = 1.0; ENDTRY(try4); @@ -408,7 +403,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "KT/Q")) { TRY(try5); WITH->InitKtq = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try5); WITH->InitKtq = 0.025; ENDTRY(try5); @@ -416,7 +410,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "CGS")) { TRY(try6); WITH->InitCgs = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try6); WITH->InitCgs = 10e-15; ENDTRY(try6); @@ -424,7 +417,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "CGD")) { TRY(try7); WITH->InitCgd = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try7); WITH->InitCgd = 10e-15; ENDTRY(try7); @@ -432,7 +424,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "CGB")) { TRY(try8); WITH->InitCgb = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try8); WITH->InitCgb = 10e-15; ENDTRY(try8); @@ -440,7 +431,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "CDB")) { TRY(try9); WITH->InitCdb = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try9); WITH->InitCdb = 10e-15; ENDTRY(try9); @@ -448,7 +438,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "CSB")) { TRY(try10); WITH->InitCsb = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try10); WITH->InitCsb = 10e-15; ENDTRY(try10); @@ -456,7 +445,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "EARLY")) { TRY(try11); WITH->InitEarly = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try11); WITH->InitEarly = 50.0; ENDTRY(try11); @@ -775,7 +763,7 @@ Analog_32_action *act; log_grec *WITH; char STR1[18]; char STR2[14]; - char STR3[256]; + char STR3[261]; // ATTENTION à cette modification char STR4[256]; WITH = act->inst; diff --git a/log/src/ana/nfet7f.c b/log/src/ana/nfet7f.c index 16090ee..7d14183 100644 --- a/log/src/ana/nfet7f.c +++ b/log/src/ana/nfet7f.c @@ -92,7 +92,7 @@ log_grec *Inst; { NfetConst *NfetVar; Anainstlist *A_Gate; - double rho, phi_f, phi_b, Leff, Weff, Vfb, beta, lambda, del_Na; + double rho, phi_f, phi_b, Leff, Weff, Vfb, beta, del_Na; double Wdrawn, Ldrawn; A_Gate = (Anainstlist *)Inst->info; @@ -180,19 +180,19 @@ Analog_32_action *act; MinI4, dI4dV1, dI4dV2, dI4dV3, dI4dV4; AnaExt_rec *Pin1Ptr, *Pin2Ptr, *Pin3Ptr, *Pin4Ptr; long Pin1, Pin2, Pin3, Pin4; - double VPin1, VPin2, VPin3, VPin4, VMem1, VMem2, VMem3, VMem4; /*1*/ + double VPin1, VPin2, VPin3, VPin4, VMem1, VMem2, VMem3; /*1*/ double ICap; - double Vg, Vd, Vs, Vb, Blend, InvBlend, Vnear, Vfar; + double Vg, Vd, Vs, Vb, Vnear, Vfar; double dVneardVs, dVneardVd, dVfardVs, dVfardVd, sign; - double Vt, dVtdVd, dVtdVs, dVtdVg, dVtdVb; + double Vt, dVtdVd, dVtdVs, dVtdVb; double phi_s, kappa, dkappadVg, dkappadVs, dkappadVd, dkappadVb; double Ifor, Irev, Idsi, Ids; - double lambda, dlambdadVg, dlambdadVs, dlambdadVd, dlambdadVb; + double lambda, dlambdadVg, dlambdadVs, dlambdadVd; double dIfordVg, dIfordVs, dIfordVd, dIfordVb; double dIrevdVg, dIrevdVs, dIrevdVd, dIrevdVb; double dIdsdVg, dIdsdVs, dIdsdVd, dIdsdVb; double dIdsidVg, dIdsidVs, dIdsidVd, dIdsidVb; - double tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9; + double tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp9; double tmp10, tmp11, tmp12, tmp13, tmp14, tmp15, tmp16, tmp17, tmp18, tmp19; double tmp20, tmp21, tmp22, tmp23, tmp24, tmp25; @@ -218,7 +218,6 @@ Analog_32_action *act; VMem1 = A_Gate->Pininfo[0].Vmem; /*Memories for capacitors*/ VMem2 = A_Gate->Pininfo[1].Vmem; /*...*/ VMem3 = A_Gate->Pininfo[2].Vmem; /*...*/ - VMem4 = A_Gate->Pininfo[3].Vmem; /*...*/ Vg = VPin1; Vd = VPin2; Vs = VPin3; @@ -226,8 +225,6 @@ Analog_32_action *act; if (Vd > Vs) { - Blend = 1; - InvBlend = 0; Vnear = Vs; Vfar = Vd; dVneardVs = 1; @@ -238,8 +235,6 @@ Analog_32_action *act; } else { - Blend = 0; - InvBlend = 1; Vnear = Vd; Vfar = Vs; dVneardVs = 0; @@ -264,7 +259,6 @@ Analog_32_action *act; dVtdVs = 0; dVtdVb = 0; } - dVtdVg = 0; phi_s = NfetVar->k5*tanh((NfetVar->k6/Vt)*(Vg - Vb + NfetVar->k7)); if (phi_s > NfetVar->k12) { @@ -452,17 +446,16 @@ static void Iin_NFET7F(act) Analog_32_action *act; { AnaExt_rec *Pin1Ptr, *Pin2Ptr, *Pin3Ptr, *Pin4Ptr; - double VPin1, VPin2, VPin3, VPin4, VMem1, VMem2, VMem3, VMem4; + double VPin1, VPin2, VPin3, VPin4, VMem1, VMem2, VMem3; NfetConst *NfetVar; Anainstlist *A_Gate; - double Vg, Vd, Vs, Vb, Blend, InvBlend, Vnear, Vfar; + double Vg, Vd, Vs, Vb, Vnear, Vfar; double sign; double Vt; double phi_s, kappa, lambda; double Ifor, Irev, Idsi, Ids; - double tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9; - double tmp10, tmp11, tmp12, tmp13, tmp14, tmp15, tmp16, tmp17, tmp18, tmp19; - double tmp20, tmp21, tmp22, tmp23, tmp24, tmp25; + double tmp0, tmp2, tmp6, tmp7, tmp9; + double tmp10, tmp11, tmp12, tmp13, tmp14; log_grec *WITH1; switch (act->pin) { @@ -478,7 +471,6 @@ Analog_32_action *act; VMem1 = A_Gate->Pininfo[0].Vmem; VMem2 = A_Gate->Pininfo[1].Vmem; VMem3 = A_Gate->Pininfo[2].Vmem; - VMem4 = A_Gate->Pininfo[3].Vmem; VPin1 = Pin1Ptr->now; VPin2 = Pin2Ptr->now; VPin3 = Pin3Ptr->now; @@ -528,16 +520,12 @@ Analog_32_action *act; if (Vd > Vs) { - Blend = 1; - InvBlend = 0; Vnear = Vs; Vfar = Vd; sign = 1; } else { - Blend = 0; - InvBlend = 1; Vnear = Vd; Vfar = Vs; sign = -1; @@ -557,7 +545,6 @@ Analog_32_action *act; { tmp0 = 1/phi_s; tmp2 = AnaSqrt(tmp0*NfetVar->k8); - tmp3 = 1/Vt; kappa = 1/(1 + NfetVar->k2*tmp2); } else @@ -609,7 +596,6 @@ Analog_32_action *act; VMem1 = A_Gate->Pininfo[0].Vmem; VMem2 = A_Gate->Pininfo[1].Vmem; VMem3 = A_Gate->Pininfo[2].Vmem; - VMem4 = A_Gate->Pininfo[3].Vmem; VPin1 = Pin1Ptr->now; VPin2 = Pin2Ptr->now; VPin3 = Pin3Ptr->now; @@ -630,7 +616,6 @@ ICNfet *NewIC; { int Found; char Arg[256], Keyword[256]; - long Dummy; ICNfet *WITH; char *STR1; @@ -642,7 +627,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "WDRAWN")) { TRY(try1); WITH->InitWdrawn = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try1); WITH->InitWdrawn = 28; ENDTRY(try1); @@ -650,7 +634,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "LDRAWN")) { TRY(try2); WITH->InitLdrawn = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try2); WITH->InitLdrawn = 14; ENDTRY(try2); @@ -658,7 +641,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "SAREA")) { TRY(try3); WITH->InitSArea = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try3); WITH->InitSArea = 36e-6; ENDTRY(try3); @@ -666,7 +648,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "DAREA")) { TRY(try4); WITH->InitDArea = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try4); WITH->InitDArea = 36e-6; ENDTRY(try4); @@ -674,7 +655,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "WAREA")) { TRY(try5); WITH->InitWArea = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try5); WITH->InitWArea = 100e-6; ENDTRY(try5); @@ -682,7 +662,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "NAOFFSET")) { TRY(try6); WITH->InitNaOffset = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try6); WITH->InitNaOffset = 1.0; ENDTRY(try6); @@ -690,7 +669,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "MUOFFSET")) { TRY(try5); WITH->InitMuOffset = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try5); WITH->InitMuOffset = 1; ENDTRY(try5); @@ -698,7 +676,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "QSSOFFSET")) { TRY(try5); WITH->InitQssOffset = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try5); WITH->InitQssOffset = 0; ENDTRY(try5); @@ -754,12 +731,8 @@ log_grec *Inst; long Attrnum; { int Result; - NfetConst *NfetVar; - Anainstlist *A_Gate; Result = true; - A_Gate = (Anainstlist *)Inst->info; - NfetVar = (NfetConst *)A_Gate->InstVar; switch (Attrnum) { case N_Wdrawn: @@ -1011,9 +984,9 @@ Analog_32_action *act; double Node1, Node2, Node3, Node4, Pin1, Pin2, Pin3, Pin4, d1, d2; char Name2[256], Name3[256]; log_grec *WITH; - char STR1[18]; + char STR1[19]; char STR2[14]; - char STR3[256]; + char STR3[262]; char STR4[256]; WITH = act->inst; diff --git a/log/src/ana/nfet7t.c b/log/src/ana/nfet7t.c index 29414ef..dc9d1b7 100644 --- a/log/src/ana/nfet7t.c +++ b/log/src/ana/nfet7t.c @@ -93,7 +93,7 @@ log_grec *Inst; { NfetConst *NfetVar; Anainstlist *A_Gate; - double rho, phi_f, phi_b, Leff, Weff, Vfb, beta, lambda, del_Na; + double rho, phi_f, phi_b, Leff, Weff, Vfb, beta, del_Na; double Wdrawn, Ldrawn; A_Gate = (Anainstlist *)Inst->info; @@ -182,15 +182,15 @@ Analog_32_action *act; long Pin1, Pin2, Pin3; double VPin1, VPin2, VPin3, VMem1, VMem2, VMem3; /*1*/ double ICap; - double Vg, Vd, Vs, Blend, InvBlend, Vnear, Vfar; + double Vg, Vd, Vs, Vnear, Vfar; double dVneardVs, dVneardVd, dVfardVs, dVfardVd, sign; - double Vt, dVtdVd, dVtdVs, dVtdVg; + double Vt, dVtdVd, dVtdVs; double phi_s, kappa, dkappadVg, dkappadVs, dkappadVd; double Ifor, Irev, Idsi, Ids; double lambda, dlambdadVg, dlambdadVs, dlambdadVd; double dIfordVg, dIfordVs, dIfordVd, dIrevdVg, dIrevdVs, dIrevdVd; double dIdsidVg, dIdsidVs, dIdsidVd, dIdsdVg, dIdsdVs, dIdsdVd; - double tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9; + double tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp9; double tmp10, tmp11, tmp12, tmp13, tmp14, tmp15, tmp16, tmp17, tmp18, tmp19; double tmp20, tmp21, tmp22, tmp23, tmp24, tmp25; @@ -219,8 +219,6 @@ Analog_32_action *act; if (Vd > Vs) { - Blend = 1; - InvBlend = 0; Vnear = Vs; Vfar = Vd; dVneardVs = 1; @@ -231,8 +229,6 @@ Analog_32_action *act; } else { - Blend = 0; - InvBlend = 1; Vnear = Vd; Vfar = Vs; dVneardVs = 0; @@ -254,7 +250,6 @@ Analog_32_action *act; dVtdVd = 0; dVtdVs = 0; } - dVtdVg = 0; phi_s = NfetVar->k5*tanh((NfetVar->k6/Vt)*(Vg + NfetVar->k7)); if (phi_s > NfetVar->k12) { @@ -414,14 +409,13 @@ Analog_32_action *act; double VPin1, VPin2, VPin3, VMem1, VMem2, VMem3; NfetConst *NfetVar; Anainstlist *A_Gate; - double Vg, Vd, Vs, Blend, InvBlend, Vnear, Vfar; + double Vg, Vd, Vs, Vnear, Vfar; double sign; double Vt; double phi_s, kappa, lambda; double Ifor, Irev, Idsi, Ids; - double tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9; - double tmp10, tmp11, tmp12, tmp13, tmp14, tmp15, tmp16, tmp17, tmp18, tmp19; - double tmp20, tmp21, tmp22, tmp23, tmp24, tmp25; + double tmp0, tmp2, tmp6, tmp7, tmp9; + double tmp10, tmp11, tmp12, tmp13, tmp14; log_grec *WITH1; switch (act->pin) { @@ -481,16 +475,12 @@ Analog_32_action *act; if (Vd > Vs) { - Blend = 1; - InvBlend = 0; Vnear = Vs; Vfar = Vd; sign = 1; } else { - Blend = 0; - InvBlend = 1; Vnear = Vd; Vfar = Vs; sign = -1; @@ -510,7 +500,6 @@ Analog_32_action *act; { tmp0 = 1/phi_s; tmp2 = AnaSqrt(tmp0*NfetVar->k8); - tmp3 = 1/Vt; kappa = 1/(1 + NfetVar->k2*tmp2); } else @@ -564,7 +553,6 @@ ICNfet *NewIC; { int Found; char Arg[256], Keyword[256]; - long Dummy; ICNfet *WITH; char *STR1; @@ -576,7 +564,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "WDRAWN")) { TRY(try1); WITH->InitWdrawn = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try1); WITH->InitWdrawn = 28; ENDTRY(try1); @@ -584,7 +571,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "LDRAWN")) { TRY(try2); WITH->InitLdrawn = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try2); WITH->InitLdrawn = 14; ENDTRY(try2); @@ -592,7 +578,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "SAREA")) { TRY(try3); WITH->InitSArea = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try3); WITH->InitSArea = 36e-6; ENDTRY(try3); @@ -600,7 +585,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "DAREA")) { TRY(try4); WITH->InitDArea = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try4); WITH->InitDArea = 36e-6; ENDTRY(try4); @@ -608,7 +592,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "NAOFFSET")) { TRY(try5); WITH->InitNaOffset = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try5); WITH->InitNaOffset = 1; ENDTRY(try5); @@ -616,7 +599,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "MUOFFSET")) { TRY(try5); WITH->InitMuOffset = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try5); WITH->InitMuOffset = 1; ENDTRY(try5); @@ -624,7 +606,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "QSSOFFSET")) { TRY(try5); WITH->InitQssOffset = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try5); WITH->InitQssOffset = 0; ENDTRY(try5); @@ -675,12 +656,8 @@ log_grec *Inst; long Attrnum; { int Result; - NfetConst *NfetVar; - Anainstlist *A_Gate; Result = true; - A_Gate = (Anainstlist *)Inst->info; - NfetVar = (NfetConst *)A_Gate->InstVar; switch (Attrnum) { case N_Wdrawn: @@ -926,9 +903,9 @@ Analog_32_action *act; double Node1, Node2, Node3, Pin1, Pin2, Pin3, d1, d2; char Name2[256], Name3[256]; log_grec *WITH; - char STR1[18]; + char STR1[19]; // Attention modification pas sûr char STR2[14]; - char STR3[256]; + char STR3[262]; // Attention modification pas sûr char STR4[256]; WITH = act->inst; diff --git a/log/src/ana/nspc1.c b/log/src/ana/nspc1.c index 2cba6ee..c2df21d 100644 --- a/log/src/ana/nspc1.c +++ b/log/src/ana/nspc1.c @@ -222,10 +222,10 @@ Analog_32_action *act; double MinI2, dI2dV1, dI2dV2, dI2dV3, dI2dV4, MinI3, dI3dV1, dI3dV2, dI3dV3, dI3dV4, MinI1, dI1dV1, dI1dV2, dI1dV3, dI1dV4, - MinI4, dI4dV1, dI4dV2, dI4dV3, dI4dV4; + MinI4, dI4dV1, dI4dV2, dI4dV3; AnaExt_rec *Pin1Ptr, *Pin2Ptr, *Pin3Ptr, *Pin4Ptr; long Pin1, Pin2, Pin3, Pin4; - double VPin1, VPin2, VPin3, VPin4, VMem1, VMem2, VMem3, VMem4; /*1*/ + double VPin1, VPin2, VPin3, VPin4, VMem1, VMem2, VMem3; /*1*/ double ICap; NfetConst *NfetVar; Anainstlist *A_Gate; @@ -265,7 +265,6 @@ Analog_32_action *act; VMem1 = A_Gate->Pininfo[0].Vmem; /*Memories for capacitors*/ VMem2 = A_Gate->Pininfo[1].Vmem; /*...*/ VMem3 = A_Gate->Pininfo[2].Vmem; /*...*/ - VMem4 = A_Gate->Pininfo[3].Vmem; /*...*/ Vg = VPin1; Vd = VPin2; Vs = VPin3; @@ -352,7 +351,6 @@ Analog_32_action *act; dI4dV1 = 0.0; dI4dV2 = 0.0; dI4dV3 = 0.0; - dI4dV4 = 0.0; if (WITH->attr[N_Cgd - 1].UU.r != 0) { /*C gate-drain*/ if (AnaChangedDt) @@ -436,12 +434,12 @@ static void Iin_NSPC1(act) Analog_32_action *act; { AnaExt_rec *Pin1Ptr, *Pin2Ptr, *Pin3Ptr, *Pin4Ptr; - double VPin1, VPin2, VPin3, VPin4, VMem1, VMem2, VMem3, VMem4; + double VPin1, VPin2, VPin3, VPin4, VMem1, VMem2, VMem3; NfetConst *NfetVar; Anainstlist *A_Gate; double Ids, Vg, Vd, Vs, Vb, Vds, K2Vg, K7Vb, - ExpFor, OnePlusExpFor, LogOnePlusExpFor, - Ifor, ExpRev, OnePlusExpRev, LogOnePlusExpRev, Irev, Blend, + ExpFor, LogOnePlusExpFor, + Ifor, ExpRev, LogOnePlusExpRev, Irev, Blend, VdsInvVcross, Early, Itotal; log_grec *WITH1; @@ -458,7 +456,6 @@ Analog_32_action *act; VMem1 = A_Gate->Pininfo[0].Vmem; VMem2 = A_Gate->Pininfo[1].Vmem; VMem3 = A_Gate->Pininfo[2].Vmem; - VMem4 = A_Gate->Pininfo[3].Vmem; VPin1 = Pin1Ptr->now; VPin2 = Pin2Ptr->now; VPin3 = Pin3Ptr->now; @@ -516,12 +513,10 @@ Analog_32_action *act; fprintf(stderr,"bulk %f K7Vb %f\n",Vb,K7Vb); */ ExpFor = AnaExpo(K2Vg - NfetVar->k5 - NfetVar->k6 * Vs + K7Vb); - OnePlusExpFor = 1 + ExpFor; LogOnePlusExpFor = log1p(ExpFor); Ifor = NfetVar->k1 * LogOnePlusExpFor * LogOnePlusExpFor; ExpRev = AnaExpo(K2Vg - NfetVar->k5 - NfetVar->k6 * Vd + K7Vb); - OnePlusExpRev = 1 + ExpRev; LogOnePlusExpRev = log1p(ExpRev); Irev = NfetVar->k1 * LogOnePlusExpRev * LogOnePlusExpRev; @@ -565,7 +560,6 @@ ICNfet *NewIC; { int Found; char Arg[256], Keyword[256]; - long Dummy; ICNfet *WITH; char *STR1; @@ -577,7 +571,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "NUMBER")) { TRY(try14); WITH->InitNumber = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try14); WITH->InitNumber = 1.0; ENDTRY(try14); @@ -585,7 +578,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "W")) { TRY(try12); WITH->InitW = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try12); WITH->InitW = 4.0; ENDTRY(try12); @@ -593,7 +585,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "L")) { TRY(try13); WITH->InitL = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try13); WITH->InitL = 4.0; ENDTRY(try13); @@ -611,7 +602,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "VT")) { TRY(try2); WITH->InitVt = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try2); WITH->InitVt = 0.9; ENDTRY(try2); @@ -619,7 +609,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "BETA")) { TRY(try3); WITH->InitBeta = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try3); WITH->InitBeta = 50e-6; ENDTRY(try3); @@ -627,7 +616,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "KAPPA")) { TRY(try4); WITH->InitKappa = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try4); WITH->InitKappa = 0.9; ENDTRY(try4); @@ -635,7 +623,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "KT/Q")) { TRY(try5); WITH->InitKtq = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try5); WITH->InitKtq = 0.025; ENDTRY(try5); @@ -643,7 +630,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "CB")) { TRY(try14); WITH->InitCb = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try14); WITH->InitCb = 0.0; ENDTRY(try14); @@ -651,7 +637,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "CGS")) { TRY(try6); WITH->InitCgs = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try6); WITH->InitCgs = 10e-15; ENDTRY(try6); @@ -659,7 +644,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "CGD")) { TRY(try7); WITH->InitCgd = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try7); WITH->InitCgd = 10e-15; ENDTRY(try7); @@ -667,7 +651,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "CGB")) { TRY(try8); WITH->InitCgb = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try8); WITH->InitCgb = 10e-15; ENDTRY(try8); @@ -675,7 +658,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "CDB")) { TRY(try9); WITH->InitCdb = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try9); WITH->InitCdb = 10e-15; ENDTRY(try9); @@ -683,7 +665,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "CSB")) { TRY(try10); WITH->InitCsb = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try10); WITH->InitCsb = 10e-15; ENDTRY(try10); @@ -691,7 +672,6 @@ ICNfet *NewIC; if (!strcmp(Keyword, "EARLY")) { TRY(try11); WITH->InitEarly = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try11); WITH->InitEarly = 50.0; ENDTRY(try11); @@ -1101,7 +1081,7 @@ Analog_32_action *act; log_grec *WITH; char STR1[25]; char STR2[14]; - char STR3[256]; + char STR3[261]; //Attention pas sûr char STR4[256]; WITH = act->inst; diff --git a/log/src/ana/numbers.c b/log/src/ana/numbers.c index e51810a..0c90ddd 100644 --- a/log/src/ana/numbers.c +++ b/log/src/ana/numbers.c @@ -967,7 +967,7 @@ static void Touch_Numbers(Analog_32_action *act) static void Probe_Numbers(Analog_32_action *act) { char dtstr[256]; - char STR2[256]; + char STR2[264]; // Attention pas sûr que ce correctif soit bien AnaScoreboard(GateName, (long)AnaMessGate1); if (AnaChanged) { diff --git a/log/src/ana/pfet4.c b/log/src/ana/pfet4.c index d2fe584..2ab350c 100644 --- a/log/src/ana/pfet4.c +++ b/log/src/ana/pfet4.c @@ -454,7 +454,6 @@ ICPfet *NewIC; { int Found; char Arg[256], Keyword[256]; - long Dummy; ICPfet *WITH; char *STR1; @@ -466,7 +465,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "W/L")) { TRY(try1); WITH->InitRatio = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try1); WITH->InitRatio = 1.0; ENDTRY(try1); @@ -474,7 +472,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "VT")) { TRY(try2); WITH->InitVt = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try2); WITH->InitVt = 0.9; ENDTRY(try2); @@ -482,7 +479,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "I0")) { TRY(try3); WITH->InitLeakage = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try3); WITH->InitLeakage = 1.66e-17; ENDTRY(try3); @@ -490,7 +486,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "FITFACTOR")) { TRY(try4); WITH->InitFitFactor = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try4); WITH->InitFitFactor = 3.33; ENDTRY(try4); @@ -498,7 +493,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "KT/QN")) { TRY(try5); WITH->InitKtqn = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try5); WITH->InitKtqn = 0.04; ENDTRY(try5); @@ -506,7 +500,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "CGS")) { TRY(try6); WITH->InitCgs = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try6); WITH->InitCgs = 10e-15; ENDTRY(try6); @@ -514,7 +507,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "CGD")) { TRY(try7); WITH->InitCgd = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try7); WITH->InitCgd = 10e-15; ENDTRY(try7); @@ -522,7 +514,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "CGB")) { TRY(try8); WITH->InitCgb = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try8); WITH->InitCgb = 10e-15; ENDTRY(try8); @@ -530,7 +521,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "CDB")) { TRY(try9); WITH->InitCdb = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try9); WITH->InitCdb = 10e-15; ENDTRY(try9); @@ -538,7 +528,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "CSB")) { TRY(try10); WITH->InitCsb = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try10); WITH->InitCsb = 10e-15; ENDTRY(try10); @@ -546,7 +535,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "EARLY")) { TRY(try11); WITH->InitEarly = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try11); WITH->InitEarly = 50.0; ENDTRY(try11); @@ -865,7 +853,7 @@ Analog_32_action *act; log_grec *WITH; char STR1[18]; char STR2[12]; - char STR3[256]; + char STR3[260]; char STR4[256]; WITH = act->inst; diff --git a/log/src/ana/pfet5.c b/log/src/ana/pfet5.c index 3e1de29..9381676 100644 --- a/log/src/ana/pfet5.c +++ b/log/src/ana/pfet5.c @@ -362,7 +362,6 @@ ICPfet *NewIC; { int Found; char Arg[256], Keyword[256]; - long Dummy; ICPfet *WITH; char *STR1; @@ -374,7 +373,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "W/L")) { TRY(try1); WITH->InitRatio = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try1); WITH->InitRatio = 1.0; ENDTRY(try1); @@ -382,7 +380,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "VT")) { TRY(try2); WITH->InitVt = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try2); WITH->InitVt = 0.9; ENDTRY(try2); @@ -390,7 +387,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "BETA")) { TRY(try3); WITH->InitBeta = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try3); WITH->InitBeta = 50e-6; ENDTRY(try3); @@ -398,7 +394,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "KAPPA")) { TRY(try4); WITH->InitKappa = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try4); WITH->InitKappa = 1.0; ENDTRY(try4); @@ -406,7 +401,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "KT/Q")) { TRY(try5); WITH->InitKtq = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try5); WITH->InitKtq = 0.025; ENDTRY(try5); @@ -414,7 +408,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "CGS")) { TRY(try6); WITH->InitCgs = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try6); WITH->InitCgs = 10e-15; ENDTRY(try6); @@ -422,7 +415,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "CGD")) { TRY(try7); WITH->InitCgd = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try7); WITH->InitCgd = 10e-15; ENDTRY(try7); @@ -430,7 +422,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "CGB")) { TRY(try8); WITH->InitCgb = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try8); WITH->InitCgb = 10e-15; ENDTRY(try8); @@ -438,7 +429,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "CDB")) { TRY(try9); WITH->InitCdb = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try9); WITH->InitCdb = 10e-15; ENDTRY(try9); @@ -446,7 +436,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "CSB")) { TRY(try10); WITH->InitCsb = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try10); WITH->InitCsb = 10e-15; ENDTRY(try10); @@ -454,7 +443,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "EARLY")) { TRY(try11); WITH->InitEarly = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try11); WITH->InitEarly = 50.0; ENDTRY(try11); @@ -777,7 +765,7 @@ Analog_32_action *act; log_grec *WITH; char STR1[18]; char STR2[14]; - char STR3[256]; + char STR3[261]; // Attention modification non sûr char STR4[256]; WITH = act->inst; diff --git a/log/src/ana/pfet6.c b/log/src/ana/pfet6.c index 6048a51..7d48583 100644 --- a/log/src/ana/pfet6.c +++ b/log/src/ana/pfet6.c @@ -78,7 +78,7 @@ Analog_32_action *act; MinI4, dI4dV1, dI4dV2, dI4dV3, dI4dV4; AnaExt_rec *Pin1Ptr, *Pin2Ptr, *Pin3Ptr, *Pin4Ptr; long Pin1, Pin2, Pin3, Pin4; - double VPin1, VPin2, VPin3, VPin4, VMem1, VMem2, VMem3, VMem4; /*1*/ + double VPin1, VPin2, VPin3, VPin4, VMem1, VMem2, VMem3; /*1*/ double ICap; PfetConst *PfetVar; Anainstlist *A_Gate; @@ -117,7 +117,6 @@ Analog_32_action *act; VMem1 = A_Gate->Pininfo[0].Vmem; /*Memories for capacitors*/ VMem2 = A_Gate->Pininfo[1].Vmem; /*...*/ VMem3 = A_Gate->Pininfo[2].Vmem; /*...*/ - VMem4 = A_Gate->Pininfo[3].Vmem; /*...*/ Vg = VPin1; Vd = VPin2; Vs = VPin3; @@ -290,7 +289,7 @@ static void Iin_PFET6(act) Analog_32_action *act; { AnaExt_rec *Pin1Ptr, *Pin2Ptr, *Pin3Ptr, *Pin4Ptr; - double VPin1, VPin2, VPin3, VPin4, VMem1, VMem2, VMem3, VMem4 ; + double VPin1, VPin2, VPin3, VPin4, VMem1, VMem2, VMem3; PfetConst *PfetVar; Anainstlist *A_Gate; double Ids, Vg, Vd, Vs, Vw, Vds, K2Vg, K7Vw, ExpFor, OnePlusExpFor, @@ -416,7 +415,6 @@ ICPfet *NewIC; { int Found; char Arg[256], Keyword[256]; - long Dummy; ICPfet *WITH; char *STR1; @@ -428,7 +426,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "W/L")) { TRY(try1); WITH->InitRatio = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try1); WITH->InitRatio = 1.0; ENDTRY(try1); @@ -436,7 +433,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "VT")) { TRY(try2); WITH->InitVt = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try2); WITH->InitVt = 0.9; ENDTRY(try2); @@ -444,7 +440,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "BETA")) { TRY(try3); WITH->InitBeta = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try3); WITH->InitBeta = 50e-6; ENDTRY(try3); @@ -452,7 +447,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "KAPPA")) { TRY(try4); WITH->InitKappa = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try4); WITH->InitKappa = 1.0; ENDTRY(try4); @@ -460,7 +454,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "KT/Q")) { TRY(try5); WITH->InitKtq = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try5); WITH->InitKtq = 0.025; ENDTRY(try5); @@ -468,7 +461,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "CGS")) { TRY(try6); WITH->InitCgs = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try6); WITH->InitCgs = 10e-15; ENDTRY(try6); @@ -476,7 +468,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "CGD")) { TRY(try7); WITH->InitCgd = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try7); WITH->InitCgd = 10e-15; ENDTRY(try7); @@ -484,7 +475,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "CGB")) { TRY(try8); WITH->InitCgb = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try8); WITH->InitCgb = 10e-15; ENDTRY(try8); @@ -492,7 +482,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "CDB")) { TRY(try9); WITH->InitCdb = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try9); WITH->InitCdb = 10e-15; ENDTRY(try9); @@ -500,7 +489,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "CSB")) { TRY(try10); WITH->InitCsb = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try10); WITH->InitCsb = 10e-15; ENDTRY(try10); @@ -508,7 +496,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "CWB")) { TRY(try11); WITH->InitCwb = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try11); WITH->InitCwb = 10e-15; ENDTRY(try11); @@ -516,7 +503,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "EARLY")) { TRY(try12); WITH->InitEarly = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try12); WITH->InitEarly = 50.0; ENDTRY(try12); @@ -864,7 +850,7 @@ Analog_32_action *act; log_grec *WITH; char STR1[18]; char STR2[14]; - char STR3[256]; + char STR3[261]; // attntion modifiction non sûr char STR4[256]; WITH = act->inst; diff --git a/log/src/ana/pfet7f.c b/log/src/ana/pfet7f.c index df69238..2e68acc 100644 --- a/log/src/ana/pfet7f.c +++ b/log/src/ana/pfet7f.c @@ -90,7 +90,7 @@ log_grec *Inst; { PfetConst *PfetVar; Anainstlist *A_Gate; - double rho, phi_f, phi_b, Leff, Weff, Vfb, beta, lambda, del_Na; + double rho, phi_f, phi_b, Leff, Weff, Vfb, beta, del_Na; double Wdrawn, Ldrawn; A_Gate = (Anainstlist *)Inst->info; @@ -176,21 +176,21 @@ Analog_32_action *act; MinI4, dI4dV1, dI4dV2, dI4dV3, dI4dV4; AnaExt_rec *Pin1Ptr, *Pin2Ptr, *Pin3Ptr, *Pin4Ptr; long Pin1, Pin2, Pin3, Pin4; - double VPin1, VPin2, VPin3, VPin4, VMem1, VMem2, VMem3, VMem4; /*1*/ + double VPin1, VPin2, VPin3, VPin4, VMem1, VMem2, VMem3; /*1*/ double ICap; - double Vg, Vd, Vs, Vb, Blend, InvBlend, Vnear, Vfar; + double Vg, Vd, Vs, Vb, Vnear, Vfar; double dVneardVs, dVneardVd, dVfardVs, dVfardVd, sign; - double Vt, dVtdVd, dVtdVs, dVtdVg, dVtdVb; + double Vt, dVtdVd, dVtdVs, dVtdVb; double phi_s, kappa, dkappadVg, dkappadVs, dkappadVd, dkappadVb; double Ifor, Irev, Isdi, Isd; - double lambda, dlambdadVg, dlambdadVs, dlambdadVd, dlambdadVb; + double lambda, dlambdadVg, dlambdadVs, dlambdadVd; double dIfordVg, dIfordVs, dIfordVd, dIfordVb; double dIrevdVg, dIrevdVs, dIrevdVd, dIrevdVb; double dIsddVg, dIsddVs, dIsddVd, dIsddVb; double dIsdidVg, dIsdidVs, dIsdidVd, dIsdidVb; - double tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9; + double tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp9; double tmp10, tmp11, tmp12, tmp13, tmp14, tmp15, tmp16, tmp17, tmp18, tmp19; - double tmp20, tmp21, tmp22, tmp23, tmp24, tmp25; + double tmp20, tmp21, tmp22, tmp24, tmp25; WITH = act->inst; if (AnaChangedP) @@ -214,7 +214,6 @@ Analog_32_action *act; VMem1 = A_Gate->Pininfo[0].Vmem; /*Memories for capacitors*/ VMem2 = A_Gate->Pininfo[1].Vmem; /*...*/ VMem3 = A_Gate->Pininfo[2].Vmem; /*...*/ - VMem4 = A_Gate->Pininfo[3].Vmem; /*...*/ Vg = VPin1; Vd = VPin2; Vs = VPin3; @@ -222,8 +221,6 @@ Analog_32_action *act; if (Vd < Vs) { - Blend = 1; - InvBlend = 0; Vnear = Vs; Vfar = Vd; dVneardVs = 1; @@ -234,8 +231,6 @@ Analog_32_action *act; } else { - Blend = 0; - InvBlend = 1; Vnear = Vd; Vfar = Vs; dVneardVs = 0; @@ -261,7 +256,6 @@ Analog_32_action *act; dVtdVd = 0; dVtdVb = 0; } - dVtdVg = 0; phi_s = PfetVar->k5*tanh(PfetVar->k6*((Vg + PfetVar->k7 - Vb)/Vt)); @@ -328,13 +322,11 @@ Analog_32_action *act; { tmp21 = 1/(Vnear -Vg + PfetVar->k19); tmp22 = PfetVar->k18*tmp21; - tmp23 = tmp22*tmp21; lambda = tmp22; dlambdadVg = tmp22*tmp21; dlambdadVd = -tmp22*tmp21*dVneardVd; dlambdadVs = -tmp22*tmp21*dVneardVs; - dlambdadVb = 0; } else { @@ -342,7 +334,6 @@ Analog_32_action *act; dlambdadVg = 0; dlambdadVs = 0; dlambdadVd = 0; - dlambdadVb = 0; } tmp24 = (Vb - Vfar); @@ -459,17 +450,15 @@ static void Iin_PFET7F(act) Analog_32_action *act; { AnaExt_rec *Pin1Ptr, *Pin2Ptr, *Pin3Ptr, *Pin4Ptr; - double VPin1, VPin2, VPin3, VPin4, VMem1, VMem2, VMem3, VMem4; + double VPin1, VPin2, VPin3, VPin4, VMem1, VMem2, VMem3; PfetConst *PfetVar; Anainstlist *A_Gate; - double Vg, Vd, Vs, Vb, Blend, InvBlend, Vnear, Vfar; + double Vg, Vd, Vs, Vb, Vnear, Vfar; double sign; double Vt; double phi_s, kappa, lambda; double Ifor, Irev, Isdi, Isd; - double tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9; - double tmp10, tmp11, tmp12, tmp13, tmp14, tmp15, tmp16, tmp17, tmp18, tmp19; - double tmp20, tmp21, tmp22, tmp23, tmp24, tmp25; + double tmp11, tmp14; log_grec *WITH1; switch (act->pin) { @@ -485,7 +474,6 @@ Analog_32_action *act; VMem1 = A_Gate->Pininfo[0].Vmem; VMem2 = A_Gate->Pininfo[1].Vmem; VMem3 = A_Gate->Pininfo[2].Vmem; - VMem4 = A_Gate->Pininfo[3].Vmem; VPin1 = Pin1Ptr->now; VPin2 = Pin2Ptr->now; VPin3 = Pin3Ptr->now; @@ -535,16 +523,12 @@ Analog_32_action *act; if (Vd < Vs) { - Blend = 1; - InvBlend = 0; Vnear = Vs; Vfar = Vd; sign = 1; } else { - Blend = 0; - InvBlend = 1; Vnear = Vd; Vfar = Vs; sign = -1; @@ -578,8 +562,6 @@ Analog_32_action *act; Irev = tmp14*tmp14; - tmp18 = PfetVar->k10*sign*(1/kappa); - tmp19 = (Ifor - Irev); Isdi = PfetVar->k10*sign*(1/kappa)*(Ifor - Irev); if (Vg < Vnear) @@ -618,7 +600,6 @@ Analog_32_action *act; VMem1 = A_Gate->Pininfo[0].Vmem; VMem2 = A_Gate->Pininfo[1].Vmem; VMem3 = A_Gate->Pininfo[2].Vmem; - VMem4 = A_Gate->Pininfo[3].Vmem; VPin1 = Pin1Ptr->now; VPin2 = Pin2Ptr->now; VPin3 = Pin3Ptr->now; @@ -639,7 +620,6 @@ ICPfet *NewIC; { int Found; char Arg[256], Keyword[256]; - long Dummy; ICPfet *WITH; char *STR1; @@ -651,7 +631,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "WDRAWN")) { TRY(try1); WITH->InitWdrawn = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try1); WITH->InitWdrawn = 28; ENDTRY(try1); @@ -659,7 +638,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "LDRAWN")) { TRY(try2); WITH->InitLdrawn = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try2); WITH->InitLdrawn = 14; ENDTRY(try2); @@ -667,7 +645,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "SAREA")) { TRY(try3); WITH->InitSArea = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try3); WITH->InitSArea = 36e-6; ENDTRY(try3); @@ -675,7 +652,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "DAREA")) { TRY(try4); WITH->InitDArea = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try4); WITH->InitDArea = 36e-6; ENDTRY(try4); @@ -683,7 +659,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "WAREA")) { TRY(try5); WITH->InitWArea = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try5); WITH->InitWArea = 100e-6; ENDTRY(try5); @@ -691,7 +666,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "NAOFFSET")) { TRY(try6); WITH->InitNaOffset = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try6); WITH->InitNaOffset = 1.0; ENDTRY(try6); @@ -699,7 +673,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "MUOFFSET")) { TRY(try5); WITH->InitMuOffset = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try5); WITH->InitMuOffset = 1; ENDTRY(try5); @@ -707,7 +680,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "QSSOFFSET")) { TRY(try5); WITH->InitQssOffset = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try5); WITH->InitQssOffset = 0; ENDTRY(try5); @@ -762,12 +734,8 @@ log_grec *Inst; long Attrnum; { int Result; - PfetConst *PfetVar; - Anainstlist *A_Gate; Result = true; - A_Gate = (Anainstlist *)Inst->info; - PfetVar = (PfetConst *)A_Gate->InstVar; switch (Attrnum) { case N_Wdrawn: @@ -1018,9 +986,9 @@ Analog_32_action *act; double Node1, Node2, Node3, Node4, Pin1, Pin2, Pin3, Pin4, d1, d2; char Name2[256], Name3[256]; log_grec *WITH; - char STR1[18]; + char STR1[19]; char STR2[14]; - char STR3[256]; + char STR3[262]; char STR4[256]; WITH = act->inst; diff --git a/log/src/ana/pfet7t.c b/log/src/ana/pfet7t.c index 09d8092..5af2fcb 100644 --- a/log/src/ana/pfet7t.c +++ b/log/src/ana/pfet7t.c @@ -93,7 +93,7 @@ log_grec *Inst; { PfetConst *PfetVar; Anainstlist *A_Gate; - double rho, phi_f, phi_b, Leff, Weff, Vfb, beta, lambda, del_Na; + double rho, phi_f, phi_b, Leff, Weff, Vfb, beta, del_Na; double Wdrawn, Ldrawn; A_Gate = (Anainstlist *)Inst->info; @@ -180,17 +180,17 @@ Analog_32_action *act; long Pin1, Pin2, Pin3; double VPin1, VPin2, VPin3, VMem1, VMem2, VMem3; /*1*/ double ICap; - double Vg, Vd, Vs, Blend, InvBlend, Vnear, Vfar; + double Vg, Vd, Vs, Vnear, Vfar; double dVneardVs, dVneardVd, dVfardVs, dVfardVd, sign; - double Vt, dVtdVd, dVtdVs, dVtdVg; + double Vt, dVtdVd, dVtdVs; double phi_s, kappa, dkappadVg, dkappadVs, dkappadVd; double Ifor, Irev, Isdi, Isd; double lambda, dlambdadVg, dlambdadVs, dlambdadVd; double dIfordVg, dIfordVs, dIfordVd, dIrevdVg, dIrevdVs, dIrevdVd; double dIsdidVg, dIsdidVs, dIsdidVd, dIsddVg, dIsddVs, dIsddVd; - double tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9; + double tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp9; double tmp10, tmp11, tmp12, tmp13, tmp14, tmp15, tmp16, tmp17, tmp18, tmp19; - double tmp20, tmp21, tmp22, tmp23, tmp24, tmp25; + double tmp20, tmp21, tmp22, tmp24, tmp25; WITH = act->inst; if (AnaChangedP) @@ -217,8 +217,6 @@ Analog_32_action *act; if (Vd < Vs) { - Blend = 1; - InvBlend = 0; Vnear = Vs; Vfar = Vd; dVneardVs = 1; @@ -229,8 +227,6 @@ Analog_32_action *act; } else { - Blend = 0; - InvBlend = 1; Vnear = Vd; Vfar = Vs; dVneardVs = 0; @@ -254,7 +250,6 @@ Analog_32_action *act; dVtdVs = 0; dVtdVd = 0; } - dVtdVg = 0; phi_s = PfetVar->k5*tanh(PfetVar->k6*((Vg + PfetVar->k7 - AnaVdd)/Vt)); @@ -316,7 +311,6 @@ Analog_32_action *act; { tmp21 = 1/(Vnear -Vg + PfetVar->k19); tmp22 = PfetVar->k18*tmp21; - tmp23 = tmp22*tmp21; lambda = tmp22; dlambdadVg = tmp22*tmp21; @@ -423,14 +417,12 @@ Analog_32_action *act; double VPin1, VPin2, VPin3, VMem1, VMem2, VMem3; PfetConst *PfetVar; Anainstlist *A_Gate; - double Vg, Vd, Vs, Blend, InvBlend, Vnear, Vfar; + double Vg, Vd, Vs, Vnear, Vfar; double sign; double Vt; double phi_s, kappa, lambda; double Ifor, Irev, Isdi, Isd; - double tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9; - double tmp10, tmp11, tmp12, tmp13, tmp14, tmp15, tmp16, tmp17, tmp18, tmp19; - double tmp20, tmp21, tmp22, tmp23, tmp24, tmp25; + double tmp11, tmp14; log_grec *WITH1; switch (act->pin) { @@ -490,16 +482,12 @@ Analog_32_action *act; if (Vd < Vs) { - Blend = 1; - InvBlend = 0; Vnear = Vs; Vfar = Vd; sign = 1; } else { - Blend = 0; - InvBlend = 1; Vnear = Vd; Vfar = Vs; sign = -1; @@ -533,8 +521,6 @@ Analog_32_action *act; Irev = tmp14*tmp14; - tmp18 = PfetVar->k10*sign*(1/kappa); - tmp19 = (Ifor - Irev); Isdi = PfetVar->k10*sign*(1/kappa)*(Ifor - Irev); if (Vg < Vnear) @@ -575,7 +561,6 @@ ICPfet *NewIC; { int Found; char Arg[256], Keyword[256]; - long Dummy; ICPfet *WITH; char *STR1; @@ -587,7 +572,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "WDRAWN")) { TRY(try1); WITH->InitWdrawn = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try1); WITH->InitWdrawn = 28; ENDTRY(try1); @@ -595,7 +579,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "LDRAWN")) { TRY(try2); WITH->InitLdrawn = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try2); WITH->InitLdrawn = 14; ENDTRY(try2); @@ -603,7 +586,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "SAREA")) { TRY(try3); WITH->InitSArea = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try3); WITH->InitSArea = 36e-6; ENDTRY(try3); @@ -611,7 +593,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "DAREA")) { TRY(try4); WITH->InitDArea = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try4); WITH->InitDArea = 36e-6; ENDTRY(try4); @@ -619,7 +600,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "NAOFFSET")) { TRY(try5); WITH->InitNaOffset = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try5); WITH->InitNaOffset = 1; ENDTRY(try5); @@ -627,7 +607,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "MUOFFSET")) { TRY(try5); WITH->InitMuOffset = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try5); WITH->InitMuOffset = 1; ENDTRY(try5); @@ -635,7 +614,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "QSSOFFSET")) { TRY(try5); WITH->InitQssOffset = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try5); WITH->InitQssOffset = 0; ENDTRY(try5); @@ -687,12 +665,8 @@ log_grec *Inst; long Attrnum; { int Result; - PfetConst *PfetVar; - Anainstlist *A_Gate; Result = true; - A_Gate = (Anainstlist *)Inst->info; - PfetVar = (PfetConst *)A_Gate->InstVar; switch (Attrnum) { case N_Wdrawn: @@ -938,9 +912,9 @@ Analog_32_action *act; double Node1, Node2, Node3, Pin1, Pin2, Pin3, d1, d2; char Name2[256], Name3[256]; log_grec *WITH; - char STR1[18]; + char STR1[19]; char STR2[14]; - char STR3[256]; + char STR3[262]; char STR4[256]; WITH = act->inst; diff --git a/log/src/ana/physical.c b/log/src/ana/physical.c index 19fcc8d..509e58e 100644 --- a/log/src/ana/physical.c +++ b/log/src/ana/physical.c @@ -218,12 +218,9 @@ Analog_32_action *act; static void Openconfig_Physical(act) Analog_32_action *act; { - long Index; - log_grec *WITH; if (!act->ok) return; - WITH = act->inst; Reload_Physical(act); } @@ -231,7 +228,6 @@ void Readgate_Physical(act) Analog_32_action *act; { log_grec *WITH; - char STR1[256]; WITH = act->inst; if (AnaOldmodel && !WITH->attr[0].blnk) { @@ -251,7 +247,6 @@ static void Newgate_Physical(act) Analog_32_action *act; { Analog_32_action Newact; - char Newout[256]; Newact.inst = act->inst; Newact.ok = true; diff --git a/log/src/ana/pspc1.c b/log/src/ana/pspc1.c index 715e596..461c0aa 100644 --- a/log/src/ana/pspc1.c +++ b/log/src/ana/pspc1.c @@ -184,7 +184,7 @@ Analog_32_action *act; MinI4, dI4dV1, dI4dV2, dI4dV3, dI4dV4; AnaExt_rec *Pin1Ptr, *Pin2Ptr, *Pin3Ptr, *Pin4Ptr; long Pin1, Pin2, Pin3, Pin4; - double VPin1, VPin2, VPin3, VPin4, VMem1, VMem2, VMem3, VMem4; /*1*/ + double VPin1, VPin2, VPin3, VPin4, VMem1, VMem2, VMem3; /*1*/ double ICap; PfetConst *PfetVar; Anainstlist *A_Gate; @@ -224,7 +224,6 @@ Analog_32_action *act; VMem1 = A_Gate->Pininfo[0].Vmem; /*Memories for capacitors*/ VMem2 = A_Gate->Pininfo[1].Vmem; /*...*/ VMem3 = A_Gate->Pininfo[2].Vmem; /*...*/ - VMem4 = A_Gate->Pininfo[3].Vmem; /*...*/ Vg = VPin1; Vd = VPin2; Vs = VPin3; @@ -398,11 +397,11 @@ static void Iin_PSPC1(act) Analog_32_action *act; { AnaExt_rec *Pin1Ptr, *Pin2Ptr, *Pin3Ptr, *Pin4Ptr; - double VPin1, VPin2, VPin3, VPin4, VMem1, VMem2, VMem3, VMem4; + double VPin1, VPin2, VPin3, VPin4, VMem1, VMem2, VMem3; PfetConst *PfetVar; Anainstlist *A_Gate; - double Ids, Vg, Vd, Vs, Vb, Vds, K2Vg, K7Vb, ExpFor, OnePlusExpFor, - LogOnePlusExpFor,Ifor, ExpRev, OnePlusExpRev, LogOnePlusExpRev, + double Ids, Vg, Vd, Vs, Vb, Vds, K2Vg, K7Vb, ExpFor, + LogOnePlusExpFor,Ifor, ExpRev, LogOnePlusExpRev, Irev, Blend, VdsInvVcross, Early, Itotal; log_grec *WITH1; @@ -419,7 +418,6 @@ Analog_32_action *act; VMem1 = A_Gate->Pininfo[0].Vmem; VMem2 = A_Gate->Pininfo[1].Vmem; VMem3 = A_Gate->Pininfo[2].Vmem; - VMem4 = A_Gate->Pininfo[3].Vmem; VPin1 = Pin1Ptr->now; VPin2 = Pin2Ptr->now; VPin3 = Pin3Ptr->now; @@ -475,12 +473,10 @@ Analog_32_action *act; K7Vb = PfetVar->k7 * Vb; ExpFor = AnaExpo(-K2Vg - PfetVar->k5 + PfetVar->k6 * Vs - K7Vb); - OnePlusExpFor = 1 + ExpFor; LogOnePlusExpFor = log1p(ExpFor); Ifor = PfetVar->k1 * LogOnePlusExpFor * LogOnePlusExpFor; ExpRev = AnaExpo(-K2Vg - PfetVar->k5 + PfetVar->k6 * Vd - K7Vb); - OnePlusExpRev = 1 + ExpRev; LogOnePlusExpRev = log1p(ExpRev); Irev = PfetVar->k1 * LogOnePlusExpRev * LogOnePlusExpRev; @@ -524,7 +520,6 @@ ICPfet *NewIC; { int Found; char Arg[256], Keyword[256]; - long Dummy; ICPfet *WITH; char *STR1; @@ -536,7 +531,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "NUMBER")) { TRY(try13); WITH->InitW = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try13); WITH->InitNumber = 1; ENDTRY(try13); @@ -544,7 +538,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "W")) { TRY(try12); WITH->InitW = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try12); WITH->InitW = 4.0; ENDTRY(try12); @@ -552,7 +545,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "L")) { TRY(try13); WITH->InitL = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try13); WITH->InitL = 4.0; ENDTRY(try13); @@ -570,7 +562,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "VT")) { TRY(try2); WITH->InitVt = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try2); WITH->InitVt = 0.9; ENDTRY(try2); @@ -578,7 +569,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "BETA")) { TRY(try3); WITH->InitBeta = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try3); WITH->InitBeta = 50e-6; ENDTRY(try3); @@ -586,7 +576,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "KAPPA")) { TRY(try4); WITH->InitKappa = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try4); WITH->InitKappa = 1.0; ENDTRY(try4); @@ -594,7 +583,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "KT/Q")) { TRY(try5); WITH->InitKtq = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try5); WITH->InitKtq = 0.025; ENDTRY(try5); @@ -602,7 +590,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "CB")) { TRY(try14); WITH->InitCb = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try14); WITH->InitCb = 10e-15; ENDTRY(try14); @@ -610,7 +597,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "CGS")) { TRY(try6); WITH->InitCgs = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try6); WITH->InitCgs = 10e-15; ENDTRY(try6); @@ -618,7 +604,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "CGD")) { TRY(try7); WITH->InitCgd = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try7); WITH->InitCgd = 10e-15; ENDTRY(try7); @@ -626,7 +611,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "CGB")) { TRY(try8); WITH->InitCgb = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try8); WITH->InitCgb = 10e-15; ENDTRY(try8); @@ -634,7 +618,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "CDB")) { TRY(try9); WITH->InitCdb = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try9); WITH->InitCdb = 10e-15; ENDTRY(try9); @@ -642,7 +625,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "CSB")) { TRY(try10); WITH->InitCsb = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try10); WITH->InitCsb = 10e-15; ENDTRY(try10); @@ -650,7 +632,6 @@ ICPfet *NewIC; if (!strcmp(Keyword, "EARLY")) { TRY(try11); WITH->InitEarly = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try11); WITH->InitEarly = 50.0; ENDTRY(try11); @@ -1060,7 +1041,7 @@ Analog_32_action *act; log_grec *WITH; char STR1[25]; char STR2[14]; - char STR3[256]; + char STR3[261]; // Attention pas sûr char STR4[256]; WITH = act->inst; @@ -1211,6 +1192,8 @@ Analog_32_action *act; case ANALOG_ACT_REFRESH: Show_W_L(act->inst, false); + Probe_Pspc1(act); + break; case ANALOG_ACT_PROBE: Probe_Pspc1(act); diff --git a/log/src/ana/resfloat.c b/log/src/ana/resfloat.c index 2c31491..38d9cd9 100644 --- a/log/src/ana/resfloat.c +++ b/log/src/ana/resfloat.c @@ -110,9 +110,9 @@ static void Iin_Resfloat(act) Analog_32_action *act; { AnaExt_rec *Pin1Ptr; - double VPin1, VMem1; + double VPin1; AnaExt_rec *Pin2Ptr; - double VPin2, VMem2; + double VPin2; ResfloatConst *ResfloatVar; Anainstlist *A_Gate; log_grec *WITH; @@ -122,10 +122,8 @@ Analog_32_action *act; ResfloatVar = (ResfloatConst *)A_Gate->InstVar; Pin1Ptr = (AnaExt_rec *)WITH->pin[0]->info; VPin1 = Pin1Ptr->now; - VMem1 = A_Gate->Pininfo[0].Vmem; Pin2Ptr = (AnaExt_rec *)WITH->pin[1]->info; VPin2 = Pin2Ptr->now; - VMem2 = A_Gate->Pininfo[1].Vmem; switch (act->pin) { case 1: @@ -153,7 +151,6 @@ ICResfloat *NewIC; { int Found; char Arg[256], Keyword[256]; - long Dummy; ICResfloat *WITH; char *STR1; @@ -165,7 +162,6 @@ ICResfloat *NewIC; if (!strcmp(Keyword, "RES")) { TRY(try1); WITH->ICRes = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try1); WITH->ICRes = 1000.0; ENDTRY(try1); @@ -317,7 +313,7 @@ Analog_32_action *act; char Name1[256], Name2[256]; log_grec *WITH; char STR1[22]; - char STR2[256]; + char STR2[264]; // Attention changement pas sûr char STR3[256]; WITH = act->inst; diff --git a/log/src/ana/stairs.c b/log/src/ana/stairs.c index 2e27c40..e959dad 100644 --- a/log/src/ana/stairs.c +++ b/log/src/ana/stairs.c @@ -180,58 +180,62 @@ int First; static void Ex_Stairs(act) Analog_32_action *act; { - /*Stairserent*/ - double MinI1, MinI2, dI1dV1, dI1dV2, dI2dV1, dI2dV2; - AnaExt_rec *Pin1Ptr, *Pin2Ptr; - long Pin1, Pin2; - double VPin1, VPin2; - StairsConst *StairsVar; - Anainstlist *A_Gate; - double Fout, Ftime; - log_grec *WITH; - AnaMatRec *WITH1; - - WITH = act->inst; - A_Gate = (Anainstlist *)WITH->info; - StairsVar = (StairsConst *)A_Gate->InstVar; - Pin1Ptr = (AnaExt_rec *)WITH->pin[0]->info; - Pin1 = Pin1Ptr->nodenum; - VPin1 = Pin1Ptr->last; - Pin2Ptr = (AnaExt_rec *)WITH->pin[1]->info; - Pin2 = Pin2Ptr->nodenum; - VPin2 = Pin2Ptr->last; /*Use with statement to get to internal variables*/ - if (WITH->attr[N_Freeze - 1].UU.b) - Ftime = StairsVar->Timez; - else - Ftime = StairsVar->Timez + AnaDt; - switch (WITH->attr[N_Type - 1].UU.nv) { - - case 0: - Fout = Stairmaker(act->inst, Ftime, StairsVar->First); - break; - } - StairsVar->Videal = Fout; - MinI1 = StairsVar->Conductance * (VPin2 + Fout - VPin1); - MinI2 = -MinI1; - dI1dV1 = StairsVar->Conductance; - dI1dV2 = -StairsVar->Conductance; - dI2dV1 = -StairsVar->Conductance; - dI2dV2 = StairsVar->Conductance; - WITH1 = AnaSystem; - WITH1->Mat[Pin1][AnaSysCol] += MinI1; - WITH1->Mat[Pin1][Pin1] += dI1dV1; - WITH1->Mat[Pin1][Pin2] += dI1dV2; - WITH1->Mat[Pin2][AnaSysCol] += MinI2; - WITH1->Mat[Pin2][Pin1] += dI2dV1; - WITH1->Mat[Pin2][Pin2] += dI2dV2; - - WITH1->MatNZ[Pin1][AnaSysCol] = true; - WITH1->MatNZ[Pin1][Pin1] = true; - WITH1->MatNZ[Pin1][Pin2] = true; - WITH1->MatNZ[Pin2][AnaSysCol] = true; - WITH1->MatNZ[Pin2][Pin1] = true; - WITH1->MatNZ[Pin2][Pin2] = true; - AnaCapex(act->inst); + /*Stairserent*/ + double MinI1, MinI2, dI1dV1, dI1dV2, dI2dV1, dI2dV2; + AnaExt_rec *Pin1Ptr, *Pin2Ptr; + long Pin1, Pin2; + double VPin1, VPin2; + StairsConst *StairsVar; + Anainstlist *A_Gate; + double Fout, Ftime; + log_grec *WITH; + AnaMatRec *WITH1; + + WITH = act->inst; + A_Gate = (Anainstlist *)WITH->info; + StairsVar = (StairsConst *)A_Gate->InstVar; + Pin1Ptr = (AnaExt_rec *)WITH->pin[0]->info; + Pin1 = Pin1Ptr->nodenum; + VPin1 = Pin1Ptr->last; + Pin2Ptr = (AnaExt_rec *)WITH->pin[1]->info; + Pin2 = Pin2Ptr->nodenum; + VPin2 = Pin2Ptr->last; /*Use with statement to get to internal variables*/ + if (WITH->attr[N_Freeze - 1].UU.b) + Ftime = StairsVar->Timez; + else + Ftime = StairsVar->Timez + AnaDt; + + switch (WITH->attr[N_Type - 1].UU.nv) + { + case 0: + Fout = Stairmaker(act->inst, Ftime, StairsVar->First); + break; + + default: + Fout = 0; + } + StairsVar->Videal = Fout; + MinI1 = StairsVar->Conductance * (VPin2 + Fout - VPin1); + MinI2 = -MinI1; + dI1dV1 = StairsVar->Conductance; + dI1dV2 = -StairsVar->Conductance; + dI2dV1 = -StairsVar->Conductance; + dI2dV2 = StairsVar->Conductance; + WITH1 = AnaSystem; + WITH1->Mat[Pin1][AnaSysCol] += MinI1; + WITH1->Mat[Pin1][Pin1] += dI1dV1; + WITH1->Mat[Pin1][Pin2] += dI1dV2; + WITH1->Mat[Pin2][AnaSysCol] += MinI2; + WITH1->Mat[Pin2][Pin1] += dI2dV1; + WITH1->Mat[Pin2][Pin2] += dI2dV2; + + WITH1->MatNZ[Pin1][AnaSysCol] = true; + WITH1->MatNZ[Pin1][Pin1] = true; + WITH1->MatNZ[Pin1][Pin2] = true; + WITH1->MatNZ[Pin2][AnaSysCol] = true; + WITH1->MatNZ[Pin2][Pin1] = true; + WITH1->MatNZ[Pin2][Pin2] = true; + AnaCapex(act->inst); } /*Ex_Stairs*/ @@ -243,60 +247,68 @@ Analog_32_action *act; static void Iin_Stairs(act) Analog_32_action *act; { - /*Stairserent*/ - AnaExt_rec *Pin1Ptr, *Pin2Ptr; - double VPin1, Vpin2; - StairsConst *StairsVar; - Anainstlist *A_Gate; - double Fout, Ftime; - log_grec *WITH; - - WITH = act->inst; - A_Gate = (Anainstlist *)WITH->info; - StairsVar = (StairsConst *)A_Gate->InstVar; - Pin1Ptr = (AnaExt_rec *)WITH->pin[0]->info; - VPin1 = Pin1Ptr->now; - Pin2Ptr = (AnaExt_rec *)WITH->pin[1]->info; - Vpin2 = Pin2Ptr->now; - switch (act->pin) { - - case 1: - WITH = act->inst; - if (WITH->attr[N_Freeze - 1].UU.b) - Ftime = StairsVar->Timez; - else - Ftime = StairsVar->Timez + AnaDtlast; - switch (WITH->attr[N_Type - 1].UU.nv) { - - case 0: - Fout = Stairmaker(act->inst, Ftime, StairsVar->First); - break; - } - act->Iin = StairsVar->Conductance * (VPin1 - Vpin2 - Fout) + act->Iin; - AnaCapIin(act); - break; - - case 2: - WITH = act->inst; - if (WITH->attr[N_Freeze - 1].UU.b) - Ftime = StairsVar->Timez; - else - Ftime = StairsVar->Timez + AnaDtlast; - switch (WITH->attr[N_Type - 1].UU.nv) { - - case 0: - Fout = Stairmaker(act->inst, Ftime, StairsVar->First); - break; - } - act->Iin = StairsVar->Conductance * (Vpin2 + Fout - VPin1) + act->Iin; - AnaCapIin(act); - break; - - default: - printf("Data Structure Corruption\n"); - _Escape(1002); - break; - } + /*Stairserent*/ + AnaExt_rec *Pin1Ptr, *Pin2Ptr; + double VPin1, Vpin2; + StairsConst *StairsVar; + Anainstlist *A_Gate; + double Fout, Ftime; + log_grec *WITH; + + WITH = act->inst; + A_Gate = (Anainstlist *)WITH->info; + StairsVar = (StairsConst *)A_Gate->InstVar; + Pin1Ptr = (AnaExt_rec *)WITH->pin[0]->info; + VPin1 = Pin1Ptr->now; + Pin2Ptr = (AnaExt_rec *)WITH->pin[1]->info; + Vpin2 = Pin2Ptr->now; + switch (act->pin) + { + case 1: + WITH = act->inst; + if (WITH->attr[N_Freeze - 1].UU.b) + Ftime = StairsVar->Timez; + else + Ftime = StairsVar->Timez + AnaDtlast; + + switch (WITH->attr[N_Type - 1].UU.nv) + { + case 0: + Fout = Stairmaker(act->inst, Ftime, StairsVar->First); + break; + + default: + Fout = 0; + } + act->Iin = StairsVar->Conductance * (VPin1 - Vpin2 - Fout) + act->Iin; + AnaCapIin(act); + break; + + case 2: + WITH = act->inst; + if (WITH->attr[N_Freeze - 1].UU.b) + Ftime = StairsVar->Timez; + else + Ftime = StairsVar->Timez + AnaDtlast; + + switch (WITH->attr[N_Type - 1].UU.nv) + { + case 0: + Fout = Stairmaker(act->inst, Ftime, StairsVar->First); + break; + + default: + Fout = 0; + } + act->Iin = StairsVar->Conductance * (Vpin2 + Fout - VPin1) + act->Iin; + AnaCapIin(act); + break; + + default: + printf("Data Structure Corruption\n"); + _Escape(1002); + break; + } } /*Iin_Stairs*/ static void GetCnf_Stairs(NewIC) @@ -304,7 +316,6 @@ ICStairs *NewIC; { int Found; char Arg[256], Keyword[256]; - long Dummy; ICStairs *WITH; char *STR1; @@ -322,7 +333,6 @@ ICStairs *NewIC; if (!strcmp(Keyword, "RES")) { TRY(try1); WITH->ICRes = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try1); WITH->ICRes = 50.0; ENDTRY(try1); @@ -339,7 +349,6 @@ ICStairs *NewIC; if (!strcmp(Keyword, "VSTART")) { TRY(try2); WITH->ICtVstart = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try2); WITH->ICtVstart = 0.0; ENDTRY(try2); @@ -347,7 +356,6 @@ ICStairs *NewIC; if (!strcmp(Keyword, "VEND")) { TRY(try3); WITH->ICtVend = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try3); WITH->ICtVend = AnaVdd; ENDTRY(try3); @@ -355,15 +363,12 @@ ICStairs *NewIC; if (!strcmp(Keyword, "NUMSTEPS")) { TRY(try4); WITH->ICtNumsteps = strtol(Arg, &STR1, 10); - Dummy = STR1 - Arg + 1; - RECOVER(try4); WITH->ICtNumsteps = 5; ENDTRY(try4); } if (!strcmp(Keyword, "STEPTIME")) { TRY(try5); WITH->ICtSteptime = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try5); WITH->ICtSteptime = AnaDtmax * 10; ENDTRY(try5); @@ -371,7 +376,6 @@ ICStairs *NewIC; if (!strcmp(Keyword, "TRAN")) { TRY(try6); WITH->ICtTrantime = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try6); WITH->ICtTrantime = AnaDtmax * 2; ENDTRY(try6); @@ -379,7 +383,6 @@ ICStairs *NewIC; if (!strcmp(Keyword, "RDELAY")) { TRY(try7); WITH->ICtRdelay = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try7); WITH->ICtRdelay = 0.0; ENDTRY(try7); diff --git a/log/src/ana/tc.c b/log/src/ana/tc.c index 5cc99b3..a76c7d2 100644 --- a/log/src/ana/tc.c +++ b/log/src/ana/tc.c @@ -166,7 +166,6 @@ ICTCAmp *NewIC; { int Found; char Arg[256], Keyword[256]; - long Dummy; ICTCAmp *WITH; char *STR1; @@ -195,7 +194,6 @@ ICTCAmp *NewIC; if (!strcmp(Keyword, "VOFFSET")) { TRY(try1); WITH->InitVoffset = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try1); WITH->InitVoffset = 0.0; ENDTRY(try1); @@ -203,7 +201,6 @@ ICTCAmp *NewIC; if (!strcmp(Keyword, "IPOS")) { TRY(try2); WITH->InitIpos = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try2); WITH->InitIpos = 1.0; ENDTRY(try2); @@ -211,7 +208,6 @@ ICTCAmp *NewIC; if (!strcmp(Keyword, "INEG")) { TRY(try3); WITH->InitIneg = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try3); WITH->InitIneg = 1.0; ENDTRY(try3); @@ -219,7 +215,6 @@ ICTCAmp *NewIC; if (!strcmp(Keyword, "IKT/QN")) { TRY(try4); WITH->InitIKtqn = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try4); WITH->InitIKtqn = 0.04; ENDTRY(try4); @@ -227,7 +222,6 @@ ICTCAmp *NewIC; if (!strcmp(Keyword, "I0")) { TRY(try5); WITH->InitLeakage = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try5); WITH->InitLeakage = 5e-17; ENDTRY(try5); @@ -235,7 +229,6 @@ ICTCAmp *NewIC; if (!strcmp(Keyword, "VT")) { TRY(try6); WITH->InitVt = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try6); WITH->InitVt = 0.9; ENDTRY(try6); @@ -243,7 +236,6 @@ ICTCAmp *NewIC; if (!strcmp(Keyword, "EARLY")) { TRY(try7); WITH->InitEarly = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try7); WITH->InitEarly = 50.0; ENDTRY(try7); @@ -251,7 +243,6 @@ ICTCAmp *NewIC; if (!strcmp(Keyword, "KT/QN")) { TRY(try8); WITH->InitKtqn = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try8); WITH->InitKtqn = 0.04; ENDTRY(try8); @@ -259,7 +250,6 @@ ICTCAmp *NewIC; if (!strcmp(Keyword, "CAPVSET")) { TRY(try9); WITH->InitCapVset = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try9); WITH->InitCapVset = 10e-15; ENDTRY(try9); @@ -267,7 +257,6 @@ ICTCAmp *NewIC; if (!strcmp(Keyword, "CAPVOUT")) { TRY(try10); WITH->InitCapVout = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try10); WITH->InitCapVout = 10e-15; ENDTRY(try10); @@ -275,7 +264,6 @@ ICTCAmp *NewIC; if (!strcmp(Keyword, "CAPVDIFF")) { TRY(try11); WITH->InitCapVdiff = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try11); WITH->InitCapVdiff = 10e-15; ENDTRY(try11); @@ -283,7 +271,6 @@ ICTCAmp *NewIC; if (!strcmp(Keyword, "CGBVPLUS")) { TRY(try12); WITH->InitCgbVplus = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try12); WITH->InitCgbVplus = 10e-15; ENDTRY(try12); @@ -291,7 +278,6 @@ ICTCAmp *NewIC; if (!strcmp(Keyword, "CGBVMINUS")) { TRY(try13); WITH->InitCgbVminus = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try13); WITH->InitCgbVminus = 10e-15; ENDTRY(try13); @@ -299,7 +285,6 @@ ICTCAmp *NewIC; if (!strcmp(Keyword, "CDBVOUT")) { TRY(try14); WITH->InitCdbVout = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try14); WITH->InitCdbVout = 10e-15; ENDTRY(try14); @@ -307,7 +292,6 @@ ICTCAmp *NewIC; if (!strcmp(Keyword, "CGBVSET")) { TRY(try15); WITH->InitCgbVset = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try15); WITH->InitCgbVset = 10e-15; ENDTRY(try15); @@ -761,48 +745,47 @@ Analog_32_action *act; static void PreUpdate_TCAmp(act) Analog_32_action *act; { - TCAmpConst *TCAmpVar; - Anainstlist *A_Gate; - AnaExt_rec *PinPlusPtr; - double VPinplus; - AnaExt_rec *PinMinusPtr; - double VPinMinus; - AnaExt_rec *PinOutPtr; - double VPinOut; - AnaExt_rec *PinSetPtr; - double VPinSet; - log_grec *WITH1; - - A_Gate = (Anainstlist *)act->inst->info; - TCAmpVar = (TCAmpConst *)A_Gate->InstVar; - WITH1 = act->inst; - switch (AmpRange) { - - case Normal: - case Wide: - PinPlusPtr = (AnaExt_rec *)WITH1->pin[R_Vplus - 1]->info; - VPinplus = PinPlusPtr->last; - PinMinusPtr = (AnaExt_rec *)WITH1->pin[R_Vminus - 1]->info; - VPinMinus = PinMinusPtr->last; - PinOutPtr = (AnaExt_rec *)WITH1->pin[R_Vout - 1]->info; - VPinOut = PinOutPtr->last; - PinSetPtr = (AnaExt_rec *)WITH1->pin[R_Vset - 1]->info; - VPinSet = PinSetPtr->last; - break; - - case Hwr: - case Fwr: - PinPlusPtr = (AnaExt_rec *)WITH1->pin[A_Vplus - 1]->info; - VPinplus = PinPlusPtr->last; - PinMinusPtr = (AnaExt_rec *)WITH1->pin[A_Vminus - 1]->info; - VPinMinus = PinMinusPtr->last; - PinOutPtr = (AnaExt_rec *)WITH1->pin[A_Vout - 1]->info; - VPinOut = PinOutPtr->last; - PinSetPtr = (AnaExt_rec *)WITH1->pin[A_Vset - 1]->info; - VPinSet = PinSetPtr->last; - break; - } - TCAmpVar->NewLimit = ((VPinSet >= WITH1->attr[N_Vt - 1].UU.r) || + TCAmpConst *TCAmpVar; + Anainstlist *A_Gate; + AnaExt_rec *PinPlusPtr; + double VPinplus; + AnaExt_rec *PinMinusPtr; + double VPinMinus; + AnaExt_rec *PinSetPtr; + double VPinSet; + log_grec *WITH1; + + A_Gate = (Anainstlist *)act->inst->info; + TCAmpVar = (TCAmpConst *)A_Gate->InstVar; + WITH1 = act->inst; + switch (AmpRange) + { + case Normal: + case Wide: + PinPlusPtr = (AnaExt_rec *)WITH1->pin[R_Vplus - 1]->info; + VPinplus = PinPlusPtr->last; + PinMinusPtr = (AnaExt_rec *)WITH1->pin[R_Vminus - 1]->info; + VPinMinus = PinMinusPtr->last; + PinSetPtr = (AnaExt_rec *)WITH1->pin[R_Vset - 1]->info; + VPinSet = PinSetPtr->last; + break; + + case Hwr: + case Fwr: + PinPlusPtr = (AnaExt_rec *)WITH1->pin[A_Vplus - 1]->info; + VPinplus = PinPlusPtr->last; + PinMinusPtr = (AnaExt_rec *)WITH1->pin[A_Vminus - 1]->info; + VPinMinus = PinMinusPtr->last; + PinSetPtr = (AnaExt_rec *)WITH1->pin[A_Vset - 1]->info; + VPinSet = PinSetPtr->last; + break; + + default: + VPinSet = 0; + VPinMinus = 0; + VPinplus = 0; + } + TCAmpVar->NewLimit = ((VPinSet >= WITH1->attr[N_Vt - 1].UU.r) || (VPinplus >= AnaVdd && VPinMinus >= AnaVdd)); } @@ -826,11 +809,9 @@ Analog_32_action *act; { TCAmpConst *TCAmpVar; Anainstlist *A_Gate; - log_grec *WITH1; A_Gate = (Anainstlist *)act->inst->info; TCAmpVar = (TCAmpConst *)A_Gate->InstVar; - WITH1 = act->inst; if (AnaLogglobals->showpage == act->page) { if (TCAmpVar->OldLimit != TCAmpVar->Limit) Limitfill(act->inst, TCAmpVar->Limit, false); @@ -867,138 +848,160 @@ Analog_32_action *act; static void Probe_TCAmp(act) Analog_32_action *act; { - Anainstlist *A_Gate; - AnaExt_rec *Node1Ptr, *Node2Ptr, *Node3Ptr, *Node4Ptr; - double Node1, Node2, Node3, Node4, Pin1, Pin2, Pin3, Pin4; - TCAmpConst *TCAmpVar; - double ExpoVset, BlendVset, Iset; - int Outhigh, Outlow; - long IntAmp; - log_grec *WITH; - char STR1[256]; - char STR2[256]; - - WITH = act->inst; - IntAmp = AmpRange; - A_Gate = (Anainstlist *)WITH->info; - switch (IntAmp) { - - case Normal: - case Wide: - Pin1 = A_Gate->Pininfo[R_Vplus - 1].Vmem; - Pin2 = A_Gate->Pininfo[R_Vminus - 1].Vmem; - Pin3 = A_Gate->Pininfo[R_Vout - 1].Vmem; - Pin4 = A_Gate->Pininfo[R_Vset - 1].Vmem; - Node1Ptr = (AnaExt_rec *)WITH->pin[R_Vplus - 1]->info; - Node2Ptr = (AnaExt_rec *)WITH->pin[R_Vminus - 1]->info; - Node3Ptr = (AnaExt_rec *)WITH->pin[R_Vout - 1]->info; - Node4Ptr = (AnaExt_rec *)WITH->pin[R_Vset - 1]->info; - break; - - case Hwr: - case Fwr: - Pin1 = A_Gate->Pininfo[A_Vplus - 1].Vmem; - Pin2 = A_Gate->Pininfo[A_Vminus - 1].Vmem; - Pin3 = A_Gate->Pininfo[A_Vout - 1].Vmem; - Pin4 = A_Gate->Pininfo[A_Vset - 1].Vmem; - Node1Ptr = (AnaExt_rec *)WITH->pin[A_Vplus - 1]->info; - Node2Ptr = (AnaExt_rec *)WITH->pin[A_Vminus - 1]->info; - Node3Ptr = (AnaExt_rec *)WITH->pin[A_Vout - 1]->info; - Node4Ptr = (AnaExt_rec *)WITH->pin[A_Vset - 1]->info; - break; - } - Node1 = Node1Ptr->ltimestep; - Node2 = Node2Ptr->ltimestep; - Node3 = Node3Ptr->ltimestep; - Node4 = Node4Ptr->ltimestep; - TCAmpVar = (TCAmpConst *)A_Gate->InstVar; - switch (IntAmp) { - - case Normal: - AnaScoreboard(NormalName, (long)AnaMessGate1); - break; - - case Wide: - AnaScoreboard(WideName, (long)AnaMessGate1); - break; - - case Hwr: - AnaScoreboard(HwrName, (long)AnaMessGate1); - break; - - case Fwr: - AnaScoreboard(FwrName, (long)AnaMessGate1); - break; - } - if (Node1 != Pin1 || Node2 != Pin2 || Node1 == AnaNotyet || - Node2 == AnaNotyet || Node3 != Pin3 || Node4 != Pin4 || - Node3 == AnaNotyet || Node4 == AnaNotyet) { - AnaScoreboard(" <undefined>", (long)AnaMessGate2); - AnaScoreboard("$", (long)AnaMessGate3); - AnaScoreboard("$", (long)AnaMessGate4); - return; - } - if (Pin4 > WITH->attr[N_Vt - 1].UU.r) - AnaScoreboard("Iset out of subthreshold", (long)AnaMessGate2); - else { - if (Pin1 < Pin4 && Pin2 < Pin4) - AnaScoreboard("Iset limited by V+,V-", (long)AnaMessGate2); - else { - ExpoVset = AnaExpo(TCAmpVar->Kn2 * Pin4); - BlendVset = 1 / (1 + TCAmpVar->Kn5 * ExpoVset); - Iset = TCAmpVar->Kn1 * ExpoVset * BlendVset + - TCAmpVar->Kn4 * Pin4 * Pin4 * (1 - BlendVset); - sprintf(STR2, "Iset = %s", AnaProbeAmpStr(STR1, Iset)); - AnaScoreboard(STR2, (long)AnaMessGate2); - } - } - if (fabs(Pin1 - Pin2) < 2 * WITH->attr[N_Ktqn - 1].UU.r) - AnaScoreboard("Tanh linear", (long)AnaMessGate3); - else - AnaScoreboard("Tanh saturated", (long)AnaMessGate3); - switch (IntAmp) { - - case Normal: - if (Pin1 < Pin2) { - Outhigh = (Pin3 >= AnaVdd + Pin4); - Outlow = (Pin3 <= Pin1 - Pin4); - } else { - Outhigh = (Pin3 >= AnaVdd); - Outlow = (Pin3 <= Pin2 - Pin4); - } - break; - - case Wide: - if (Pin1 < Pin2) { - Outhigh = (Pin3 >= AnaVdd + Pin4); - Outlow = (Pin3 < 0); - } else { - Outhigh = (Pin3 >= AnaVdd); - Outlow = (Pin3 + Pin4 < 0); - } - break; - - case Hwr: - if (Pin1 > Pin2) - Outhigh = (Pin3 >= AnaVdd + Pin4); - else - Outhigh = (Pin3 >= AnaVdd); - Outlow = false; - break; - - case Fwr: - Outhigh = (Pin3 >= AnaVdd); - Outlow = false; - break; - } - if (Outhigh) { - AnaScoreboard("Vout too high", (long)AnaMessGate4); - return; - } - if (Outlow) - AnaScoreboard("Vout too low", (long)AnaMessGate4); - else - AnaScoreboard("Vout ok", (long)AnaMessGate4); + Anainstlist *A_Gate; + AnaExt_rec *Node1Ptr, *Node2Ptr, *Node3Ptr, *Node4Ptr; + double Node1, Node2, Node3, Node4, Pin1, Pin2, Pin3, Pin4; + TCAmpConst *TCAmpVar; + double ExpoVset, BlendVset, Iset; + int Outhigh, Outlow; + long IntAmp; + log_grec *WITH; + char STR1[256]; + char STR2[256]; + + WITH = act->inst; + IntAmp = AmpRange; + A_Gate = (Anainstlist *)WITH->info; + + switch (IntAmp) + { + case Normal: + case Wide: + Pin1 = A_Gate->Pininfo[R_Vplus - 1].Vmem; + Pin2 = A_Gate->Pininfo[R_Vminus - 1].Vmem; + Pin3 = A_Gate->Pininfo[R_Vout - 1].Vmem; + Pin4 = A_Gate->Pininfo[R_Vset - 1].Vmem; + Node1Ptr = (AnaExt_rec *)WITH->pin[R_Vplus - 1]->info; + Node2Ptr = (AnaExt_rec *)WITH->pin[R_Vminus - 1]->info; + Node3Ptr = (AnaExt_rec *)WITH->pin[R_Vout - 1]->info; + Node4Ptr = (AnaExt_rec *)WITH->pin[R_Vset - 1]->info; + break; + + case Hwr: + case Fwr: + Pin1 = A_Gate->Pininfo[A_Vplus - 1].Vmem; + Pin2 = A_Gate->Pininfo[A_Vminus - 1].Vmem; + Pin3 = A_Gate->Pininfo[A_Vout - 1].Vmem; + Pin4 = A_Gate->Pininfo[A_Vset - 1].Vmem; + Node1Ptr = (AnaExt_rec *)WITH->pin[A_Vplus - 1]->info; + Node2Ptr = (AnaExt_rec *)WITH->pin[A_Vminus - 1]->info; + Node3Ptr = (AnaExt_rec *)WITH->pin[A_Vout - 1]->info; + Node4Ptr = (AnaExt_rec *)WITH->pin[A_Vset - 1]->info; + break; + + default: + return; + } + Node1 = Node1Ptr->ltimestep; + Node2 = Node2Ptr->ltimestep; + Node3 = Node3Ptr->ltimestep; + Node4 = Node4Ptr->ltimestep; + TCAmpVar = (TCAmpConst *)A_Gate->InstVar; + + switch (IntAmp) + { + case Normal: + AnaScoreboard(NormalName, (long)AnaMessGate1); + break; + + case Wide: + AnaScoreboard(WideName, (long)AnaMessGate1); + break; + + case Hwr: + AnaScoreboard(HwrName, (long)AnaMessGate1); + break; + + case Fwr: + AnaScoreboard(FwrName, (long)AnaMessGate1); + break; + } + if (Node1 != Pin1 || Node2 != Pin2 || Node1 == AnaNotyet || + Node2 == AnaNotyet || Node3 != Pin3 || Node4 != Pin4 || + Node3 == AnaNotyet || Node4 == AnaNotyet) + { + AnaScoreboard(" <undefined>", (long)AnaMessGate2); + AnaScoreboard("$", (long)AnaMessGate3); + AnaScoreboard("$", (long)AnaMessGate4); + return; + } + if (Pin4 > WITH->attr[N_Vt - 1].UU.r) + AnaScoreboard("Iset out of subthreshold", (long)AnaMessGate2); + else + { + if (Pin1 < Pin4 && Pin2 < Pin4) + AnaScoreboard("Iset limited by V+,V-", (long)AnaMessGate2); + else + { + ExpoVset = AnaExpo(TCAmpVar->Kn2 * Pin4); + BlendVset = 1 / (1 + TCAmpVar->Kn5 * ExpoVset); + Iset = TCAmpVar->Kn1 * ExpoVset * BlendVset + + TCAmpVar->Kn4 * Pin4 * Pin4 * (1 - BlendVset); + sprintf(STR2, "Iset = %s", AnaProbeAmpStr(STR1, Iset)); + AnaScoreboard(STR2, (long)AnaMessGate2); + } + } + if (fabs(Pin1 - Pin2) < 2 * WITH->attr[N_Ktqn - 1].UU.r) + AnaScoreboard("Tanh linear", (long)AnaMessGate3); + else + AnaScoreboard("Tanh saturated", (long)AnaMessGate3); + + switch (IntAmp) + { + case Normal: + if (Pin1 < Pin2) + { + Outhigh = (Pin3 >= AnaVdd + Pin4); + Outlow = (Pin3 <= Pin1 - Pin4); + + } + else + { + Outhigh = (Pin3 >= AnaVdd); + Outlow = (Pin3 <= Pin2 - Pin4); + } + break; + + case Wide: + if (Pin1 < Pin2) + { + Outhigh = (Pin3 >= AnaVdd + Pin4); + Outlow = (Pin3 < 0); + } + else + { + Outhigh = (Pin3 >= AnaVdd); + Outlow = (Pin3 + Pin4 < 0); + } + break; + + case Hwr: + if (Pin1 > Pin2) + Outhigh = (Pin3 >= AnaVdd + Pin4); + else + Outhigh = (Pin3 >= AnaVdd); + + Outlow = false; + break; + + case Fwr: + Outhigh = (Pin3 >= AnaVdd); + Outlow = false; + break; + + default: + Outhigh = false; + Outlow = false; + } + if (Outhigh) + { + AnaScoreboard("Vout too high", (long)AnaMessGate4); + return; + } + if (Outlow) + AnaScoreboard("Vout too low", (long)AnaMessGate4); + else + AnaScoreboard("Vout ok", (long)AnaMessGate4); } @@ -1030,7 +1033,7 @@ Analog_32_action *act; InvBlendVstr, dBlendVstr_Temp, dBlendVstrdV1, dBlendVstrdV2, dBlendVstrdVset, Iset_Temp1, Iset_Temp2, Iset, dIset_Temp1, dIset_Temp2, dIsetdV1, dIsetdV2, dIsetdVset, TCtanch, dTCTanchdV1, - dTCTanchdV2, ExpoVcmpVdd, BlendVcmpVdd, InvBlendVcmpVdd, + ExpoVcmpVdd, BlendVcmpVdd, InvBlendVcmpVdd, dBlendVcmpVddTemp, dBlendVcmpVdddV1, dBlendVcmpVdddV2, MinV1V2Vdd, dMinV1V2VdddV1, dMinV1V2VdddV2, VcmpVdd, Vbot, dVbotdV1, dVbotdV2, dVbotdVout, ExpoVbot, BlendVbotTemp, BlendVbot, InvBlendVbot, @@ -1048,12 +1051,12 @@ Analog_32_action *act; /* p2c: stdlib.text, line 4982: * Note: Line breaker spent 2.0 seconds, 5000 tries on line 1035 [251] */ Deltasign Sign; - double ResPositive, ResNegative, dResPositivedVout, dResNegativedVout, + double ResPositive, ResNegative, IresTempPos, IresTempNeg, Ires, dIresTemp, dIresdV1, dIresdV2, dIresdVout, TCRes, dTCTemp, dTCResdV1, dTCResdV2, dTCResdVout, Vlow1, ExpoVlow1, ExpoVlow1Temp, BlendVlow1, InvBlendVlow1, - dBlendVlow1dVout, dBlendVlow1dVset, Ilow1Temp1, Ilow1Temp2, - Ilow1Temp3, Ilow1, dIlow1dVset, dIlow1dVout, Vlow2, ExpoVlow2, + dBlendVlow1dVout, Ilow1Temp1, Ilow1Temp2, + Ilow1Temp3, Ilow1, dIlow1dVset, Vlow2, ExpoVlow2, ExpoVlow2Temp, BlendVlow2, InvBlendVlow2, dBlendVlow2dVout, Ilow2Temp1, Ilow2Temp2, Ilow2Temp3, Ilow2, dIlow2dVout, Delta1, Delta2, Delta3, Delta4, Itop2Temp1, Itop2Temp2, Itop2Temp3; @@ -1197,7 +1200,6 @@ Analog_32_action *act; TCtanch = AnaTanch(Del * TCAmpVar->HalfIKn2); dTCTanchdV1 = (1 - TCtanch * TCtanch) * TCAmpVar->HalfIKn2; - dTCTanchdV2 = -dTCTanchdV1; if (AmpRange == Normal) { @@ -1268,7 +1270,6 @@ Analog_32_action *act; BlendVlow1 = 1 / (1 + ExpoVlow1Temp); InvBlendVlow1 = 1 - BlendVlow1; dBlendVlow1dVout = TCAmpVar->Kn2 * ExpoVlow1Temp * BlendVlow1 * BlendVlow1; - dBlendVlow1dVset = -dBlendVlow1dVout; Ilow1Temp1 = TCAmpVar->Kn1 * ExpoVlow1; @@ -1278,7 +1279,6 @@ Analog_32_action *act; dIlow1dVset = TCAmpVar->Kn2 * Ilow1Temp3 + (Ilow1Temp2 - Ilow1Temp1) * dBlendVlow1dVout + TCAmpVar->TwoKn4 * Vlow1 * InvBlendVlow1; - dIlow1dVout = -dIlow1dVset; Vlow2 = -VPin3; ExpoVlow2 = AnaExpo(TCAmpVar->Kn2 * Vlow2); @@ -1436,8 +1436,6 @@ Analog_32_action *act; ResPositive = 1 + (AnaVdd - VPin3) * TCAmpVar->InvVcross; ResNegative = 1 + VPin3 * TCAmpVar->InvVcross; - dResPositivedVout = -TCAmpVar->InvVcross; - dResNegativedVout = TCAmpVar->InvVcross; IresTempPos = ResPositive * WITH->attr[N_Ipos - 1].UU.r; IresTempNeg = ResNegative * WITH->attr[N_Ineg - 1].UU.r; @@ -1574,223 +1572,243 @@ Analog_32_action *act; void Iin_TCAmp(act) Analog_32_action *act; { - AnaExt_rec *Pin1Ptr; - double VPin1, VMem1; - AnaExt_rec *Pin2Ptr; - double VPin2, VMem2; - AnaExt_rec *Pin3Ptr; - double VPin3, VMem3; - AnaExt_rec *Pin4Ptr; - double VPin4, VMem4; - TCAmpConst *TCAmpVar; - Anainstlist *A_Gate; - - double Del, BlendDel, InvBlendDel, V1Offset, V2Offset, MaxV1V2, MinV1V2, - Vcmp, BlendVcmp, ExpoVstr, BlendVstr, Vstr, TCtanch, BlendVcmpVdd, - MinV1V2Vdd, VcmpVdd, Vbot, ExpoVbot, BlendVbot, Ibot, Vhighcmp, - BlendVhighcmp, MaxVddV2, Vtop1, ExpoVtop1, BlendVtop1, Vtop2, - ExpVtop2, BlendVtop2, Ihigh; - Deltasign Sign; - double TCRes, Iset, Vlow1, ExpoVlow1, BlendVlow1, Vlow2, ExpoVlow2, - BlendVlow2, Delta1, Delta2, Delta3, Delta4; - log_grec *WITH; - - - - WITH = act->inst; - - /*Implementation notes*/ - /*1. Use Dtlast, Dtlast+Accum for time values*/ - /*Numbers used below are in 'virtual pin numbers' */ - /*Pin1=Vplus*/ - /*Pin3=Vout*/ - /*Pin2=Vminus*/ - /*Pin4=Vset*/ - - - A_Gate = (Anainstlist *)WITH->info; - TCAmpVar = (TCAmpConst *)A_Gate->InstVar; - Pin1Ptr = (AnaExt_rec *)WITH->pin[R_Vplus - 1]->info; - VPin1 = Pin1Ptr->now; - VMem1 = A_Gate->Pininfo[R_Vplus - 1].Vmem; - Pin2Ptr = (AnaExt_rec *)WITH->pin[R_Vminus - 1]->info; - VPin2 = Pin2Ptr->now; - VMem2 = A_Gate->Pininfo[R_Vminus - 1].Vmem; - Pin3Ptr = (AnaExt_rec *)WITH->pin[R_Vout - 1]->info; - VPin3 = Pin3Ptr->now; - VMem3 = A_Gate->Pininfo[R_Vout - 1].Vmem; - Pin4Ptr = (AnaExt_rec *)WITH->pin[R_Vset - 1]->info; - VPin4 = Pin4Ptr->now; - VMem4 = A_Gate->Pininfo[R_Vset - 1].Vmem; - switch (act->pin) { - - case R_Vplus: /*Allows attr^[]. access*/ - WITH = act->inst; - Delta1 = VPin1 - VMem1; - act->Iin = TCAmpVar->TauVdiff * (Delta1 - VPin2 + VMem2) + - TCAmpVar->TauVout * (Delta1 - VPin3 + VMem3) + - TCAmpVar->TauVset * (Delta1 - VPin4 + VMem4) + act->Iin; - AnaCapIin(act); /*Add nodal capacitance*/ - break; - /*Allows internal variable access*/ - - case R_Vminus: /*Allows attr^[]. access*/ - WITH = act->inst; - Delta2 = VPin2 - VMem2; - act->Iin = TCAmpVar->TauVout * (Delta2 - VPin3 + VMem3) + - TCAmpVar->TauVdiff * (Delta2 - VPin1 + VMem1) + - TCAmpVar->TauVset * (Delta2 - VPin4 + VMem4) + act->Iin; - AnaCapIin(act); /*Add nodal capacitance*/ - break; - /*Allows internal variable access*/ - - case R_Vout: /*Allows attr^[]. access*/ - WITH = act->inst; - V1Offset = VPin1 + TCAmpVar->HalfOffset; - V2Offset = VPin2 - TCAmpVar->HalfOffset; - Del = V1Offset - V2Offset; - if (fabs(Del) < 0.000708) { - BlendDel = 1 / (1 + AnaExpo(100000L * Del)); - InvBlendDel = 1 - BlendDel; - MaxV1V2 = V2Offset * BlendDel + V1Offset * InvBlendDel; - MinV1V2 = V1Offset * BlendDel + V2Offset * InvBlendDel; - Sign = Zero; - } else { - if (Del > 0) { - BlendDel = 0.0; - InvBlendDel = 1.0; - MaxV1V2 = V1Offset; - MinV1V2 = V2Offset; - Sign = Positive; - } else { - BlendDel = 1.0; - InvBlendDel = 0.0; - MaxV1V2 = V2Offset; - MinV1V2 = V1Offset; - Sign = Negative; - } - } - - Vcmp = MaxV1V2 - VPin4; - if (fabs(Vcmp) < 0.000708) { - BlendVcmp = 1 / (1 + AnaExpo(100000L * Vcmp)); - Vstr = MaxV1V2 * BlendVcmp + VPin4 * (1 - BlendVcmp); - } else { - if (Vcmp > 0) - Vstr = VPin4; - else - Vstr = MaxV1V2; - } - - - ExpoVstr = AnaExpo(TCAmpVar->Kn2 * Vstr); - BlendVstr = 1 / (1 + TCAmpVar->Kn5 * ExpoVstr); - Iset = TCAmpVar->Kn1 * ExpoVstr * BlendVstr + - TCAmpVar->Kn4 * Vstr * Vstr * (1 - BlendVstr); - - TCtanch = AnaTanch(Del * TCAmpVar->HalfIKn2); - - if (AmpRange == Normal) { - VcmpVdd = AnaVdd - MinV1V2; - if (fabs(VcmpVdd) < 0.000708) { - BlendVcmpVdd = 1 / (1 + AnaExpo(100000L * VcmpVdd)); - MinV1V2Vdd = AnaVdd * BlendVcmpVdd + MinV1V2 * (1 - BlendVcmpVdd); - } else { - if (VcmpVdd > 0) - MinV1V2Vdd = MinV1V2; - else - MinV1V2Vdd = AnaVdd; - } - - Vbot = MinV1V2Vdd - VPin3; - ExpoVbot = AnaExpo(TCAmpVar->Kn2 * Vbot); - BlendVbot = 1 / (1 + TCAmpVar->Kn5 * ExpoVbot); - Ibot = TCAmpVar->Kn1 * ExpoVbot * BlendVbot + - (1 - BlendVbot) * TCAmpVar->Kn4 * Vbot * Vbot; - } else { - Vlow1 = VPin4 - VPin3; - ExpoVlow1 = AnaExpo(TCAmpVar->Kn2 * Vlow1); - BlendVlow1 = 1 / (1 + TCAmpVar->Kn5 * ExpoVlow1); - Vlow2 = -VPin3; - ExpoVlow2 = AnaExpo(TCAmpVar->Kn2 * Vlow2); - BlendVlow2 = 1 / (1 + TCAmpVar->Kn5 * ExpoVlow2); - - - Ibot = BlendDel * (TCAmpVar->Kn1 * ExpoVlow1 * BlendVlow1 + - (1 - BlendVlow1) * TCAmpVar->Kn4 * Vlow1 * Vlow1) + - InvBlendDel * (TCAmpVar->Kn1 * ExpoVlow2 * BlendVlow2 + - (1 - BlendVlow2) * TCAmpVar->Kn4 * Vlow2 * Vlow2); - } - - if (AmpRange == Normal) { - Vhighcmp = AnaVdd - VPin2; - if (fabs(Vhighcmp) < 0.000708) { - BlendVhighcmp = 1 / (1 + AnaExpo(100000L * Vhighcmp)); - MaxVddV2 = VPin2 * BlendVhighcmp + AnaVdd * (1 - BlendVhighcmp); - } else { - if (Vhighcmp > 0) - MaxVddV2 = AnaVdd; - else - MaxVddV2 = VPin2; - } - } else - MaxVddV2 = AnaVdd; - - if (Sign == Zero) { - Vtop1 = VPin3 - AnaVdd; - ExpoVtop1 = AnaExpo(TCAmpVar->Kn2 * Vtop1); - BlendVtop1 = 1 / (1 + TCAmpVar->Kn5 * ExpoVtop1); - Vtop2 = VPin3 + VPin4 - MaxVddV2; - ExpVtop2 = AnaExpo(TCAmpVar->Kn2 * Vtop2); - BlendVtop2 = 1 / (1 + TCAmpVar->Kn5 * ExpVtop2); - Ihigh = -(BlendDel * (TCAmpVar->Kp1 * ExpoVtop1 * BlendVtop1 + - (1 - BlendVtop1) * TCAmpVar->Kp4 * Vtop1 * Vtop1) + - InvBlendDel * (TCAmpVar->Kp1 * ExpVtop2 * BlendVtop2 + - (1 - BlendVtop2) * TCAmpVar->Kp4 * Vtop2 * Vtop2)); - } else { - if (Sign == Positive) { - Vtop2 = VPin3 + VPin4 - MaxVddV2; - ExpVtop2 = AnaExpo(TCAmpVar->Kn2 * Vtop2); - BlendVtop2 = 1 / (1 + TCAmpVar->Kn5 * ExpVtop2); - Ihigh = -(TCAmpVar->Kp1 * ExpVtop2 * BlendVtop2 + - (1 - BlendVtop2) * TCAmpVar->Kp4 * Vtop2 * Vtop2); - } else { - Vtop1 = VPin3 - AnaVdd; - ExpoVtop1 = AnaExpo(TCAmpVar->Kn2 * Vtop1); - BlendVtop1 = 1 / (1 + TCAmpVar->Kn5 * ExpoVtop1); - Ihigh = -(TCAmpVar->Kp1 * ExpoVtop1 * BlendVtop1 + - (1 - BlendVtop1) * TCAmpVar->Kp4 * Vtop1 * Vtop1); - } - } - - TCRes = (BlendDel * (1 + VPin3 * TCAmpVar->InvVcross) * - WITH->attr[N_Ineg - 1].UU.r + - InvBlendDel * (1 + (AnaVdd - VPin3) * TCAmpVar->InvVcross) * - WITH->attr[N_Ipos - 1].UU.r) * TCtanch; - - Delta3 = VPin3 - VMem3; - act->Iin = TCAmpVar->TauVout * (Delta3 - VPin2 + VMem2) - Ibot - Ihigh - - Iset * TCRes + TCAmpVar->TauVout * (Delta3 - VPin1 + VMem1) + - TCAmpVar->TauVset * (Delta3 - VPin4 + VMem4) + act->Iin; - AnaCapIin(act); /*Add nodal capacitance*/ - break; - /*Allows internal variable access*/ - - case R_Vset: /*Allows attr^[]. access*/ - WITH = act->inst; - Delta4 = VPin4 - VMem4; - act->Iin = TCAmpVar->TauVset * (Delta4 - VPin1 + VMem1) + - TCAmpVar->TauVset * (Delta4 - VPin2 + VMem2) + - TCAmpVar->TauVset * (Delta4 - VPin3 + VMem3) + act->Iin; - AnaCapIin(act); /*Add nodal capacitance*/ - break; - /*Allows internal variable access*/ - - default: - printf("Data Structure Corruption\n"); - _Escape(1002); - break; - } + AnaExt_rec *Pin1Ptr; + double VPin1, VMem1; + AnaExt_rec *Pin2Ptr; + double VPin2, VMem2; + AnaExt_rec *Pin3Ptr; + double VPin3, VMem3; + AnaExt_rec *Pin4Ptr; + double VPin4, VMem4; + TCAmpConst *TCAmpVar; + Anainstlist *A_Gate; + + double Del, BlendDel, InvBlendDel, V1Offset, V2Offset, MaxV1V2, MinV1V2, + Vcmp, BlendVcmp, ExpoVstr, BlendVstr, Vstr, TCtanch, BlendVcmpVdd, + MinV1V2Vdd, VcmpVdd, Vbot, ExpoVbot, BlendVbot, Ibot, Vhighcmp, + BlendVhighcmp, MaxVddV2, Vtop1, ExpoVtop1, BlendVtop1, Vtop2, + ExpVtop2, BlendVtop2, Ihigh; + Deltasign Sign; + double TCRes, Iset, Vlow1, ExpoVlow1, BlendVlow1, Vlow2, ExpoVlow2, + BlendVlow2, Delta1, Delta2, Delta3, Delta4; + log_grec *WITH; + + + + WITH = act->inst; + + /*Implementation notes*/ + /*1. Use Dtlast, Dtlast+Accum for time values*/ + /*Numbers used below are in 'virtual pin numbers' */ + /*Pin1=Vplus*/ + /*Pin3=Vout*/ + /*Pin2=Vminus*/ + /*Pin4=Vset*/ + + + A_Gate = (Anainstlist *)WITH->info; + TCAmpVar = (TCAmpConst *)A_Gate->InstVar; + Pin1Ptr = (AnaExt_rec *)WITH->pin[R_Vplus - 1]->info; + VPin1 = Pin1Ptr->now; + VMem1 = A_Gate->Pininfo[R_Vplus - 1].Vmem; + Pin2Ptr = (AnaExt_rec *)WITH->pin[R_Vminus - 1]->info; + VPin2 = Pin2Ptr->now; + VMem2 = A_Gate->Pininfo[R_Vminus - 1].Vmem; + Pin3Ptr = (AnaExt_rec *)WITH->pin[R_Vout - 1]->info; + VPin3 = Pin3Ptr->now; + VMem3 = A_Gate->Pininfo[R_Vout - 1].Vmem; + Pin4Ptr = (AnaExt_rec *)WITH->pin[R_Vset - 1]->info; + VPin4 = Pin4Ptr->now; + VMem4 = A_Gate->Pininfo[R_Vset - 1].Vmem; + switch (act->pin) + { + case R_Vplus: /*Allows attr^[]. access*/ + WITH = act->inst; + Delta1 = VPin1 - VMem1; + act->Iin = TCAmpVar->TauVdiff * (Delta1 - VPin2 + VMem2) + + TCAmpVar->TauVout * (Delta1 - VPin3 + VMem3) + + TCAmpVar->TauVset * (Delta1 - VPin4 + VMem4) + act->Iin; + AnaCapIin(act); /*Add nodal capacitance*/ + break; + /*Allows internal variable access*/ + + case R_Vminus: /*Allows attr^[]. access*/ + WITH = act->inst; + Delta2 = VPin2 - VMem2; + act->Iin = TCAmpVar->TauVout * (Delta2 - VPin3 + VMem3) + + TCAmpVar->TauVdiff * (Delta2 - VPin1 + VMem1) + + TCAmpVar->TauVset * (Delta2 - VPin4 + VMem4) + act->Iin; + AnaCapIin(act); /*Add nodal capacitance*/ + break; + /*Allows internal variable access*/ + + case R_Vout: /*Allows attr^[]. access*/ + WITH = act->inst; + V1Offset = VPin1 + TCAmpVar->HalfOffset; + V2Offset = VPin2 - TCAmpVar->HalfOffset; + Del = V1Offset - V2Offset; + if (fabs(Del) < 0.000708) { + BlendDel = 1 / (1 + AnaExpo(100000L * Del)); + InvBlendDel = 1 - BlendDel; + MaxV1V2 = V2Offset * BlendDel + V1Offset * InvBlendDel; + MinV1V2 = V1Offset * BlendDel + V2Offset * InvBlendDel; + Sign = Zero; + } + else + { + if (Del > 0) { + BlendDel = 0.0; + InvBlendDel = 1.0; + MaxV1V2 = V1Offset; + MinV1V2 = V2Offset; + Sign = Positive; + } + else + { + BlendDel = 1.0; + InvBlendDel = 0.0; + MaxV1V2 = V2Offset; + MinV1V2 = V1Offset; + Sign = Negative; + } + } + + Vcmp = MaxV1V2 - VPin4; + if (fabs(Vcmp) < 0.000708) { + BlendVcmp = 1 / (1 + AnaExpo(100000L * Vcmp)); + Vstr = MaxV1V2 * BlendVcmp + VPin4 * (1 - BlendVcmp); + } + else + { + if (Vcmp > 0) + Vstr = VPin4; + else + Vstr = MaxV1V2; + } + + ExpoVstr = AnaExpo(TCAmpVar->Kn2 * Vstr); + BlendVstr = 1 / (1 + TCAmpVar->Kn5 * ExpoVstr); + Iset = TCAmpVar->Kn1 * ExpoVstr * BlendVstr + + TCAmpVar->Kn4 * Vstr * Vstr * (1 - BlendVstr); + + TCtanch = AnaTanch(Del * TCAmpVar->HalfIKn2); + + if (AmpRange == Normal) + { + VcmpVdd = AnaVdd - MinV1V2; + if (fabs(VcmpVdd) < 0.000708) + { + BlendVcmpVdd = 1 / (1 + AnaExpo(100000L * VcmpVdd)); + MinV1V2Vdd = AnaVdd * BlendVcmpVdd + MinV1V2 * (1 - BlendVcmpVdd); + } + else + { + if (VcmpVdd > 0) + MinV1V2Vdd = MinV1V2; + else + MinV1V2Vdd = AnaVdd; + } + + Vbot = MinV1V2Vdd - VPin3; + ExpoVbot = AnaExpo(TCAmpVar->Kn2 * Vbot); + BlendVbot = 1 / (1 + TCAmpVar->Kn5 * ExpoVbot); + Ibot = TCAmpVar->Kn1 * ExpoVbot * BlendVbot + + (1 - BlendVbot) * TCAmpVar->Kn4 * Vbot * Vbot; + } + else + { + Vlow1 = VPin4 - VPin3; + ExpoVlow1 = AnaExpo(TCAmpVar->Kn2 * Vlow1); + BlendVlow1 = 1 / (1 + TCAmpVar->Kn5 * ExpoVlow1); + Vlow2 = -VPin3; + ExpoVlow2 = AnaExpo(TCAmpVar->Kn2 * Vlow2); + BlendVlow2 = 1 / (1 + TCAmpVar->Kn5 * ExpoVlow2); + + Ibot = BlendDel * (TCAmpVar->Kn1 * ExpoVlow1 * BlendVlow1 + + (1 - BlendVlow1) * TCAmpVar->Kn4 * Vlow1 * Vlow1) + + InvBlendDel * (TCAmpVar->Kn1 * ExpoVlow2 * BlendVlow2 + + (1 - BlendVlow2) * TCAmpVar->Kn4 * Vlow2 * Vlow2); + } + + if (AmpRange == Normal) + { + Vhighcmp = AnaVdd - VPin2; + if (fabs(Vhighcmp) < 0.000708) { + BlendVhighcmp = 1 / (1 + AnaExpo(100000L * Vhighcmp)); + MaxVddV2 = VPin2 * BlendVhighcmp + AnaVdd * (1 - BlendVhighcmp); + } + else + { + if (Vhighcmp > 0) + MaxVddV2 = AnaVdd; + else + MaxVddV2 = VPin2; + } + } + else + MaxVddV2 = AnaVdd; + + if (Sign == Zero) + { + Vtop1 = VPin3 - AnaVdd; + ExpoVtop1 = AnaExpo(TCAmpVar->Kn2 * Vtop1); + BlendVtop1 = 1 / (1 + TCAmpVar->Kn5 * ExpoVtop1); + Vtop2 = VPin3 + VPin4 - MaxVddV2; + ExpVtop2 = AnaExpo(TCAmpVar->Kn2 * Vtop2); + BlendVtop2 = 1 / (1 + TCAmpVar->Kn5 * ExpVtop2); + Ihigh = -(BlendDel * (TCAmpVar->Kp1 * ExpoVtop1 * BlendVtop1 + + (1 - BlendVtop1) * TCAmpVar->Kp4 * Vtop1 * Vtop1) + + InvBlendDel * (TCAmpVar->Kp1 * ExpVtop2 * BlendVtop2 + + (1 - BlendVtop2) * TCAmpVar->Kp4 * Vtop2 * Vtop2)); + } + else + { + if (Sign == Positive) + { + Vtop2 = VPin3 + VPin4 - MaxVddV2; + ExpVtop2 = AnaExpo(TCAmpVar->Kn2 * Vtop2); + BlendVtop2 = 1 / (1 + TCAmpVar->Kn5 * ExpVtop2); + Ihigh = -(TCAmpVar->Kp1 * ExpVtop2 * BlendVtop2 + + (1 - BlendVtop2) * TCAmpVar->Kp4 * Vtop2 * Vtop2); + } + else + { + Vtop1 = VPin3 - AnaVdd; + ExpoVtop1 = AnaExpo(TCAmpVar->Kn2 * Vtop1); + BlendVtop1 = 1 / (1 + TCAmpVar->Kn5 * ExpoVtop1); + Ihigh = -(TCAmpVar->Kp1 * ExpoVtop1 * BlendVtop1 + + (1 - BlendVtop1) * TCAmpVar->Kp4 * Vtop1 * Vtop1); + } + } + + TCRes = (BlendDel * (1 + VPin3 * TCAmpVar->InvVcross) * + WITH->attr[N_Ineg - 1].UU.r + + InvBlendDel * (1 + (AnaVdd - VPin3) * TCAmpVar->InvVcross) * + WITH->attr[N_Ipos - 1].UU.r) * TCtanch; + + Delta3 = VPin3 - VMem3; + act->Iin = TCAmpVar->TauVout * (Delta3 - VPin2 + VMem2) - Ibot - Ihigh - + Iset * TCRes + TCAmpVar->TauVout * (Delta3 - VPin1 + VMem1) + + TCAmpVar->TauVset * (Delta3 - VPin4 + VMem4) + act->Iin; + AnaCapIin(act); /*Add nodal capacitance*/ + break; + /*Allows internal variable access*/ + + case R_Vset: /*Allows attr^[]. access*/ + WITH = act->inst; + Delta4 = VPin4 - VMem4; + act->Iin = TCAmpVar->TauVset * (Delta4 - VPin1 + VMem1) + + TCAmpVar->TauVset * (Delta4 - VPin2 + VMem2) + + TCAmpVar->TauVset * (Delta4 - VPin3 + VMem3) + act->Iin; + AnaCapIin(act); /*Add nodal capacitance*/ + break; + /*Allows internal variable access*/ + + default: + printf("Data Structure Corruption\n"); + _Escape(1002); + break; + } } /*Iin_TCAmp*/ diff --git a/log/src/ana/thermal.c b/log/src/ana/thermal.c index da0c0c9..1ea48df 100644 --- a/log/src/ana/thermal.c +++ b/log/src/ana/thermal.c @@ -125,12 +125,11 @@ Analog_32_action *act; { short Tx, Ty; Anainstlist *A_Gate; - ThermalConst *ThermalVar, *WITH; + ThermalConst *ThermalVar; char Newout[256]; A_Gate = (Anainstlist *)act->inst->info; ThermalVar = (ThermalConst *)A_Gate->InstVar; - WITH = ThermalVar; (*AnaLogglobals->hook.hidecursor)(); Tx = 0; Ty = 0; @@ -175,12 +174,11 @@ Analog_32_action *act; { short Tx, Ty; Anainstlist *A_Gate; - ThermalConst *ThermalVar, *WITH; + ThermalConst *ThermalVar; A_Gate = (Anainstlist *)act->inst->info; ThermalVar = (ThermalConst *)A_Gate->InstVar; - WITH = ThermalVar; (*AnaLogglobals->hook.hidecursor)(); m_color((long)AnaLogglobals->color.backgr); Tx = 0; @@ -199,7 +197,6 @@ Analog_32_action *act; { long Attrnum; log_grec *WITH; - log_gattrrec *WITH1; ThermalConst *ThermalVar; Anainstlist *A_Gate; @@ -293,7 +290,6 @@ Analog_32_action *act; static void Openconfig_Thermal(act) Analog_32_action *act; { - long Index; log_grec *WITH; if (!act->ok) @@ -314,7 +310,6 @@ static void Readgate_Thermal(act) Analog_32_action *act; { log_grec *WITH; - char STR1[256]; WITH = act->inst; if (AnaOldmodel && !WITH->attr[0].blnk) { diff --git a/log/src/ana/vdiff.c b/log/src/ana/vdiff.c index 2b8190c..cae8b7e 100644 --- a/log/src/ana/vdiff.c +++ b/log/src/ana/vdiff.c @@ -188,74 +188,76 @@ static double Pulsemaker(log_grec *Inst, double Ftime, int First) static void Ex_Vdiff(Analog_32_action *act) { - /*Vdifferent*/ - double MinI1, MinI2, dI1dV1, dI1dV2, dI2dV1, dI2dV2; - AnaExt_rec *Pin1Ptr, *Pin2Ptr; - long Pin1, Pin2; - double VPin1, VPin2; - VdiffConst *VdiffVar; - Anainstlist *A_Gate; - double Fout, Ftime; - log_grec *WITH; - AnaMatRec *WITH1; - - WITH = act->inst; - A_Gate = (Anainstlist *)WITH->info; - VdiffVar = (VdiffConst *)A_Gate->InstVar; - Pin1Ptr = (AnaExt_rec *)WITH->pin[0]->info; - Pin1 = Pin1Ptr->nodenum; - VPin1 = Pin1Ptr->last; - Pin2Ptr = (AnaExt_rec *)WITH->pin[1]->info; - Pin2 = Pin2Ptr->nodenum; - VPin2 = Pin2Ptr->last; /*Use with statement to get to internal variables*/ - if (WITH->attr[N_Freeze - 1].UU.b) - Ftime = VdiffVar->Timez; - else - Ftime = VdiffVar->Timez + AnaDt; - switch (WITH->attr[N_Type - 1].UU.nv) { - - case 0: - Fout = WITH->attr[N_Dc - 1].UU.r; - break; - - case 1: - Fout = Pulsemaker(act->inst, Ftime, VdiffVar->First); - break; - - case 2: - if (Ftime < WITH->attr[N_sDelay - 1].UU.r) - Fout = WITH->attr[N_sOffset - 1].UU.r + WITH->attr[N_sAmp - 1].UU.r * - sin(6.2831853 * (WITH->attr[N_sPhase - 1].UU.r / 360)); - else - Fout = WITH->attr[N_sOffset - 1].UU.r + WITH->attr[N_sAmp - 1].UU.r * - sin(6.2831853 * (WITH->attr[N_sFreq - 1].UU.r * - (Ftime - WITH->attr[N_sDelay - 1].UU.r) + - WITH->attr[N_sPhase - 1].UU.r / 360)); -/* p2c: vtools.text, line 3723: Note: - * Line breaker spent 2.0+1.00 seconds, 5000 tries on line 224 [251] */ - break; - } - VdiffVar->Videal = Fout; - MinI1 = VdiffVar->Conductance * (VPin2 + Fout - VPin1); - MinI2 = -MinI1; - dI1dV1 = VdiffVar->Conductance; - dI1dV2 = -VdiffVar->Conductance; - dI2dV1 = -VdiffVar->Conductance; - dI2dV2 = VdiffVar->Conductance; - WITH1 = AnaSystem; - WITH1->Mat[Pin1][AnaSysCol] += MinI1; - WITH1->Mat[Pin1][Pin1] += dI1dV1; - WITH1->Mat[Pin1][Pin2] += dI1dV2; - WITH1->Mat[Pin2][AnaSysCol] += MinI2; - WITH1->Mat[Pin2][Pin1] += dI2dV1; - WITH1->Mat[Pin2][Pin2] += dI2dV2; - WITH1->MatNZ[Pin1][AnaSysCol] = true; - WITH1->MatNZ[Pin1][Pin1] = true; - WITH1->MatNZ[Pin1][Pin2] = true; - WITH1->MatNZ[Pin2][AnaSysCol] = true; - WITH1->MatNZ[Pin2][Pin1] = true; - WITH1->MatNZ[Pin2][Pin2] = true; - AnaCapex(act->inst); + /*Vdifferent*/ + double MinI1, MinI2, dI1dV1, dI1dV2, dI2dV1, dI2dV2; + AnaExt_rec *Pin1Ptr, *Pin2Ptr; + long Pin1, Pin2; + double VPin1, VPin2; + VdiffConst *VdiffVar; + Anainstlist *A_Gate; + double Fout, Ftime; + log_grec *WITH; + AnaMatRec *WITH1; + + WITH = act->inst; + A_Gate = (Anainstlist *)WITH->info; + VdiffVar = (VdiffConst *)A_Gate->InstVar; + Pin1Ptr = (AnaExt_rec *)WITH->pin[0]->info; + Pin1 = Pin1Ptr->nodenum; + VPin1 = Pin1Ptr->last; + Pin2Ptr = (AnaExt_rec *)WITH->pin[1]->info; + Pin2 = Pin2Ptr->nodenum; + VPin2 = Pin2Ptr->last; /*Use with statement to get to internal variables*/ + if (WITH->attr[N_Freeze - 1].UU.b) + Ftime = VdiffVar->Timez; + else + Ftime = VdiffVar->Timez + AnaDt; + + switch (WITH->attr[N_Type - 1].UU.nv) + { + case 0: + Fout = WITH->attr[N_Dc - 1].UU.r; + break; + + case 1: + Fout = Pulsemaker(act->inst, Ftime, VdiffVar->First); + break; + + case 2: + if (Ftime < WITH->attr[N_sDelay - 1].UU.r) + Fout = WITH->attr[N_sOffset - 1].UU.r + WITH->attr[N_sAmp - 1].UU.r * + sin(6.2831853 * (WITH->attr[N_sPhase - 1].UU.r / 360)); + else + Fout = WITH->attr[N_sOffset - 1].UU.r + WITH->attr[N_sAmp - 1].UU.r * + sin(6.2831853 * (WITH->attr[N_sFreq - 1].UU.r * + (Ftime - WITH->attr[N_sDelay - 1].UU.r) + + WITH->attr[N_sPhase - 1].UU.r / 360)); + break; + + default: + Fout = 0; + } + VdiffVar->Videal = Fout; + MinI1 = VdiffVar->Conductance * (VPin2 + Fout - VPin1); + MinI2 = -MinI1; + dI1dV1 = VdiffVar->Conductance; + dI1dV2 = -VdiffVar->Conductance; + dI2dV1 = -VdiffVar->Conductance; + dI2dV2 = VdiffVar->Conductance; + WITH1 = AnaSystem; + WITH1->Mat[Pin1][AnaSysCol] += MinI1; + WITH1->Mat[Pin1][Pin1] += dI1dV1; + WITH1->Mat[Pin1][Pin2] += dI1dV2; + WITH1->Mat[Pin2][AnaSysCol] += MinI2; + WITH1->Mat[Pin2][Pin1] += dI2dV1; + WITH1->Mat[Pin2][Pin2] += dI2dV2; + WITH1->MatNZ[Pin1][AnaSysCol] = true; + WITH1->MatNZ[Pin1][Pin1] = true; + WITH1->MatNZ[Pin1][Pin2] = true; + WITH1->MatNZ[Pin2][AnaSysCol] = true; + WITH1->MatNZ[Pin2][Pin1] = true; + WITH1->MatNZ[Pin2][Pin2] = true; + AnaCapex(act->inst); } /*Ex_Vdiff*/ /****************************************************************************/ @@ -265,94 +267,98 @@ static void Ex_Vdiff(Analog_32_action *act) static void Iin_Vdiff(Analog_32_action *act) { - /*Vdifferent*/ - AnaExt_rec *Pin1Ptr, *Pin2Ptr; - double VPin1, Vpin2; - VdiffConst *VdiffVar; - Anainstlist *A_Gate; - double Fout, Ftime; - log_grec *WITH; - - WITH = act->inst; - A_Gate = (Anainstlist *)WITH->info; - VdiffVar = (VdiffConst *)A_Gate->InstVar; - Pin1Ptr = (AnaExt_rec *)WITH->pin[0]->info; - VPin1 = Pin1Ptr->now; - Pin2Ptr = (AnaExt_rec *)WITH->pin[1]->info; - Vpin2 = Pin2Ptr->now; - switch (act->pin) { - - case 1: - WITH = act->inst; - if (WITH->attr[N_Freeze - 1].UU.b) - Ftime = VdiffVar->Timez; - else - Ftime = VdiffVar->Timez + AnaDtlast; - switch (WITH->attr[N_Type - 1].UU.nv) { - - case 0: - Fout = WITH->attr[N_Dc - 1].UU.r; - break; - - case 1: - Fout = Pulsemaker(act->inst, Ftime, VdiffVar->First); - break; - - case 2: - if (Ftime < WITH->attr[N_sDelay - 1].UU.r) - Fout = WITH->attr[N_sOffset - 1].UU.r + WITH->attr[N_sAmp - 1].UU.r * - sin(6.2831853 * (WITH->attr[N_sPhase - 1].UU.r / 360)); - else - Fout = WITH->attr[N_sOffset - 1].UU.r + WITH->attr[N_sAmp - 1].UU.r * - sin(6.2831853 * (WITH->attr[N_sFreq - 1].UU.r * - (Ftime - WITH->attr[N_sDelay - 1].UU.r) + - WITH->attr[N_sPhase - 1].UU.r / 360)); -/* p2c: vtools.text, line 3723: - * Note: Line breaker spent 3.0 seconds, 5000 tries on line 301 [251] */ - break; - } - act->Iin = VdiffVar->Conductance * (VPin1 - Vpin2 - Fout) + act->Iin; - AnaCapIin(act); - break; - - case 2: - WITH = act->inst; - if (WITH->attr[N_Freeze - 1].UU.b) - Ftime = VdiffVar->Timez; - else - Ftime = VdiffVar->Timez + AnaDtlast; - switch (WITH->attr[N_Type - 1].UU.nv) { - - case 0: - Fout = WITH->attr[N_Dc - 1].UU.r; - break; - - case 1: - Fout = Pulsemaker(act->inst, Ftime, VdiffVar->First); - break; - - case 2: - if (Ftime < WITH->attr[N_sDelay - 1].UU.r) - Fout = WITH->attr[N_sOffset - 1].UU.r + WITH->attr[N_sAmp - 1].UU.r * - sin(6.2831853 * (WITH->attr[N_sPhase - 1].UU.r / 360)); - else - Fout = WITH->attr[N_sOffset - 1].UU.r + WITH->attr[N_sAmp - 1].UU.r * - sin(6.2831853 * (WITH->attr[N_sFreq - 1].UU.r * - (Ftime - WITH->attr[N_sDelay - 1].UU.r) + - WITH->attr[N_sPhase - 1].UU.r / 360)); -/* p2c: vtools.text, line 3723: Note: - * Line breaker spent 2.0+1.00 seconds, 5000 tries on line 334 [251] */ - break; - } - act->Iin = VdiffVar->Conductance * (Vpin2 + Fout - VPin1) + act->Iin; - AnaCapIin(act); - break; - - default: - printf("Data Structure Corruption\n"); - _Escape(1002); - break; - } + /*Vdifferent*/ + AnaExt_rec *Pin1Ptr, *Pin2Ptr; + double VPin1, Vpin2; + VdiffConst *VdiffVar; + Anainstlist *A_Gate; + double Fout, Ftime; + log_grec *WITH; + + WITH = act->inst; + A_Gate = (Anainstlist *)WITH->info; + VdiffVar = (VdiffConst *)A_Gate->InstVar; + Pin1Ptr = (AnaExt_rec *)WITH->pin[0]->info; + VPin1 = Pin1Ptr->now; + Pin2Ptr = (AnaExt_rec *)WITH->pin[1]->info; + Vpin2 = Pin2Ptr->now; + switch (act->pin) + { + case 1: + WITH = act->inst; + if (WITH->attr[N_Freeze - 1].UU.b) + Ftime = VdiffVar->Timez; + else + Ftime = VdiffVar->Timez + AnaDtlast; + switch (WITH->attr[N_Type - 1].UU.nv) + { + case 0: + Fout = WITH->attr[N_Dc - 1].UU.r; + break; + + case 1: + Fout = Pulsemaker(act->inst, Ftime, VdiffVar->First); + break; + + case 2: + if (Ftime < WITH->attr[N_sDelay - 1].UU.r) + Fout = WITH->attr[N_sOffset - 1].UU.r + WITH->attr[N_sAmp - 1].UU.r * + sin(6.2831853 * (WITH->attr[N_sPhase - 1].UU.r / 360)); + else + Fout = WITH->attr[N_sOffset - 1].UU.r + WITH->attr[N_sAmp - 1].UU.r * + sin(6.2831853 * (WITH->attr[N_sFreq - 1].UU.r * + (Ftime - WITH->attr[N_sDelay - 1].UU.r) + + WITH->attr[N_sPhase - 1].UU.r / 360)); + break; + + default: + Fout = 0; + } + act->Iin = VdiffVar->Conductance * (VPin1 - Vpin2 - Fout) + act->Iin; + AnaCapIin(act); + break; + + case 2: + WITH = act->inst; + if (WITH->attr[N_Freeze - 1].UU.b) + Ftime = VdiffVar->Timez; + else + Ftime = VdiffVar->Timez + AnaDtlast; + + switch (WITH->attr[N_Type - 1].UU.nv) + { + case 0: + Fout = WITH->attr[N_Dc - 1].UU.r; + break; + + case 1: + Fout = Pulsemaker(act->inst, Ftime, VdiffVar->First); + break; + + case 2: + if (Ftime < WITH->attr[N_sDelay - 1].UU.r) + Fout = WITH->attr[N_sOffset - 1].UU.r + WITH->attr[N_sAmp - 1].UU.r * + sin(6.2831853 * (WITH->attr[N_sPhase - 1].UU.r / 360)); + else + Fout = WITH->attr[N_sOffset - 1].UU.r + WITH->attr[N_sAmp - 1].UU.r * + sin(6.2831853 * (WITH->attr[N_sFreq - 1].UU.r * + (Ftime - WITH->attr[N_sDelay - 1].UU.r) + + WITH->attr[N_sPhase - 1].UU.r / 360)); + break; + + default: + Fout = 0; + } + + act->Iin = VdiffVar->Conductance * (Vpin2 + Fout - VPin1) + act->Iin; + AnaCapIin(act); + break; + + default: + printf("Data Structure Corruption\n"); + _Escape(1002); + break; + } } /*Iin_Vdiff*/ @@ -360,7 +366,6 @@ static void GetCnf_Vdiff(ICVdiff *NewIC) { int Found; char Arg[256], Keyword[256]; - long Dummy; ICVdiff *WITH; char *STR1; @@ -378,7 +383,6 @@ static void GetCnf_Vdiff(ICVdiff *NewIC) if (!strcmp(Keyword, "RES")) { TRY(try1); WITH->ICRes = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try1); WITH->ICRes = 50.0; ENDTRY(try1); @@ -398,7 +402,6 @@ static void GetCnf_Vdiff(ICVdiff *NewIC) if (!strcmp(Keyword, "DC")) { TRY(try2); WITH->ICdc = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try2); WITH->ICdc = 0.0; ENDTRY(try2); @@ -408,7 +411,6 @@ static void GetCnf_Vdiff(ICVdiff *NewIC) if (!strcmp(Keyword, "OFFSET")) { TRY(try3); WITH->ICsOffset = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try3); WITH->ICsOffset = AnaVdd / 2; ENDTRY(try3); @@ -416,7 +418,6 @@ static void GetCnf_Vdiff(ICVdiff *NewIC) if (!strcmp(Keyword, "AMP")) { TRY(try4); WITH->ICsAmp = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try4); WITH->ICsAmp = AnaVdd / 5; ENDTRY(try4); @@ -424,7 +425,6 @@ static void GetCnf_Vdiff(ICVdiff *NewIC) if (!strcmp(Keyword, "FREQ")) { TRY(try5); WITH->ICsFreq = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try5); WITH->ICsFreq = 1 / (AnaDtmax * 10); ENDTRY(try5); @@ -432,7 +432,6 @@ static void GetCnf_Vdiff(ICVdiff *NewIC) if (!strcmp(Keyword, "PHASE")) { TRY(try6); WITH->ICsPhase = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try6); WITH->ICsPhase = 0.0; ENDTRY(try6); @@ -440,7 +439,6 @@ static void GetCnf_Vdiff(ICVdiff *NewIC) if (!strcmp(Keyword, "DELAY")) { TRY(try7); WITH->ICsDelay = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try7); WITH->ICsDelay = 0.0; ENDTRY(try7); @@ -451,7 +449,6 @@ static void GetCnf_Vdiff(ICVdiff *NewIC) if (!strcmp(Keyword, "VINIT")) { TRY(try8); WITH->ICpVinit = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try8); WITH->ICpVinit = 0.0; ENDTRY(try8); @@ -459,7 +456,6 @@ static void GetCnf_Vdiff(ICVdiff *NewIC) if (!strcmp(Keyword, "VPULSE")) { TRY(try9); WITH->ICpVpulse = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try9); WITH->ICpVpulse = AnaVdd; ENDTRY(try9); @@ -467,7 +463,6 @@ static void GetCnf_Vdiff(ICVdiff *NewIC) if (!strcmp(Keyword, "DELAY")) { TRY(try10); WITH->ICpDelay = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try10); WITH->ICpDelay = 6 * AnaDtmax; ENDTRY(try10); @@ -475,7 +470,6 @@ static void GetCnf_Vdiff(ICVdiff *NewIC) if (!strcmp(Keyword, "RISE")) { TRY(try11); WITH->ICpRise = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try11); WITH->ICpRise = AnaDtmax * 3; ENDTRY(try11); @@ -483,7 +477,6 @@ static void GetCnf_Vdiff(ICVdiff *NewIC) if (!strcmp(Keyword, "FALL")) { TRY(try12); WITH->ICpFall = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try12); WITH->ICpFall = AnaDtmax * 3; ENDTRY(try12); @@ -491,7 +484,6 @@ static void GetCnf_Vdiff(ICVdiff *NewIC) if (!strcmp(Keyword, "WIDTH")) { TRY(try13); WITH->ICpWidth = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try13); WITH->ICpWidth = 6 * AnaDtmax; ENDTRY(try13); @@ -499,7 +491,6 @@ static void GetCnf_Vdiff(ICVdiff *NewIC) if (!strcmp(Keyword, "PERIOD")) { TRY(try14); WITH->ICpPeriod = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try14); WITH->ICpPeriod = 20 * AnaDtmax; ENDTRY(try14); @@ -507,7 +498,6 @@ static void GetCnf_Vdiff(ICVdiff *NewIC) if (!strcmp(Keyword, "RDELAY")) { TRY(try15); WITH->ICpRDelay = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try15); WITH->ICpRDelay = 0.0; ENDTRY(try15); diff --git a/log/src/ana/vswitch.c b/log/src/ana/vswitch.c index 46eb4d1..010f607 100644 --- a/log/src/ana/vswitch.c +++ b/log/src/ana/vswitch.c @@ -191,43 +191,46 @@ static double Monostablemaker(log_grec *Inst, double time, int State, int Ex, do static void Ex_Vswitch(Analog_32_action *act) { - double MinI1, dI1dV1; - AnaExt_rec *Pin1Ptr; - long Pin1; - double VPin1; - VswitchConst *VswitchVar; - Anainstlist *A_Gate; - double Fout; - log_grec *WITH; - AnaMatRec *WITH1; - - WITH = act->inst; - A_Gate = (Anainstlist *)WITH->info; - VswitchVar = (VswitchConst *)A_Gate->InstVar; - Pin1Ptr = (AnaExt_rec *)WITH->pin[0]->info; - Pin1 = Pin1Ptr->nodenum; - VPin1 = Pin1Ptr->last; /*Use with statement to get to internal variables*/ - switch (WITH->attr[N_Type - 1].UU.nv) { - - case Bistable: - Fout = Bistablemaker(act->inst, VswitchVar->Time, VswitchVar->State, true, - VswitchVar->OldVideal); - break; - - case Monostable: - Fout = Monostablemaker(act->inst, VswitchVar->Time, VswitchVar->State, - true, VswitchVar->OldVideal); - break; - } - VswitchVar->NewVideal = Fout; - MinI1 = VswitchVar->Conductance * (Fout - VPin1); - dI1dV1 = VswitchVar->Conductance; - WITH1 = AnaSystem; - WITH1->Mat[Pin1][AnaSysCol] += MinI1; - WITH1->Mat[Pin1][Pin1] += dI1dV1; - WITH1->MatNZ[Pin1][AnaSysCol] = true; - WITH1->MatNZ[Pin1][Pin1] = true; - AnaCapex(act->inst); + double MinI1, dI1dV1; + AnaExt_rec *Pin1Ptr; + long Pin1; + double VPin1; + VswitchConst *VswitchVar; + Anainstlist *A_Gate; + double Fout; + log_grec *WITH; + AnaMatRec *WITH1; + + WITH = act->inst; + A_Gate = (Anainstlist *)WITH->info; + VswitchVar = (VswitchConst *)A_Gate->InstVar; + Pin1Ptr = (AnaExt_rec *)WITH->pin[0]->info; + Pin1 = Pin1Ptr->nodenum; + VPin1 = Pin1Ptr->last; /*Use with statement to get to internal variables*/ + switch (WITH->attr[N_Type - 1].UU.nv) + { + case Bistable: + Fout = Bistablemaker(act->inst, VswitchVar->Time, VswitchVar->State, true, + VswitchVar->OldVideal); + break; + + case Monostable: + Fout = Monostablemaker(act->inst, VswitchVar->Time, VswitchVar->State, + true, VswitchVar->OldVideal); + break; + + default: + Fout = 0; + } + VswitchVar->NewVideal = Fout; + MinI1 = VswitchVar->Conductance * (Fout - VPin1); + dI1dV1 = VswitchVar->Conductance; + WITH1 = AnaSystem; + WITH1->Mat[Pin1][AnaSysCol] += MinI1; + WITH1->Mat[Pin1][Pin1] += dI1dV1; + WITH1->MatNZ[Pin1][AnaSysCol] = true; + WITH1->MatNZ[Pin1][Pin1] = true; + AnaCapex(act->inst); } /*Ex_Vswitch*/ @@ -238,43 +241,47 @@ static void Ex_Vswitch(Analog_32_action *act) static void Iin_Vswitch(Analog_32_action *act) { - AnaExt_rec *Pin1Ptr; - double VPin1; - VswitchConst *VswitchVar; - Anainstlist *A_Gate; - double Fout; - log_grec *WITH; - - WITH = act->inst; - A_Gate = (Anainstlist *)WITH->info; - VswitchVar = (VswitchConst *)A_Gate->InstVar; - Pin1Ptr = (AnaExt_rec *)WITH->pin[0]->info; - VPin1 = Pin1Ptr->now; - switch (act->pin) { - - case 1: - WITH = act->inst; - switch (WITH->attr[N_Type - 1].UU.nv) { - - case Bistable: - Fout = Bistablemaker(act->inst, VswitchVar->Time, VswitchVar->State, - false, VswitchVar->OldVideal); - break; - - case Monostable: - Fout = Monostablemaker(act->inst, VswitchVar->Time, VswitchVar->State, - false, VswitchVar->OldVideal); - break; - } - act->Iin = VswitchVar->Conductance * (VPin1 - Fout) + act->Iin; - AnaCapIin(act); - break; - - default: - printf("Data Structure Corruption\n"); - _Escape(1002); - break; - } + AnaExt_rec *Pin1Ptr; + double VPin1; + VswitchConst *VswitchVar; + Anainstlist *A_Gate; + double Fout; + log_grec *WITH; + + WITH = act->inst; + A_Gate = (Anainstlist *)WITH->info; + VswitchVar = (VswitchConst *)A_Gate->InstVar; + Pin1Ptr = (AnaExt_rec *)WITH->pin[0]->info; + VPin1 = Pin1Ptr->now; + switch (act->pin) + { + + case 1: + WITH = act->inst; + switch (WITH->attr[N_Type - 1].UU.nv) { + + case Bistable: + Fout = Bistablemaker(act->inst, VswitchVar->Time, VswitchVar->State, + false, VswitchVar->OldVideal); + break; + + case Monostable: + Fout = Monostablemaker(act->inst, VswitchVar->Time, VswitchVar->State, + false, VswitchVar->OldVideal); + break; + + default: + Fout = 0; + } + act->Iin = VswitchVar->Conductance * (VPin1 - Fout) + act->Iin; + AnaCapIin(act); + break; + + default: + printf("Data Structure Corruption\n"); + _Escape(1002); + break; + } } /*Iin_Vswitch*/ @@ -282,7 +289,6 @@ static void GetCnf_Vswitch(ICVswitch *NewIC) { int Found; char Arg[256], Keyword[256]; - long Dummy; ICVswitch *WITH; char *STR1; @@ -294,7 +300,6 @@ static void GetCnf_Vswitch(ICVswitch *NewIC) if (!strcmp(Keyword, "RES")) { TRY(try1); WITH->ICRes = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try1); WITH->ICRes = 50.0; ENDTRY(try1); @@ -311,7 +316,6 @@ static void GetCnf_Vswitch(ICVswitch *NewIC) if (!strcmp(Keyword, "VINIT")) { TRY(try2); WITH->ICbVinit = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try2); WITH->ICbVinit = 0.0; ENDTRY(try2); @@ -319,7 +323,6 @@ static void GetCnf_Vswitch(ICVswitch *NewIC) if (!strcmp(Keyword, "VPULSE")) { TRY(try3); WITH->ICbVpulse = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try3); WITH->ICbVpulse = AnaVdd; ENDTRY(try3); @@ -327,7 +330,6 @@ static void GetCnf_Vswitch(ICVswitch *NewIC) if (!strcmp(Keyword, "RISE")) { TRY(try4); WITH->ICbRise = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try4); WITH->ICbRise = 3 * AnaDtmax; ENDTRY(try4); @@ -335,7 +337,6 @@ static void GetCnf_Vswitch(ICVswitch *NewIC) if (!strcmp(Keyword, "FALL")) { TRY(try5); WITH->ICbFall = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try5); WITH->ICbFall = 3 * AnaDtmax; ENDTRY(try5); @@ -353,7 +354,6 @@ static void GetCnf_Vswitch(ICVswitch *NewIC) if (!strcmp(Keyword, "VINIT")) { TRY(try6); WITH->ICmVinit = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try6); WITH->ICmVinit = 0.0; ENDTRY(try6); @@ -361,7 +361,6 @@ static void GetCnf_Vswitch(ICVswitch *NewIC) if (!strcmp(Keyword, "VPULSE")) { TRY(try7); WITH->ICmVpulse = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try7); WITH->ICmVpulse = AnaVdd; ENDTRY(try7); @@ -369,7 +368,6 @@ static void GetCnf_Vswitch(ICVswitch *NewIC) if (!strcmp(Keyword, "RISE")) { TRY(try8); WITH->ICmRise = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try8); WITH->ICmRise = 3 * AnaDtmax; ENDTRY(try8); @@ -377,7 +375,6 @@ static void GetCnf_Vswitch(ICVswitch *NewIC) if (!strcmp(Keyword, "FALL")) { TRY(try9); WITH->ICmFall = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try9); WITH->ICmFall = 3 * AnaDtmax; ENDTRY(try9); @@ -385,7 +382,6 @@ static void GetCnf_Vswitch(ICVswitch *NewIC) if (!strcmp(Keyword, "WIDTH")) { TRY(try10); WITH->ICmWidth = strtod(Arg, &STR1); - Dummy = STR1 - Arg + 1; RECOVER(try10); WITH->ICmWidth = 6 * AnaDtmax; ENDTRY(try10); @@ -689,11 +685,9 @@ static void Set_Vswitch(Analog_32_action *act) { VswitchConst *VswitchVar; Anainstlist *A_Gate; - log_grec *WITH1; A_Gate = (Anainstlist *)act->inst->info; VswitchVar = (VswitchConst *)A_Gate->InstVar; - WITH1 = act->inst; VswitchVar->Reset_State = VswitchVar->State; VswitchVar->Reset_Videal = VswitchVar->OldVideal; VswitchVar->Reset_Time = VswitchVar->Time - AnaAccum; diff --git a/psys/include/p2c/p2c.h b/psys/include/p2c/p2c.h index 51a33b1..5a41feb 100644 --- a/psys/include/p2c/p2c.h +++ b/psys/include/p2c/p2c.h @@ -172,7 +172,7 @@ typedef struct { } _TEXT; /* Memory allocation */ -# define Malloc(n) (malloc((n) ? (n) : 1) ? 0 : (void*)_OutMem()) +# define Malloc(n) (malloc((n != 0) ? (n) : 1) ? 0 : (void*)_OutMem()) #define Free(p) (free((void*)(p)), (p)=NULL) /* sign extension */ -- GitLab