• 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. Using Menu contents for bindkey SKILL to toggle schematic...

Stats

  • Locked Locked
  • Replies 2
  • Subscribers 143
  • Views 13791
  • 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

Using Menu contents for bindkey SKILL to toggle schematic label visibility

jaleco
jaleco over 6 years ago

I am defining a schematic bindkey to iteratively toggle through visibility of a few label options in the schematic view.

Ideally, the bindkey could test label visibility prior to toggling, so one of the iterations is effectively a view all (on) setting.

Two of the label types can be toggled through the View menu callbacks - Instance and Terminal labels.

I would like to then use the menu text to determine the current label settings.

However, the text items of the View menu -

schViewMenu~>ToggleTerminalLabels~>hiItemText

do not get updated when using the menu callbacks - not until a mouse click on the View menu.

This causes the bindkey (SKILL)  to have incorrect values.

eg : 

>>_schHiToggleLabels("termLabels")<<

OR

>>evalstring(schViewMenu~>ToggleTerminalLabels~>_itemCallback)<<

will both toggle terminal label visibility. But afterward, 

>>schViewMenu~>ToggleTerminalLabels~>hiItemText<<

is unchanged.

Is there a way to force the View Menu items to update when using SKILL to execute the menu callback items?

Why is this?

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 6 years ago

    The reason is that there's a menu posting callback which updates the text of the menu when the menu is raised (see the <ICinstDir>/tools/dfII/etc/tools/menus/schView.menus file - the function is _schViewMenuCB).

    Unfortunately all of these functions - the menu action and the menu posting callback are private, so buyer beware - they may change. In practice they actually check for the visibility of the appropriate layer-purpose(s) in the tech file and use that to determine the current state. The function to facilitate all of that is also private (although you could use the appropriate layer purpose pairs to detect that):

    instLabels:  device/annotate and annotate/drawing
    notes: text/drawing and text/drawing1
    termLabels: annotate/drawing8
    parasiticNotes: annotate/drawing4

    i.e. use:

    tf=techGetTechFile(geGetEditCellView())
    status=forall(lpp list(list("device" "annotate") list("annotate" "drawing")) techGetLP(tf lpp)~>visible)

    Then status would tell you the info as to whether the appropriate layers are all visible or not (and you could give the appropriate list depending on which type of labels you're checking).

    The alternative would be to just call _schViewMenuCB(schViewMenu hiGetCurrentWindow()) to update the menu text - i.e. do what the menu posting callback would do - and then check the item text (I don't like this approach though as it means you're calling a private function). However, since the action is also private, _schHiToggleLabels is also private, not sure what's worse...

    Andrew.

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

    Thank you Andrew, that works!

    Thank you for the insights also - invaluably helpful!

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

    Thank you Andrew, that works!

    Thank you for the insights also - invaluably helpful!

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

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