• 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. Allegro X Scripting - Skill
  3. Creating Group with SKILL

Stats

  • State Suggested Answer
  • Replies 1
  • Answers 1
  • Subscribers 18
  • Views 2744
  • Members are here 0
More Content

Creating Group with SKILL

Tolo1996
Tolo1996 over 2 years ago

Hi Guys,

I have following problem, i wrote script that draw stack up on cross section for multi stack design, (build in stack up cannot do this) here is screen:

So it is draw on manufacturing/stack_up layer and it consist of lines and text, 

So i want to group this elements in order to easy change the position of this stackup.

My idea was following

1. Set off all layers:

Display = axlVisibleGet()

axlVisibleDesign(nil)

2. Set on only "MANUFACTURING/STACK_UP"

stack_layer="MANUFACTURING/STACK_UP"

axlVisibleLayer(stack_layer t)

3. Refreh and select all "TEXT" and "LINES" instances

axlDBRefreshId(axlDBGetDesign()) ; refresh the dbid
axlSetFindFilter(?enabled '(noall lines text) ?onButtons '(noall lines text))

groupMembers = axlGetSelSet(axlAddSelectAll())

Now my first attepmt was to use commands 

axlDBCreateGroup()

But my problem was a cannot set it up is such way that it will be overwrite te group, so after one run it's crash due to fact that this group already exist

So i use Shell command after i select object using previeusly posted code as follow:

axlShell("group add ")
axlShell("setwindow form.groups_create")
axlShell("FORM groups_create name Stackup" )
axlShell("FORM groups_create overwrite YES" )
axlShell("FORM groups_create done")
axlClearSelSet()

And i got error:

No valid items selected for the current operation, exiting.

So my question is what i need to select to create group or how to create and overwrite existing group using skill comand?

  • Sign in to reply
  • Cancel
  • B Bruekers
    0 B Bruekers over 2 years ago

    I would suggest to create a format symbol. Create a symbol definition with a unique name for such stackup. Then draw all elements with the symbol definition as parent.  Once everything is added then simply place the symbol at the desired location.

    The main benefit of this is that you can find and delete the symbol(def) with a simple command. Also It is much easier/faster to reposition the symbol than a group of elements.

    So something like this:

    symName = "my_stackup"

    ;delete previous / existing symbol(def)
    when(dbID = car(setof(item axlDBGetDesign()->symdefs upperCase(item->name)== symName))
        axlMsgPut("Deleting previous symbol")
        axlDBCloak('axlDeleteObject(dbID->instances) '(ignoreFixed))
        axlDeleteObject(dbID)
        axlDBRefreshId(nil)    ;after axlDeleteObject() need to update db otherwise axlDBCreateSymDefSkeleton can fail
    )


    drawLayer = "MANUFACTURING/STACK_UP"
    bbox = list(100:100 100:100)    ; could optimize this value so it is only a bit larger than the maximum required bbox. This prevents issues during placement of the symbol.
    if(symdef = axlDBCreateSymDefSkeleton( list(symName "format") bbox)
    then
        ; use several axlDBCreate functions to add elements to the parent 'symdef'.
        ; so create the stackup view here
        axlDBCreateShape(path nil drawLayer nil symdef)
        axlDBCreatePath(path drawLayer 'line symdef)


        axlDBAddProp(symdef list("COMMENT" "what ever you want to add as comment"))

        if(symId = axlDBCreateSymbol(list(symName "format") 0:0 nil 0.0)    
        then
            axlMsgPut("Stackup symbol placed" )
            axlDBAddProp(symId list("LOCKED" t))    ;lock it so cannot be accedently edited. (different than fixed)
        else
            axlMsgPut( '("Unable to place symbol %s at 0:0" 3) symName )
        )
        axlDBRefreshId(axlDBGetDesign()) ; update the db so the symbol is already 'visible' during this skill 
    else
        axlMsgPut( '("Unable to create symbol definition %s" 3) symName )
    )

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Verify Answer
    • Reject Answer
    • Cancel
Cadence Guidelines

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