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, "\\}", "}");
|
||||
tclvareval("tclpropeval2 {", unescaped_res, "}" , NULL);
|
||||
my_strdup2(1286, &result, tclresult());
|
||||
/* dbg(0, "tcl_hook2: return: %s\n", result);*/
|
||||
return result;
|
||||
} else {
|
||||
/* dbg(0, "tcl_hook2: return: %s\n", *res); */
|
||||
return *res;
|
||||
}
|
||||
}
|
||||
|
|
@ -3151,7 +3153,7 @@ const char *translate(int inst, const char* s)
|
|||
if(n == 1) {
|
||||
strtolower(dev);
|
||||
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);
|
||||
fqdev = my_malloc(1599, len);
|
||||
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);
|
||||
vsource = (prefix == 'v') || (prefix == 'e');
|
||||
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 {
|
||||
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);
|
||||
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);
|
||||
fqdev = my_malloc(1556, len);
|
||||
if(!sim_is_xyce) {
|
||||
|
|
@ -3286,10 +3290,12 @@ const char *translate(int inst, const char* s)
|
|||
int vsource = (prefix == 'v') || (prefix == 'e');
|
||||
if(path[0]) {
|
||||
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 {
|
||||
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 {
|
||||
my_snprintf(fqdev, len, "i(%s%s)", path, dev);
|
||||
|
|
@ -3436,7 +3442,7 @@ const char *translate2(Lcc *lcc, int level, char* s)
|
|||
size = CADCHUNKALLOC;
|
||||
my_realloc(1528, &result, size);
|
||||
result[0] = '\0';
|
||||
dbg(1, "translate2(): s=%s\n", s);
|
||||
dbg(1, "translate2(): s=%s, level=%d\n", s, level);
|
||||
while (1) {
|
||||
c = *s++;
|
||||
if (c == '\\') {
|
||||
|
|
@ -3544,6 +3550,7 @@ const char *translate2(Lcc *lcc, int level, char* s)
|
|||
my_free(1532, &token);
|
||||
my_free(1533, &value);
|
||||
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 {}
|
||||
K {type=diode
|
||||
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 {@#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 {@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 {}
|
||||
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 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 {@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 {@#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 {@#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 {@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 {}
|
||||
K {type=diode
|
||||
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 {@#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 {@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
|
||||
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 {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} 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}
|
||||
|
|
@ -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 -650 0 1 {name=p20 lab=E8}
|
||||
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} 50 -300 0 0 {name=p30 lab=B3}
|
||||
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"
|
||||
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
|
||||
node="[ngspice::get_current \{q4[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]\}]]"
|
||||
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"
|
||||
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]]]"
|
||||
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"
|
||||
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"
|
||||
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]\}] ] ]"
|
||||
descr = beta
|
||||
}
|
||||
C {ngspice_get_expr.sym} 890 -1230 0 1 {name=r39
|
||||
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
|
||||
C {ngspice_get_expr.sym} 160 -350 0 0 {name=r42
|
||||
node="[format %.4g [expr ([ngspice::get_node v(vpp)] - [ngspice::get_voltage b3]) * [ngspice::get_current \{r1[i]\}]]] W"
|
||||
descr = power
|
||||
}
|
||||
|
|
@ -405,10 +389,6 @@ node="[format %.4g [expr \{([ngspice::get_node v(vpp)] - [ngspice::get_voltage o
|
|||
descr = power
|
||||
}
|
||||
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
|
||||
node="[format %.4g [expr \{([ngspice::get_voltage outi] - [ngspice::get_node v(vnn)]) * [ngspice::get_current vd]\}]] W"
|
||||
descr = power
|
||||
|
|
|
|||
|
|
@ -269,10 +269,6 @@ tclcommand="
|
|||
C {capa.sym} 2080 -1370 0 0 {name=C2 m=1 value="100u"}
|
||||
C {ngspice_get_expr.sym} 95 1005 0 0 {name=r18
|
||||
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
|
||||
}
|
||||
C {ngspice_get_expr.sym} 2150 -10 2 0 {name=r29
|
||||
|
|
|
|||
Loading…
Reference in New Issue