• 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 it possibel to copy shapes of a marked net ?

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 144
  • Views 15991
  • 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 it possibel to copy shapes of a marked net ?

ravi1999
ravi1999 over 16 years ago

 Hi,

By anyway will we able to copy the polygone shapes of a marked net in Cadence Virtuoso layout designer

-Ravi

 

  • Cancel
  • skillUser
    skillUser over 16 years ago

     Hi Ravi,

    I don't think that you can access the shapes hilighted by the Mark Net feature, it is a fairly low-level function (for speed) and has a limited SKILL interface. I believe that the shapes are highlighted but not selected, so accessing the shapes for input to a copy is not something that you can do directly with the Mark Net feature.

    It should be possible to write your own SKILL code to "walk" the shapes and follow connectivity and then select and copy them. This is not a 5-minute task, so it might be worth asking if anyone else out there has written such code that they can share.

    Regards,

    Lawrence.

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

    I have written a program in Skill to do this, but unfortunately, I am unable to share it. Here are links to the paper and presentation I did for the CND Users group in 2002:

    www.cdnusers.org/community/virtuoso/resources/ctp_nettracing_micronmay.pdf

    www.cdnusers.org/community/virtuoso/resources/ctp_nettracingSKILL_micronmay.pdf

    The first attempt I made at this was a simple one level net highlighter that selected shapes based on their net name. This was easy to do, but required the connectivity to be correct on the shapes which was usually the case right after a route or after being in VXL. However, if the layout was edited in VLE, shapes can get moved to other nets and the connectivity can be wrong. Over time I expanded the code to simply trace shapes regardless of connectivity and to also trace hierarchically. When you work hierarchically, it gets more complicated because you can have the same cell placed multiple times and you only want to highlight the inputs or outputs connected to the current net. My basic approach was as follows:

    Start at a specified point or pin in the layout. Get the shape at that point or use the specified pin to start.
    Use dbGetTrueOverlaps to find all shapes on the same layer at that point. (if it is a m1 pin, look for m1 drawing, etc).
    For each overlapping shape, store it as a connecting shape. If it is down in the hierarchy, store its transform as well (so it is unique).
    If the shape is in a via or contact cell then you will need to look for overlaps on both connecting layers (if m1 shape is found in via1 cell, must also trace m2 in the next pass).
    Take all new shapes and break them into rectangles. Foreach rectangle, look for overlaps on the same layer only, unless in a via cell when you must look for shapes on two layers.
    Keep trace of shapes already processed and continue until no more shapes are found.
    Hilight or select the shapes as you process them so if you ctrl-c, you'll have a partial highlight.
    For performance reasons, I do not look for overlaps on the via or contact layers. We require all via/contacts to be instances. If you must look for overlaps on the via or contact layer, you will slow way down because this will add many more overlap checks.
    The two most difficult things to deal with are breaking polygons into rectangles and storing off shapes and their transforms for items down in the hierarchy. For example, if you have the same via placed 10 times on a net, you need to store all 10 unique locations.

    I hope this helps. This has been the most useful utility I have ever written. Nearly all of our layout designers use it daily. By keeping track of all the shapes you can do many things like measure the net, select the net, add connectivity to the net outside of VXL, find markers on the net, etc.

    If all you want to do is select the net, and you can get connectivity on it with a router or VLX, then it is very simple to write Skill to deall with all shapes that have a net attribute: setof(x geGetEditCellView()~>shapes x~>net~>name=="clk")
    The vias/contacts can be found by looking at instance terminals.

    -Derek

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • skillUser
    skillUser over 16 years ago

    Thanks for your reply Derek, I look forward to reading the paper/presentation.

    One extra note: for breaking a polygon shape up, you can use the dbLayerTile function:

    dbLayerTile( d_cellViewId t_layerName l_dbIdList1 )
         => l_dbIdList

    Fractures edges of the specified object on the input list into vertical trapezoids.

    Hope this helps!

    Regards,
    Lawrence.

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

    The dbLayerTile wasn't around when I first wrote the code. Even so, doesn't it actually create rectangles in the layout? This would be a problem in read-only mode, or when tracing a net that crosses many levels of hierarchy. I suppose you could create a scratch cell for doing all this work.

     I have received several inquiries about this paper. Maybe someone at Cadence should put together a prototype of this utility for download. I've requested that the capability be added to Mark Net, but it has never been done.

     -Derek

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Austin CAD Guy
    Austin CAD Guy over 16 years ago

    One thing about the dbLayer Booleans is you can direct the creation of new shapes to a cellView different from your current one. Open a scratch cell in write mode and direct all your outputs to that view. This is especially important if you are going to do extensive searches based on the just created data as it is flat and limited to just the shapes you created.

     Ted

    • 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