• 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. convert Polygon to rects - Code or Algorithm

Stats

  • Locked Locked
  • Replies 10
  • Subscribers 142
  • Views 6517
  • 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

convert Polygon to rects - Code or Algorithm

archive
archive over 18 years ago

Hello Allll, I need a script for converting POLYGON to Rects. I already have a script which converts rect/polygons to path in layout. But this works for only few sets of polygons only (simple polygons-non branched). The code I need now is where the input will be the id of a polygon and the o/p should be rects Ex i/p to proc - cvid~>objType - "polygon" cvid~>points or the cvid itself. o/p from proc - list of rects (bBox's) i.e list(bBox bBox1...) Please give a code or an Alogrithm that works. Thanks & Best Regards, Sathya.


Originally posted in cdnusers.org by rimser9
  • Cancel
  • archive
    archive over 18 years ago

    dbLayerTile() will take a list of shapes and generate a new list of shapes which are trapezoids (if the original shapes are all orthogonal, the resulting shapes will be rectangles).

    So that does what you want.

    Regards,

    Andrew.


    Originally posted in cdnusers.org by adbeckett
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • archive
    archive over 18 years ago

    Thanks very very much Andrew. There is one saying in Telugu "sankalo pilladini pettukoni ooranta vetikadanta" which means
    "The baby is right in ur lap and u are searching the entire city". Its the same here.

    Can u tell me what u mean by "if the original shapes are all orthogonal" ( any images )
    Any ways dbLayerTile is working well for all types of polygons in the layout I have.


    Thanks,
    Sathya.


    Originally posted in cdnusers.org by rimser9
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • archive
    archive over 18 years ago

    I've attached a picture. By orthogonal I mean that all the angles are multiples of 90 degrees. As you can see in this example, some of the angles are not 90 degrees, and so those parts have been tiled into trapezoids rather than rectangles (well, a rectangle is a trapezoid, but you know what I mean).

    If your shapes only have 90 degree multiples in the angles, you'll get rectangles out.

    Regards,

    Andrew.


    Originally posted in cdnusers.org by adbeckett
    • tiling.gif
    • View
    • Hide
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • archive
    archive over 18 years ago

    Ok got it. Thanks
    Not greedy but dbLayerTile needs a layer name as input so that it can create rectangles over the object I gave.
    Is there any other command which will return only rectangles (ids or bBox's) rather than creating them and returning their ids
    Ofcourse I can get the bBox and delete those created layers. Still if there is any other command....

    Thanks,
    Sathya


    Originally posted in cdnusers.org by rimser9
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • archive
    archive over 18 years ago

    Hi Sathya,

    Well, it already does return rectangles - (ids). You can't return a rectangle dbId without creating it. database ids have to be in the database!

    If you're wanting a function which just returns the bBoxes of the resulting rectangles rather than actually creating them, then no such function exists (not built in anyway),

    It's not exactly difficult though:

    bBoxList=foreach(mapcar shape dbLayerTile(cvId list("layer" "purpose") srcShapes) prog1(shape~>bBox dbDeleteObject(shape)))

    Regards,

    Andrew.


    Originally posted in cdnusers.org by adbeckett
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • archive
    archive over 18 years ago

    Thanks Andrew.


    Originally posted in cdnusers.org by rimser9
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • archive
    archive over 18 years ago

    Hello Andrew,

    dbLayerTile needs the cell to be in the edit mode to work. So if I want to use
    any function which uses this function in read-only mode it will fail.
    Can u suggest any way around or u want me to use dbOpencellViewBytype and then
    use dbLayerTile.

    Regards,
    Sathya


    Originally posted in cdnusers.org by rimser9
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • archive
    archive over 18 years ago

    Hi Sathya,

    You can always open the cellView in "s" (scratch) mode. This allows you to modify it but not save it.

    dbReopen(cvId "s")

    will do that.

    In OA releases (e.g. IC610), there is no longer a scratch mode, but you can modify read-only cellViews from SKILL, and the modifications will be discarded when you close it, or when you reopen in edit mode.

    Regards,

    Andrew.


    Originally posted in cdnusers.org by adbeckett
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • archive
    archive over 18 years ago

    Hello Andrew,

    Bindkeys are not working after I use dbLayerTile() function in VLE.
    Even CancelEnterFun() is of no good. only after Ctrl+C bindkeys are working.
    Please suggest.

    Regards,
    Sathya


    Originally posted in cdnusers.org by rimser9
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • archive
    archive over 18 years ago

    I seriously doubt this is anything to do with dbLayerTile(). I can't reproduce it. I suspect there's something in your code which
    is blocking - it's very hard to say without knowing what you're doing.

    Regards,

    Andrew.


    Originally posted in cdnusers.org by adbeckett
    • 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