Product Documentation
Virtuoso Layout Suite SKILL Reference
Product Version IC23.1, November 2023

leSearchHierarchy

leSearchHierarchy(
d_cellViewId
l_bBox
x_stopLevel
t_objectType
l_criteriaList
)
=> l_objects / nil

Description

Searches the cellview d_cellViewId for objects that match the type and criteria specified. The search is bound by the specified l_bBox and restricted to the specified x_stopLevel. The search assumes all figures are valid if the Layer Selection Window (LSW) has not been initialized.

Arguments

d_cellViewId

Database ID for the cellview to search.

l_bBox

Bounding box within the cellview to search.

x_stopLevel

Specifies how deep in the hierarchy to search. Valid Values: any integer from 0 to 32

t_objectType

Type of object for which to search. Valid Values: inst, via, array, label, path, pathSeg, polygon, rectangle, ellipse, donut, trl, bend, taper, any shape, any conic, any microstrip, text display, pin, PR boundary, snap boundary, area boundary, cluster boundary, or blockage.

l_criteriaList

List of criteria for which you want to search. You can search for one criterion or lists of several criteria.

Valid Values: A list containing t_criteriaType, t_operator, and g_value:

  • t_criteriaType Criteria for which you want to search. Valid Values: any valid attribute associated with the specific object, or any additional property you created for the object. For details about any object attributes, see the description of the SKILL command used to create that object, for example, leCreatePath.
  • t_operator Boolean operator you want to use in the search. It must be appropriate for the criteria type. For example, <= is appropriate in a search for a numeric value, but not appropriate in a search for a string. Valid Values: ==, <, <=, >=, >, !=, EXIST (property exists), !EXIST (property does not exist)
  • g_value Value of the criterion you want to find. Valid values include any value appropriate to this criteria type.

The following table lists the object types and the criteria that you can search for.

Object Type Criteria Types

any conic

property, layer, any radius, net name

any microstrip

property, layer

any shape

property, layer, ROD name, net name

area boundary

property, boundary name

array

rows, columns, deltaX, deltaY, array name, lib name, cell name

bend

property, layer, bend style

blockage

property, layer name, blockage type, owner name

cluster boundary

property, boundary name, cluster name

donut

property, layer, inner radius, outer radius, any radius, net name

ellipse

property, layer, radiusX, radiusY, any radius, net name

instance

property, inst name, lib name, cell name, view name, mag, orient

label

property, layer, text, font, height, orient, justify, ROD name

path

property, layer, path style, path width, begin ext, end ext, ROD name, net name

pathSeg

property, layer, width, end style, begin style, net name

pin

property, layer, term name

polygon

property, layer, ROD name, net name

PR boundary

rectangle

property, layer, ROD name, net name

snap boundary

taper

property, layer, taper style

text display

property, layer, text, font, justify, height, orient, ROD name

trl [transmission line]

property, layer, bend style, chamfer fac, radius fac, trl width

via

property, via definition

Value Returned

l_objects

Returns l_objects, a list of all objects that meet the object type and search criteria.

nil

Does not return a list.

Examples

Searches all of cell2 at the top-level for paths on poly1 drawing layer with path width >= 3.0:

leSearchHierarchy( cell2 list( 0:0 300:300 ) 0 "path" 
list( list( "layer" "==" list( "poly1" "drawing" ) )
list( "path width" ">=" 3.0 ) ) )

Searches for an exact cell with cell name myCell. The use of ^ and $ as used in the example limit the pattern matching. If the search string is myCell, without ^ and $, the function searches for all cells containing myCell in cell names:

cv=geGetWindowCellView()
leSearchHierarchy(cv cv~>bBox 0 "array" list(list("cell name" "==" "^myCell$")))

Searches all of the cellview bounding box 5 levels for all area boundaries in the cellview:

leSearchHierarchy(cv cv~>bBox 5 "area boundary" list()) 

Searches the cellview for an area boundary named B3:

leSearchHierarchy(cv cv~>bBox 5 "area boundary" list( list( "boundary name" "==" "B3"))) 

Searches for all cluster boundaries in the cellview named myClusterBound which includes the cluster name myCluster containing the property prop1 having a value of val1:

criteriaList1 = list( list("boundary name" "==" "myClusterBound") 
                     list( "property" "==" list("prop1" "val1"))
                     list( "cluster name" "==" "myCluster")    
                   )
leSearchHierarchy(cv cv~>bBox 5 "cluster boundary" criteriaList1)

Searches for all blockages in the cellview:

leSearchHierarchy(cv cv~>bBox 5 "blockage" list())

Searches for all the routing blockages in the cellview on the metal1 layer:

criteriaList2 = list( list("blockage type" "==" "routing") 
                     list("layer name" "==" "metal1")
                   )
leSearchHierarchy(cv cv~>bBox 5 "blockage" criteriaList2)

Searches for all path segments in the cellview with a begin and end style of extend and with a property of prop2 having a value of val2:

criteriaList = list( list("begin style" "==" "extend")
                     list("end style" "==" "extend")
                     list("property" "==" list("prop2" "val2"))
                   )
leSearchHierarchy(cv cv~>bBox 5 "pathSeg" criteriaList)

Interactive Function

Enter this function with only the window ID argument; the system prompts you to specify the object type, criteria type, and where to search. If you do not specify w_windowId, the current window is used.

leHiSearch( [ w_windowId ] ) => t / nil


Return to top
 ⠀
X