• 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. Trying to reduce the runtime of a skill code : viaGenerateViasInArea...

Stats

  • Locked Locked
  • Replies 3
  • Subscribers 142
  • Views 2062
  • 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

Trying to reduce the runtime of a skill code : viaGenerateViasInArea, dbCreateRect or dbDeleteObject

dakuang01
dakuang01 6 months ago

Dear all,

I put a part of my skill codes.

I used the function viaGenerateViasInArea for the first time to create stacked vias. I am supposed to select only via objects in the layout view, so I ended up creating the bottom metal and the top metal to make the function work and then deleted them after generating the vias.

The response time of my function is too long at the moment so I'm trying to investigate what is causing it. First, I wanted to try turning off the prints showing on CIW of viaGenerateViasInArea as the info. I got from the Forum.

When the two below options are both nil on CIW, the results are still printed. How can I turn off all reports? And when I put the two lines in my skill code, the options don't change like you do on CIW. Am I missing anything here?

myViaOptions->automatic->printStatisticsReport=nil
myViaOptions->automatic->printStatisticsReportByStackDepth=nil

Maybe the two functions dbCreateRect and dbDeleteObject take long to be executed. Hope my question is clear and any answer is welcome.

--------------------------------------------------------------------------------------------------------------

constraintGroupId = cstFindConstraintGroupIn(techfile "virtuosoDefaultSetup")

myViaOptions = viaGetViaOptions(constraintGroupId)
myViaOptions~>createInRoute = nil
myViaOptions->automatic->printStatisticsReport=nil
myViaOptions->automatic->printStatisticsReportByStackDepth=nil


l_topBottom = list(t_botMT t_topMT)
d_botMT = dbCreateRect(cvId list(t_botMT "drawing") l_bBox) ;Create lowest metal
d_topMT = dbCreateRect(cvId list(t_topMT "drawing") l_bBox) ;Create highest metal
d_viaFig = viaGenerateViasInArea(cvId l_points myViaOptions ?topAndBottomLayers l_topBottom)
geSelectFigs(d_viaFig)
dbDeleteObject(d_botMT)
dbDeleteObject(d_topMT)

-------------------------------------------------------------------------------------------------------------------------------------------------

< Test on CIW >

myViaOptions->automatic->printStatisticsReportByStackDepth~>?
nil
(VIA-1010): Running the auto via command in area (-5.39, -5.49) (-5.39, -4.57) (-2.87, -5.49) (-2.87, -4.57).
********************************************************************************
* Auto Via Statistics *
* Area : (-5.39, -5.49) (-5.39, -4.57) (-2.87, -4.57) (-2.87, -5.49) *
* Run Time = 0.01 sec [cpu: 0.01 sec] *
* Total number of vias created: 3 *
********************************************************************************
#
# Summary
==================================================================================================================
| Stack | Metal Overlaps | Via | Initial Overlaps | Final Results | Percent |
| Depth | Bottom - Top | | Total | Unconnected | Newly Connected | Connected | |
------------------------------------------------------------------------------------------------------------------
| 3 | M1 - M4 | V1 - V3 | 1 | 1 | 1 | 1 | 0 -> 100 |
------------------------------------------------------------------------------------------------------------------
| Totals | 1 | 1 | 1 | 1 | 0 -> 100 |
==================================================================================================================
myViaOptions->automatic->printStatisticsReport~>?
nil

Thanks,
Jane

  • Cancel
  • Andrew Beckett
    Andrew Beckett 6 months ago

    Jane,

    This works for me. I do not see the statistics being printed with your code.

    1. Which IC sub-version are you using?
    2. I rather doubt that avoiding printing the statistics will take any significant time
    3. The run time shown in the statistics above is rather short (0.01 seconds)
    4. Creating two rectangles and deleting them are not going to take any appreciable  amount of time either

    What sort of "response time" are you seeing?

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • dakuang01
    dakuang01 6 months ago in reply to Andrew Beckett

    Andrew,

    Thank you for your reply. Good to see all your confirmation of #2 thru #4. 
    I'll restart my Cadence and see if it works.

    To answer your question, I'm on ICADVM20.1-64b.500.32

    I have a bindkey for the function. When executing the function by it, the top via is generated instantaneously, but the lower vias take up to 2 seconds to be created. That's why I was looking at the three functions.

    Thanks,
    Jane

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • dakuang01
    dakuang01 5 months ago in reply to Andrew Beckett

    Hi Andrew,

    I'm just wondering if you see the same delay.


    Thanks,
    Jane

    • 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