• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC SKILL
  3. Most efficient db function to move all shapes in a design...

Stats

  • Locked Locked
  • Replies 15
  • Subscribers 143
  • Views 19010
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Most efficient db function to move all shapes in a design?

jaleco
jaleco over 8 years ago

Working in ic5141, what is the most efficient way to move all shapes in a design using the db functions?

I'm dealing with millions of shapes and would like to use a function like Move Origin, but this is not a db function.

Is it more efficient to create a figure group, add each shape to the group and move the group, or to select and move each shape?

Neither seem like good options for a list of millions of shapes.

  • Cancel
Parents
  • jaleco
    jaleco over 8 years ago
    Thank you both for your comments and insights.
    I tried several test cases before replying.
    Both -nograph and graphics mode selection by area and leMakeCell() functions work - using small area test cases of the same master design.

    But working with over 4 million shapes in the selection set, -nograph mode seems hopeless.
    I let it try to complete for 5 hours just to see if I could say it took a specific amount of time before simply killing it.
    In contrast, graphics mode completes the same selection and leMakeCell() in less than 10 minutes.

    The only difference between the 2 modes is the use of dbGetOverlaps() as the first argument to leMakeCell() in -nograph mode, and the use of geSelectArea() and geGetSelectedSet() as the first argument to leMakeCell() in graphics mode.
    ie:
    <-nograph mode>
    leMakeCell(dbGetOverlaps(cv bbox) libName cellName "layout" t list(xCoord yCoord))
    <graphics mode>
    geSelectArea(win bbox)
    leMakeCell(geGetSelectedSet() libName cellName "layout" t list(xCoord yCoord))

    dbGetOverlaps() generates a list.
    geSelectArea() does not, so geGetSelectedSet() is used to generate the list in graphics mode.

    I did try the dbCopyFig() option in -nograph mode instead of going directly to leMakeCell(), but it is dependent on the same use of dbGetOverlaps() to generate an input list to loop through.
    eg:
    shape_list=dbGetOverlaps(cv bbox)
    foreach(shape shape_list dbCopyFig(shape new_cv offset:offsetY))

    That -nograph sessions can't seem to complete what is essentially the same task because of the size of the operating list is not at all what I expected.
    I do ask customer support for help as well, but ic5141 is not officially supported anymore.
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • jaleco
    jaleco over 8 years ago
    Thank you both for your comments and insights.
    I tried several test cases before replying.
    Both -nograph and graphics mode selection by area and leMakeCell() functions work - using small area test cases of the same master design.

    But working with over 4 million shapes in the selection set, -nograph mode seems hopeless.
    I let it try to complete for 5 hours just to see if I could say it took a specific amount of time before simply killing it.
    In contrast, graphics mode completes the same selection and leMakeCell() in less than 10 minutes.

    The only difference between the 2 modes is the use of dbGetOverlaps() as the first argument to leMakeCell() in -nograph mode, and the use of geSelectArea() and geGetSelectedSet() as the first argument to leMakeCell() in graphics mode.
    ie:
    <-nograph mode>
    leMakeCell(dbGetOverlaps(cv bbox) libName cellName "layout" t list(xCoord yCoord))
    <graphics mode>
    geSelectArea(win bbox)
    leMakeCell(geGetSelectedSet() libName cellName "layout" t list(xCoord yCoord))

    dbGetOverlaps() generates a list.
    geSelectArea() does not, so geGetSelectedSet() is used to generate the list in graphics mode.

    I did try the dbCopyFig() option in -nograph mode instead of going directly to leMakeCell(), but it is dependent on the same use of dbGetOverlaps() to generate an input list to loop through.
    eg:
    shape_list=dbGetOverlaps(cv bbox)
    foreach(shape shape_list dbCopyFig(shape new_cv offset:offsetY))

    That -nograph sessions can't seem to complete what is essentially the same task because of the size of the operating list is not at all what I expected.
    I do ask customer support for help as well, but ic5141 is not officially supported anymore.
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information