• 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. Is there any faster way to get hierarhically tree report...

Stats

  • Locked Locked
  • Replies 6
  • Subscribers 142
  • Views 15719
  • 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

Is there any faster way to get hierarhically tree report?

kbhow
kbhow over 14 years ago

Hi Expert,

I'm working on a big fullchip, and looking for a faster way to get the hierarhically tree summary report from "Top to Bottom". Currently, when i use File->sum from virtuoso layout, it took 18 hours to generate the report, which is too time consuming.

I wrote a simple skill script to recursively search hierarchically and print the report. This required more than 11 hours too. =<

Is there any ways that we can get/generate the hierachically report in faster way (<10 minutes? ). Will "Python" scripting solve this issue?

Your help is much appreciated. Thanks

-How-

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 14 years ago

    How,

    I'm very surprised that it takes 18 hours (or that a SKILL equivalent takes 11 hours). It is only traversing the instHeaders (I believe). You should report this to customer support. I don't know how big the design is, but I just tried it on something reasonably large and it was instantaneous (I was using IC615; not sure what version  you're using). I did have the layout loaded to full depth first - without that it doesn't give the full hierarchy anyway. I can think of ways of optimising it in SKILL to cache the data for each level to avoid repeating having to find it - but I'm still rather surprised it is so slow.

    I don't see how Python would help (after all Python is not supported in Virtuoso).

    Regards,

    Andrew.

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

    Hi Adrew,

    Thanks a lot for your fast response. =) 

    There are several version that we are supporting from IC514 to IC614, IC615 is not officially released to production yet.

    I was hoping that traversing work instantaneously so that i wont have any issue in generating the report but somehow it is not, and consume such amount of time. The script works well for smaller block like core, but when it goes to fullchip, time will be a big issue.

    Any advice, or way i can improve it?

    -How- 

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

    hi Andrew,

    Thanks for your fast response. =)

    Currently, i'm supporting many version of Virtuoso from IC514 to IC614, IC615 is yet to released.

    I was hoping that the traversing hierarhically work instantaneously, but it doesn't. It is still OK for smaller block such as core, but for fullchip, the time is totally failed.

    Do you have any advice that i can improve the run time?

     -How-

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 14 years ago

    How,

    Without knowing why it is so slow, I can't really advise. There's nothing you can do to optimise the Tree performance (I was slightly confused because you mentioned Tree and File->Sum (presumably you meant File->Summary, which is not hierarchical)) since it's in C - you'd have to contact Cadence.

    For your own SKILL solution you could use the SKILL Profiler to find out where the bottlenecks are, but without  knowing what the bottlenecks are or how you've implemented it, it's hard to advise. That's why I suggested going to customer support too, because that way you can communicate the code and do some debugging together with Cadence. Somebody else on this forum might be able to help if you give profiler info and the code (I'm going to be away for the next week or so).

    Regards,

    Andrew.

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

    If you are only visiting each cell master once, then it should be very quick. If you are traversing through every unique instance, it could take quite some time and your resulting structure will be huge. Here is some simple skill to traverse the hierarchy and visit every master only once. If the entire hierarchy has already been opened into memory, this runs in a second or two for our large designs that contain about 4000 masters and 25000 pcell submasters up to about 15 levels of hierarchy.

    procedure(traverseTest(@optional (cv geGetTopLevelCellView()) )
      let((masterTbl result)
        printf("Running traverseTest... \n")
        masterTbl = makeTable("masterTbl" nil)
        printf("Time to traverse hierarchy: %f\n" caddr(measureTime(result=traverseTestCB(cv))))
        printf("Number of unique cell masters in hierarchy: %d\n" length(masterTbl))
      ) ;let
    ) ;proc

    procedure(traverseTestCB(@optional (cv geGetTopLevelCellView()))
        foreach(master cv~>instanceMasters
            unless(masterTbl[master]
                masterTbl[master]=t
                traverseTestCB(master)
            )
        )
        foreach(master cv~>viaHeaders
            unless(masterTbl[master]
                masterTbl[master~>master]=t
                traverseTestCB(master)
            )
        )
        t
    ) ;proc

    Derek

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

    Many thanks to Andrew and Derek.

    Hi Derek,

    Thanks. Your script looks similar as what i have too, it just the fullchip is too big, haha. Anyway, thanks a lot man.

    -How-

    • 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