• 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. Bind Key for Changing Multiple Layout Grid Controls

Stats

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

Bind Key for Changing Multiple Layout Grid Controls

sgcad
sgcad 10 months ago

Hi

To simplify the placement of digital standard cells, I'd like to define a bind key that sets the following grid controls:

  • Type = Lines
  • Minor Spacing = 1.4 um
  • Major Spacing = 5.6 um
  • X Snap Spacing = 0.7 um
  • Y Snap Spacing = 0.7 um

Based on the documentation and various forum threads I came up with the following SKILL code that's placed in the .cdsinit:

procedure(ChangeLayoutSnaps()
    hiGetCurrentWindow()->xSnapSpacing=700
    hiGetCurrentWindow()->ySnapSpacing=700
    hiGetCurrentWindow()->GridSpacing=1.4
    hiGetCurrentWindow()->GridMultiple=4
    hiGetCurrentWindow()->drawDottedGridOn=0
) ;proc

hiSetBindKey("Layout" "<Key>2" "ChangeLayoutSnaps")

This code properly sets the X and Y snap spacing, but does not affect the other three setting (grid type and minor/major spacing).

Could you point me to the issue in my code? Thanks very much for your help.

PS: This technology seems to have nm, not um, as default units, that's why the snap spacing is entered in nm. I've tried to also use nm for the minor/grid spacing, with no change in behavior.

  • Cancel
  • Andrew Beckett
    Andrew Beckett 10 months ago

    Some points:

    1. It should be gridSpacing not GridSpacing
    2. It should be gridMultiple not GridMultiple
    3. You should set drawDottedGridOn to nil rather than 0
    4. I don't understand how you would set the xSnapSpacing and ySnapSpacing to 700. The database unit might be nanometers (that's common), but the userUnits are likely to be micron and I don't think it's possible to set it to nanometer (it's not a documented allowed value, and I tried and it didn't accept it). Also, if it did, the UI would be consistent with the bindkey - there's no scaling done by the callback of the display options form. So I think you need to set xSnapSpacing and ySnapSpacing to 0.7 (otherwise it will be 700um). What does geGetEditCellView()~>userUnits and geGetEditCellView()~>DBUPerUU return?

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • sgcad
    sgcad 10 months ago in reply to Andrew Beckett

    Thanks very much and apologies for the silly oversights. Not yet used to SKILL programming...

    xSnapSpacing, ySnapSpacing, and gridSpacing seem to accept nm just fine. Let me try next week what happens if I go back to um. From the CIW I get:

    geGetEditCellView()~>DBUPerUU
    1000.0
    geGetEditCellView()~>userUnits
    "micron"

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett 10 months ago in reply to sgcad

    It seems that if you specify xSnapSpacing and ySnapSpacing as an integer, then it's in database units (so if DBUPerUU is 1000, then it will be 0.7um; if DBUPerUU is 2000, it's 0.35um). If you set and then retrieve the xSnapSpacing/ySnapSpacing as an integer - it will return as a float in user units.

    If you set it as a float, it's in user units. So setting to 0.7 should be fine too.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • sgcad
    sgcad 10 months ago in reply to Andrew Beckett

    Thanks, I can confirm this behavior from my side.

    • 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