• 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. Can someone please help with the syntax for a Navigator...

Stats

  • Locked Locked
  • Replies 1
  • Subscribers 143
  • Views 8592
  • 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

Can someone please help with the syntax for a Navigator specific bindkey

knopstr
knopstr over 3 years ago

Hi All,

I'm not sure if this is even possible, so I thought I'd post and ask for some help.

I would like to be able to create a bindkey so that when I have a net selected in the Navigator->Nets field I can run a procedure on the selected net.

I know how to create and manage bindkeys in general terms (Layout, Schematics, etc) but I can't crack the code on this one. 

I want the bindkey to be independent of the "Layout"  portion of the screen and only operate when my cursor is over the "Navigator" portion of the Layout frame.

Is this even possible? 

This is my attempt. This returns a "t" value when placed in the ciw but doesn't call the procedure && my normal alt+c bindkey is used...so it basically ignores my attempt at creating what I want; 

hiSetBindKey("Navigator" "Alt<Key>C" "_treeNavActivateOpc(deFindAssistant(\"Navigator\"hiGetSessionWindow(hiGetCurrentWindow())) \"Objects/Nets\" \"lightUp()\")")

Any help would of course be greatly appreciated.

Aaron

  • Cancel
  • AurelBuche
    AurelBuche over 3 years ago

    Hi,

    You should have a look at the following support article:

    How to get currently selected object like net and instance in Navigator assistant, net in Annotation browser using SKILL?

    I believe you are looking for the following function hsmGetSelectedSet

    I don't think you can set bindkeys directly to the "Navigator" as this is not a registered application

    What you could do is write a generic function that will call your previously defined bindkeys depending on the context



    Here is a little example:


    (inScheme

      ;; We are in SKILL++ (Scheme) so the following
      ;; variables are available in all the
      ;; fonctions defined in the letseq
      (letseq ((cmd              "Alt<Key>C")
               (prev_sch_bindkey (hiGetBindKey "Schematics" cmd))
               (prev_lay_bindkey (hiGetBindKey "Layout"     cmd))
               )

        (defun call_bindkey_string (str)
          "Call bindkey string if it is properly defined"
          (when (stringp str)
            ;; Avoid infinite loop in case this code
            ;; is executed twice and our custom
            ;; function is stored as a previously
            ;; registered bindkey
            (unless (equal str "(my_custom_navigator_bindkeys)")
              ;; Call our bindkey string in an error-safe environment
              (errsetstring str t)
              )))

        (defglobalfun my_custom_navigator_bindkeys (@rest _args)
          "Call the right bindkeys according on the context"
          (let ((cv            (geGetEditCellView))
                (nav_selection (hsmGetSelectedSet))
                )
          (cond
            (nav_selection
              ;; Something is selected
              ;;
              ;; Place here the code you want to do
              ;; according to your navigator selection
              nil
              )
            (t
              ;; Nothing is selected in the navigator,
              ;; call previously defined bindkey
              ;; according to current cellViewType
              (case cv->cellViewType
                ("schematic"  (call_bindkey_string prev_sch_bindkey))
                ("maskLayout" (call_bindkey_string prev_lay_bindkey))
                ))
            )));def

        ;; Register the
        (hiSetBindKey "Schematics" cmd "(my_custom_navigator_bindkeys)")
        (hiSetBindKey "Layout"     cmd "(my_custom_navigator_bindkeys)")

        );letseq
      );inScheme

    Cheers,

    Aurélien

    • 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