• 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. Generating shapes of overlap of two layers within multiple...

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 144
  • Views 16557
  • 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

Generating shapes of overlap of two layers within multiple hierarchies

Quincy
Quincy over 7 years ago

Hi Everybody,

I am trying to generate shapes that are the overlap of two layers in a layout cellview.  The cellview could contain additional levels where I would have to bring those shapes up to the top cellview.

My question is how do I bring up and transform the objects from the lower hierarchies up to the top cellivew to be manipulated by dbLayerAnd.

My idea is to:

1) Identify interested shapes at multiple hierarchies using dbShapeQuery or dbGetOverlaps

2) Extract the transform property from the shape or objects using dbGetHierPathTransform or looking up the transform attribute with the '~>' operator

3) Copy interested shapes from all hierarchies to two temporary layers at the top cellview using dbCopyFig

4) Do dbLayerAnd of the two temporary layers to make another temporary layer at the top cellview

5) Clear temporary layers generated in step 3

I am trying to implement steps 2 and 3 at the moment.  dbGetHierPathTransform appears to be giving me not what I am expecting, however dbGetOverlaps(cv bBox lpp 32)~>transform is giving me a nested list of the right transforms.  I am working on how to take the transform information and passing it to dbCopyFig such that I can execute step 4.

Any help or tips would be greatly appreciated.

This post had promising information, but I wasn't able to follow as I am not very proficient in SKILL.

https://community.cadence.com/cadence_technology_forums/f/custom-ic-skill/24935/how-to-use-hierarchy-objects-in-dblayersize-command/1319510#1319510

Thanks,

Quincy

  • Cancel
Parents
  • TaherEssam
    TaherEssam over 7 years ago

    Quincy,

    Consider a top cell top_cell, a sub cell sub_cell, and object to be copied id_obj (the outcome of dbGetOverlaps() )

    Copying figure from sub_cell to top_cell can be done as follows:

    cv_sub = dbOpenCellViewByType( 'LibraryName 'sub_cell "layout" "maskLayout" "r" )

    cv_top = dbOpenCellViewByType( 'LibraryName 'top_cell "layout" "maskLayout" "r" )

    id_obj = dbGetOverlaps(cv_sub bBox lpp 32)

    dbCopyFig(top_cell id_obj list(dx:dy "R0" 1.0) )

    if you want to have them exactly on top of copied object in sub_cell, then dx:dy is 0:0

    Regards, 

    Taher.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • TaherEssam
    TaherEssam over 7 years ago in reply to TaherEssam
    TaherEssam said:
    dbCopyFig(top_cell id_obj list(dx:dy "R0" 1.0) )

    should be dbCopyFig(id_obj top_cell list(dx:dy "R0" 1.0) )

    Regards, 

    Taher.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 7 years ago in reply to TaherEssam

    Taher,

    Er, that won't work. The output of dbGetOverlaps is a list of objects or a list of lists - with information about the hierarchical path down to each object. You'd have to:

    • Loop over this list to copy each object using each piece of "overlap" data.
    • Work out the overall transformation - using dbGetHierPathTransform for example - you've just used a fixed transformation which won't be correct if there is more than one level of hierarchy, or rotation. 
    • Get the leaf object from the "overlap" info - fairly easy to find .
    • Then dbCopyFig that with the overall transformation (for each "overlap").

    Using the abe functions is easier than all of this, so if you have access to an IC617/ICADV123 release (ideally probably later than ISR5-6 - there were some issues with the "abe" functions in early IC617/ICADV122 versions which resulted in a change of the how the arguments are passed).

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 7 years ago in reply to TaherEssam

    Taher,

    Er, that won't work. The output of dbGetOverlaps is a list of objects or a list of lists - with information about the hierarchical path down to each object. You'd have to:

    • Loop over this list to copy each object using each piece of "overlap" data.
    • Work out the overall transformation - using dbGetHierPathTransform for example - you've just used a fixed transformation which won't be correct if there is more than one level of hierarchy, or rotation. 
    • Get the leaf object from the "overlap" info - fairly easy to find .
    • Then dbCopyFig that with the overall transformation (for each "overlap").

    Using the abe functions is easier than all of this, so if you have access to an IC617/ICADV123 release (ideally probably later than ISR5-6 - there were some issues with the "abe" functions in early IC617/ICADV122 versions which resulted in a change of the how the arguments are passed).

    Regards,

    Andrew.

    • 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