• 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. Change path width with bindkey

Stats

  • Locked Locked
  • Replies 8
  • Subscribers 145
  • Views 16066
  • 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

Change path width with bindkey

jwpm
jwpm over 10 years ago

Hello,

i want to change the width of a path while creating the path object with a bindkey.

i found a solution doing this job:

hiSetBindKey("Layout" "Alt<Btn4Down>" "hiToggleEnterForm() le0WireForm->wireWidth->value=le0WireForm->wireWidth->value+0.01 hiiToggleEnterForm(le0WireForm) ")

but i'm not happy with this solution because it opens every time the property editor. Do you know a skill function, which sets a property of the object directly when creating/drawing it?

Thank you for your help.

  • Cancel
  • psill000
    psill000 over 10 years ago

    Try this method:

    procedure(pathWid(widBool)

    grid = techGetMfgGridResolution(techGetTechFile(geGetEditCellView()))

    wid = obj~>width

    foreach(obj geGetSelSet()

    when(member(obj~>objType '("path" pathSeg")

    if(widBool then

    obj~>width = wid+2*grid

    else   obj~>width = max(2*grid wid-2*grid))

    )

    )

    sorry of there is some syntax error
    just wrote it quick

    another method  you might want to try than stepping by grid is to step by width

    define width (0.010 0.020 0.030 0.040)

    if 0.010 step to 0.020 and 0.020 to 0.030 etc...


    Paul

    If you need the script written better let me know

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • jwpm
    jwpm over 10 years ago

    Hello Paul,

    thank you for your reply.

    I tried your procedure but nothing happens. I think the problem is, that the function geGetSelSet() returns "nil" when i direktly draw a path because the path isn't selected. So I need to get the object id from the path i'm currently creating. Do you have any hints for me?

    Flo

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • dmay
    dmay over 10 years ago

    You do not need to toggle the visibility of the form since it is already defined. You can use the rest of your bindkey to change the value.

    hiSetBindKey("Layout" "Alt<Btn4Down>" "le0WireForm->wireWidth->value=le0WireForm->wireWidth->value+0.01")

    Cadence has their own commands to do the same thing:

      hiSetBindKey("Layout"    "CtrlShift<Btn4Down>" "weScaleMagnifierOrIncreaseWidth()")
      hiSetBindKey("Layout"    "CtrlShift<Btn5Down>" "weScaleMagnifierOrDecreaseWidth()")

    If those commands don't exist, an older version of Cadence had:

      hiSetBindKey("Layout"    "CtrlShift<Btn4Down>" "_leWireCmdMagnifierOrIncreaseWidth()")
      hiSetBindKey("Layout"    "CtrlShift<Btn5Down>" "_leWireCmdMagnifierOrDecreaseWidth()")

    Derek

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • jwpm
    jwpm over 10 years ago

    Hello Derek,

    thank you very much for your reply. This function "weScaleMagnifierOrIncreaseWidth" is exactly what i was looking for. There is only one little problem. These functions have predefined values for changing the path with. (0.02 µm) I would like to change the path in smaller steps. Is there an variable which i need to set or is this delta width a fix parameter in the function?

    The other function: "le0WireForm->wireWidth->value=le0WireForm->wireWidth->value+0.01" can do this job but has two disadvantages:
    - the window is not directly updated -> only when i'm moving the path i currently create the change in width is visible...
    - in the other function the new width is diplayed, here not

    Regards

    Flo

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 10 years ago

    Flo,

    These functions (which are bound by default to shift-ctrl mouse wheel) increase or decrease to the next valid width - so that's typically in steps of double the manufacturing grid.

    If these don't behave the way you want, then please contact customer support - maybe we can add an optional argument to define the step size? The key thing is that these cause the wire editor to be updated and the appropriate interactive refresh to be performed.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • jwpm
    jwpm over 10 years ago
    Thank you for this information. I need to see how it works in praxis. Maybe the change in steps of two times the manufacturing grid is fine enough. Otherwise i will contact the customer support. Regards, Flo
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • sPoK
    sPoK over 10 years ago

    Flo,

    you can change the step by setting the following variable:

    envSetVal("layout" "_weMfgGridWidthIncrement" 'int 2)

    where 2 is a default value.

    BR

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • jwpm
    jwpm over 10 years ago
    Thank you a lot. This was exactly what i was looking for.
    • 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