• 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. How to automatically run a user defined procedure after...

Stats

  • Locked Locked
  • Replies 6
  • Subscribers 143
  • Views 14859
  • 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 automatically run a user defined procedure after creating extracted view?

fatcat1206
fatcat1206 over 8 years ago

Hi All

I have written a piece of code, to create a table which holds the design version (controlled by a third party tool) of every sub-blocks through design hierarchy.

One of the user case is to add such table from a layout view into the property of the corresponding extracted view. Then during the iteration of modifying the layout and re-create extracted view, it's always possible to trace the changes for each version of the extracted view.

Currently, I want to make this action automatically done, when creating the extracted view by using "Run PVS - QUANTUS QRC..." in the GUI.

Does anyone knows:

  • How to trigger a procedure, after creating the extracted view automatically?
  • Hot to collect the input design info from the "Run PVS - QUANTUS QRC..." setup?
  • Hot to collect the output view from the "Run PVS - QUANTUS QRC..." setup?

Best Regards

Yi

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 8 years ago

    Hi Yi,

    Invoke <EXTinstDir>/tools/bin/cdnshelp and search for avExtractedCellViewCallProc - that will take you to the right part of the manual. I think that will do what you want.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • fatcat1206
    fatcat1206 over 8 years ago
    Hi Andrew

    Thank you for your reply.
    I take a look on the manual, it indeed answer my first and third questions.

    But with "avExtractedCellViewCallProc", only the "extracted database ID" is passed.
    I still need the "layout view info" to collect the design versions through hierarchy.

    I manage to find the "layout view info" in the form of "Quantus QRC (PVS) Parasitic Extraction Run Form", but I have no clue how can I link the form property with "avExtractedCellViewCallProc".

    Best Regards

    Yi
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 8 years ago

    Hi Yi,

    You can use an approach similar to that used in this support article. That parses the CCLFile that gets stored in the extracted view directory when created and pulls out corner, temperature information, but it could equally well parse for the source layout view which is also in the CCLFile (the -design_cell_name line).

    Regards,

    Andrew.

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

    Hi Andrew

    Thank you for your reply.

    The approach you have mentioned is really helpful.

    It's exactly what I need.


    Best Regards

    Yi

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • fatcat1206
    fatcat1206 over 8 years ago
    Hi Andrew

    I have tried the code the link.

    It has several bugs:

    1. Change the index in the "for" loop.
    2. The algorithm cannot parse the content in "-design_cell_name line" correctly. as the algorithm assume just one value for a key.
    But after parsing string with space character, the "-design_cell_name line" line would have multiple values for the key.

    I fixed those bugs, finished the script and test it in the IDE, it worked fine.

    But when I add the script into the flow of "avExtractedViewCallProc", there are some issues pops up.

    I receive error message in the log file of extraction, it refers to the "Undefined Function".

    It seems that all the functions I have used should be contained in that single file mentioned in the GUI

    This cannot be implemented in my case, as there is whole API library for DesignSync, and I rely on it to retrieve the version number of the design.
    I have submit a case in the Cadence support for this issue.
    The Case identification number is:46037627

    Currently, Saloni suggests me to use the trigger function in PVS ( PVSPostFormTrigger() ), and then create a file in the "rundir_pvs" to store the design version, in the end, inside the "avExtractedViewCallProc" I just use some simple code to read the file and add it into a property of extracted view.

    This flow works, but I still have a concern. As the procedure name is fixed, how can I solve the infliction if someone else also define his "PVSPostFormTrigger".

    Another thing is that, the layout info is not save in the "-design_cell_name line", instead it's in the <cellName>.env file in the folder mentioned in "-directory_name" line.
    The corresponding discussion with Cadence support is in the Case 46037631

    Best Regards

    Yi
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • fatcat1206
    fatcat1206 over 8 years ago

    Hi everyone.

    Thanks Cadence support and Andrew, I have completed the flow.

    Below is the summary about how I add a procedure into the normal LVS-QRC flow, it;s a two steps approch:

    1. In the PVS-LVS, "PVSPostFormTrigger()" procedure has been used to create a file containing the version info in the "rundir_pvs/<cellName>/lvs" folder
    2. In the QRC GUI, using the "Call Procedure " field to point to a .il file, which contain the "avExtractedViewCallProc()" procedure.
      Inside "avExtractedViewCallProc()", the version file has been read, and convert into a list, then save as a property of the extracted view.

    There are several things more I'd like to share with:

    1. QRC seems to be running parallel with Virtuoso, thus the procedure defined in Virtuoso cannot be seen from QRC.But PVS-LVS is running inside Virtuoso, thus I create the version file in the trigger procedure of PVS. As I need a lot of user-defined and DesignSync defined APIs.
    2. "CCLFile" in the extracted view folder, and "presetFile" in the "PVSPostFormTrigger" arguments contain a lot of useful information.
      In the link given by Andrew, and document for "Trigger Support in PVS" you may find the example about how to parse the file.
    3. The third input of "PVSPostTrigger" seems not to be "winId" as mentioned in the beginning of the document.
      In the "Example of SKILL Post Trigger", the third input is mentioned as "exitCode". It seems to be correct, and this example indeed tells you how to get the layout cellview ID. It's very useful.
    4. Somehow, I cannot view the "presetFile" of "PVSPostFormTrigger" in linux.
      So, I add a "view" command ( view( presetFile nil "Preset File" t )  ) in my "PVSPostFormTrigger" procedure to show the content of the file.
    5. In the end, both for the PVS and QRC post trigger/process, the procedure name is fixed. This may lead to potential conflict if multiple people define their own triggers.

    I hope this will help you.

    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