• 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. write a dynamic skill Gui

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 144
  • Views 14840
  • 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

write a dynamic skill Gui

mlea
mlea over 11 years ago

Hi,

I was wondering if its possible ( and if it is then how exactly) can I write a gui in skill,

that its fields ( stringFeild) are not pre defined as  we normally do, but depends on (say) the number of  times the user click 

on device on schematic. each string field shoud( in this case) contain the instance name of the device that the user clicked on,and a new

stringfield should automaticlly  appear  right below the current stringField to contain the next instance name ( from the next click).

as far as I  familier with Guis in skill ( appForm), the HI structure must be pre-defined, but for example, in case of Pcell

the form can get change upon the user inputs.

thx

meny

  • Cancel
  • Quek
    Quek over 11 years ago

    Hi meny

    I think it is possible. You can try to define a procedure for left-mouse button single-click. In addition to doing the usual object selection, this procedure should also get the formID and update the string fields, etc as described in your post. We will most probably need a global variable to keep track of the number of times the user has clicked.

    Best regards
    Quek

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • mlea
    mlea over 11 years ago

    Ok. so no need for special skill commands, or special appForm?

    just a method for left click-  which is a good idea I guess.

     

    thx

     

    meny 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Quek
    Quek over 11 years ago

    Hi meny

    I don't think that any special SKILL cmd or method is needed. Please feel free to update us if the method does not work.

    Best regards
    Quek

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • psill000
    psill000 over 11 years ago

    I think I did something similar to what you want

    Here a small sample of the script I  used. I will try to get a better sample that works rather than a part of a script, but you can get an idea of what needs to be done to add and delete fields from a gui.

    --------------------------------------------------------------------------------------------------------------------------------------

    procedure(AddCrit()
    let(    (tmp i
            (theForm FormDb())
            )
    i = length(setof( tmp theForm~>fieldList rexMatchp("xcrit" tmp)))
            if(theForm~>xchng~>value then
                            tmp = (i+3)*30
            else    tmp = i*30)
            hiAddFields(theForm list(
                    list(hiCreateCyclicField(
                            ?name concat("xcrit" i)
                            ?prompt " "
                            ?callback "AddLayerMenu()"
                            ?choices list("text" "layer")) 0:180+ tmp  30:30 10)
                    list(hiCreateCyclicField(
                            ?name concat("xoper" i)
                            ?prompt " "
                            ?choices list("==" "!=")) 60:180+ tmp  30:30 10)
                    list(hiCreateStringField(
                            ?name concat("xlabe" i)
                            ?editable t) 120:180+tmp 180:30 20)))
    ); end of let
    ); end of procedure

    procedure(DelCrit()
    let(    (i
            (theForm FormDb()))
    i = length(setof(tmp theForm~>fieldList rexMatchp("xcrit" tmp)))-1
    if(plusp(i)
            if(member('hiLayerField theForm~>fieldList) &&
            !member(concat("xlabe" i) theForm~>fieldList) then
                    hiDeleteFields(theForm list(concat("xcrit" i) concat("xoper" i) 'hiLayerField))
    else    hiDeleteFields(theForm list(concat("xcrit" i) concat("xoper" i) concat("xlabe" i)))))
    ); end of let
    ); end of procedure
     

    • 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