Hello cadence community,
I've have a question - is there any way (via SKILL commands) to clean the history (and even better - clear the cache and oher CIW inner memory cells as if you would start from scratch) in the main CIW window?
Now, explaining what I mean by the word "cleaning" and why I need it.
This operation is required when I'm doing huge calculations (say 2000 iterations of any type of analysis) via OCEAN scripts. The problem is simple - the script does calculations on say 2/3 of all required and then CIW vanishes without leaving any messages in the terminal. From my experience I can tell that the script does about 1500 or so iterations and then CIW vanishes.
I'm very picky on what I save (aka save 'selected) and every iteration overwrites the results folder therefore work folder being overfilled by netlists and results is not the solution to this. This is also not a script problem because the script runs perfectly and finishes as intended when less iteration counts are set.
I assume that some sort of a inner buffer is overfilled, but don't have a clue whether that's the case. For example Matlab has "clear" and "clear all" commands to clean the buffer. Tried to search for something of that sort in the design framework II SKILL document, but found nothing. Did a quick search on this in other SKILL documents in the cdnchelp folder but to no avail.
I'm using Virtuoso 126.96.36.1990.6.150 (don't think that mattters, but still). Didn't try running the script on IC6.15.
I think you're simply running out of memory. If you are creating a lot of waveform objects in IC5141, it doesn't always trigger garbage collection soon enough (the process of cleaning up and reclaiming memory) on such objects. You might be able to improve matters by:
There's no such thing as "clean the history" or "clear the cache" in Virtuoso - you can close cellViews (by doing File->Close Data) but this doesn't necessarily mean that all memory will be reclaimed.
If you can move to IC61X (ideally IC615 or later), there is improved memory management with waveform objects, plus the fact that you can run in 64-bit mode which gives access to more memory.
Thanks for the suggestion.
I'm running calculations in 64 bit mode for reasons of larger memory capabilities. And in this particular script an STB analysis is active and no waveforms are plotted - only phase and gain margins are sent to log.
Therefore I will try to call gc() as you suggested once in a while.
You might be running the simulator in 64 bit mode but cannot be running the OCEAN script in 64 bit mode if you are using IC5141 since general 64 bit support was not added for virtuoso/icfb until IC614. In IC5141 only "layout" and the stream interfaces (and a couple of other bits and pieces) had 64 bit support.
Now I'm a bit confused. You are saying that IC5141 simulations are not able to do calculations on 64 bit basis either way - from ADE (enabling this option via setup->environment->run with 64 bit binary) and OCEAN? Or is this true only for OCEAN?
That setting in ADE (and equivalent in an OCEAN script) tells spectre to run in 64-bit mode (you'd see this in the spectre log file too). The icfb or ocean executable is still running in 32 bit mode which means that any post-processing calculations (I assumed that by calculations you meant the post-processing rather than the simulation itself) are constrained by a 32 bit memory limit. If you end up loading a lot of waveforms in your script, and insufficient garbage collection is being performed, you could run out of memory (a 32 bit executable has a maximum memory usage of less than 4Gb).
Does that clear things up? Or have I confused you more? ;-(