diff --git a/src/parselabel.l b/src/parselabel.l index fc5027bb..335ad50b 100644 --- a/src/parselabel.l +++ b/src/parselabel.l @@ -142,23 +142,23 @@ NOTSP [^ \t\n] INT [0-9]+ DDOT {SP}".."{SP} CLN {SP}":"{SP} -LAB [-a-zA-Z_%$~"#/\\<>] +LAB [-a-zA-Z_%$~"#!/\\<>] /* includes numbers */ -LAB_NUM [-a-zA-Z_%$~"#/\\<>0-9] +LAB_NUM [-a-zA-Z_%$~"#!/\\<>0-9] /* includes numbers and space and *+(). */ -IDX_LAB_NUM_SP [-a-zA-Z_%$~"#/\\<> \t\n0-9*+().] +IDX_LAB_NUM_SP [-a-zA-Z_%$~"#!/\\<> \t\n0-9*+().] /* identifier, may start with a number */ IDX_ID_N ({LAB_NUM}+({IDX_LAB_NUM_SP}*{LAB_NUM})*) /* identifier, not starting with a number */ IDX_ID (("("|{LAB})+{IDX_LAB_NUM_SP}*) /* includes numbers and space and +(). and :*/ -LAB_NUM_SP [-a-zA-Z_%$~"#:/\\<> \t\n0-9+().] +LAB_NUM_SP [-a-zA-Z_%$~"#!:/\\<> \t\n0-9+().] /* identifier, may start with a number */ ID_NUM ({LAB_NUM}+({LAB_NUM_SP}*{LAB_NUM})*) /* identifier, not starting with a number */ ID (("("|{LAB})+{LAB_NUM_SP}*) /* ~#diUV=9_(\#-hgvUY=) */ -ID_EXT_PARENTHESIS ([-~"#+/=_a-zA-Z][-#@\\/:.=_+a-zA-Z0-9]*\([-~"#@\\/:.=_+a-zA-Z0-9]*\)) +ID_EXT_PARENTHESIS ([-~"#+/=_a-zA-Z][-#!@\\/:.=_+a-zA-Z0-9]*\([-~"#!@\\/:.=_+a-zA-Z0-9]*\)) %% /* this action resets initial condition at start of line. This is extremely useful if previously lexer diff --git a/src/xschem.tcl b/src/xschem.tcl index 824d6c81..bf7e2f7d 100644 --- a/src/xschem.tcl +++ b/src/xschem.tcl @@ -651,12 +651,12 @@ proc xschem_server {sock addr port} { fileevent $sock readable [list xschem_getdata $sock] } - ## given a path (x1.x2.m4) descend into x1.x2 and return m4 whether m4 found or not proc descend_hierarchy {path {redraw 1}} { - # return to top level if not already there xschem set no_draw 1 + # return to top level if not already there while { [xschem get currsch] } { xschem go_back } + # recursively descend into sub-schematics while { [regexp {\.} $path] } { xschem unselect_all set inst $path @@ -674,7 +674,6 @@ proc descend_hierarchy {path {redraw 1}} { return $path } - ## given a hierarchical instname name (x1.xamp.m1) go down in the hierarchy and ## select the specified instance (m1). ## this search assumes it is given from the top of hierarchy diff --git a/xschem_library/pcb/hierarchical_tedax.sch b/xschem_library/pcb/hierarchical_tedax.sch index 3bbc1241..60ed1178 100644 --- a/xschem_library/pcb/hierarchical_tedax.sch +++ b/xschem_library/pcb/hierarchical_tedax.sch @@ -33,7 +33,7 @@ N 990 -210 1040 -210 {lab=G} N 1040 -240 1040 -210 {lab=G} N 1040 -240 1090 -240 {lab=G} N 1070 -840 1070 -790 { lab=VOUT_PROTECTED1} -N 390 -440 390 -420 {lab=VSS} +N 390 -440 390 -420 {lab=VSS!} N 310 -500 390 -500 { lab=VSS_ANALOG} N 310 -440 310 -420 {lab=VSS} N 540 -230 540 -200 {lab=VREF}