• 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 rectilinear polygon to rectangles

Stats

  • Locked Locked
  • Replies 8
  • Subscribers 145
  • Views 18479
  • 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 rectilinear polygon to rectangles

PietroUser
PietroUser over 11 years ago
I have a rectilinear polygon (all the angles are multiples of 90 degree) and I would like to divide the shape in rectangles.

I used dbLayerTile() but the result is a division in only vertical rectangles. I would like to divide in vertical and horizontal rectangles.

Attached is an example.

Thanks,

 

Pietro
  • Example.jpg
  • View
  • Hide
  • Cancel
  • girig
    girig over 11 years ago

     Hi Pietro,

     

     One solution would be to slice/tile vertically once, with the same shape horizontally tile one more time (refer to http://support.cadence.com/wps/mypoc/cos?uri=deeplinkmin:ViewSolution;solutionNumber=11656460).  And then "and" the two

     

    Thanks,

    Giri.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • marcelpreda
    marcelpreda over 11 years ago

     Hi Pietro,

     Not sure what means "vertical and horizontal rectangles".

    On a polygon like in attach what will be the result?

    BR,

    Marcel

     

    • rects.png
    • View
    • Hide
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • skillUser
    skillUser over 11 years ago

    Hi Pietro,

    Since dbLayerTile() only fractures vertically, you can rotate the original shape and use dbLayerTile() and then rotate the result and the original back into place if you want to fracture horizontally.  If you want to fracture in both directions something like the following might be what you are looking for?

    procedure(CCSdoubleFracture(shape "d")
      let( (cv tiles rottiles newtiles)
        ;; fracture the shape into tiles
        tiles = dbLayerTile(cv=shape~>cellView list("y0" "drawing") list(shape))
        ;; rotate the shape through 90 degrees and re-fracture into tiles
        dbMoveFig(shape cv list(0:0 "R90"))
        rottiles = dbLayerTile(cv list("y1" "drawing") list(shape))
        ;; rotate the shape and the rotated tiles back into the original 
        ;; shape orientation
        foreach(shape append(rottiles list(shape))
          dbMoveFig(shape cv list(0:0 "R270"))
        ); foreach
        newtiles = CCSrefractureAndJoin(tiles rottiles)
        ;; put all the tiles into a list
        nconc(tiles rottiles newtiles)
      ); let
    ); procedure CCSdoubleFracture
    

    Hope this helps!

    Lawrence.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • shazzy
    shazzy over 11 years ago

    Hi Pietro 

     

    I was facing the same issue some time back

     

    After analysing the problem I got to know that even though the shape is looking like a polygon on screen but the objType of the metal is coming out to be a PathSeg

    And performing dbLayerTile() on pathSeg only creates vertical rectangles.

     

    From there on I started using only paths and rects to draw the metals ( by changing the option in the bindkey tab )

     

    If you want you too can do the same. 

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

    Huh? dbLayerTile() works fine with pathSegs (as far as I can see). I can't see any justification for drawing everything with paths because of some problem with dbLayerTile - what is that problem? After all, you could always call dbConvertPathSegToPolygon first if it really was an issue.

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • mcguyton
    mcguyton over 6 years ago in reply to skillUser

    Where do I find the code for CCSrefractureAndJoin?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago in reply to mcguyton

    I can't find this function anywhere (I did some searching). It may have been in Lawrence's user area when he worked for Cadence. Maybe Lawrence can remember what it did?

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • skillUser
    skillUser over 6 years ago in reply to Andrew Beckett

    I can't find any reference to a function called CCSrefractureAndJoin (or CCFrefractureAndJoin, just in case it was written for the Forum with the CCF prefix) apart from in this thread, sorry.

    • 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