• 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. How to Extract segment length info from Constraint Information...

Stats

  • Replies 1
  • Subscribers 18
  • Views 9612
  • Members are here 0
More Content

How to Extract segment length info from Constraint Information in SKILL

Ahmed0ms
Ahmed0ms over 6 years ago

Hello, 

Is there a function to extract the info in the blue circles (pin/via locations and cline segment length and layer) in SKILL?

Thanks

  • Cancel
  • Sign in to reply
Parents
  • DavidJHutchins
    DavidJHutchins over 6 years ago

    The information you are requesting is available directly from Allegro, the skill access to data in Constraint Manager is extremely limited IMHO

    Below is some example skill code that will report the net data in a format somewhat like the data in blue:

    procedure((Report_nets)
    let((units accur net)
    (axlSetFindFilter ?enabled list("noall" "nets") ?onButtons list("noall" "nets"))
    (units = car((axlDBGetDesignUnits)))
    (accur = sprintf(accur "%%.%df" cadr((axlDBGetDesignUnits))))
    (mypopup = axlUIPopupDefine( nil (list (list "Done" 'axlFinishEnterFun) (list "Cancel" 'axlCancelEnterFun))))
    axlUIPopupSet( mypopup)
    while((axlSelect ?prompt "Select a net...")
    (net = car(axlGetSelSet()))
    when(net
    foreach(branch (net->branches)
    foreach(child (branch->children)
    if(((child->objType) == "pin") then
    axlMsgPut(" (%f:%f) pin %s.%s %s %s" xCoord(child->xy) yCoord(child->xy) child->component->name child->number car(child->startEnd) cadr(child->startEnd))
    )
    if(((child->objType) == "via") then
    axlMsgPut(" (%f:%f) via %s %s %s" xCoord(child->xy) yCoord(child->xy) child->name car(child->startEnd) cadr(child->startEnd))
    )
    if(((child->objType) == "path") then
    axlMsgPut("%f %s cline %s" axlDBGetLength(child) units child->layer)
    )
    )
    )
    )
    )
    )
    )
    axlCmdRegister("report_nets" 'Report_nets)

    Below is the Allegro transcript from running this skill code:

    Command > report_nets
    Select a net...
    Loading axlcore.cxt
    last pick: 1096.94 1280.59
    856.099298 mils cline ETCH/TOP
    (1373.370000:1040.560000) via V_C18P8_PLUG ETCH/TOP ETCH/BOTTOM
    (1373.370000:1040.560000) pin U8.AF26 ETCH/TOP ETCH/TOP
    (1010.000000:1316.500000) via V_C20P10 ETCH/TOP ETCH/BOTTOM
    692.703969 mils cline ETCH/L12-SIGNAL
    (615.760000:738.390000) pin J5001.25 ETCH/TOP ETCH/TOP
    Select a net...
    last pick: 1069.65 1269.68
    856.120678 mils cline ETCH/TOP
    (1373.370000:1001.190000) pin U8.AF28 ETCH/TOP ETCH/TOP
    (1373.370000:1001.190000) via V_C18P8_PLUG ETCH/TOP ETCH/BOTTOM
    (1010.000000:1273.500000) via V_C20P10 ETCH/TOP ETCH/BOTTOM
    692.692038 mils cline ETCH/L12-SIGNAL
    (615.760000:706.890000) pin J5001.24 ETCH/TOP ETCH/TOP
    Select a net...
    Command >

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • DavidJHutchins
    DavidJHutchins over 6 years ago

    The information you are requesting is available directly from Allegro, the skill access to data in Constraint Manager is extremely limited IMHO

    Below is some example skill code that will report the net data in a format somewhat like the data in blue:

    procedure((Report_nets)
    let((units accur net)
    (axlSetFindFilter ?enabled list("noall" "nets") ?onButtons list("noall" "nets"))
    (units = car((axlDBGetDesignUnits)))
    (accur = sprintf(accur "%%.%df" cadr((axlDBGetDesignUnits))))
    (mypopup = axlUIPopupDefine( nil (list (list "Done" 'axlFinishEnterFun) (list "Cancel" 'axlCancelEnterFun))))
    axlUIPopupSet( mypopup)
    while((axlSelect ?prompt "Select a net...")
    (net = car(axlGetSelSet()))
    when(net
    foreach(branch (net->branches)
    foreach(child (branch->children)
    if(((child->objType) == "pin") then
    axlMsgPut(" (%f:%f) pin %s.%s %s %s" xCoord(child->xy) yCoord(child->xy) child->component->name child->number car(child->startEnd) cadr(child->startEnd))
    )
    if(((child->objType) == "via") then
    axlMsgPut(" (%f:%f) via %s %s %s" xCoord(child->xy) yCoord(child->xy) child->name car(child->startEnd) cadr(child->startEnd))
    )
    if(((child->objType) == "path") then
    axlMsgPut("%f %s cline %s" axlDBGetLength(child) units child->layer)
    )
    )
    )
    )
    )
    )
    )
    axlCmdRegister("report_nets" 'Report_nets)

    Below is the Allegro transcript from running this skill code:

    Command > report_nets
    Select a net...
    Loading axlcore.cxt
    last pick: 1096.94 1280.59
    856.099298 mils cline ETCH/TOP
    (1373.370000:1040.560000) via V_C18P8_PLUG ETCH/TOP ETCH/BOTTOM
    (1373.370000:1040.560000) pin U8.AF26 ETCH/TOP ETCH/TOP
    (1010.000000:1316.500000) via V_C20P10 ETCH/TOP ETCH/BOTTOM
    692.703969 mils cline ETCH/L12-SIGNAL
    (615.760000:738.390000) pin J5001.25 ETCH/TOP ETCH/TOP
    Select a net...
    last pick: 1069.65 1269.68
    856.120678 mils cline ETCH/TOP
    (1373.370000:1001.190000) pin U8.AF28 ETCH/TOP ETCH/TOP
    (1373.370000:1001.190000) via V_C18P8_PLUG ETCH/TOP ETCH/BOTTOM
    (1010.000000:1273.500000) via V_C20P10 ETCH/TOP ETCH/BOTTOM
    692.692038 mils cline ETCH/L12-SIGNAL
    (615.760000:706.890000) pin J5001.24 ETCH/TOP ETCH/TOP
    Select a net...
    Command >

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Children
No Data
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