get_lib_cells don't require library/

This commit is contained in:
James Cherry 2020-04-26 08:49:09 -07:00
parent 658be26021
commit 6d06cb22d8
2 changed files with 68 additions and 45 deletions

View File

@ -1475,6 +1475,31 @@ proc get_lib_cell_arg { arg_name arg error_proc } {
return $lib_cell return $lib_cell
} }
proc get_lib_cells_arg { arg_name arglist error_proc } {
set lib_cells {}
# Copy backslashes that will be removed by foreach.
set arglist [string map {\\ \\\\} $arglist]
foreach arg $arglist {
if {[llength $arg] > 1} {
# Embedded list.
set lib_cells [concat $lib_cells [get_lib_cells_arg $arg_name $arg $warn_error]]
} elseif { [is_object $arg] } {
set object_type [object_type $arg]
if { $object_type == "LibertyCell" } {
lappend lib_cells $arg
} else {
sta_warn_error $warn_error "unsupported object type $object_type."
}
} elseif { $arg != {} } {
set arg_lib_cells [get_lib_cells -quiet $arg]
if { $arg_lib_cells != {} } {
set lib_cells [concat $lib_cells $arg_lib_cells]
}
}
}
return $lib_cells
}
proc get_instance_error { arg_name arg } { proc get_instance_error { arg_name arg } {
set inst "NULL" set inst "NULL"
if {[llength $arg] > 1} { if {[llength $arg] > 1} {

View File

@ -629,30 +629,28 @@ proc get_lib_cells { args } {
set cell_regexp [cell_wild_regexp $divider] set cell_regexp [cell_wild_regexp $divider]
set quiet [info exists flags(-quiet)] set quiet [info exists flags(-quiet)]
foreach pattern $patterns { foreach pattern $patterns {
if {[regexp $cell_regexp $pattern ignore lib_name cell_pattern]} { if { ![regexp $cell_regexp $pattern ignore lib_name cell_pattern]} {
# SDC does not allow wildcards in the library name. set lib_name "*"
set libs [get_libs -quiet $lib_name] set cell_pattern $pattern
if { $libs == {} } { }
if {!$quiet} { # Allow wildcards in the library name (incompatible).
sta_warn "library '$lib_name' not found." set libs [get_libs -quiet $lib_name]
} if { $libs == {} } {
} else { if {!$quiet} {
foreach lib $libs { sta_warn "library '$lib_name' not found."
set matches [$lib find_liberty_cells_matching $cell_pattern \
$regexp $nocase]
if {$matches != {}} {
set cells [concat $cells $matches]
}
}
if { $cells == {} } {
if {!$quiet} {
sta_warn "cell '$cell_pattern' not found."
}
}
} }
} else { } else {
if {!$quiet} { foreach lib $libs {
sta_warn "library/cell not found in $pattern." set matches [$lib find_liberty_cells_matching $cell_pattern \
$regexp $nocase]
if {$matches != {}} {
set cells [concat $cells $matches]
}
}
if { $cells == {} } {
if {!$quiet} {
sta_warn "cell '$cell_pattern' not found."
}
} }
} }
} }
@ -1598,8 +1596,8 @@ proc set_clock_transition { args } {
# -rise/-fall are obsolete. # -rise/-fall are obsolete.
define_cmd_args "set_clock_uncertainty" \ define_cmd_args "set_clock_uncertainty" \
{[-from|-rise_from|-fall_from from_clock]\ {[-from|-rise_from|-fall_from from_clock]\
[-to|-rise_to|-fall_to to_clock] [-rise] [-fall]\ [-to|-rise_to|-fall_to to_clock] [-rise] [-fall]\
[-setup] [-hold] uncertainty [objects]} [-setup] [-hold] uncertainty [objects]}
proc set_clock_uncertainty { args } { proc set_clock_uncertainty { args } {
parse_key_args "set_clock_uncertainty" args \ parse_key_args "set_clock_uncertainty" args \