Home
  • Products
  • Solutions
  • Support
  • Company

This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  • Products
  • Solutions
  • Support
  • Company
Community Custom IC SKILL How to add custom indicators to Dynamic Display measuring...

Stats

  • Locked Locked
  • Replies 3
  • Subscribers 136
  • Views 2031
  • 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

How to add custom indicators to Dynamic Display measuring HUD

benjaminmoor
benjaminmoor 6 months ago

I am attempting to use dbGetNeighbor() function inside the dynamic display HUD so that the distance to the next metal on that layer could be viewed. Think of another line in this dynamic table here... 

My SKILL code is essentially the following:

procedure(getNearestNeighborOnMetal(cv)
let((direction tmpBoundingBox)
direction = internal_function()
tmpBoundingBox = dbCreateRect(geGetEditCellView() "tmp" list(hiGetCommandPoint() hiGetCommandPoint()))
car(dbGetNeighbor(geGetEditCellView() tmpBoundingBox direction))
)
)

this returns the distance to the closest metal based on some tests.

Next, I try to register this function to work in the Dynamic Display / Info Balloon world by executing odcRegisterCustomFunc() for each and every object type (I know, absurd, but trying to debug)

In the dynamic display menu, I toggle the "Custom SKILL Function" check in layoutXL, then hit apply, then OK.

After this I find I am unable to view the changes reflected in any info balloons or in the drawing HUD (above) for this wire. I have tried replacing my function with the sample "customFunc" from the odcRegisterCustomFunc() documentation and was still unable to produce any new output.

Any help diagnosing the use of this feature would be very much appreciated

  • Cancel
  • RobMan
    RobMan 6 months ago

    Your function doesn't make sense. There is nothing to investigate the object of interest (under the cursor). The custom function requires the object ID as an argument. Do you really expect it to be passed the cellview (at least I assume that's what you expect with 'cv') which you then do not use??? You want the Info Balloon custom function to create shapes??? See...

    Virtuoso Layout Suite SKILL Reference -- odcRegisterCustomFunc

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • benjaminmoor
    benjaminmoor 6 months ago in reply to RobMan

    I see, so based on the example, the object ID is required with an optional hierPath arg. Let's say I then update this function to do this, still returning the same integer it does now to represent the distance to the closest metal on the layer (the created Bbox is a 0 size box to allow dbGetNeighbor to work). I still don't know if I then should be updating a particular object type to match drawing a wire with the HUD from the screenshot.

    procedure(getNearestNeighborOnMetal(objId)
    let((direction tmpBoundingBox)
    direction = internal_function()
    tmpBoundingBox = dbCreateRect(geGetEditCellView() "tmp" list(hiGetCommandPoint() hiGetCommandPoint()))
    car(dbGetNeighbor(geGetEditCellView() tmpBoundingBox direction))
    )
    )

    I was looking for some documents to help lay out the requirements of these functions, but haven't found much beyond the SKILL document page for SKILL extensions

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • benjaminmoor
    benjaminmoor 6 months ago in reply to benjaminmoor

    Adding a reply because I've resolved the issue. My misunderstanding was around the Measurement Display vs Info Balloon

    • 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