• 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. How to stop when using dbGetTrueOverlaps ?

Stats

  • Locked Locked
  • Replies 8
  • Subscribers 143
  • Views 16153
  • 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

How to stop when using dbGetTrueOverlaps ?

Charley Chen
Charley Chen over 14 years ago

Dear All,

I want to know how many shapes in this cellview (within hierarchy or not).

When using dbGetTrueOverlaps , if has more and more shapes even in Level 0 ,

It will take long time to ,,,,, .I use Ctrl + c , but it doesn't work unless kill the process .

 Can it counts when more than 5000 , it will stop or ... .

 

Thank you,

Charley

  • Cancel
  • skillUser
    skillUser over 14 years ago

    Hi Charley,

    for the current level of hierarchy it is easy enough to find the number of shapes.  Assuming that "cv" stores the cellview database id, then length(cv~>shapes) gives the count of shapes (level 0) in this cellview.  As far as I am aware, unless you control the hierarchy depth yourself, there is no way to stop a function like dbGetOverlaps or dbGetTrueOverlaps mid-operation.  You could use the previous code suggestion as a starting place.  Then you might just call dbGetTrueOverlaps for 1 level of hierarchy, and if the number back is not too high, then progress onto level 2 etc. But this method would suffer the disadvantage of repeating work and getting progressively slower.  Another method might involve descending into the instances in a programmatic way; if you keep count as you go, you can choose to abort further processing.  Also you might have a global "stop" type flag that if set also prevents further processing - if the code encounters this setting during processing it stops.

     However, as I said, unless you control the hierarchy yourself I don't see how you might do this.

    Regards,

    Lawrence.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Charley Chen
    Charley Chen over 14 years ago

    Hi Lawrence,

    Even in current cellview , using dbGetTrueOverlap(cv cv~>bBox mylayer 0 nil)  it will take long time.

    In my case , the cv has 13651864 shapes on mylayer.

    In hierarchy , I can know how the depth for the cellview.  Even is has 5 level , the problem will be same as current cellview

    if has 13651864 shapes on mylayer . What i do is to tranform the shapes to the top level.

    Do you have better solution for this ?

    Thank you,

    Charley

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

    At any level, it will take longer time if you really have many shapes.

    Since your just using the bbox of the cellview, why dont you use

    a=cv~>lpps, then filter lpps where lpps is your mylayer

    then a~>shapes to get your shapes

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Charley Chen
    Charley Chen over 14 years ago

    Hi cessej ,

    I will try it .

    Thank you,

    Charley

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Charley Chen
    Charley Chen over 14 years ago

    Hi cessej ,

    After using  lpps to get and ~>shapes , it still takes long time .

    Thank you,

    Charley

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

    I dont expect it would take longer time because the expected looping is on lpps list only which is smaller in number than the shapes objects.

    Here's the sample for you.

    cv=geGetEditCellView()

    a=setof(x cv~>lpps x~>layerName=="M1" && x~>purpose=="drawing")

    yourShapes=a~>shapes

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

    Try doing:

    needNCells('list 15000000)
    needNCells('dbobject 15000000)

    before your code. This may help in avoiding it garbage collecting too often every time it uses the pool of objects up. 13 million shapes is quite a lot, beyond the default pool size in Virtuoso.

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Charley Chen
    Charley Chen over 14 years ago

     Hi Andrew,

    It works. 

    Thank you very much.

    Charley

    • 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