• 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. Custom menu in Explorer GUI is removed when simulator is...

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 143
  • Views 4843
  • 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

Custom menu in Explorer GUI is removed when simulator is changed

marcelpreda
marcelpreda over 1 year ago

Hi there,

We are creating a submenu under "Tools" menu in the Explorer window, using something like

deRegUserTriggers(app nil nil myProc)   where app="explorer".

Everything works fine, until users change the simulator (they may choose the wrong one at the beginning or whatever reason), in this moment our menu entry is removed.

Also I've noticed that "Tools" submenus are different from simulator to simulator (see screenshot), so I assume that there is some trigger on "change simulator" event.

Any idea what is the event, and how we can set a callback procedure so that we add our menu entry if necessary?

Thank you,

Marcel

Below the menus entries for few simulators

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 1 year ago

    The right way to do this is to use menus files rather than an a de trigger.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • marcelpreda
    marcelpreda over 1 year ago in reply to Andrew Beckett

    Hi Andrew,

    Thank you for the reply.

    Never used menus files, I had a look on .../dfII/etc/tools/menus/ files and I've understood how it works.

    Unfortunately I have no control on the menus files.
    My use case is next one: we have an inhouse tool (skill context) that is enabled or not in user environment, so the menu entry has to be created dynamically. My hope was that there was a trigger also for "change simulator" event (or whatever it is). 

    Thank you,
    Marcel

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 1 year ago in reply to marcelpreda

    Marcel,

    Maybe you could use axlSessionConnect with "updatedTest" as the signal. This is triggered more frequently than just a simulator change, but maybe you could use that to determine whether the menu is present and if not add it again?

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • marcelpreda
    marcelpreda over 1 year ago in reply to Andrew Beckett

    Hi Andrew,

    This seems to be the best approach in my case.
    I've also had a look on the axlSessionSignalList documentation, and I have to select the proper signal(s) .

    Thank you,

    Marcel

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • marcelpreda
    marcelpreda over 1 year ago in reply to Andrew Beckett

    Hi Andrew,

    This seems to be the best approach in my case.
    I've also had a look on the axlSessionSignalList documentation, and I have to select the proper signal(s) .

    Thank you,

    Marcel

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • Andrew Beckett
    Andrew Beckett over 1 year ago in reply to marcelpreda

    Hi Marcel,

    I did a quick test yesterday to see which signals were fired when the simulator name is changed, and updatedTest is the best option. I then further tested it using this as the trigger function:

    (defun abUpdatedTest (sess testName)
      (letseq
        ((sevSess (axlGetToolSession sess testName))
         (asiSess (sevEnvironment sevSess))
         (simName (asiGetSimName asiSess)))
        (printf "Sim Name is %s\n" simName)
      )
    )

    (axlSessionConnect (axlGetWindowSession) "updatedTest" 'abUpdatedTest)

    (of course, you'd probably use axlSessionRegisterCreationCallback to register a callback to then do the axlSessionConnect after the session has been created).

    Andrew

    • 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