command xschem raw new to use `start end step` instead of `start step number`

This commit is contained in:
stefan schippers 2024-02-23 21:58:41 +01:00
parent 4e0c344493
commit bf71dbc9e7
4 changed files with 15 additions and 10 deletions

View File

@ -548,6 +548,7 @@ C {verilog_timescale.sym} 1050 -100 0 0 {name=s1 timestep="1ns" precision="1ns"
<li><kbd> abort_operation</kbd></li><pre>
@ -1098,8 +1099,8 @@ C {verilog_timescale.sym} 1050 -100 0 0 {name=s1 timestep="1ns" precision="1ns"
Load / clear / switch additional raw files
if sweep1, sweep2 interval is given in 'read' subcommand load only the interval
sweep1 &lt;= sweep_var &lt; sweep2
xschem raw new name type sweepvar start step number
create a new raw file with sweep variable 'sweepvar' with number datapoints
xschem raw new name type sweepvar start end step
create a new raw file with sweep variable 'sweepvar' with number=(end - start) / step datapoints
from start value 'start' and step 'step' </pre>
<li><kbd> raw_clear </kbd></li><pre>
Unload all simulation raw files </pre>
@ -1120,7 +1121,11 @@ C {verilog_timescale.sym} 1050 -100 0 0 {name=s1 timestep="1ns" precision="1ns"
xschem raw_query points [dset]: print simulation points for
dataset 'dset' (default: all dataset points combined)
xschem raw_query set node n value [dataset]: change loaded raw file data node[n] to value
xschem raw_query add varname: add a 'varname' vector with all values set to 0 to loaded raw file
xschem raw_query add varname [expr]
add a 'varname' vector with all values set to 0 to loaded raw file if expr not given
otherwise initialize data with values calculated from expr.
If varname is already existing and expr given recalculate data
Example: xschem raw_query add power {outm outp - i(@r1[i]) *}
</pre>
<li><kbd> raw_read [file] [sim] [sweep1 sweep2]</kbd></li><pre>
If a raw file is already loaded delete from memory
@ -1518,7 +1523,6 @@ C {verilog_timescale.sym} 1050 -100 0 0 {name=s1 timestep="1ns" precision="1ns"
</ul>

View File

@ -914,13 +914,14 @@ int raw_read(const char *f, Raw **rawptr, const char *type, double sweep1, doubl
return 0;
}
/* create a new raw file with 'number' points with only a sweep variable in it. */
/* create a new raw file with '(max - min) / step' points with only a sweep variable in it. */
int new_rawfile(const char *name, const char *type, const char *sweepvar,
double start, double step, int number)
double start, double end, double step)
{
int i;
int ret = 1;
Raw *raw;
int number = (int)floor((end - start) / step) + 1;
/* if not already done insert base raw file (if there is one) into xctx->extra_raw_arr[0] */
if(xctx->raw && xctx->extra_raw_n == 0) {

View File

@ -3422,8 +3422,8 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
* Load / clear / switch additional raw files
* if sweep1, sweep2 interval is given in 'read' subcommand load only the interval
* sweep1 <= sweep_var < sweep2
* xschem raw new name type sweepvar start step number
* create a new raw file with sweep variable 'sweepvar' with number datapoints
* xschem raw new name type sweepvar start end step
* create a new raw file with sweep variable 'sweepvar' with number=(end - start) / step datapoints
* from start value 'start' and step 'step' */
if(!strcmp(argv[1], "raw"))
{
@ -3453,7 +3453,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
update_op();
Tcl_SetResult(interp, my_itoa(ret), TCL_VOLATILE);
} else if(argc ==9 && !strcmp(argv[2], "new")) {
ret = new_rawfile(argv[3], argv[4], argv[5], atof(argv[6]), atof(argv[7]),atoi(argv[8]));
ret = new_rawfile(argv[3], argv[4], argv[5], atof(argv[6]), atof(argv[7]),atof(argv[8]));
Tcl_SetResult(interp, my_itoa(ret), TCL_VOLATILE);
} else if(argc > 2 && !strcmp(argv[2], "info")) {
ret = extra_rawfile(4, NULL, NULL, -1.0, -1.0);

View File

@ -1225,7 +1225,7 @@ extern int read_rawfile_from_attr(const char *b64s, size_t length, const char *t
extern int raw_read_from_attr(Raw **rawptr, const char *type, double sweep1, double sweep2);
extern int raw_add_vector(const char *varname, const char *expr);
extern int new_rawfile(const char *name, const char *type, const char *sweepvar,
double start, double step, int number);
double start, double end, double step);
extern char *base64_from_file(const char *f, size_t *length);
extern int set_rect_flags(xRect *r);
extern int set_text_flags(xText *t);