• 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. Code to always open cellview at draw level 0, and at a certain...

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 142
  • Views 13495
  • 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

Code to always open cellview at draw level 0, and at a certain view distance to set the resolution to low

blankman
blankman over 5 years ago

Hi,

I am hoping to have all layout cellviews open with draw level 0, so as to prevent any unnecessary delay from drawing large cellviews with resolution set to high.

Also, would it be possible to automatically set the resolution detail level to low at a certain view distance prior to drawing? This is as sometimes when using resolution of very high when zoomed in, when I mistakenly do a full fit at top level with all layers visible the program hangs as it tries to draw everything.

Finally, when this happens, Ctrl C does not always seem to work to rescue the session. Is there anything else that can be done here to pull the session back?

I am wondering can any of the above be implemented in skill, and if so could anyone help me with how to do so?

Thanks,

Brian.

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 5 years ago

    Hi Brian,

    The default behaviour is normally to open at level 0, so I assume this must have been overridden. The environment variable can be checked using:

    envGetVal("layout" "stopLevel")

    However, it's possible that stopLevel might have saved as a property on the cellView (do Edit->Properties->CellView to see if it is there), or on the library or technology library (if you do Right Mouse->Properties over the library in the library manager, then look for a property called "viewProps"; hit the EXPAND button and then look for maskLayout, hit EXPAND on that, and then look for stopLevel).

    If it's just the env val that's set, you can do:

    envSetVal("layout" "stopLevel" 'int 0)

    to set it back again. If it's set as a property somewhere, either change or remove that property. The order of priority is:

    1. cellView prop
    2. library prop
    3. tech lib prop
    4. cdsenv setting

    The resolution is similar - it's envSetVal("layout" "displayResolution" 'string "Low") - but also might be set in the same places as a property displayResolution.

    Hope that helps?

    I'm a bit surprised that it's slow to draw even with the high resolution - there was a lot of work done to ensure good performance (it will use multi-threading too), and I believe control-C should work. Which IC subversion are you using?

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • blankman
    blankman over 5 years ago in reply to Andrew Beckett

    Andrew,

    Thanks, this is very helpful.

    In regards Ctrl C, I notice its the same when for example I have a large amount of objects selected (just under 30,000) and I open properties form. I do a "common" to change all library references simultaneously and this then freezes the tool as it searches each object. After it taking a considerable amount of time ~5 mins I hit Ctrl and C which I find is inneffective at stopping the process and rescuing the session. I continue to wait and after another couple of minutes it either eventually comes back or alot of the time I have to kill the session. If improvements could be made with Ctrl C in these circumstances that would be greatly helpful.

    Rgds,

    Brian.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 5 years ago in reply to blankman

    Hi Brian,

    Ctrl-C has more than one interrupt mechanism. It's used to interrupt redraw (which isn't what you're doing here, really) and also to interrupt executing SKILL commands. Not everything in the latter case is interruptible because we have to be careful not to mess with the integrity of the data, but sometimes it's just because no support has been added for something implemented in C/C++ to be interruptible.

    So please contact customer support over this - then we can look into the specifics of the situation you describe and see whether R&D can make an improvement in that case.

    Thanks,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • blankman
    blankman over 5 years ago in reply to Andrew Beckett

    Great, thanks Andrew.

    Brian.

    • 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