• 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 Design
  3. problems while creating 45 degree path using skill

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 125
  • Views 16660
  • 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

problems while creating 45 degree path using skill

asetji
asetji over 6 years ago

Hi,

I want to create 45 degree paths in the layout. I have tried creating that using multiple methods, however all of them either yields off grid points or create problems with the drc checks. Below is the list of things I have tried.

1) leCreatePath(cvID list(layer "drawing") list(0:0 10:10 ) 1  "roundRound" 0 "center")
creates off grid points. For doing DRC, I have to extract the layout as gds and I get the following warnings

INFO (XSTRM-236): A path with a rounded extension, an acute angle or a length segment less than half width is encountered at (0, 0). This path will be written as a boundary record in the GDS file.

If I create using low level functions like dbCreatePath or dbCreateLine followed by dbConvertLineToPath, then again I get a polygon which is not completely 45 degree. In this case however, I do not get any warnings while exporting the gds though.

dbCreatePath(cvID list(layer "drawing") list(0:0 10:10 ) 1 )

lineId = dbCreateLine(cvID list(layer "drawing") list(0:0 10:10 ) )

dbConvertLineToPath(lineId, 1)

I can create 45 degree paths manually though using the GUI completely fine. I only have problems while creating them via command line.

BR

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago

    45 degree paths inherently have off-grid points. This is because the width of a path is precisely specified, and the centre line points are precisely specified, and because sqrt(2) is irrational, it's inevitable that the points on the boundary are off grid.

    I suspect when creating interactively you've actually been creating pathSegs rather than paths (are you using the Create->Wire command to do this, often on the "p" bindkey in current versions). This automatically adjusts the width in the diagonal sections to ensure all boundary points are on grid, and uses these octagonal endings to assist with this. 

    The SKILL API for that is dbCreatePathSeg (which is quite tricky to use, to be honest). I think the stream interface always converts pathSegs to boundaries (polygons) without any warnings.

    Andrew.

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

    You are right that the width of the diagonal path is not exactly the same as the width of the orthogonal paths and inherently 45 degree paths will have off-grid points.

    I am creating a wire with "p" bindkey and having a snap mode as diagonal.

    I am trying to make a multi turn inductor generator and I wanted to use the 45 degree sections for the cross over points. All I want to control is the width of the track on the horizontal/vertical directions and the distance between the turns. The diagonal section can of whatever width. Is there a way to do it via skill code?

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

    OK, so you're creating wires, which means that you are creating pathSegs, which were indeed designed to solve this problem.

    One possibility (rather than using pathSegs) would be just to create a polygon for these crossover sections. You can then control the points you create and calculate the coordinates such that the width goal and grid goal is met.

    We have a tool called Cadence PCell Designer which provides commands to create quarter octagons and cross-overs - you assemble these commands together and it produces the SKILL for a pcell (and so creating an inductor PCell is quite straightforward). If you're interested, please contact your account team (they can contact me for more details).

    Regards,

    Andrew 

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

    thanks. will try the polygon method.

    As I am working at a university so we have only the basic support agreement, which means I can access the existing solutions but probably there is no account team which can raise it further.

    • 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