• 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 18486
  • 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
Parents
  • 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
  • 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
Reply
  • 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
Children
  • 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