• 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. How to create dockable form in skill

Stats

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

How to create dockable form in skill

RushMehta
RushMehta over 14 years ago

Hello,

I am trying to create a dockable form so that it can be docked to existing schematic window.

I am able to create popup gui using hiCreateAppForm and hiDisplayForm. When hiDisplayForm is  executed skill code stays there till the form is closed using 'close' button.
However that's not true when I dock it.

I used hiCraeteDockWindow and hiDockWindow functions to successfully dock the form.  After executing hiDockWindow, skill code goes to next line and it will eventually exit the code. Which means the form is docked in schematic but its non-functional now as it can't reference any variables.

How do I keep the skill code alive after docking the form ? Or is there any other way to achieve the docked form ?

Thanks in advance,

Rushang 

 

  • Cancel
Parents
  • RushMehta
    RushMehta over 14 years ago

    Hi Andrew,

     

    Thanks for the quick fix. I have two issues with the code

    1) the new code works great for the first time. But if I run dockform again it throws following errors.
     

    dockform()

    t

    dockform()

    *WARNING* hiCreateForm: Could not delete already created form myForm2

    *WARNING* hiCreateDockWindow: formStruct@0x1714bc28 has been instantiated. Same form can not exist in more than one form or window.

    *Error* hiDockWindow: argument for keyword ?window should be a window type (type template = "wgsxg") - nil

     

    How do I handle the case where user opens two or more schematic window and docks the form there ?

    I thorugh of using dynamic name for form e.g concat("myForm" hiGetCurrentWindow()~>cellView~>cellName) but don't know how exactly it would work.

     

    2) hiGetCurrentForm() works with popup form but not the docked form. For docked form it always returns nil and causes error

      *Error* fprintf/sprintf: format spec. incompatible with data - "Format is 'Loading file from docked form %s ', argument #1 is nil"

     

    Thanks,

    Rushang

     

    P.S. In my actual code I am using prefixes and upper case for the procedure names. This was just for demo code. :)

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • RushMehta
    RushMehta over 14 years ago

    Hi Andrew,

     

    Thanks for the quick fix. I have two issues with the code

    1) the new code works great for the first time. But if I run dockform again it throws following errors.
     

    dockform()

    t

    dockform()

    *WARNING* hiCreateForm: Could not delete already created form myForm2

    *WARNING* hiCreateDockWindow: formStruct@0x1714bc28 has been instantiated. Same form can not exist in more than one form or window.

    *Error* hiDockWindow: argument for keyword ?window should be a window type (type template = "wgsxg") - nil

     

    How do I handle the case where user opens two or more schematic window and docks the form there ?

    I thorugh of using dynamic name for form e.g concat("myForm" hiGetCurrentWindow()~>cellView~>cellName) but don't know how exactly it would work.

     

    2) hiGetCurrentForm() works with popup form but not the docked form. For docked form it always returns nil and causes error

      *Error* fprintf/sprintf: format spec. incompatible with data - "Format is 'Loading file from docked form %s ', argument #1 is nil"

     

    Thanks,

    Rushang

     

    P.S. In my actual code I am using prefixes and upper case for the procedure names. This was just for demo code. :)

     

    • 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