• 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 Design
  3. SKILL GUI

Stats

  • Locked Locked
  • Replies 2
  • Subscribers 126
  • Views 14371
  • 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

SKILL GUI

Pedro P
Pedro P over 4 years ago

I would like to create a GUI that would be able to display the list of pins that belong to a symbol and to be able to sort/categorize then as SUPPLYs, GNDs, DIGITAL and ANALOG nature.

Then be able to have a button to call an external python script that will use this information to create a customized Verilog code and import that to my library manager.

How difficult is to do such GUI?

Is there any tools / API that will help me to hand draw a GUI that will become SKILL code?

Is there any information that could help me to start doing such GUI?

Or example of what I’ve described?

Thank you

  • Cancel
Parents
  • drdanmc
    drdanmc over 4 years ago

    Here is a brief outline, hopefully the manual for some of the functions involved will help you fill in the details.

    ;; create a form.  This is a description of what widgets you will have and how they are laid out.  There are different

    ;; styles for how you control arrangement.  I'll show more or less how to do it with layouts.

    myForm = hiCreateVerticalBoxLayout('myForm 

          ?items list(

                hiCreateStringField(?name 'countField ?prompt "Enter a Number" ?value "" ?defValue "10" ?callback "myCB('count)" ?editable t)

                hiCreateBooleanButton(?name 'enableField ?buttonText  "Enable something" ?value nil ?defVale nil ?callback "myCB('enable)")

                ;; others may be hiCreateIntField(), hiCreateFloatField(), hiCreateButton()

                hiCreateReportField(

                     ?name 'pinsField

                     ?title "Pin results"

                     ?titleAlignment 'center ;; 'left, 'center, 'right.

                     ?headers list(

                           list("Pin Name" 100 'left 'string t)

                           list("Pin Direction" 100 'left 'string t)

                           list("Signal Type" 100 'left 'string t)

                     )

                    ?choices nil

                    ?callback nil

                ) ; report

            ); items

    ) ; form

    ;; create the form from the layout

    hiCreateLayoutForm( 'myForm

    ?buttonLayout 'Close
    ?initialSize list(600, 800)
    ?minSize list(w, 400)
    ?maxSize list(2000, 5000)
    ?sizePolicy 'expanding
    )

    ;; add tooltips

    myForm->countField->hiToolTip = "some tooltip"

    ;; actually display it

    hiDisplayForm('myForm)

    Hope this gets you moving in the right direction.  If you look up hiCreateBoxVerticalLayout that will get you in the right section of the manual.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • drdanmc
    drdanmc over 4 years ago

    Here is a brief outline, hopefully the manual for some of the functions involved will help you fill in the details.

    ;; create a form.  This is a description of what widgets you will have and how they are laid out.  There are different

    ;; styles for how you control arrangement.  I'll show more or less how to do it with layouts.

    myForm = hiCreateVerticalBoxLayout('myForm 

          ?items list(

                hiCreateStringField(?name 'countField ?prompt "Enter a Number" ?value "" ?defValue "10" ?callback "myCB('count)" ?editable t)

                hiCreateBooleanButton(?name 'enableField ?buttonText  "Enable something" ?value nil ?defVale nil ?callback "myCB('enable)")

                ;; others may be hiCreateIntField(), hiCreateFloatField(), hiCreateButton()

                hiCreateReportField(

                     ?name 'pinsField

                     ?title "Pin results"

                     ?titleAlignment 'center ;; 'left, 'center, 'right.

                     ?headers list(

                           list("Pin Name" 100 'left 'string t)

                           list("Pin Direction" 100 'left 'string t)

                           list("Signal Type" 100 'left 'string t)

                     )

                    ?choices nil

                    ?callback nil

                ) ; report

            ); items

    ) ; form

    ;; create the form from the layout

    hiCreateLayoutForm( 'myForm

    ?buttonLayout 'Close
    ?initialSize list(600, 800)
    ?minSize list(w, 400)
    ?maxSize list(2000, 5000)
    ?sizePolicy 'expanding
    )

    ;; add tooltips

    myForm->countField->hiToolTip = "some tooltip"

    ;; actually display it

    hiDisplayForm('myForm)

    Hope this gets you moving in the right direction.  If you look up hiCreateBoxVerticalLayout that will get you in the right section of the manual.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • ShawnLogan
    ShawnLogan over 4 years ago in reply to drdanmc

    Dear Pedro P,

    In addition to drdanmc's very helpful answer, the following Cadence On-line support URL:

    https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1Od0000002JdnmEAC&pageName=ArticleContent

    contains links to a SKILL programming tutorial (in both PowerPoint and Adobe Acrobat formats) as well as a tar file containing its lab exercises.

    Maybe you know this much about SKILL and its use in the Cadence tools already, but I was not sure based on your request and thought I should at least pass it along...

    Shawn

    • 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