extend interval raw file loading to `xschem raw read file type sweep1 sweep2`
This commit is contained in:
parent
cd6deb0bf9
commit
d91daea84c
|
|
@ -1080,9 +1080,11 @@ C {verilog_timescale.sym} 1050 -100 0 0 {name=s1 timestep="1ns" precision="1ns"
|
||||||
Debug: wrapper to propagate_hilights() function </pre>
|
Debug: wrapper to propagate_hilights() function </pre>
|
||||||
<li><kbd> push_undo</kbd></li><pre>
|
<li><kbd> push_undo</kbd></li><pre>
|
||||||
Push current state on undo stack </pre>
|
Push current state on undo stack </pre>
|
||||||
<li><kbd> raw what [rawfile type]</kbd></li><pre>
|
<li><kbd> raw what [rawfile type] [sweep1 sweep2]</kbd></li><pre>
|
||||||
what = read | clear | info | switch | switch_back
|
what = read | clear | info | switch | switch_back
|
||||||
Load /clear / switch additional raw files </pre>
|
Load / clear / switch additional raw files
|
||||||
|
if sweep1, sweep2 interval is given in 'read' subcommand load only the interval
|
||||||
|
sweep1 <= sweep_var < sweep2 </pre>
|
||||||
<li><kbd> raw_clear </kbd></li><pre>
|
<li><kbd> raw_clear </kbd></li><pre>
|
||||||
Unload all simulation raw files </pre>
|
Unload all simulation raw files </pre>
|
||||||
<li><kbd> raw_query loaded|value|index|values|datasets|vars|list </kbd></li><pre>
|
<li><kbd> raw_query loaded|value|index|values|datasets|vars|list </kbd></li><pre>
|
||||||
|
|
@ -1101,10 +1103,12 @@ C {verilog_timescale.sym} 1050 -100 0 0 {name=s1 timestep="1ns" precision="1ns"
|
||||||
values of 'node' for dataset 'dset' (default dset=0)
|
values of 'node' for dataset 'dset' (default dset=0)
|
||||||
xschem raw_query points [dset] : print simulation points for
|
xschem raw_query points [dset] : print simulation points for
|
||||||
dataset 'dset' (default: all dataset points combined)</pre>
|
dataset 'dset' (default: all dataset points combined)</pre>
|
||||||
<li><kbd> raw_read [file] [sim]</kbd></li><pre>
|
<li><kbd> raw_read [file] [sim] [sweep1 sweep2]</kbd></li><pre>
|
||||||
If a raw file is already loaded delete from memory
|
If a raw file is already loaded delete from memory
|
||||||
else load specified file and analysis 'sim' (dc, ac, tran, op, ...)
|
then load specified file and analysis 'sim' (dc, ac, tran, op, ...)
|
||||||
If 'sim' not specified load first section found in raw file. </pre>
|
If 'sim' not specified load first section found in raw file.
|
||||||
|
if sweep1, sweep2 interval is given load only the interval
|
||||||
|
sweep1 <= sweep_var < sweep2 </pre>
|
||||||
<li><kbd> raw_read_from_attr [sim]</kbd></li><pre>
|
<li><kbd> raw_read_from_attr [sim]</kbd></li><pre>
|
||||||
If a simulation raw file is already loaded delete from memory
|
If a simulation raw file is already loaded delete from memory
|
||||||
else read section 'sim' (tran, dc, ac, op, ...)
|
else read section 'sim' (tran, dc, ac, op, ...)
|
||||||
|
|
@ -1477,6 +1481,7 @@ C {verilog_timescale.sym} 1050 -100 0 0 {name=s1 timestep="1ns" precision="1ns"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
||||||
|
|
@ -3351,17 +3351,24 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
|
||||||
else { cmd_found = 0;}
|
else { cmd_found = 0;}
|
||||||
break;
|
break;
|
||||||
case 'r': /*----------------------------------------------*/
|
case 'r': /*----------------------------------------------*/
|
||||||
/* raw what [rawfile type]
|
/* raw what [rawfile type] [sweep1 sweep2]
|
||||||
* what = read | clear | info | switch | switch_back
|
* what = read | clear | info | switch | switch_back
|
||||||
* Load /clear / switch additional raw files */
|
* Load / clear / switch additional raw files
|
||||||
|
* if sweep1, sweep2 interval is given in 'read' subcommand load only the interval
|
||||||
|
* sweep1 <= sweep_var < sweep2 */
|
||||||
if(!strcmp(argv[1], "raw"))
|
if(!strcmp(argv[1], "raw"))
|
||||||
{
|
{
|
||||||
|
double sweep1 = -1.0, sweep2 = -1.0;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
if(!xctx) {Tcl_SetResult(interp, not_avail, TCL_STATIC); return TCL_ERROR;}
|
if(!xctx) {Tcl_SetResult(interp, not_avail, TCL_STATIC); return TCL_ERROR;}
|
||||||
if(argc > 3 && !strcmp(argv[2], "read")) {
|
if(argc > 3 && !strcmp(argv[2], "read")) {
|
||||||
if(argc > 4) ret = extra_rawfile(1, argv[3], argv[4], -1.0, -1.0);
|
if(argc > 6) {
|
||||||
else ret = extra_rawfile(1, argv[3], NULL, -1.0, -1.0);
|
sweep1 = atof_spice(argv[5]);
|
||||||
|
sweep2 = atof_spice(argv[6]);
|
||||||
|
}
|
||||||
|
if(argc > 4) ret = extra_rawfile(1, argv[3], argv[4], sweep1, sweep2);
|
||||||
|
else ret = extra_rawfile(1, argv[3], NULL, sweep1, sweep2);
|
||||||
Tcl_SetResult(interp, my_itoa(ret), TCL_VOLATILE);
|
Tcl_SetResult(interp, my_itoa(ret), TCL_VOLATILE);
|
||||||
} else if(argc > 2 && !strcmp(argv[2], "switch")) {
|
} else if(argc > 2 && !strcmp(argv[2], "switch")) {
|
||||||
if(argc > 4) {
|
if(argc > 4) {
|
||||||
|
|
@ -3501,8 +3508,10 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
|
||||||
|
|
||||||
/* raw_read [file] [sim] [sweep1 sweep2]
|
/* raw_read [file] [sim] [sweep1 sweep2]
|
||||||
* If a raw file is already loaded delete from memory
|
* If a raw file is already loaded delete from memory
|
||||||
* else load specified file and analysis 'sim' (dc, ac, tran, op, ...)
|
* then load specified file and analysis 'sim' (dc, ac, tran, op, ...)
|
||||||
* If 'sim' not specified load first section found in raw file. */
|
* If 'sim' not specified load first section found in raw file.
|
||||||
|
* if sweep1, sweep2 interval is given load only the interval
|
||||||
|
* sweep1 <= sweep_var < sweep2 */
|
||||||
else if(!strcmp(argv[1], "raw_read"))
|
else if(!strcmp(argv[1], "raw_read"))
|
||||||
{
|
{
|
||||||
char f[PATH_MAX + 100];
|
char f[PATH_MAX + 100];
|
||||||
|
|
@ -3524,8 +3533,8 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
|
||||||
tcleval(f);
|
tcleval(f);
|
||||||
my_strncpy(f, tclresult(), S(f));
|
my_strncpy(f, tclresult(), S(f));
|
||||||
if(argc > 5) {
|
if(argc > 5) {
|
||||||
sweep1 = atof(argv[4]);
|
sweep1 = atof_spice(argv[4]);
|
||||||
sweep2 = atof(argv[5]);
|
sweep2 = atof_spice(argv[5]);
|
||||||
}
|
}
|
||||||
if(argc > 3) res = raw_read(f, &xctx->raw, argv[3], sweep1, sweep2);
|
if(argc > 3) res = raw_read(f, &xctx->raw, argv[3], sweep1, sweep2);
|
||||||
else res = raw_read(f, &xctx->raw, NULL, -1.0, -1.0);
|
else res = raw_read(f, &xctx->raw, NULL, -1.0, -1.0);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue