• 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. ROUTE TRACES AT 22.5 DEGREES

Stats

  • State Suggested Answer
  • Replies 6
  • Answers 1
  • Subscribers 159
  • Views 3609
  • Members are here 0
More Content

ROUTE TRACES AT 22.5 DEGREES

gianmarcosh
gianmarcosh 11 months ago

Is there any option (or SKILL procedure) that allows traces to be routed at 22.5 degrees?

The Add Connect command allows "any angle" routing, but it is difficult to mantaint exactly 22.5 degrees. The Route offset isn't of any help as well.

Any advice is well accepted.

Gianmarco

  • Sign in to reply
  • Cancel
  • DavidJHutchins
    0 DavidJHutchins 11 months ago

    Before 'Route offset' was added, I wrote a small skill code routine to display an 11 degree cursor in an X pattern.

    The user would use a funykey to display it multiple times while in 'add connect'

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • gianmarcosh
    0 gianmarcosh 11 months ago in reply to DavidJHutchins

    Hello David,

    Thanks for your reply. Would you share the script source code? 

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • DavidJHutchins
    0 DavidJHutchins 11 months ago

    I am no longer employed by Intel, so I don't have access to that skill code Disappointed

    I will attempt to write an equivalent after I get back from a doctor  appt...

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • DavidJHutchins
    0 DavidJHutchins 11 months ago in reply to DavidJHutchins

    Below is the new skill code:

    procedure(displayXcursor(@optional (angle "22") (radius "1000"))
    let((units DataList X Y Z r_path)
    (units = car((axlDBGetDesignUnits)))
    unless(atof(angle)
    (angle = "22")
    )
    (angle = atof(angle))
    unless(atof(radius)
    cond(((units == "mils")
    (radius = "1000")
    )
    ((units == "inches")
    (radius = "1.0")
    )
    ((units == "microns")
    (radius = "25400.0")
    )
    ((units == "millimeters")
    (radius = "25.4")
    )
    ((units == "centimeters")
    (radius = "2.54")
    )
    )
    )
    (radius = atof(radius))
    (angle = (angle * (3.14159265359 / 180.0)))
    ; X axis
    (X = (radius * cos(angle)))
    (Y = (radius * sin(angle)))
    ;(axlMsgPut "radius %f angle %f X %f Y %f" radius angle X Y)
    (Z = Y * -1.0)
    axlClearDynamics()
    (r_path = axlPathStart(list(X:Z X:Y) 0)) ; 1
    (X = X * -1.0)
    (r_path = axlPathLine( r_path 0 X:Z)) ; 2
    (r_path = axlPathLine( r_path 0 X:Y)) ; 3
    (X = X * -1.0)
    (r_path = axlPathLine( r_path 0 X:Z)) ;4
    axlAddSimpleMoveDynamics(0:0 r_path "path" ?ref_point 0:0)
    ; Y axis
    (Y = (radius * cos(angle)))
    (X = (radius * sin(angle)))
    ;e(axlMsgPut "radius %f angle %f X %f Y %f" radius angle X Y)
    (Z = X * -1.0)
    (r_path = axlPathStart(list(Z:Y X:Y) 0)) ; 5
    (Y = Y * -1.0)
    (r_path = axlPathLine( r_path 0 Z:Y)) ; 6
    (r_path = axlPathLine( r_path 0 X:Y)) ; 7
    (Y = Y * -1.0)
    (r_path = axlPathLine( r_path 0 Z:Y)) ;8
    axlAddSimpleMoveDynamics(0:0 r_path "path" ?ref_point 0:0)
    )
    )
    axlCmdRegister("displayXcursor" 'displayXcursor ?cmdType "interactive")

    Below is an example of calling it while running 'add connect'

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Verify Answer
    • Reject Answer
    • Cancel
  • gianmarcosh
    0 gianmarcosh 11 months ago in reply to DavidJHutchins

    The code of the procedure actually draws the cursors. However, as soon as I wrap the code in the procedure and register the command, it does not work anymore. I have to debug the problem.

    Anyway, I got the idea, you have been very helpful David!!!

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