optimization in plotting routines: skip unwanted datasets, if no dc simulation there is no need to detect sweep variable wraps
This commit is contained in:
parent
182b55adf8
commit
12a9276ee0
|
|
@ -282,6 +282,10 @@ void backannotate_at_cursor_b_pos(xRect *r, Graph_ctx *gr)
|
||||||
first = -1;
|
first = -1;
|
||||||
prev_prev_x = prev_x = 0;
|
prev_prev_x = prev_x = 0;
|
||||||
last = ofs;
|
last = ofs;
|
||||||
|
|
||||||
|
/* optimization: skip unwanted datasets, if no dc no need to detect sweep variable wraps */
|
||||||
|
if(dataset >= 0 && strcmp(xctx->raw->sim_type, "dc") && dataset != sweepvar_wrap) goto done;
|
||||||
|
|
||||||
for(p = ofs ; p < ofs_end; p++) {
|
for(p = ofs ; p < ofs_end; p++) {
|
||||||
xx = gv[p];
|
xx = gv[p];
|
||||||
wrap = ( cnt > 1 && XSIGN(xx - prev_x) != XSIGN(prev_x - prev_prev_x));
|
wrap = ( cnt > 1 && XSIGN(xx - prev_x) != XSIGN(prev_x - prev_prev_x));
|
||||||
|
|
@ -295,13 +299,13 @@ void backannotate_at_cursor_b_pos(xRect *r, Graph_ctx *gr)
|
||||||
xx, cursor2, first, last, start, end, p, wrap, sweepvar_wrap, ofs);
|
xx, cursor2, first, last, start, end, p, wrap, sweepvar_wrap, ofs);
|
||||||
if(first == -1) first = p;
|
if(first == -1) first = p;
|
||||||
if(p == first) {
|
if(p == first) {
|
||||||
if(xx == cursor2) {goto done;}
|
if(xx == cursor2) {goto found;}
|
||||||
s = XSIGN0(xx - cursor2);
|
s = XSIGN0(xx - cursor2);
|
||||||
dbg(1, "s=%d\n", s);
|
dbg(1, "s=%d\n", s);
|
||||||
} else {
|
} else {
|
||||||
int ss = XSIGN0(xx - cursor2);
|
int ss = XSIGN0(xx - cursor2);
|
||||||
dbg(1, "s=%d, ss=%d\n", s, ss);
|
dbg(1, "s=%d, ss=%d\n", s, ss);
|
||||||
if(ss != s) {goto done;}
|
if(ss != s) {goto found;}
|
||||||
}
|
}
|
||||||
last = p;
|
last = p;
|
||||||
}
|
}
|
||||||
|
|
@ -311,10 +315,13 @@ void backannotate_at_cursor_b_pos(xRect *r, Graph_ctx *gr)
|
||||||
prev_x = xx;
|
prev_x = xx;
|
||||||
} /* for(p = ofs ; p < ofs + raw->npoints[dset]; p++) */
|
} /* for(p = ofs ; p < ofs + raw->npoints[dset]; p++) */
|
||||||
/* offset pointing to next dataset */
|
/* offset pointing to next dataset */
|
||||||
|
|
||||||
|
done:
|
||||||
|
|
||||||
ofs = ofs_end;
|
ofs = ofs_end;
|
||||||
sweepvar_wrap++;
|
sweepvar_wrap++;
|
||||||
} /* for(dset...) */
|
} /* for(dset...) */
|
||||||
done:
|
found:
|
||||||
if(first != -1) {
|
if(first != -1) {
|
||||||
if(p > last) {
|
if(p > last) {
|
||||||
double sweep0, sweep1;
|
double sweep0, sweep1;
|
||||||
|
|
|
||||||
21
src/draw.c
21
src/draw.c
|
|
@ -2514,6 +2514,9 @@ int graph_fullyzoom(xRect *r, Graph_ctx *gr, int graph_dataset)
|
||||||
int cnt=0, wrap;
|
int cnt=0, wrap;
|
||||||
register SPICE_DATA *gv = raw->values[sweep_idx];
|
register SPICE_DATA *gv = raw->values[sweep_idx];
|
||||||
ofs_end = ofs + raw->npoints[dset];
|
ofs_end = ofs + raw->npoints[dset];
|
||||||
|
|
||||||
|
/* optimization: skip unwanted datasets, if no dc no need to detect sweep variable wraps */
|
||||||
|
if(dataset >= 0 && strcmp(xctx->raw->sim_type, "dc") && dataset != sweepvar_wrap) goto done;
|
||||||
for(p = ofs ; p < ofs_end; p++) {
|
for(p = ofs ; p < ofs_end; p++) {
|
||||||
if(gr->logx) xx = mylog10(gv[p]);
|
if(gr->logx) xx = mylog10(gv[p]);
|
||||||
else xx = gv[p];
|
else xx = gv[p];
|
||||||
|
|
@ -2539,6 +2542,9 @@ int graph_fullyzoom(xRect *r, Graph_ctx *gr, int graph_dataset)
|
||||||
++cnt;
|
++cnt;
|
||||||
}
|
}
|
||||||
} /* for(p = ofs ; p < ofs + raw->npoints[dset]; p++) */
|
} /* for(p = ofs ; p < ofs + raw->npoints[dset]; p++) */
|
||||||
|
|
||||||
|
done:
|
||||||
|
|
||||||
/* offset pointing to next dataset */
|
/* offset pointing to next dataset */
|
||||||
ofs = ofs_end;
|
ofs = ofs_end;
|
||||||
sweepvar_wrap++;
|
sweepvar_wrap++;
|
||||||
|
|
@ -3528,6 +3534,9 @@ int calc_custom_data_yrange(int sweep_idx, const char *express, Graph_ctx *gr)
|
||||||
ofs_end = ofs + raw->npoints[dset];
|
ofs_end = ofs + raw->npoints[dset];
|
||||||
first = -1;
|
first = -1;
|
||||||
last = ofs;
|
last = ofs;
|
||||||
|
|
||||||
|
/* optimization: skip unwanted datasets, if no dc no need to detect sweep variable wraps */
|
||||||
|
if(dataset >= 0 && strcmp(xctx->raw->sim_type, "dc") && dataset != sweepvar_wrap) goto done;
|
||||||
for(p = ofs ; p < ofs_end; p++) {
|
for(p = ofs ; p < ofs_end; p++) {
|
||||||
if(gr->logx)
|
if(gr->logx)
|
||||||
xx = mylog10(gv[p]);
|
xx = mylog10(gv[p]);
|
||||||
|
|
@ -3560,6 +3569,9 @@ int calc_custom_data_yrange(int sweep_idx, const char *express, Graph_ctx *gr)
|
||||||
idx = plot_raw_custom_data(sweep_idx, first, last, express, NULL);
|
idx = plot_raw_custom_data(sweep_idx, first, last, express, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
done:
|
||||||
|
|
||||||
/* offset pointing to next dataset */
|
/* offset pointing to next dataset */
|
||||||
ofs = ofs_end;
|
ofs = ofs_end;
|
||||||
sweepvar_wrap++;
|
sweepvar_wrap++;
|
||||||
|
|
@ -3984,6 +3996,10 @@ void draw_graph(int i, const int flags, Graph_ctx *gr, void *ct)
|
||||||
* p loop split repeated 2 timed (for x and y points) to preserve cache locality */
|
* p loop split repeated 2 timed (for x and y points) to preserve cache locality */
|
||||||
prev_x = 0;
|
prev_x = 0;
|
||||||
last = ofs;
|
last = ofs;
|
||||||
|
|
||||||
|
/* optimization: skip unwanted datasets, if no dc no need to detect sweep variable wraps */
|
||||||
|
if(dataset >= 0 && strcmp(xctx->raw->sim_type, "dc") && dataset != sweepvar_wrap) goto done;
|
||||||
|
|
||||||
for(p = ofs ; p < ofs_end; p++) {
|
for(p = ofs ; p < ofs_end; p++) {
|
||||||
double xxprevious, xxfollowing;
|
double xxprevious, xxfollowing;
|
||||||
|
|
||||||
|
|
@ -4059,6 +4075,8 @@ void draw_graph(int i, const int flags, Graph_ctx *gr, void *ct)
|
||||||
} /* if(xx >= start && xx <= end) */
|
} /* if(xx >= start && xx <= end) */
|
||||||
prev_x = xx;
|
prev_x = xx;
|
||||||
} /* for(p = ofs ; p < ofs + xctx->raw->npoints[dset]; p++) */
|
} /* for(p = ofs ; p < ofs + xctx->raw->npoints[dset]; p++) */
|
||||||
|
|
||||||
|
|
||||||
if(first != -1) {
|
if(first != -1) {
|
||||||
if(dataset == -1 || dataset == sweepvar_wrap) {
|
if(dataset == -1 || dataset == sweepvar_wrap) {
|
||||||
/* plot graph. Bus bundles are not plotted if graph is not digital.*/
|
/* plot graph. Bus bundles are not plotted if graph is not digital.*/
|
||||||
|
|
@ -4075,6 +4093,9 @@ void draw_graph(int i, const int flags, Graph_ctx *gr, void *ct)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
done:
|
||||||
|
|
||||||
/* offset pointing to next dataset */
|
/* offset pointing to next dataset */
|
||||||
ofs = ofs_end;
|
ofs = ofs_end;
|
||||||
sweepvar_wrap++;
|
sweepvar_wrap++;
|
||||||
|
|
|
||||||
|
|
@ -53,10 +53,12 @@ color="8 6"
|
||||||
|
|
||||||
linewidth_mult=1.0
|
linewidth_mult=1.0
|
||||||
hilight_wave=-1
|
hilight_wave=-1
|
||||||
dataset=-1
|
dataset=188
|
||||||
rawfile=$netlist_dir/autozero_comp.raw
|
rawfile=$netlist_dir/autozero_comp.raw
|
||||||
sim_type=tran
|
sim_type=tran
|
||||||
rainbow=0}
|
rainbow=0
|
||||||
|
hcursor1_y=0.13350312
|
||||||
|
hcursor2_y=0.58853305}
|
||||||
B 2 270 -1160 680 -1030 {flags=graph,unlocked
|
B 2 270 -1160 680 -1030 {flags=graph,unlocked
|
||||||
y1 = 0.647319
|
y1 = 0.647319
|
||||||
y2 = 0.652563
|
y2 = 0.652563
|
||||||
|
|
@ -135,6 +137,27 @@ saout
|
||||||
sweep="freq0 freq1 freq0"
|
sweep="freq0 freq1 freq0"
|
||||||
mode=HistoH
|
mode=HistoH
|
||||||
xlabmag=2.0}
|
xlabmag=2.0}
|
||||||
|
B 2 270 -1610 680 -1450 {flags=graph,unlocked
|
||||||
|
y1 = 0
|
||||||
|
y2 = 0.9
|
||||||
|
divy = 5
|
||||||
|
x1=1.9099218e-07
|
||||||
|
x2=3.4920522e-07
|
||||||
|
divx=5
|
||||||
|
subdivx=4
|
||||||
|
unitx=n
|
||||||
|
node="zero0
|
||||||
|
zero1
|
||||||
|
zero2"
|
||||||
|
color="12 4 7"
|
||||||
|
|
||||||
|
linewidth_mult=0.1
|
||||||
|
hilight_wave=-1
|
||||||
|
|
||||||
|
rawfile=$netlist_dir/autozero_comp.raw
|
||||||
|
sim_type=tran
|
||||||
|
rainbow=0
|
||||||
|
dataset=235}
|
||||||
T {CAL} 140 -180 0 1 0.4 0.4 {}
|
T {CAL} 140 -180 0 1 0.4 0.4 {}
|
||||||
T {EN} 140 -130 0 1 0.4 0.4 {}
|
T {EN} 140 -130 0 1 0.4 0.4 {}
|
||||||
T {CALIBRATION
|
T {CALIBRATION
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue