• 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 save the cellview of all instances in a top cell...

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 143
  • Views 15014
  • 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 save the cellview of all instances in a top cell faster?

GGLin
GGLin over 5 years ago

I have a top cell & need to revise all the instances' cellview & export top cell as a new GDS file.

So I write a SKILL code to do so and I find out it will be a little bit slow by using the dbSave to save the cellview of each instance.

Code as below:

let( (topCV subCV )
topCV = dbOpenCellViewByType(newLibName topCellName "layout" "maskLayout" "a")
foreach(inst topCV->instances
subCV = dbOpenCellViewByType(newLibName inst->cellName "layout" "maskLayout" "a")
;;;revise code content
;;;...
;;;revise code content
dbSave(subCV)
dbClose(subCV)
)
dbSave(topCV)
dbClose(topCV)
system(strcat( "strmout -library " newLibName " -topCell " topCellName " -view layout -strmFile " resultFolder "/" topCellName ".gds -techLib " srcLibName " -enableColoring -logFile " topCellName "_strmOut.log" ) )
)

Even if the cell content is not revised, the run time of dbSave will be 2 minutes when there are ~ 1000 instances in topcell. The exported GDS file size is ~2MB.

And the dbSave becomes the bottle neck of the code runtime...

Is there any better way to do such a thing? 

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 5 years ago

    If you have multiple instances of any cell, you'll be doing the work more than once for each sub-cell. Also, you may be trying to modify any PCell variant too, which really doesn't make any sense.

    So perhaps you should do:

    foreach(subCV topCV~>instanceMasters
       ; no need to re-open as you've already got the master
       unless(subCV~>superMaster ; i.e. if this is a variant of a PCell
         ;;; revise content
         dbSave(subCV)
         ;; don't close, because you didn't open the master
       )
    )

    If that doesn't help, this will almost certainly just be because you've got a lot of data to save - that's probably then unavoidable. If you really don't need to save the data to disk, you could use the xstSetField("virtualMemory" "true") and other xstSetField calls to define the top cell, file name and so on, and then xstOutDoTranslate() to do the stream out from memory.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • GGLin
    GGLin over 5 years ago in reply to Andrew Beckett

    Thanks for the quick reply, I'll try it.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • GGLin
    GGLin over 5 years ago in reply to Andrew Beckett

    Sorry 1 more question.

    After call the xstOutDoTranslate(), there will be a message window shows the streamout is done.

    Is there any way to not show or close this window by SKILL code?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 5 years ago in reply to GGLin

    xstSetField("showCompletionMsgBox" "false")

    See: How to turn off "Show Completion Message Box" option by default in Virtuoso Xstream In and Out

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • GGLin
    GGLin over 5 years ago in reply to Andrew Beckett

    Got it, thanks.

    • 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