allow wave alias naming, fix off-by-one errors in plot_raw_custom_data() calls

This commit is contained in:
Stefan Frederik 2022-02-14 17:51:18 +01:00
parent b95d78734f
commit 4ebf3ea601
9 changed files with 202 additions and 150 deletions

View File

@ -649,14 +649,26 @@ static int waves_callback(int event, int mx, int my, KeySym key, int button, int
sweep_idx = get_raw_index(stok);
if( sweep_idx == -1) sweep_idx = 0;
}
bus_msb = strstr(ntok, ",");
j = -1;
if(!bus_msb && strstr(ntok, " ")) {
j = xctx->graph_nvars;
plot_raw_custom_data(sweep_idx, 0, xctx->graph_allpoints, ntok);
} else {
j = get_raw_index(ntok);
if(!bus_msb && xctx->graph_values) {
char *express = NULL;
int ofs = 0;
if(strstr(ntok, ";")) {
my_strdup2(1505, &express, find_nth(ntok, ";", 2));
} else {
my_strdup2(1506, &express, ntok);
}
if(strstr(express, " ")) {
j = xctx->graph_nvars;
for(dset = 0 ; dset < xctx->graph_datasets; dset++) {
plot_raw_custom_data(sweep_idx, ofs, ofs + xctx->graph_npoints[dset] - 1, express);
ofs += xctx->graph_npoints[dset];
}
} else {
j = get_raw_index(express);
}
my_free(1507, &express);
}
if(j >= 0) {
int ofs = 0;

View File

@ -2114,14 +2114,27 @@ static void draw_graph_variables(int wcnt, int wave_color, int n_nodes, int swee
if(gr->unity != 1.0) my_snprintf(tmpstr, S(tmpstr), "%s[%c]", find_nth(ntok, ";,", 1), gr->unity_suffix);
else my_snprintf(tmpstr, S(tmpstr), "%s",find_nth(ntok, ";,", 1));
} else {
if(xctx->graph_sim_type == 3) {
if(strstr(ntok, "ph(") == ntok || strstr(ntok, "_ph"))
my_snprintf(tmpstr, S(tmpstr), "%s[Phase]", ntok);
else
my_snprintf(tmpstr, S(tmpstr), "%s[dB]", ntok);
char *ntok_ptr = NULL;
char *alias_ptr = NULL;
if(strstr(ntok, ";")) {
my_strdup2(646, &alias_ptr, find_nth(ntok, ";", 1));
my_strdup2(665, &ntok_ptr, find_nth(ntok, ";", 2));
}
else if(gr->unity != 1.0) my_snprintf(tmpstr, S(tmpstr), "%s[%c]", ntok, gr->unity_suffix);
else my_snprintf(tmpstr, S(tmpstr), "%s", ntok);
else {
my_strdup2(925, &alias_ptr, ntok);
my_strdup2(1155, &ntok_ptr, ntok);
}
if(xctx->graph_sim_type == 3) {
if(strstr(ntok, "ph(") == ntok_ptr || strstr(ntok_ptr, "_ph"))
my_snprintf(tmpstr, S(tmpstr), "%s[Phase]", alias_ptr);
else
my_snprintf(tmpstr, S(tmpstr), "%s[dB]", alias_ptr);
}
else if(gr->unity != 1.0) my_snprintf(tmpstr, S(tmpstr), "%s[%c]", alias_ptr, gr->unity_suffix);
else my_snprintf(tmpstr, S(tmpstr), "%s", alias_ptr);
my_free(1188, &alias_ptr);
my_free(1189, &ntok_ptr);
}
if(gr->digital) {
double xt = gr->x1 - 10 * gr->txtsizelab;
@ -2383,6 +2396,7 @@ void draw_graph(int i, const int flags, Graph_ctx *gr)
int measure_p = -1;
double measure_x;
double measure_prev_x;
char *express = NULL;
xRect *r = &xctx->rect[GRIDLAYER][i];
if(RECT_OUTSIDE( gr->sx1, gr->sy1, gr->sx2, gr->sy2,
@ -2423,13 +2437,20 @@ void draw_graph(int i, const int flags, Graph_ctx *gr)
}
}
draw_graph_variables(wcnt, wave_color, n_nodes, sweep_idx, flags, ntok, stok, bus_msb, gr);
/* custom data plot */
/* if ntok following possible 'alias;' definition contains spaces --> custom data plot */
idx = -1;
if(xctx->graph_values && !bus_msb && strstr(ntok, " ")) {
idx = xctx->graph_nvars;
if(!bus_msb && xctx->graph_values) {
if(strstr(ntok, ";")) {
my_strdup2(1191, &express, find_nth(ntok, ";", 2));
} else {
my_strdup2(1192, &express, ntok);
}
if(strstr(express, " ")) {
idx = xctx->graph_nvars;
}
}
/* quickly find index number of ntok variable to be plotted */
if( idx == xctx->graph_nvars || (idx = get_raw_index(bus_msb ? bus_msb : ntok)) != -1 ) {
if( idx == xctx->graph_nvars || (idx = get_raw_index(bus_msb ? bus_msb : express)) != -1 ) {
int p, dset, ofs;
int poly_npoints;
int first, last;
@ -2478,7 +2499,7 @@ void draw_graph(int i, const int flags, Graph_ctx *gr)
sweep_idx, wcnt, n_nodes, gr);
}
} else {
if(idx == xctx->graph_nvars) plot_raw_custom_data(sweep_idx, first, last, ntok);
if(idx == xctx->graph_nvars) plot_raw_custom_data(sweep_idx, first, last, express);
draw_graph_points(idx, first, last, point, wave_color, wcnt, n_nodes, gr);
}
}
@ -2519,7 +2540,7 @@ void draw_graph(int i, const int flags, Graph_ctx *gr)
sweep_idx, wcnt, n_nodes, gr);
}
} else {
if(idx == xctx->graph_nvars) plot_raw_custom_data(sweep_idx, first, last, ntok);
if(idx == xctx->graph_nvars) plot_raw_custom_data(sweep_idx, first, last, express);
draw_graph_points(idx, first, last, point, wave_color, wcnt, n_nodes, gr);
}
}
@ -2538,6 +2559,7 @@ void draw_graph(int i, const int flags, Graph_ctx *gr)
wcnt++;
if(bus_msb) my_free(1453, &bus_msb);
} /* while( (ntok = my_strtok_r(nptr, "\n\t ", "", &saven)) ) */
if(express) my_free(1487, &express);
my_free(1391, &node);
my_free(1392, &color);
my_free(1408, &sweep);

