avoid tcleval() of strings returned by translate2(), show currents of resistors and diodes when annotating.
This commit is contained in:
parent
b98d836be3
commit
3d49ca63c9
21
src/token.c
21
src/token.c
|
|
@ -75,8 +75,10 @@ const char *tcl_hook2(char **res)
|
||||||
unescaped_res = str_replace(*res, "\\}", "}");
|
unescaped_res = str_replace(*res, "\\}", "}");
|
||||||
tclvareval("tclpropeval2 {", unescaped_res, "}" , NULL);
|
tclvareval("tclpropeval2 {", unescaped_res, "}" , NULL);
|
||||||
my_strdup2(1286, &result, tclresult());
|
my_strdup2(1286, &result, tclresult());
|
||||||
|
/* dbg(0, "tcl_hook2: return: %s\n", result);*/
|
||||||
return result;
|
return result;
|
||||||
} else {
|
} else {
|
||||||
|
/* dbg(0, "tcl_hook2: return: %s\n", *res); */
|
||||||
return *res;
|
return *res;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -3151,7 +3153,7 @@ const char *translate(int inst, const char* s)
|
||||||
if(n == 1) {
|
if(n == 1) {
|
||||||
strtolower(dev);
|
strtolower(dev);
|
||||||
len = strlen(path) + strlen(xctx->inst[inst].instname) +
|
len = strlen(path) + strlen(xctx->inst[inst].instname) +
|
||||||
strlen(dev) + 11; /* some extra chars for i(..) wrapper */
|
strlen(dev) + 21; /* some extra chars for i(..) wrapper */
|
||||||
dbg(1, "dev=%s\n", dev);
|
dbg(1, "dev=%s\n", dev);
|
||||||
fqdev = my_malloc(1599, len);
|
fqdev = my_malloc(1599, len);
|
||||||
if(!sim_is_xyce) {
|
if(!sim_is_xyce) {
|
||||||
|
|
@ -3162,7 +3164,9 @@ const char *translate(int inst, const char* s)
|
||||||
dbg(1, "prefix=%c, path=%s\n", prefix, path);
|
dbg(1, "prefix=%c, path=%s\n", prefix, path);
|
||||||
vsource = (prefix == 'v') || (prefix == 'e');
|
vsource = (prefix == 'v') || (prefix == 'e');
|
||||||
if(vsource) my_snprintf(fqdev, len, "i(%c.%s%s.%s)", prefix, path, xctx->inst[inst].instname, dev);
|
if(vsource) my_snprintf(fqdev, len, "i(%c.%s%s.%s)", prefix, path, xctx->inst[inst].instname, dev);
|
||||||
else my_snprintf(fqdev, len, "i(@%c.%s%s.%s)", prefix, path, xctx->inst[inst].instname, dev);
|
else if(prefix == 'd')
|
||||||
|
my_snprintf(fqdev, len, "i(@%c.%s%s.%s[id])", prefix, path, xctx->inst[inst].instname, dev);
|
||||||
|
else my_snprintf(fqdev, len, "i(@%c.%s%s.%s[i])", prefix, path, xctx->inst[inst].instname, dev);
|
||||||
} else {
|
} else {
|
||||||
my_snprintf(fqdev, len, "i(%s%s.%s)", path, xctx->inst[inst].instname, dev);
|
my_snprintf(fqdev, len, "i(%s%s.%s)", path, xctx->inst[inst].instname, dev);
|
||||||
}
|
}
|
||||||
|
|
@ -3278,7 +3282,7 @@ const char *translate(int inst, const char* s)
|
||||||
}
|
}
|
||||||
my_strdup2(1550, &dev, xctx->inst[inst].instname);
|
my_strdup2(1550, &dev, xctx->inst[inst].instname);
|
||||||
strtolower(dev);
|
strtolower(dev);
|
||||||
len = strlen(path) + strlen(dev) + 11; /* some extra chars for i(..) wrapper */
|
len = strlen(path) + strlen(dev) + 21; /* some extra chars for i(..) wrapper */
|
||||||
dbg(1, "dev=%s\n", dev);
|
dbg(1, "dev=%s\n", dev);
|
||||||
fqdev = my_malloc(1556, len);
|
fqdev = my_malloc(1556, len);
|
||||||
if(!sim_is_xyce) {
|
if(!sim_is_xyce) {
|
||||||
|
|
@ -3286,10 +3290,12 @@ const char *translate(int inst, const char* s)
|
||||||
int vsource = (prefix == 'v') || (prefix == 'e');
|
int vsource = (prefix == 'v') || (prefix == 'e');
|
||||||
if(path[0]) {
|
if(path[0]) {
|
||||||
if(vsource) my_snprintf(fqdev, len, "i(%c.%s%s)", prefix, path, dev);
|
if(vsource) my_snprintf(fqdev, len, "i(%c.%s%s)", prefix, path, dev);
|
||||||
else my_snprintf(fqdev, len, "i(@%c.%s%s)", prefix, path, dev);
|
else if(prefix=='d') my_snprintf(fqdev, len, "i(@%c.%s%s[id])", prefix, path, dev);
|
||||||
|
else my_snprintf(fqdev, len, "i(@%c.%s%s[i])", prefix, path, dev);
|
||||||
} else {
|
} else {
|
||||||
if(vsource) my_snprintf(fqdev, len, "i(%s)", dev);
|
if(vsource) my_snprintf(fqdev, len, "i(%s)", dev);
|
||||||
else my_snprintf(fqdev, len, "i(@%s)", dev);
|
else if(prefix == 'd') my_snprintf(fqdev, len, "i(@%s[id])", dev);
|
||||||
|
else my_snprintf(fqdev, len, "i(@%s[i])", dev);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
my_snprintf(fqdev, len, "i(%s%s)", path, dev);
|
my_snprintf(fqdev, len, "i(%s%s)", path, dev);
|
||||||
|
|
@ -3436,7 +3442,7 @@ const char *translate2(Lcc *lcc, int level, char* s)
|
||||||
size = CADCHUNKALLOC;
|
size = CADCHUNKALLOC;
|
||||||
my_realloc(1528, &result, size);
|
my_realloc(1528, &result, size);
|
||||||
result[0] = '\0';
|
result[0] = '\0';
|
||||||
dbg(1, "translate2(): s=%s\n", s);
|
dbg(1, "translate2(): s=%s, level=%d\n", s, level);
|
||||||
while (1) {
|
while (1) {
|
||||||
c = *s++;
|
c = *s++;
|
||||||
if (c == '\\') {
|
if (c == '\\') {
|
||||||
|
|
@ -3544,6 +3550,7 @@ const char *translate2(Lcc *lcc, int level, char* s)
|
||||||
my_free(1532, &token);
|
my_free(1532, &token);
|
||||||
my_free(1533, &value);
|
my_free(1533, &value);
|
||||||
dbg(1, "translate2(): result=%s\n", result);
|
dbg(1, "translate2(): result=%s\n", result);
|
||||||
return tcl_hook2(&result);
|
/* return tcl_hook2(&result); */
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
v {xschem version=3.0.0 file_version=1.2 }
|
v {xschem version=3.1.0 file_version=1.2
|
||||||
|
}
|
||||||
G {}
|
G {}
|
||||||
K {type=diode
|
K {type=diode
|
||||||
format="@name @pinlist @model area=@area"
|
format="@name @pinlist @model area=@area"
|
||||||
|
|
@ -27,3 +28,4 @@ T {@name} 15 -18.75 0 0 0.2 0.2 {}
|
||||||
T {@model} 15 -6.25 0 0 0.2 0.2 {}
|
T {@model} 15 -6.25 0 0 0.2 0.2 {}
|
||||||
T {@#0:net_name} 10 -28.75 0 0 0.15 0.15 {layer=15}
|
T {@#0:net_name} 10 -28.75 0 0 0.15 0.15 {layer=15}
|
||||||
T {@#1:net_name} 10 20 0 0 0.15 0.15 {layer=15}
|
T {@#1:net_name} 10 20 0 0 0.15 0.15 {layer=15}
|
||||||
|
T {@spice_get_current} -12.5 -2.5 0 1 0.2 0.2 {layer=15}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
v {xschem version=3.0.0 file_version=1.2 }
|
v {xschem version=3.1.0 file_version=1.2
|
||||||
|
}
|
||||||
G {}
|
G {}
|
||||||
K {type=resistor
|
K {type=resistor
|
||||||
|
|
||||||
|
|
@ -41,9 +42,10 @@ L 4 5 -25 5 -20 {}
|
||||||
B 5 -2.5 -32.5 2.5 -27.5 {name=P dir=inout propag=1 pinnumber=1 goto=1}
|
B 5 -2.5 -32.5 2.5 -27.5 {name=P dir=inout propag=1 pinnumber=1 goto=1}
|
||||||
B 5 -2.5 27.5 2.5 32.5 {name=M dir=inout propag=0 pinnumber=2 goto=0}
|
B 5 -2.5 27.5 2.5 32.5 {name=M dir=inout propag=0 pinnumber=2 goto=0}
|
||||||
T {@name} -15 -13.75 0 1 0.2 0.2 {}
|
T {@name} -15 -13.75 0 1 0.2 0.2 {}
|
||||||
T {@value} 15 -6.25 0 0 0.2 0.2 {}
|
T {@value} 15 -3.75 0 0 0.2 0.2 {}
|
||||||
T {@#0:pinnumber} -10 -26.25 0 1 0.2 0.2 {layer=13}
|
T {@#0:pinnumber} -10 -26.25 0 1 0.2 0.2 {layer=13}
|
||||||
T {@#1:pinnumber} -10 16.25 0 1 0.2 0.2 {layer=13}
|
T {@#1:pinnumber} -10 16.25 0 1 0.2 0.2 {layer=13}
|
||||||
T {@#0:net_name} 10 -28.75 0 0 0.15 0.15 {layer=15}
|
T {@#0:net_name} 10 -28.75 0 0 0.15 0.15 {layer=15}
|
||||||
T {@#1:net_name} 10 20 0 0 0.15 0.15 {layer=15}
|
T {@#1:net_name} 10 20 0 0 0.15 0.15 {layer=15}
|
||||||
T {m=@m} -15 1.25 0 1 0.2 0.2 {}
|
T {m=@m} -15 1.25 0 1 0.2 0.2 {}
|
||||||
|
T {@spice_get_current} 12.5 -16.25 0 0 0.2 0.2 {layer=15}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
v {xschem version=2.9.8 file_version=1.2}
|
v {xschem version=3.1.0 file_version=1.2
|
||||||
|
}
|
||||||
G {}
|
G {}
|
||||||
K {type=diode
|
K {type=diode
|
||||||
format="@spiceprefix@name @pinlist @model"
|
format="@spiceprefix@name @pinlist @model"
|
||||||
|
|
@ -28,3 +29,4 @@ T {@name} 15 -18.75 0 0 0.2 0.2 {}
|
||||||
T {@#0:net_name} 10 -28.75 0 0 0.15 0.15 {layer=15}
|
T {@#0:net_name} 10 -28.75 0 0 0.15 0.15 {layer=15}
|
||||||
T {@#1:net_name} 10 20 0 0 0.15 0.15 {layer=15}
|
T {@#1:net_name} 10 20 0 0 0.15 0.15 {layer=15}
|
||||||
T {@model} 15 6.25 0 0 0.2 0.2 {}
|
T {@model} 15 6.25 0 0 0.2 0.2 {}
|
||||||
|
T {@spice_get_current} -22.5 -2.5 0 1 0.2 0.2 {layer=15}
|
||||||
|
|
|
||||||
|
|
@ -178,7 +178,7 @@ C {nmos3.sym} 1090 -850 0 0 {name=xm1 model=irf540 m=1
|
||||||
program=evince
|
program=evince
|
||||||
url="https://www.vishay.com/docs/91021/irf540.pdf" net_name=true}
|
url="https://www.vishay.com/docs/91021/irf540.pdf" net_name=true}
|
||||||
C {res.sym} 960 -820 0 1 {name=R0 m=1 value=190 net_name=true}
|
C {res.sym} 960 -820 0 1 {name=R0 m=1 value=190 net_name=true}
|
||||||
C {lab_wire.sym} 920 -530 0 0 {name=l8 lab=GB}
|
C {lab_wire.sym} 880 -530 0 0 {name=l8 lab=GB}
|
||||||
C {res.sym} 340 -1140 0 1 {name=R2 m=1 value=50 net_name=true}
|
C {res.sym} 340 -1140 0 1 {name=R2 m=1 value=50 net_name=true}
|
||||||
C {res.sym} 180 -1140 0 1 {name=R3 m=1 value=50 net_name=true}
|
C {res.sym} 180 -1140 0 1 {name=R3 m=1 value=50 net_name=true}
|
||||||
C {lab_pin.sym} 340 -1170 0 0 {name=p10 lab=VPP}
|
C {lab_pin.sym} 340 -1170 0 0 {name=p10 lab=VPP}
|
||||||
|
|
@ -265,7 +265,7 @@ C {lab_pin.sym} 340 -550 0 1 {name=p13 lab=E9}
|
||||||
C {lab_pin.sym} 560 -530 0 0 {name=p19 lab=C8}
|
C {lab_pin.sym} 560 -530 0 0 {name=p19 lab=C8}
|
||||||
C {lab_pin.sym} 560 -650 0 1 {name=p20 lab=E8}
|
C {lab_pin.sym} 560 -650 0 1 {name=p20 lab=E8}
|
||||||
C {lab_pin.sym} 840 -940 0 0 {name=p21 lab=E11}
|
C {lab_pin.sym} 840 -940 0 0 {name=p21 lab=E11}
|
||||||
C {lab_pin.sym} 260 -250 0 1 {name=p22 lab=E3}
|
C {lab_pin.sym} 260 -260 0 1 {name=p22 lab=E3}
|
||||||
C {lab_pin.sym} 260 -350 0 0 {name=p26 lab=C3}
|
C {lab_pin.sym} 260 -350 0 0 {name=p26 lab=C3}
|
||||||
C {lab_pin.sym} 50 -300 0 0 {name=p30 lab=B3}
|
C {lab_pin.sym} 50 -300 0 0 {name=p30 lab=B3}
|
||||||
C {lab_pin.sym} 520 -580 0 0 {name=p33 lab=VSS}
|
C {lab_pin.sym} 520 -580 0 0 {name=p33 lab=VSS}
|
||||||
|
|
@ -328,14 +328,6 @@ C {ngspice_get_expr.sym} 860 -1010 0 0 {name=r17
|
||||||
node="[format %.4g [expr ([ngspice::get_voltage e4] - [ngspice::get_voltage e11]) * [ngspice::get_current \{q4[ic]\}]]] W"
|
node="[format %.4g [expr ([ngspice::get_voltage e4] - [ngspice::get_voltage e11]) * [ngspice::get_current \{q4[ic]\}]]] W"
|
||||||
descr = power
|
descr = power
|
||||||
}
|
}
|
||||||
C {ngspice_get_expr.sym} 380 -1120 0 0 {name=r20
|
|
||||||
node="[ngspice::get_current \{r2[i]\}]"
|
|
||||||
descr = current
|
|
||||||
}
|
|
||||||
C {ngspice_get_expr.sym} 860 -1130 0 0 {name=r21
|
|
||||||
node="[ngspice::get_current \{r9[i]\}]"
|
|
||||||
descr = current
|
|
||||||
}
|
|
||||||
C {ngspice_get_expr.sym} 800 -1060 0 1 {name=r23
|
C {ngspice_get_expr.sym} 800 -1060 0 1 {name=r23
|
||||||
node="[ngspice::get_current \{q4[ib]\}]"
|
node="[ngspice::get_current \{q4[ib]\}]"
|
||||||
descr = Ib
|
descr = Ib
|
||||||
|
|
@ -356,11 +348,11 @@ C {ngspice_get_expr.sym} 1000 -800 0 0 {name=r28
|
||||||
node="[to_eng [ngspice::get_current \{r0[i]\}]]"
|
node="[to_eng [ngspice::get_current \{r0[i]\}]]"
|
||||||
descr = current
|
descr = current
|
||||||
}
|
}
|
||||||
C {ngspice_get_expr.sym} 280 -290 2 1 {name=r29
|
C {ngspice_get_expr.sym} 300 -290 2 1 {name=r29
|
||||||
node="[format %.4g [expr ([ngspice::get_voltage c3] - [ngspice::get_voltage e3]) * [ngspice::get_current \{q3[ic]\}]]] W"
|
node="[format %.4g [expr ([ngspice::get_voltage c3] - [ngspice::get_voltage e3]) * [ngspice::get_current \{q3[ic]\}]]] W"
|
||||||
descr = power
|
descr = power
|
||||||
}
|
}
|
||||||
C {ngspice_get_expr.sym} 240 -280 2 0 {name=r30
|
C {ngspice_get_expr.sym} 300 -260 2 1 {name=r30
|
||||||
node="[format %.4g [expr [ngspice::get_voltage b3] - [ngspice::get_voltage e3]]]"
|
node="[format %.4g [expr [ngspice::get_voltage b3] - [ngspice::get_voltage e3]]]"
|
||||||
descr = vbe
|
descr = vbe
|
||||||
}
|
}
|
||||||
|
|
@ -368,7 +360,7 @@ C {ngspice_get_expr.sym} 340 -470 0 0 {name=r31
|
||||||
node="[format %.4g [expr ([ngspice::get_voltage e9] - [ngspice::get_voltage c3]) * [ngspice::get_current \{r5[i]\}]]] W"
|
node="[format %.4g [expr ([ngspice::get_voltage e9] - [ngspice::get_voltage c3]) * [ngspice::get_current \{r5[i]\}]]] W"
|
||||||
descr = power
|
descr = power
|
||||||
}
|
}
|
||||||
C {ngspice_get_expr.sym} 570 -850 0 0 {name=r32
|
C {ngspice_get_expr.sym} 570 -910 0 0 {name=r32
|
||||||
node="[format %.4g [expr ([ngspice::get_voltage e6] - [ngspice::get_voltage c6]) * [ngspice::get_current \{q6[ic]\}]]] W"
|
node="[format %.4g [expr ([ngspice::get_voltage e6] - [ngspice::get_voltage c6]) * [ngspice::get_current \{q6[ic]\}]]] W"
|
||||||
descr = power
|
descr = power
|
||||||
}
|
}
|
||||||
|
|
@ -388,15 +380,7 @@ C {ngspice_get_expr.sym} 330 -850 0 1 {name=r36
|
||||||
node="[format %.4g [expr [ngspice::get_current \{q2[ic]\}] / [ngspice::get_current \{q2[ib]\}] ] ]"
|
node="[format %.4g [expr [ngspice::get_current \{q2[ic]\}] / [ngspice::get_current \{q2[ib]\}] ] ]"
|
||||||
descr = beta
|
descr = beta
|
||||||
}
|
}
|
||||||
C {ngspice_get_expr.sym} 890 -1230 0 1 {name=r39
|
C {ngspice_get_expr.sym} 160 -350 0 0 {name=r42
|
||||||
node="[ngspice::get_current \{d0[id]\}]"
|
|
||||||
descr = current
|
|
||||||
}
|
|
||||||
C {ngspice_get_expr.sym} 1210 -1240 0 1 {name=r40
|
|
||||||
node="[ngspice::get_current \{d1[id]\}]"
|
|
||||||
descr = current
|
|
||||||
}
|
|
||||||
C {ngspice_get_expr.sym} 160 -320 0 0 {name=r42
|
|
||||||
node="[format %.4g [expr ([ngspice::get_node v(vpp)] - [ngspice::get_voltage b3]) * [ngspice::get_current \{r1[i]\}]]] W"
|
node="[format %.4g [expr ([ngspice::get_node v(vpp)] - [ngspice::get_voltage b3]) * [ngspice::get_current \{r1[i]\}]]] W"
|
||||||
descr = power
|
descr = power
|
||||||
}
|
}
|
||||||
|
|
@ -405,10 +389,6 @@ node="[format %.4g [expr \{([ngspice::get_node v(vpp)] - [ngspice::get_voltage o
|
||||||
descr = power
|
descr = power
|
||||||
}
|
}
|
||||||
C {lab_wire.sym} 910 -690 0 1 {name=l40 lab=OUTI}
|
C {lab_wire.sym} 910 -690 0 1 {name=l40 lab=OUTI}
|
||||||
C {ngspice_get_expr.sym} 1000 -480 0 0 {name=r44
|
|
||||||
node="[ngspice::get_current \{r7[i]\}]"
|
|
||||||
descr = current
|
|
||||||
}
|
|
||||||
C {ngspice_get_expr.sym} 1130 -510 2 1 {name=r46
|
C {ngspice_get_expr.sym} 1130 -510 2 1 {name=r46
|
||||||
node="[format %.4g [expr \{([ngspice::get_voltage outi] - [ngspice::get_node v(vnn)]) * [ngspice::get_current vd]\}]] W"
|
node="[format %.4g [expr \{([ngspice::get_voltage outi] - [ngspice::get_node v(vnn)]) * [ngspice::get_current vd]\}]] W"
|
||||||
descr = power
|
descr = power
|
||||||
|
|
|
||||||
|
|
@ -269,10 +269,6 @@ tclcommand="
|
||||||
C {capa.sym} 2080 -1370 0 0 {name=C2 m=1 value="100u"}
|
C {capa.sym} 2080 -1370 0 0 {name=C2 m=1 value="100u"}
|
||||||
C {ngspice_get_expr.sym} 95 1005 0 0 {name=r18
|
C {ngspice_get_expr.sym} 95 1005 0 0 {name=r18
|
||||||
node="[ngspice::get_current \{r2[i]\}]"
|
node="[ngspice::get_current \{r2[i]\}]"
|
||||||
descr = current
|
|
||||||
}
|
|
||||||
C {ngspice_get_expr.sym} 55 -545 0 1 {name=r1
|
|
||||||
node="[ngspice::get_current \{r19[i]\}]"
|
|
||||||
descr = current
|
descr = current
|
||||||
}
|
}
|
||||||
C {ngspice_get_expr.sym} 2150 -10 2 0 {name=r29
|
C {ngspice_get_expr.sym} 2150 -10 2 0 {name=r29
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue