• 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. Digital Implementation
  3. dbForEach dbForAll and db*Next* difference

Stats

  • Locked Locked
  • Replies 3
  • Subscribers 91
  • Views 1050
  • 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

dbForEach dbForAll and db*Next* difference

iclabwhoami
iclabwhoami over 14 years ago

Hi ,

Do anyone know what's the difference between  dbForEach* and dbForAll *?  why does it need to use db*Next*

in iteration loop?

  • Cancel
  • iclabwhoami
    iclabwhoami over 14 years ago

    I also found there are dbIterAllRoutes ,dbIterRoutes ,dbEndIterRoutes,dbEndIterAllRoutes,so I think dbNext* are used in this iteration method, such as the following code :

     

    set iter [dbIterRoutes $net]
    while {[set route [dbRouteNext $iter]] != "0x0"} {
    if [dbIsRouteWire $route] {
    set wire_info [dbInfoWire $route]
    } elseif [dbIsRouteVia $route] {
    set via_info [dbInfoVia $route]
    } else {
    puts "something’s wrong\n"
    }
    ...
    if (want to break out of the iterator loop)
    dbEndIterRoutes $iter
    ...
    }

     But I'm wondering why  cadence add this new iteration method,  and what's difference between dbIterRoutes and dbIterAllRoutes? Thanks!

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • BobD
    BobD over 14 years ago

    I seem to these commands being necessary when there wasn't a data-type-specifc dbForEach* iterator command available.  The dbForAll (as opposed to dbForEach) seemed to be necessary when you wanted to iteration through, for example, power pins in addition to signal pins when iterating through pins on a cell.

    However, you should be able to get at this information with the dbGet command that debuted in 7.1.  Are you seeing some cases where you still need to use these old style commands?  If so let us know so we can improve dbGet and/or help with usage of some of these more confusing old style commands.

    Thanks,
    Bob

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • iclabwhoami
    iclabwhoami over 14 years ago

    Hi Bob,

    Thanks for your reply, I think Encounter have design to have many commands, it have very powerful and flexible command to let use to investigate and operate database, But it's not easy for user to find the exact command to implement user's intent, I think dbGet,dbSet is more easy to let user get some attribute since it's structured and more organized. anyway it will need  time to be expert in encounter

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

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