do not show ERC info window if netlisting invoked via CLI; global variable show_infowindow_after_netlist can now take 3 values: always, onerror, never, to decide when showing the ERC info window after netlisting. Old values (1, 0) still accepted as aliases for always and onerror

This commit is contained in:
stefan schippers 2023-08-27 23:55:48 +02:00
parent 519fb2fbf2
commit 1c3c9ff889
10 changed files with 30 additions and 20 deletions

View File

@ -279,7 +279,7 @@ static int hash_inst_pin(int what, int i, int j)
xctx->inst[i].name, j, prop_ptr);
statusmsg(str,2);
err |= 1;
tcleval("show_infotext"); /* critical error: force ERC window showing */
tclvareval("show_infotext ", my_itoa(err), NULL); /* critical error: force ERC window showing */
if(!xctx->netlist_count) {
xctx->inst[i].color = -PINLAYER;
xctx->hilight_nets=1;
@ -655,7 +655,7 @@ static int signal_short( const char *tag, const char *n1, const char *n2)
my_snprintf(str, S(str), "Error: %s shorted: %s - %s", tag, n1, n2);
dbg(1, "signal_short(): signal_short: shorted: %s - %s", n1, n2);
statusmsg(str,2);
tcleval("show_infotext"); /* critical error: force ERC window showing */
tclvareval("show_infotext ", my_itoa(err), NULL); /* critical error: force ERC window showing */
if(!xctx->netlist_count) {
bus_hilight_hash_lookup(n1, xctx->hilight_color, XINSERT);
if(tclgetboolvar("incr_hilight")) incr_hilight_color();
@ -1359,7 +1359,7 @@ int warning_overlapped_symbols(int sel)
xctx->inst[i].instname, xctx->inst[i].name, xctx->inst[found->value].instname);
statusmsg(str,2);
err |= 1;
tcleval("show_infotext"); /* critical error: force ERC window showing */
tclvareval("show_infotext ", my_itoa(err), NULL); /* critical error: force ERC window showing */
}
}
int_hash_free(&table);
@ -1528,7 +1528,7 @@ int sym_vs_sch_pins()
my_snprintf(str, S(str), " %s <--> %s", type, pin_dir);
statusmsg(str,2);
err |= 1;
tcleval("show_infotext"); /* critical error: force ERC window showing */
tclvareval("show_infotext ", my_itoa(err), NULL); /* critical error: force ERC window showing */
for(j = 0; j < xctx->instances; ++j) {
if(!xctx->x_strcmp(get_sym_name(j, 9999, 1), xctx->sym[i].name)) {
xctx->inst[j].color = -PINLAYER;
@ -1547,7 +1547,7 @@ int sym_vs_sch_pins()
xctx->sym[i].name, lab);
statusmsg(str,2);
err |= 1;
tcleval("show_infotext"); /* critical error: force ERC window showing */
tclvareval("show_infotext ", my_itoa(err), NULL); /* critical error: force ERC window showing */
for(j = 0; j < xctx->instances; ++j) {
dbg(1, "inst.name=%s, sym.name=%s\n", tcl_hook2(xctx->inst[j].name), xctx->sym[i].name);
if(!xctx->x_strcmp(get_sym_name(j, 9999, 1), xctx->sym[i].name)) {
@ -1583,7 +1583,7 @@ int sym_vs_sch_pins()
xctx->sym[i].name, rects, pin_cnt);
statusmsg(str,2);
err |= 1;
tcleval("show_infotext"); /* critical error: force ERC window showing */
tclvareval("show_infotext ", my_itoa(err), NULL); /* critical error: force ERC window showing */
for(j = 0; j < xctx->instances; ++j) {
if(!xctx->x_strcmp(get_sym_name(j, 9999, 1), xctx->sym[i].name)) {
xctx->inst[j].color = -PINLAYER;
@ -1608,7 +1608,7 @@ int sym_vs_sch_pins()
xctx->sym[i].name, pin_name ? pin_name : "<NULL>");
statusmsg(str,2);
err |= 1;
tcleval("show_infotext"); /* critical error: force ERC window showing */
tclvareval("show_infotext ", my_itoa(err), NULL); /* critical error: force ERC window showing */
for(k = 0; k < xctx->instances; ++k) {
if(!xctx->x_strcmp(get_sym_name(k, 9999, 1), xctx->sym[i].name)) {
xctx->inst[k].color = -PINLAYER;

View File

@ -214,7 +214,7 @@ int traverse_node_hash()
if(incr_hi) incr_hilight_color();
statusmsg(str, 2);
err |= 1;
tcleval("show_infotext"); /* critical error: force ERC window showing */
tclvareval("show_infotext ", my_itoa(err), NULL); /* critical error: force ERC window showing */
}
else if(entry->d.out + entry->d.inout + entry->d.in == 1)
{

View File

@ -2280,12 +2280,15 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
* or no fail (0) code. */
else if(!strcmp(argv[1], "netlist") )
{
char *saveshow = NULL;
int err = 0;
int messages = 0;
char save[PATH_MAX];
const char *fname = NULL;
const char *path;
yyparse_error = 0;
my_strdup(_ALLOC_ID_, &saveshow, tclgetvar("show_infowindow_after_netlist"));
tclsetvar("show_infowindow_after_netlist", "never");
my_strncpy(save, tclgetvar("netlist_dir"), S(save));
if(argc > 2) {
if(!strcmp(argv[2], "-messages")) {
@ -2325,6 +2328,8 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
Tcl_SetResult(interp, my_itoa(err), TCL_VOLATILE);
}
}
tclsetvar("show_infowindow_after_netlist", saveshow);
my_free(_ALLOC_ID_, &saveshow);
}
/* new_process [f]

View File

@ -519,7 +519,7 @@ int global_spice_netlist(int global) /* netlister driver */
my_free(_ALLOC_ID_, &type);
my_free(_ALLOC_ID_, &place);
xctx->netlist_count = 0;
if(tclgetboolvar("show_infowindow_after_netlist")) tcleval("show_infotext");
tclvareval("show_infotext ", my_itoa(err), NULL); /* critical error: force ERC window showing */
return err;
}

View File

@ -271,7 +271,7 @@ int global_tedax_netlist(int global) /* netlister driver */
}
if(!debug_var) xunlink(netl_filename);
xctx->netlist_count = 0;
if(tclgetboolvar("show_infowindow_after_netlist")) tcleval("show_infotext");
tclvareval("show_infotext ", my_itoa(err), NULL); /* critical error: force ERC window showing */
return err;
}

View File

@ -3081,7 +3081,6 @@ const char *net_name(int i, int j, int *multip, int hash_prefix_unnamed_net, int
my_snprintf(errstr, S(errstr), "Warning: unconnected pin, Inst idx: %d, Pin idx: %d Inst:%s\n",
i, j, xctx->inst[i].instname ) ;
statusmsg(errstr,2);
tcleval("show_infotext"); /* critical error: force ERC window showing */
if(!xctx->netlist_count && xctx->netlist_type != CAD_TEDAX_NETLIST) {
xctx->inst[i].color = -PINLAYER;
xctx->hilight_nets=1;

View File

@ -399,7 +399,7 @@ int global_verilog_netlist(int global) /* netlister driver */
my_free(_ALLOC_ID_, &tmp_string);
my_free(_ALLOC_ID_, &type);
xctx->netlist_count = 0;
if(tclgetboolvar("show_infowindow_after_netlist")) tcleval("show_infotext");
tclvareval("show_infotext ", my_itoa(err), NULL); /* critical error: force ERC window showing */
return err;
}

View File

@ -486,7 +486,7 @@ int global_vhdl_netlist(int global) /* netlister driver */
my_free(_ALLOC_ID_, &type);
my_free(_ALLOC_ID_, &port_value);
xctx->netlist_count = 0;
if(tclgetboolvar("show_infowindow_after_netlist")) tcleval("show_infotext");
tclvareval("show_infotext ", my_itoa(err), NULL); /* critical error: force ERC window showing */
return err;
}

View File

@ -4406,10 +4406,15 @@ proc alert_ {txtlabel {position +200+300} {nowait {0}} {yesno 0}} {
return $rcode
}
proc show_infotext {} {
global has_x infowindow_text
proc show_infotext {{err 0}} {
global has_x infowindow_text show_infowindow_after_netlist
set s $show_infowindow_after_netlist
if {$s == 1} { set s always}
if {$s == 0} { set s onerror}
if {[info exists has_x]} {
wm deiconify .infotext
if {($s eq {always}) || ($err != 0 && $s eq {onerror})} {
wm deiconify .infotext
}
} else {
puts stderr $infowindow_text
}
@ -6659,7 +6664,7 @@ set_ne compare_sch 0
set_ne disable_unique_names 0
set_ne sym_txt 1
set_ne show_infowindow 0
set_ne show_infowindow_after_netlist 0
set_ne show_infowindow_after_netlist onerror
set_ne symbol_width 150
set_ne editor {gvim -f}
set_ne rainbow_colors 0

View File

@ -346,10 +346,11 @@
# set show_infowindow 0
###########################################################################
#### ALWAYS SHOW ERC INFO WINDOW AFTER NETLIST
#### SHOW ERC INFO WINDOW AFTER NETLIST
###########################################################################
#### default: 0
# set show_infowindow_after_netlist 0
#### allowed values: never onerror always
#### default: onerror
# set show_infowindow_after_netlist onerror
###########################################################################
#### TCP CONNECTION WITH GAW