• 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 PCB Editor
  3. Customised Unconnected net report

Stats

  • Replies 11
  • Subscribers 161
  • Views 13684
  • Members are here 0
More Content

Customised Unconnected net report

tmd63
tmd63 over 4 years ago

Does anyone have or know how to make a customised unconnected net report?

I need to have a report that shows similar to the 'unconnected pins report'. But it also shows the distance of the unconnected pins (X1-X2 and Y1-Y2 for example, or even further [[X1-X2]^2+[Y1-Y2}^2]^0.5 so it gives the distance between the X1,Y1 and X2,Y2 positions).

I could import into excel and extract the information but this is long and involved and prone to errors, if there is an easier report method I would like to know how.

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

    below is an example skill file 'custom_ucn.il"

    procedure((custom_ucn \@optional FileName)
    prog((outport OutputName NetCnt RatCnt Total startPin endPin String)
    if( FileName then
    (OutputName = strcat(simplifyFilename(".") "/" FileName))
    (OutputName = FileName)
    else
    (OutputName = strcat(simplifyFilename(".") "/ucn.rpt"))
    )
    if(isFile(OutputName) then
    unless(deleteFile(OutputName)
    (axlMsgPut "ERROR: could not remove existing file %s" OutputName)
    return()
    )
    )
    if((outport = outfile(OutputName)) then
    (Total = 0)
    foreach(net ((axlDBGetDesign)->nets)
    (RatCnt = 0)
    foreach(rat (net->ratsnest)
    unless( rat->pinsConnected
    (RatCnt++)
    when( eq(RatCnt 1)
    fprintf(outport "%s\n" net->name)
    )
    (startPin = car(rat->pins))
    (endPin = cadr(rat->pins))
    when(startPin && endPin
    fprintf(outport "From: %s.%s (%f %f) " startPin->component->name startPin->number xCoord(startPin->xy) yCoord(startPin->xy))
    fprintf(outport "To: %s.%s (%f %f) " endPin->component->name endPin->number xCoord(endPin->xy) yCoord(endPin->xy))
    fprintf(outport "Delta: (%f %f)\n" difference(xCoord(startPin->xy) xCoord(endPin->xy)) difference(yCoord(startPin->xy) yCoord(endPin->xy)))
    )
    )
    )
    (Total = Total + RatCnt)
    )
    (axlMsgPut "%d ratsnests written to %s" Total OutputName)
    else
    (axlMsgPut "ERROR: could not open output file %s" OutputName)
    return()
    )
    )
    )
    axlCmdRegister("custom_ucn" 'custom_ucn)


    Below is the allegro.jrl file showing how to load & run it:

    \i (00:00:06) generaledit
    \i (00:00:09) skill '`'load "custom_ucn.il"`''
    (00:00:09) t
    \i (00:00:15) custom_ucn
    \t (00:00:15) 2 ratsnests written to C:\Temp/ucn.rpt
    \i (00:00:16) generaledit

    and below is the output file contents:

    XDMA_EVENT_INTR0
    From: P2.17 (1281.000000 687.500000) To: R18.2 (1650.000000 430.000000) Delta: (-369.000000 257.500000)
    DGND
    From: P2.12 (1494.000000 537.500000) To: P2.10 (1494.000000 487.500000) Delta: (0.000000 50.000000)

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • tmd63
    tmd63 over 4 years ago in reply to DavidJHutchins

    Would this work?

    (diffX = difference(xCoord(startPin->xy) xCoord(endPin->xy)))
    (diffY = difference(yCoord(startPin->xy) yCoord(endPin->xy)))
    (startPin = cadr(rat->pins))
    (endPin = cadr(rat->pins))
    when(startPin && endPin
    fprintf(outport "From: %s.%s (%f %f) " startPin->component->name startPin->number xCoord(startPin->xy) yCoord(startPin->xy))
    fprintf(outport "To: %s.%s (%f %f) " endPin->component->name endPin->number xCoord(endPin->xy) yCoord(endPin->xy))
    fprintf(outport "Delta: (%f %f) " diffX diffY
    fprintf(outport "Length: (%f)\n " sqrt( ( diffX * diffX) + ( diffY * diffY))

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • DavidJHutchins
    DavidJHutchins over 4 years ago in reply to tmd63

    I think it should work, but I would replace the last line with:

    fprintf(outport "Length: (%f)\n " axlDistance(startPin->xy endPin->xy))

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • DavidJHutchins
    DavidJHutchins over 4 years ago in reply to tmd63

    I think it should work, but I would replace the last line with:

    fprintf(outport "Length: (%f)\n " axlDistance(startPin->xy endPin->xy))

    • Cancel
    • Vote Up +1 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