• 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. Location of skill function definition

Stats

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

Location of skill function definition

frankliu
frankliu over 9 years ago

Given a particular function, say foo(), I would like to know where it is defined.

There is a long list of .il functions that are loaded during initialization of virtuoso, so I am looking for a function that

1) returns the file path where the foo() was defined

2) in case of multiple definitions in different files, give the order they are loaded/overwritten

Notes:

I looked a couple of options such as whereIs(foo), error: cannot get source information (installed debugger)

startFinder(?funcName "foo"),  error: trouble connecting to cdsFinder

  • Cancel
  • Quek
    Quek over 9 years ago

    Hi Frank

    Using "whereIs" function is correct. You just need to add the following line in your .cdsinit file to start up debugger before loading the SKILL files.

    installDebugger(t)


    Best regards
    Quek

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • frankliu
    frankliu over 9 years ago
    Thank you Quek
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • fatcat1206
    fatcat1206 over 9 years ago

    Hi Frankliu

    Just one more thing to mention, regarding the license issue.

    Not to forget uninstall the debugger, otherwise it would always hold "Cadence(R) SKILL Development Environment" license.

    I did experience once, when I use "printstruct" function, somehow it turns on the debugger, finally I consumed all the licenses inside company.

    It would block some other activities from my colleague.

    You need to pay special attention, if you add "installDebugger(t)", in your .cdsinit file.

    By doing so, every Cadence you have opened, would consume 1 license.

    And this kind of license is usually not much for one company, as most of time this license would be used for short time (several seconds)

    Best Regards

    Yi

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 9 years ago
    printstruct is documented in the SKILL Development Reference - so not surprising it requires a SKILL Development license. It does check out the license (although it doesn't turn on the debugger). You can free the license using uninstallDebugger. Note that the license is a "UHD" license, so the same user on the same host and display would only consume a single license. Rather than adding installDebugger() in the .cdsinit, I'd run "virtuoso -nocdsinit", turn on the debugger, and then load the ".cdsinit" using load(). That way you won't forget to remove the installDebugger later.
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • fatcat1206
    fatcat1206 over 9 years ago

    Hi Andrew

    Thank you for the clearance.

    For "printstruct" function, the problem we met is that it does not release the license when the command has been executed. So I easily consume all the "skillide" license when running the code several times.

    We have contacted Cadence Support, but it ends nowhere. In the end, I have removed the "printstruct" function from my code.

    During the investigation of why I consume all the "skillide" license, our IT support engineer asked me to check whether the debugger is on. That's why I have some memory which links the "printstruct" with skillDebugger.


    And it brings my attention, when I see the "installDebugger(t)" suggest to be added into the .cdsinit file without proper method to uninstall the debugger.

    Best Regards


    Yi

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

    Hi Yi,

    We tend to avoid doing fine-grained license checkout and checkin on a per-function basis because sometimes license checkout can be very slow in some customer environments (e.g. 30 seconds). That would be very annoying if you used the function-level development environment APIs.

    So that's why we wouldn't check in the license immediately after calling printstruct, or any of the other functions.

    Regards,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • fatcat1206
    fatcat1206 over 9 years ago

    Hi Andrew

    Thank you for the explanation.

    It's clear to me about the reason behind.

    I learned the "printstruct" function when reading the "SKILL Language User Guide" about the "Data Structure".

    I just open the document again, and find "For debugging" in the text. But on that moment, these words do not bring me attention. And I did not realize what trouble it can bring to me. (My mail boxed was exploded that day, as a lot colleges complained that I occupied all the license.)

    I was wondering should the risk be mentioned for "printstruct" in the "SKILL Language User Guide", and put a note that the license should be released later on manually. For me, the "SKILL Language User Guide" is the first document I read when I learn SKILL, I can not distinguish the difference between debugging functions and function-level development at that moment. Actually, I just know there are some functions dedicated for debugging. A lot of thing needs to be learned:)

    Best Regards

    Yi

    • 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