From 8bd9c3d93935c7318ec8721a56ece19e7fd4283c Mon Sep 17 00:00:00 2001 From: stefan schippers Date: Sun, 9 Feb 2025 15:27:55 +0100 Subject: [PATCH] fix bitrots in proc cellview (Update function) --- src/xschem.tcl | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/xschem.tcl b/src/xschem.tcl index 43bcd714..e2fe4ec5 100644 --- a/src/xschem.tcl +++ b/src/xschem.tcl @@ -1799,6 +1799,8 @@ proc cellview_setlabels {w symbol derived_symbol} { if { $sym_spice_sym_def eq {}} { if { ![file exists [abs_sym_path [$w get]]] } { $w configure -bg $missingbg + } elseif {$new_sch ne $default_sch } { + $w configure -bg $symbg } } puts =============== @@ -1814,7 +1816,7 @@ proc cellview_setlabels {w symbol derived_symbol} { xschem set schsymbolprop $newprop xschem set_modify 3 ;# set only modified flag to force a save, do not update window/tab titles xschem save fast - xschem remove_symbols ;# purge all symbols to force a reload from disk + # xschem remove_symbols ;# purge all symbols to force a reload from disk xschem load -keep_symbols -nodraw -noundoreset $current xschem netlist -keep_symbols -noalert;# traverse the hierarchy and retain all encountered symbols puts "get netlist" @@ -1834,7 +1836,6 @@ proc cellview_edit_item {symbol w} { } elseif { $sym_spice_sym_def eq {}} { xschem load_new_window [$w get] } else { - puts $symbol set current [xschem get current_name] set old_sym_def [xschem getprop symbol $symbol spice_sym_def 2] set new_sym_def [editdata $sym_spice_sym_def {Symbol spice_sym_def attribute}] @@ -1906,15 +1907,17 @@ proc cellview { {derived_symbols {}} {upd 0} } { } set syms [join [lsort -index 1 [xschem symbols $derived_symbols]]] + # puts "syms=$syms" foreach {i symbol} $syms { if { [catch {set base_name [xschem symbol_base_name $symbol]}] } { set base_name $symbol } + # puts "i=$i, symbol=$symbol" set derived_symbol 0 if {$base_name ne {}} { set derived_symbol 1 } - if { [catch {set abs_sch [xschem get_sch_from_sym -1 $symbol]} ]} { + if { [catch {xschem get_sch_from_sym -1 $symbol} abs_sch ]} { set abs_sch [abs_sym_path [add_ext $symbol .sch]] } if {$derived_symbol} { @@ -1931,6 +1934,9 @@ proc cellview { {derived_symbols {}} {upd 0} } { } if {$skip} { continue } set sym_sch [rel_sym_path $abs_sch] + if {[catch {xschem getprop symbol $symbol type} type]} { + puts "error: $symbol not found: $type" + } set type [xschem getprop symbol $symbol type] set sym_spice_sym_def [xschem getprop symbol $symbol spice_sym_def 2] if {$type eq {subcircuit}} {