diff --git a/src/token.c b/src/token.c index 9d87060b..8e9fb881 100644 --- a/src/token.c +++ b/src/token.c @@ -2032,6 +2032,11 @@ int print_spice_element(FILE *fd, int inst) if (!xctx->tok_size) value=get_tok_value(template, token+1, 0); token_exists = xctx->tok_size; + + if(!strcmp("@savecurrent", token)) { + token_exists = 0; /* processed later */ + value = NULL; + } /* if (!strncmp(value,"tcleval(", 8)) { dbg(1, "print_spice_element(): value=%s\n", value); @@ -2124,6 +2129,18 @@ int print_spice_element(FILE *fd, int inst) result_pos += my_snprintf(result + result_pos, tmp, "%s", xctx->current_name); /* fputs(xctx->current_name, fd); */ } + else if(strcmp(token,"@savecurrent")==0) + { + char *instname = xctx->inst[inst].instname; + + const char *sc = get_tok_value(xctx->inst[inst].prop_ptr, "savecurrent", 0); + if(!sc[0]) sc = get_tok_value(template, "savecurrent", 0); + if(!strboolcmp(sc , "true")) { + tmp = strlen(instname) + 25; + STR_ALLOC(&result, tmp + result_pos, &size); + result_pos += my_snprintf(result + result_pos, tmp, "\n.save I( ?1 %s )", instname); + } + } else if(strcmp(token,"@schname")==0) /* of course schname must not be present in attributes */ { const char *schname = get_cell(xctx->current_name, 0); diff --git a/xschem_library/devices/ammeter.sym b/xschem_library/devices/ammeter.sym index 836dd7ef..6162ef54 100644 --- a/xschem_library/devices/ammeter.sym +++ b/xschem_library/devices/ammeter.sym @@ -1,4 +1,4 @@ -v {xschem version=3.4.4 file_version=1.2 +v {xschem version=3.4.5 file_version=1.2 * * This file is part of XSCHEM, * a schematic capture and Spice/Vhdl/Verilog netlisting tool for circuit @@ -21,8 +21,7 @@ v {xschem version=3.4.4 file_version=1.2 } G {} K {type=ammeter -format="tcleval([expr \{@savecurrent ? \\"@name @pinlist 0 -.save I( ?1 @name )\\" : \\"@name @pinlist 0\\"\}])" +format="@name @pinlist 0@savecurrent" template="name=Vmeas savecurrent=true" } V {} diff --git a/xschem_library/devices/vsource.sym b/xschem_library/devices/vsource.sym index ffcfc8fc..f883c3a1 100644 --- a/xschem_library/devices/vsource.sym +++ b/xschem_library/devices/vsource.sym @@ -1,4 +1,4 @@ -v {xschem version=3.4.4 file_version=1.2 +v {xschem version=3.4.5 file_version=1.2 * * This file is part of XSCHEM, * a schematic capture and Spice/Vhdl/Verilog netlisting tool for circuit @@ -21,8 +21,7 @@ v {xschem version=3.4.4 file_version=1.2 } G {} K {type=vsource -format="tcleval([expr \{@savecurrent ? \\"@name @pinlist @value -.save I( ?1 @name )\\" : \\"@name @pinlist @value \\"\}])" +format="@name @pinlist @value@savecurrent" template="name=V1 value=3 savecurrent=false" } V {}