initial implementation of fetch schematics from web

This commit is contained in:
Stefan Frederik 2022-11-15 01:17:33 +01:00
parent 349bebda20
commit 6cd9d76f90
8 changed files with 293 additions and 95 deletions

View File

@ -1182,15 +1182,23 @@ void get_sch_from_sym(char *filename, xSymbol *sym)
char *sch = NULL; char *sch = NULL;
const char *str_tmp; const char *str_tmp;
int web_url = 0;
if( strstr(xctx->current_dirname, "http://") == xctx->current_dirname ||
strstr(xctx->current_dirname, "https://") == xctx->current_dirname) {
web_url = 1;
}
if((str_tmp = get_tok_value(sym->prop_ptr, "schematic",0 ))[0]) { if((str_tmp = get_tok_value(sym->prop_ptr, "schematic",0 ))[0]) {
my_strdup2(1252, &sch, str_tmp); my_strdup2(1252, &sch, str_tmp);
my_strncpy(filename, abs_sym_path(sch, ""), PATH_MAX); if(web_url) my_strncpy(filename, sch, PATH_MAX);
else my_strncpy(filename, abs_sym_path(sch, ""), PATH_MAX);
my_free(1253, &sch); my_free(1253, &sch);
} else { } else {
if(tclgetboolvar("search_schematic")) { if(tclgetboolvar("search_schematic")) {
my_strncpy(filename, abs_sym_path(sym->name, ".sch"), PATH_MAX); if(web_url) my_strncpy(filename, add_ext(sym->name, ".sch"), PATH_MAX);
else my_strncpy(filename, abs_sym_path(sym->name, ".sch"), PATH_MAX);
} else { } else {
my_strncpy(filename, add_ext(abs_sym_path(sym->name, ""), ".sch"), PATH_MAX); if(web_url) my_strncpy(filename, add_ext(sym->name, ".sch"), PATH_MAX);
else my_strncpy(filename, add_ext(abs_sym_path(sym->name, ""), ".sch"), PATH_MAX);
} }
} }
dbg(1, "get_sch_from_sym(): sym->name=%s, filename=%s\n", sym->name, filename); dbg(1, "get_sch_from_sym(): sym->name=%s, filename=%s\n", sym->name, filename);
@ -1311,10 +1319,18 @@ int descend_schematic(int instnumber)
hilight_child_pins(); hilight_child_pins();
get_sch_from_sym(filename, xctx->inst[n].ptr+ xctx->sym); get_sch_from_sym(filename, xctx->inst[n].ptr+ xctx->sym);
dbg(1, "descend_schematic(): filename=%s\n", filename);
unselect_all(1); unselect_all(1);
remove_symbols(); remove_symbols();
load_schematic(1,filename, 1); if( strstr(xctx->current_dirname, "http://") == xctx->current_dirname ||
strstr(xctx->current_dirname, "https://") == xctx->current_dirname) {
char sympath[PATH_MAX];
tclvareval("try_download_url {", xctx->current_dirname, "} {", filename, "}", NULL);
my_snprintf(sympath, S(sympath), "%s/%s", tclgetvar("XSCHEM_TMP_DIR"), get_cell_w_ext(filename, 0));
load_schematic(1, sympath, 1);
} else {
load_schematic(1, filename, 1);
}
if(xctx->hilight_nets) if(xctx->hilight_nets)
{ {
prepare_netlist_structs(0); prepare_netlist_structs(0);

View File

@ -451,10 +451,10 @@ size_t my_strcat(int id, char **str, const char *append_str)
memcpy(*str + s, append_str, a); memcpy(*str + s, append_str, a);
dbg(3,"my_strcat(%d,): reallocated string %s\n", id, *str); dbg(3,"my_strcat(%d,): reallocated string %s\n", id, *str);
return s + a - 1; return s + a - 1;
} else { } else { /* str = NULL */
if(append_str == NULL || append_str[0] == '\0') return 0; if(append_str == NULL || append_str[0] == '\0') return 0;
a = strlen(append_str) + 1; a = strlen(append_str) + 1;
*str = my_malloc(id, a); *str = my_malloc(id, a );
memcpy(*str, append_str, a); memcpy(*str, append_str, a);
dbg(3,"my_strcat(%d,): allocated string %s\n", id, *str); dbg(3,"my_strcat(%d,): allocated string %s\n", id, *str);
return a - 1; return a - 1;

View File

@ -2142,13 +2142,15 @@ void link_symbols_to_instances(int from) /* from >= 0 : linking symbols from pas
} }
/* ALWAYS use absolute pathname for filename!!! */ /* ALWAYS use absolute pathname for filename!!! */
void load_schematic(int load_symbols, const char *filename, int reset_undo) /* 20150327 added reset_undo */ void load_schematic(int load_symbols, const char *fname, int reset_undo) /* 20150327 added reset_undo */
{ {
FILE *fd; FILE *fd;
char name[PATH_MAX]; char name[PATH_MAX];
char filename[PATH_MAX];
char msg[PATH_MAX+100]; char msg[PATH_MAX+100];
struct stat buf; struct stat buf;
int i; int i;
xctx->prep_hi_structs=0; xctx->prep_hi_structs=0;
xctx->prep_net_structs=0; xctx->prep_net_structs=0;
xctx->prep_hash_inst=0; xctx->prep_hash_inst=0;
@ -2156,17 +2158,28 @@ void load_schematic(int load_symbols, const char *filename, int reset_undo) /* 2
if(reset_undo) xctx->clear_undo(); if(reset_undo) xctx->clear_undo();
if(reset_undo) xctx->prev_set_modify = -1; /* will force set_modify(0) to set window title */ if(reset_undo) xctx->prev_set_modify = -1; /* will force set_modify(0) to set window title */
else xctx->prev_set_modify = 0; /* will prevent set_modify(0) from setting window title */ else xctx->prev_set_modify = 0; /* will prevent set_modify(0) from setting window title */
if(filename && filename[0]) { if(fname && fname[0]) {
my_strncpy(filename, fname, S(filename));
my_strncpy(name, filename, S(name)); my_strncpy(name, filename, S(name));
my_strncpy(xctx->sch[xctx->currsch], name, S(xctx->sch[xctx->currsch])); if(strstr(filename , "http://") == filename ||
strstr(filename , "https://") == filename) {
tclvareval("download_url {", filename, "}", NULL);
my_snprintf(name, S(name), "%s/%s", tclgetvar("XSCHEM_TMP_DIR"), get_cell_w_ext(filename, 0));
my_snprintf(msg, S(msg), "regsub {/\\.$} [get_directory {%s}] {}", filename);
my_strncpy(xctx->current_dirname, tcleval(msg), S(xctx->current_dirname));
dbg(1, "load_schematic(): filename=%s\n", filename);
} else if((strstr(xctx->current_dirname, "http://") == xctx->current_dirname ||
strstr(xctx->current_dirname, "https://") == xctx->current_dirname)) {
} else {
my_snprintf(msg, S(msg), "regsub {/\\.$} [get_directory {%s}] {}", filename);
my_strncpy(xctx->current_dirname, tcleval(msg), S(xctx->current_dirname));
}
/* if name is /some/path/. remove /. at end */ /* if name is /some/path/. remove /. at end */
my_snprintf(msg, S(msg), "regsub {/\\.$} [file dirname {%s}] {}", name); my_strncpy(xctx->sch[xctx->currsch], filename, S(xctx->sch[xctx->currsch]));
my_strncpy(xctx->current_dirname, tcleval(msg), S(xctx->current_dirname)); my_strncpy(xctx->current_name, rel_sym_path(filename), S(xctx->current_name));
my_strncpy(xctx->current_name, rel_sym_path(name), S(xctx->current_name));
dbg(1, "load_schematic(): opening file for loading:%s, filename=%s\n", name, filename); dbg(1, "load_schematic(): opening file for loading:%s, filename=%s\n", name, filename);
dbg(1, "load_schematic(): sch[currsch]=%s\n", xctx->sch[xctx->currsch]); dbg(1, "load_schematic(): sch[currsch]=%s\n", xctx->sch[xctx->currsch]);
if(!name[0]) return; if(!name[0]) return;
if(reset_undo) { if(reset_undo) {
if(!stat(name, &buf)) { /* file exists */ if(!stat(name, &buf)) { /* file exists */
xctx->time_last_modify = buf.st_mtime; xctx->time_last_modify = buf.st_mtime;
@ -2176,9 +2189,8 @@ void load_schematic(int load_symbols, const char *filename, int reset_undo) /* 2
} }
} }
if( (fd=fopen(name,fopen_read_mode))== NULL) { if( (fd=fopen(name,fopen_read_mode))== NULL) {
fprintf(errfp, "load_schematic(): unable to open file: %s, filename=%s\n", fprintf(errfp, "load_schematic(): unable to open file: %s, filename=%s\n", name, filename );
name, filename ? filename : "<NULL>"); my_snprintf(msg, S(msg), "update; alert_ {Unable to open file: %s}", filename);
my_snprintf(msg, S(msg), "update; alert_ {Unable to open file: %s}", filename ? filename: "(null)");
tcleval(msg); tcleval(msg);
clear_drawing(); clear_drawing();
if(reset_undo) set_modify(0); if(reset_undo) set_modify(0);
@ -2842,8 +2854,16 @@ int load_sym_def(const char *name, FILE *embed_fd)
my_strncpy(sympath, abs_sym_path(name, ""), S(sympath)); my_strncpy(sympath, abs_sym_path(name, ""), S(sympath));
} }
if(!embed_fd) { /* regular symbol: open file */ if(!embed_fd) { /* regular symbol: open file */
if((lcc[level].fd=fopen(sympath,fopen_read_mode))==NULL) if((lcc[level].fd=fopen(sympath,fopen_read_mode))==NULL) {
{ /* not found: try web URL */
if( strstr(xctx->current_dirname, "http://") == xctx->current_dirname ||
strstr(xctx->current_dirname, "https://") == xctx->current_dirname) {
tclvareval("try_download_url {", xctx->current_dirname, "} {", name, "}", NULL);
my_snprintf(sympath, S(sympath), "%s/%s", tclgetvar("XSCHEM_TMP_DIR"), get_cell_w_ext(name, 0));
lcc[level].fd=fopen(sympath,fopen_read_mode);
}
}
if(lcc[level].fd==NULL) {
/* issue warning only on top level symbol loading */ /* issue warning only on top level symbol loading */
if(recursion_counter == 1) dbg(0, "l_s_d(): Symbol not found: %s\n",sympath); if(recursion_counter == 1) dbg(0, "l_s_d(): Symbol not found: %s\n",sympath);
my_snprintf(sympath, S(sympath), "%s/%s", tclgetvar("XSCHEM_SHAREDIR"), "systemlib/missing.sym"); my_snprintf(sympath, S(sympath), "%s/%s", tclgetvar("XSCHEM_SHAREDIR"), "systemlib/missing.sym");
@ -3587,6 +3607,7 @@ void descend_symbol(void)
char name[PATH_MAX]; char name[PATH_MAX];
char name_embedded[PATH_MAX]; char name_embedded[PATH_MAX];
int n = 0; int n = 0;
struct stat buf;
rebuild_selected_array(); rebuild_selected_array();
if(xctx->lastsel > 1) return; if(xctx->lastsel > 1) return;
if(xctx->lastsel==1 && xctx->sel_array[0].type==ELEMENT) { if(xctx->lastsel==1 && xctx->sel_array[0].type==ELEMENT) {
@ -3643,10 +3664,20 @@ void descend_symbol(void)
/* load_symbol(name_embedded); */ /* load_symbol(name_embedded); */
load_schematic(1, name_embedded, 1); load_schematic(1, name_embedded, 1);
} else { } else {
/* load_symbol(abs_sym_path(name, "")); */ char sympath[PATH_MAX];
my_strncpy(sympath, abs_sym_path(name, ""), S(sympath));
unselect_all(1); unselect_all(1);
remove_symbols(); /* must follow save (if) embedded */ remove_symbols(); /* must follow save (if) embedded */
load_schematic(1, abs_sym_path(name, ""), 1); dbg(1, "name=%s, sympath=%s\n", name, sympath);
if( stat(sympath, &buf) && /* file does not exists */
(strstr(xctx->current_dirname, "http://") == xctx->current_dirname ||
strstr(xctx->current_dirname, "https://") == xctx->current_dirname)) {
my_snprintf(sympath, S(sympath), "%s/%s", tclgetvar("XSCHEM_TMP_DIR"), get_cell_w_ext(name, 0));
load_schematic(1, sympath, 1);
} else {
load_schematic(1, sympath, 1);
}
} }
zoom_full(1, 0, 1, 0.97); zoom_full(1, 0, 1, 0.97);
} }

View File

@ -3109,8 +3109,10 @@ int tclvareval(const char *script, ...)
va_start(args, script); va_start(args, script);
size = my_strcat(1379, &str, script); size = my_strcat(1379, &str, script);
dbg(1, "tclvareval(): script=%s, str=%s, size=%d\n", script, str, size);
while( (p = va_arg(args, const char *)) ) { while( (p = va_arg(args, const char *)) ) {
size = my_strcat(1380, &str, p); size = my_strcat(1380, &str, p);
dbg(1, "tclvareval(): p=%s, str=%s, size=%d\n", p, str, size);
} }
return_code = Tcl_EvalEx(interp, str, (int)size, TCL_EVAL_GLOBAL); return_code = Tcl_EvalEx(interp, str, (int)size, TCL_EVAL_GLOBAL);
va_end(args); va_end(args);

View File

@ -1254,7 +1254,7 @@ extern void mem_push_undo(void);
extern void mem_pop_undo(int redo, int set_modify_status); extern void mem_pop_undo(int redo, int set_modify_status);
extern void mem_delete_undo(void); extern void mem_delete_undo(void);
extern void mem_clear_undo(void); extern void mem_clear_undo(void);
extern void load_schematic(int load_symbol, const char *abs_name, int reset_undo); extern void load_schematic(int load_symbol, const char *fname, int reset_undo);
/* check if filename already in an open window/tab */ /* check if filename already in an open window/tab */
extern int check_loaded(const char *f, char *win_path); extern int check_loaded(const char *f, char *win_path);
extern void link_symbols_to_instances(int from); extern void link_symbols_to_instances(int from);

View File

@ -2320,7 +2320,7 @@ namespace eval c_toolbar {
set c_t($i,file) {} set c_t($i,file) {}
} }
proc cleanup {} { proc cleanup {} {
variable c_t variable c_t
if {![info exists c_t(n)]} return if {![info exists c_t(n)]} return
set j 0 set j 0
@ -2349,9 +2349,9 @@ namespace eval c_toolbar {
set i [expr {($i + 1) % $n} ] set i [expr {($i + 1) % $n} ]
if {$i == $top} break if {$i == $top} break
} }
} }
proc display {} { proc display {} {
variable c_t variable c_t
if { [winfo exists $c_t(w)]} { if { [winfo exists $c_t(w)]} {
set w $c_t(w) set w $c_t(w)
@ -2372,9 +2372,9 @@ namespace eval c_toolbar {
if { $i == $c_t(top) } break if { $i == $c_t(top) } break
} }
} }
} }
proc add {f} { proc add {f} {
variable c_t variable c_t
for {set i 0} {$i < $c_t(n)} {incr i} { for {set i 0} {$i < $c_t(n)} {incr i} {
if { $c_t($i,file) eq $f } { return 0} if { $c_t($i,file) eq $f } { return 0}
@ -3805,7 +3805,7 @@ proc edit_prop {txtlabel} {
} }
wm geometry .dialog "${edit_prop_size}+$X+$Y" wm geometry .dialog "${edit_prop_size}+$X+$Y"
set prev_symbol $symbol set prev_symbol $symbol
set editprop_sympath [file dirname [abs_sym_path $symbol]] set editprop_sympath [get_directory [abs_sym_path $symbol]]
frame .dialog.f4 frame .dialog.f4
label .dialog.f4.l1 -text $txtlabel label .dialog.f4.l1 -text $txtlabel
label .dialog.f4.path -text "Path:" label .dialog.f4.path -text "Path:"
@ -4422,6 +4422,39 @@ proc find_file { f {paths {}} } {
return $res return $res
} }
# alternative implementation of "file dirname ... "
# that does not mess with http:// (file dirname removes double slashes)
proc get_directory {f} {
if {![regexp {/} $f]} {
set r .
} else {
set r [regsub {/[^/]*$} $f {}]
}
return $r
}
proc download_url {url} {
global XSCHEM_TMP_DIR download_url_helper
set r [catch {exec sh -c "cd $XSCHEM_TMP_DIR; $download_url_helper $url"} res]
puts "download_url: url=$url, exit code=$r, res=$res"
return $r
}
proc try_download_url {dirname sch_or_sym} {
set url $dirname/$sch_or_sym
puts "try_download_url: dirname=$dirname, sch_or_sym=$sch_or_sym"
set r [download_url $url]
if { $r!=0} {
set nitems [regexp -all {/+} $sch_or_sym]
puts "try_download_url: dirname=$dirname, sch_or_sym=$sch_or_sym, nitems=$nitems"
while { $nitems > 0} {
set dirname [get_directory $dirname]
incr nitems -1
}
set url $dirname/$sch_or_sym
set r [download_url $url]
}
}
# given an absolute path of a symbol/schematic remove the path prefix # given an absolute path of a symbol/schematic remove the path prefix
# if file is in a library directory (a $pathlist dir) # if file is in a library directory (a $pathlist dir)
@ -6198,6 +6231,7 @@ set_ne myload_globfilter {*}
set_ne component_browser_on_top 1 set_ne component_browser_on_top 1
## list of tcl procedures to load at end of xschem.tcl ## list of tcl procedures to load at end of xschem.tcl
set_ne tcl_files {} set_ne tcl_files {}
set_ne download_url_helper {curl -f -s -O}
set_ne netlist_dir "$USER_CONF_DIR/simulations" set_ne netlist_dir "$USER_CONF_DIR/simulations"
# this global exists only for netlist_type radiobuttons, don't use, use [xschem] subcommand to get/set values # this global exists only for netlist_type radiobuttons, don't use, use [xschem] subcommand to get/set values
# it is also used in xschemrc to set initial netlist type. # it is also used in xschemrc to set initial netlist type.

View File

@ -336,6 +336,13 @@
# lappend tcl_files ${XSCHEM_SHAREDIR}/change_index.tcl # lappend tcl_files ${XSCHEM_SHAREDIR}/change_index.tcl
# lappend tcl_files ${XSCHEM_SHAREDIR}/ngspice_backannotate.tcl # lappend tcl_files ${XSCHEM_SHAREDIR}/ngspice_backannotate.tcl
###########################################################################
#### WEB URL DOWNLOAD HELPER APPLICATION
###########################################################################
#### used to download files from web: default: {curl -f -s -O}
# set download_url_helper {curl -f -s -O}
# set download_url_helper {wget --quiet}
########################################################################### ###########################################################################
#### XSCHEM TOOLBAR #### XSCHEM TOOLBAR
########################################################################### ###########################################################################

View File

@ -7,11 +7,11 @@ S {}
E {} E {}
B 2 860 -550 1360 -160 {flags=graph B 2 860 -550 1360 -160 {flags=graph
y1 = 0 y1 = 0
y2 = 7.29638 y2 = 6.6
divy = 4 divy = 4
subdivy=1 subdivy=1
x1=0 x1=0
x2=22 x2=24
divx=8 divx=8
unitx=1 unitx=1
color=15 color=15
@ -19,11 +19,11 @@ node=i(vload)
dataset=-1} dataset=-1}
B 2 860 -790 1360 -550 {flags=graph B 2 860 -790 1360 -550 {flags=graph
y1 = 0 y1 = 0
y2 = 120 y2 = 112
divy = 4 divy = 4
subdivy=1 subdivy=1
x1=0 x1=0
x2=22 x2=24
divx=8 divx=8
unitx=1 unitx=1
color=8 color=8
@ -56,9 +56,9 @@ C {ammeter.sym} 230 -470 2 1 {name=Vm}
C {lab_pin.sym} 230 -610 2 0 {name=l2 sig_type=std_logic lab=pn} C {lab_pin.sym} 230 -610 2 0 {name=l2 sig_type=std_logic lab=pn}
C {lab_pin.sym} 230 -510 2 0 {name=l3 sig_type=std_logic lab=mn} C {lab_pin.sym} 230 -510 2 0 {name=l3 sig_type=std_logic lab=mn}
C {isource_arith.sym} 230 -560 2 0 {name=G1 C {isource_arith.sym} 230 -560 2 0 {name=G1
CUR="v(f) * 6 * (1 - exp( (v(pn,mn) CUR="v(f) * 5.5 * (1 - exp( (v(pn,mn)
+ -18.5 - v(f)*3 ) * 0.7) - + -21 - v(f)*2.5 ) * 0.6) -
+ 0.005 * (v(pn,mn) - 18.5 - v(f)*3))" + 0.002 * (v(pn,mn) - 21 - v(f)*2.5))"
} }
C {ipin.sym} 90 -420 2 1 {name=p2 lab=fade} C {ipin.sym} 90 -420 2 1 {name=p2 lab=fade}
C {ammeter.sym} 140 -420 3 0 {name=Vf} C {ammeter.sym} 140 -420 3 0 {name=Vf}
@ -72,7 +72,7 @@ vsun fade 0 0
vref minus 0 0 vref minus 0 0
.control .control
save plus i(vload) i(vm) n(pn) v(mn) save plus i(vload) i(vm) n(pn) v(mn)
dc vload 0 22 0.5 vsun 0.2 1.0 0.2 dc vload 0 24 0.5 vsun 0.2 1.0 0.2
write pv_ngspice.raw write pv_ngspice.raw
quit quit
.endc .endc
@ -95,65 +95,173 @@ descr="Load embedded waves"
tclcommand="xschem raw_read_from_attr" tclcommand="xschem raw_read_from_attr"
spice_data=" spice_data="
VGl0bGU6ICoqIHNjaF9wYXRoOiAvaG9tZS9zY2hpcHBlcy94c2NoZW0tcmVwby90cnVuay94c2NoZW1fbGlicmFyeS9uZ3NwaWNlL3B2X25nc3BpY2Uuc2NoCkRhdGU6 VGl0bGU6ICoqIHNjaF9wYXRoOiAvaG9tZS9zY2hpcHBlcy94c2NoZW0tcmVwby90cnVuay94c2NoZW1fbGlicmFyeS9uZ3NwaWNlL3B2X25nc3BpY2Uuc2NoCkRhdGU6
IFR1ZSBTZXAgMjcgMTc6MDQ6MjEgIDIwMjIKUGxvdG5hbWU6IERDIHRyYW5zZmVyIGNoYXJhY3RlcmlzdGljCkZsYWdzOiByZWFsCk5vLiBWYXJpYWJsZXM6IDMKTm8u IE1vbiBOb3YgMTQgMTQ6MTk6NDggIDIwMjIKUGxvdG5hbWU6IERDIHRyYW5zZmVyIGNoYXJhY3RlcmlzdGljCkZsYWdzOiByZWFsCk5vLiBWYXJpYWJsZXM6IDgKTm8u
IFBvaW50czogMjI1ClZhcmlhYmxlczoKCTAJdih2LXN3ZWVwKQl2b2x0YWdlCgkxCXYocGx1cykJdm9sdGFnZQoJMglpKHZsb2FkKQljdXJyZW50CkJpbmFyeToKAAAA IFBvaW50czogMjQ1ClZhcmlhYmxlczoKCTAJdih2LXN3ZWVwKQl2b2x0YWdlCgkxCXYobW4pCXZvbHRhZ2UKCTIJdihwbHVzKQl2b2x0YWdlCgkzCXYocG4pCXZvbHRh
AAAAAAAAAAAAAAAAABkliAuYCPU/AAAAAAAA4D8AAAAAAADgP2PJI6FN/PQ/AAAAAAAA8D8AAAAAAADwPzn3PsoC8PQ/AAAAAAAA+D8AAAAAAAD4P4fYHXy34/Q/AAAA Z2UKCTQJaSh2ZikJY3VycmVudAoJNQlpKHZsb2FkKQljdXJyZW50Cgk2CWkodm0pCWN1cnJlbnQKCTcJaSh2cCkJY3VycmVudApCaW5hcnk6CgAAAAAAAAAAAAAAAAAA
AAAAAEAAAAAAAAAAQA2vyIRr1/Q/AAAAAAAABEAAAAAAAAAEQM4hV50ey/Q/AAAAAAAACEAAAAAAAAAIQITIKWHQvvQ/AAAAAAAADEAAAAAAAAAMQFxMdkGAsvQ/AAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLBwxdVFvyP8sHDF1UW/I/ywcMXVRb8j8AAAAAAADgPwAAAAAAAAAAAAAAAAAA4D8AAAAAAADgPwAAAAAAAAAAIUTCENJW
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
AAAANkAAAAAAAAA2QACfbNc4PATA"} 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
/r+AngSwJeD+v4CeBLAl4P6/"}
C {ngspice_get_expr.sym} 280 -560 0 0 {name=r24 C {ngspice_get_expr.sym} 280 -560 0 0 {name=r24
node="[format %.4g [expr ([ngspice::get_voltage pn] - [ngspice::get_voltage mn]) * [ngspice::get_current Vm]]] W" node="[format %.4g [expr ([ngspice::get_voltage pn] - [ngspice::get_voltage mn]) * [ngspice::get_current Vm]]] W"
descr = power descr = power