View File

@ -491,6 +491,7 @@ int get_raw_index(const char *node)
char vnode[300];
char lnode[300];
Int_hashentry *entry;
dbg(1, "get_raw_index(): node=%s, node=%s\n", node, node);
if(xctx->graph_values) {
entry = int_hash_lookup(xctx->raw_table, node, 0, XLOOKUP);
if(!entry) {
@ -523,6 +524,8 @@ int get_raw_index(const char *node)
#define INTEG -14
#define AVG -15
#define DERIV -16
#define EXCH -17
#define DUP -18
#define NUMBER -60
typedef struct {
@ -546,8 +549,9 @@ void plot_raw_custom_data(int sweep_idx, int first, int last, const char *expr)
my_strdup2(574, &ntok_copy, expr);
ntok_ptr = ntok_copy;
dbg(1, "plot_raw_custom_data(): expr=%s\n", expr);
while( (n = my_strtok_r(ntok_ptr, " \t\n", "", &ntok_save)) ) {
if(stackptr1 >= STACKMAX -1) {
if(stackptr1 >= STACKMAX -2) {
dbg(0, "stack overflow in graph expression parsing. Interrupted\n");
my_free(576, &ntok_copy);
return;
@ -569,6 +573,8 @@ void plot_raw_custom_data(int sweep_idx, int first, int last, const char *expr)
else if(!strcmp(n, "integ()")) stack1[stackptr1++].i = INTEG;
else if(!strcmp(n, "avg()")) stack1[stackptr1++].i = AVG;
else if(!strcmp(n, "deriv()")) stack1[stackptr1++].i = DERIV;
else if(!strcmp(n, "exch()")) stack1[stackptr1++].i = EXCH;
else if(!strcmp(n, "dup()")) stack1[stackptr1++].i = DUP;
else if( (v = strtod(n, &endptr)), !*endptr) {
stack1[stackptr1].i = NUMBER;
stack1[stackptr1++].d = v;
@ -592,7 +598,7 @@ void plot_raw_custom_data(int sweep_idx, int first, int last, const char *expr)
if(stack1[i].i == NUMBER) {
stack2[stackptr2++] = stack1[i].d;
}
else if(stack1[i].i >=0 && stack1[i].i < xctx->graph_allpoints) { /* spice node */
else if(stack1[i].i >=0 && stack1[i].i < xctx->graph_nvars) { /* spice node */
stack2[stackptr2++] = xctx->graph_values[stack1[i].i][p];
}
@ -610,16 +616,81 @@ void plot_raw_custom_data(int sweep_idx, int first, int last, const char *expr)
stackptr2--;
}
else if(stack1[i].i == DIVIS) {
stack2[stackptr2 - 2] = stack2[stackptr2 - 2] / stack2[stackptr2 - 1];
if(p == first) stack1[i].prev = 0;
if(stack2[stackptr2 - 1]) {
stack2[stackptr2 - 2] = stack2[stackptr2 - 2] / stack2[stackptr2 - 1];
} else {
stack2[stackptr2 - 2] = stack1[i].prev;
}
stack1[i].prev = stack2[stackptr2 - 2];
stackptr2--;
}
else if(stack1[i].i == POW) {
stack2[stackptr2 - 2] = pow(stack2[stackptr2 - 2], stack2[stackptr2 - 1]);
stackptr2--;
}
else if(stack1[i].i == EXCH) {
double tmp;
tmp = stack2[stackptr2 - 2];
stack2[stackptr2 - 2] = stack2[stackptr2 - 1];
stack2[stackptr2 - 1] = tmp;
}
}
if(stackptr2 > 0) { /* 1 argument operators */
if(stack1[i].i == SIN) {
if(stack1[i].i == AVG) {
double avg = 0;
if( p == first ) {
avg = stack2[stackptr2 - 1];
stack1[i].prev = stack2[stackptr2 - 1];
stack1[i].prevy = stack2[stackptr2 - 1];
stack1[i].prevx = x[p];
} else {
if((x[p] != stack1[i].prevx)) {
avg = stack1[i].prev * (x[p - 1] - stack1[i].prevx) +
(x[p] - x[p - 1]) * (stack1[i].prevy + stack2[stackptr2 - 1]) * 0.5;
avg /= (x[p] - stack1[i].prevx);
} else {
avg = stack1[i].prev;
}
stack1[i].prev = avg;
stack1[i].prevy = stack2[stackptr2 - 1];
}
stack2[stackptr2 - 1] = avg;
}
else if(stack1[i].i == DUP) {
stack2[stackptr2] = stack2[stackptr2 - 1];
stackptr2++;
}
else if(stack1[i].i == INTEG) {
double integ = 0;
if( p == first ) {
integ = 0;
stack1[i].prev = 0;
stack1[i].prevy = stack2[stackptr2 - 1];
} else {
integ = stack1[i].prev + (x[p] - x[p - 1]) * (stack1[i].prevy + stack2[stackptr2 - 1]) * 0.5;
stack1[i].prev = integ;
stack1[i].prevy = stack2[stackptr2 - 1];
}
stack2[stackptr2 - 1] = integ;
}
else if(stack1[i].i == DERIV) {
double deriv = 0;
if( p == first ) {
deriv = 0;
stack1[i].prev = 0;
stack1[i].prevy = stack2[stackptr2 - 1];
} else {
if((x[p] != x[p - 1]))
deriv = (stack2[stackptr2 - 1] - stack1[i].prevy) / (x[p] - x[p - 1]);
else
deriv = stack1[i].prevy;
stack1[i].prevy = stack2[stackptr2 - 1] ;
stack1[i].prev = deriv;
}
stack2[stackptr2 - 1] = deriv;
}
else if(stack1[i].i == SIN) {
stack2[stackptr2 - 1] = sin(stack2[stackptr2 - 1]);
}
else if(stack1[i].i == COS) {
@ -641,47 +712,6 @@ void plot_raw_custom_data(int sweep_idx, int first, int last, const char *expr)
stack2[stackptr2 - 1] = stack2[stackptr2 - 1] > 0.0 ? 1 :
stack2[stackptr2 - 1] < 0.0 ? -1 : 0;
}
else if(stack1[i].i == INTEG) {
double integ = 0;
if( p == first ) {
integ = 0;
stack1[i].prev = 0;
stack1[i].prevy = stack2[stackptr2 - 1];
} else {
integ = stack1[i].prev + (x[p] - x[p - 1]) * (stack1[i].prevy + stack2[stackptr2 - 1]) * 0.5;
stack1[i].prev = integ;
stack1[i].prevy = stack2[stackptr2 - 1];
}
stack2[stackptr2 - 1] = integ;
}
else if(stack1[i].i == AVG) {
double avg = 0;
if( p == first ) {
avg = stack2[stackptr2 - 1];
stack1[i].prev = stack2[stackptr2 - 1];
stack1[i].prevy = stack2[stackptr2 - 1];
stack1[i].prevx = x[p];
} else {
avg = stack1[i].prev * (x[p - 1] - stack1[i].prevx) +
(x[p] - x[p - 1]) * (stack1[i].prevy + stack2[stackptr2 - 1]) * 0.5;
avg /= (x[p] - stack1[i].prevx);
stack1[i].prev = avg;
stack1[i].prevy = stack2[stackptr2 - 1];
}
stack2[stackptr2 - 1] = avg;
}
else if(stack1[i].i == DERIV) {
double deriv = 0;
if( p == first ) {
deriv = 0;
stack1[i].prevy = stack2[stackptr2 - 1];
} else {
deriv = (stack2[stackptr2 - 1] - stack1[i].prevy) / (x[p] - x[p - 1]);
stack1[i].prevy = stack2[stackptr2 - 1] ;
}
stack2[stackptr2 - 1] = deriv;
}
} /* else if(stackptr2 > 0) */
} /* for(i = 0; i < stackptr1; i++) */
y[p] = stack2[0];

View File

@ -763,7 +763,7 @@ const char *subst_token(const char *s, const char *tok, const char *new_val)
/* quote new_val if it contains newlines and not "name" token */
if(new_val) {
new_val_len = strlen(new_val);
if(strcmp(tok, "name") && !is_quoted(new_val) && strpbrk(new_val, "\n \t")) {
if(strcmp(tok, "name") && !is_quoted(new_val) && strpbrk(new_val, ";\n \t")) {
new_val_copy = my_malloc(1210, new_val_len+3);
my_snprintf(new_val_copy, new_val_len+3, "\"%s\"", new_val);
}
@ -2704,7 +2704,7 @@ char *find_nth(const char *str, const char *sep, int n)
static int result_size = 0; /* safe to keep even with multiple schematic windows */
int i, len;
char *ptr;
int count;
int count = -1;
if(!str) {
my_free(1062, &result);
@ -2724,16 +2724,22 @@ char *find_nth(const char *str, const char *sep, int n)
if(strchr(sep, result[i])) {
result[i]=0;
if(count==n) {
dbg(1, "1 find_nth(): returning %s\n", ptr);
return ptr;
}
while(result[++i] && strchr(sep, result[i])) ;
i++;
while(result[i] && strchr(sep, result[i])) i++;
ptr = result + i;
count++;
}
}
if(count==n) return ptr;
if(count==n) {
dbg(1, "2 find_nth(): returning %s\n", ptr);
return ptr;
}
else {
result[0] = '\0';
dbg(1, "3 find_nth(): returning %s\n", result);
return result;
}
}

View File

@ -1541,9 +1541,10 @@ proc graph_update_nodelist {} {
}
# remove excess colors
set col [lrange $col 0 [expr {$n - 1}]]
if { [llength $col] != [llength [tolist [.graphdialog.center.right.text1 get 1.0 {end - 1 chars}]]] } {
puts "PROBLEMS: colors and nodes of different length"
}
## for debug
# if { [llength $col] != [llength [tolist [.graphdialog.center.right.text1 get 1.0 {end - 1 chars}]]] } {
# puts "PROBLEMS: colors and nodes of different length"
# }
} else {
set col {}
}

File diff suppressed because one or more lines are too long

View File

@ -18,8 +18,8 @@ B 2 1200 -500 1880 -310 {flags=graph
y1 = -0.0059
y2 = 11
divy = 6
x1=0.0495785
x2=0.0508396
x1=0.0367669
x2=0.0373883
divx=10
node="i(v.x1.vu)
i(v.x0.vu)
@ -31,8 +31,8 @@ B 2 1200 -830 1880 -520 {flags=graph
y1 = -49
y2 = 59
divy = 12
x1=0.0495785
x2=0.0508396
x1=0.0367669
x2=0.0373883
divx=10
node="outp
outm
@ -51,28 +51,28 @@ B 2 1200 -1020 1880 -830 {flags=graph
y1 = 2.4e-11
y2 = 840
divy = 6
x1=0.0495785
x2=0.0508396
x1=0.0367669
x2=0.0373883
divx=10
unitx=m
color="4 7"
node="\\"i(vcurrvnn) vnn * i(vcurrvpp) vpp * +\\"
\\"i(vcurrvnn) vnn * i(vcurrvpp) vpp * + avg()\\""}
B 2 1200 -260 1880 -70 {flags=graph
node="\\"supply power;i(vcurrvnn) vnn * i(vcurrvpp) vpp * +\\"
\\"average supply power;i(vcurrvnn) vnn * i(vcurrvpp) vpp * + avg()\\""}
B 2 1200 -310 1880 -120 {flags=graph
y1 = 0.0077
y2 = 850
divy = 6
x1=0.0495785
x2=0.0508396
x1=0.0367669
x2=0.0373883
divx=10
unitx=m
color="4 7"
node="\\"outm outp - i(v.x1.v8) *\\"
\\"outm outp - i(v.x1.v8) * avg()\\""}
node="\\"Load power;outm outp - i(v.x1.v8) *\\"
\\"Average Load power;outm outp - i(v.x1.v8) * avg()\\""}
T {actual value
50u} 400 -820 0 0 0.4 0.4 {}
T {actual value
@ -99,10 +99,6 @@ annotator dinamically show the correct
data.} 780 -830 0 0 0.2 0.2 {layer=4}
T {Select one or more graphs (and no other objects)
and use arrow keys to zoom / pan waveforms} 1110 -1120 0 0 0.3 0.3 {}
T {Supply Power} 1270 -1050 0 0 0.4 0.4 {layer=4}
T {Average Supply Power} 1570 -1050 0 0 0.4 0.4 {layer=7}
T {Power into load} 1260 -290 0 0 0.4 0.4 {layer=4}
T {Average Power into load} 1540 -290 0 0 0.4 0.4 {layer=7}
N 70 -1220 70 -1200 {lab=#net1}
N 70 -1080 70 -1060 {lab=#net2}
N 300 -1140 310 -1140 {lab=VSS}

View File

@ -38,18 +38,7 @@ L 8 790 -530 790 -510 {}
L 8 770 -610 790 -610 {}
L 8 790 -610 807.5 -620 {}
L 8 810 -610 830 -610 {}
B 2 1270 -780 1690 -630 {flags=graph
y1 = -0.038
y2 = 20
divy = 5
subdivy=1
x1=-9.66825e-10
x2=0.0006
divx=9
node="v(led)
v(sw)"
color="11 18" unitx=m subdivx=4}
B 2 1270 -630 1690 -500 {flags=graph
B 2 1270 -740 1690 -570 {flags=graph
y1 = 4.9e-06
y2 = 20
divy = 6
@ -60,7 +49,7 @@ divx=8
node="panel
led" unitx=m
color="7 4"}
B 2 1270 -500 1690 -370 {flags=graph
B 2 1270 -570 1690 -400 {flags=graph
y1 = 4e-13
y2 = 3.8
divy = 4
@ -69,10 +58,10 @@ x1=-9.66825e-10
x2=0.0006
divx=8
unitx=m
color="7 8"
node="i(vled)
i(vpanel)"}
B 2 1270 -930 1690 -780 {flags=graph
color="7 4"
node="i(vpanel)
i(vled)"}
B 2 1270 -930 1690 -740 {flags=graph
y1 = -6.4e-08
y2 = 40
divy = 5
@ -83,8 +72,8 @@ divx=9
unitx=m subdivx=4
color="7 4"
node="\\"i(vled) v(led) *\\"
\\"i(vpanel) v(panel) *\\""}
node="\\"Panel power; i(vpanel) v(panel) *\\"
\\"Led power; i(vled) v(led) *\\""}
B 18 45 -850 300 -665 {}
A 5 300 -850 5.590169943749475 243.434948822922 360 {fill=true}
P 7 6 375 -665 320 -821.25 315 -835 302.5 -850 290 -855 45 -865 {}

View File

@ -32,8 +32,8 @@ y1 = -0.048929
y2 = 0.999755
divy = 3
subdivy=1
x1=1.35174e-07
x2=2.76612e-07 divx=10
x1=1.05327e-07
x2=2.46765e-07 divx=10
node="ldbl[0]
ldbl[16]
ldbl[32]
@ -43,7 +43,7 @@ ldbl[33]
ldbl[2]
ldbl[18]
ldbl[34]"
color="8 9 10 11 12 13 14 15 11" unitx=n
color="10 9 10 11 12 13 14 15 11" unitx=n
}
B 2 1840 -1160 2890 -1000 {flags=graph
digital=0
@ -51,8 +51,8 @@ y1 = 0
y2 = 1.60
subdivy=1
divy = 4
x1=1.35174e-07
x2=2.76612e-07
x1=1.05327e-07
x2=2.46765e-07
divx=10
subdivx=4
node="ldcp
@ -70,8 +70,8 @@ y2 = 1.6
divy = 3
subdivy=0
subdivx = 1
x1=1.35174e-07
x2=2.76612e-07 divx=10
x1=1.05327e-07
x2=2.46765e-07 divx=10
node="ldwl[0]
ldwl[1]
ldwl[2]
@ -93,8 +93,8 @@ y2 = 1.6
ypos1=0.0990096
ypos2=2.81842
divy = 1
x1=1.35174e-07
x2=2.76612e-07
x1=1.05327e-07
x2=2.46765e-07
divx=12
subdivx=4
node="---In/Out---
@ -103,17 +103,17 @@ ldq[15]
ldq[14]
ldq[13]
ldq[12]
LDA,lda[12],lda[11],lda[10],lda[9],lda[8],lda[7],lda[6],lda[5],lda[4],lda[3],lda[2],lda[1],lda[0]
LDQ,ldq[15],ldq[14],ldq[13],ldq[12],ldq[11],ldq[10],ldq[9],ldq[8],ldq[7],ldq[6],ldq[5],ldq[4],ldq[3],ldq[2],ldq[1],ldq[0]
LDA;lda[12],lda[11],lda[10],lda[9],lda[8],lda[7],lda[6],lda[5],lda[4],lda[3],lda[2],lda[1],lda[0]
LDQ;ldq[15],ldq[14],ldq[13],ldq[12],ldq[11],ldq[10],ldq[9],ldq[8],ldq[7],ldq[6],ldq[5],ldq[4],ldq[3],ldq[2],ldq[1],ldq[0]
---Timing---
lden
ldprech
---Decoders---
LDL3X,ldl3x[7],ldl3x[6],ldl3x[5],ldl3x[4],ldl3x[3],ldl3x[2],ldl3x[1],ldl3x[0]
LDL2X,ldl2x[3],ldl2x[2],ldl2x[1],ldl2x[0]
LDL1X,ldl1x[15],ldl1x[14],ldl1x[13],ldl1x[12],ldl1x[11],ldl1x[10],ldl1x[9],ldl1x[8],ldl1x[7],ldl1x[6],ldl1x[5],ldl1x[4],ldl1x[3],ldl1x[2],ldl1x[1],ldl1x[0]
LDY1,ldy1[3],ldy1[2],ldy1[1],ldy1[0]
WL[15:0],ldwl[15],ldwl[14],ldwl[13],ldwl[12],ldwl[11],ldwl[10],ldwl[9],ldwl[8],ldwl[7],ldwl[6],ldwl[5],ldwl[4],ldwl[3],ldwl[2],ldwl[1],ldwl[0]"
LDL3X;ldl3x[7],ldl3x[6],ldl3x[5],ldl3x[4],ldl3x[3],ldl3x[2],ldl3x[1],ldl3x[0]
LDL2X;ldl2x[3],ldl2x[2],ldl2x[1],ldl2x[0]
LDL1X;ldl1x[15],ldl1x[14],ldl1x[13],ldl1x[12],ldl1x[11],ldl1x[10],ldl1x[9],ldl1x[8],ldl1x[7],ldl1x[6],ldl1x[5],ldl1x[4],ldl1x[3],ldl1x[2],ldl1x[1],ldl1x[0]
LDY1;ldy1[3],ldy1[2],ldy1[1],ldy1[0]
WL[15:0];ldwl[15],ldwl[14],ldwl[13],ldwl[12],ldwl[11],ldwl[10],ldwl[9],ldwl[8],ldwl[7],ldwl[6],ldwl[5],ldwl[4],ldwl[3],ldwl[2],ldwl[1],ldwl[0]"
color="18 4 15 4 15 4 15 4 18 15 4 18 4 15 4 15 6"
unitx=n
ypos1=-2.20115 ypos2=2.79884
@ -122,8 +122,8 @@ B 2 1840 -1300 2890 -1160 {flags=graph
y1 = 0
y2 = 1.60
divy = 4
x1=1.35174e-07
x2=2.76612e-07
x1=1.05327e-07
x2=2.46765e-07
divx=8
unitx=n
node="xsa[0].ldqib
@ -133,17 +133,17 @@ xctrl.ldq_b"
color="4 12 7 10"
}
B 2 1840 -240 2890 0 {flags=graph
y1 = -0.0286575
y2 = 0.00267868
y1 = -0.049
y2 = 0.00057
divy = 5
x1=1.35174e-07
x2=2.76612e-07
x1=1.05327e-07
x2=2.46765e-07
unity=m
divx=10
subdivx=1
node="i(vvcc)
\\"i(vvcc) avg()\\""
color="3 7"
node="\\"Supply current;i(vvcc)\\"
\\"Average supply current;i(vvcc) avg()\\""
color="8 7"
unitx=n
subdivy=4
}