I have a SKILL script that runs out of memory and terminates Cadence when running on a medium-sized MMIC. I will try assigning intermediate variables to nil after they are used but is there anything I can do either to increase memory or in general to redue its use?
Difficult to guess without having a pice of code.
Anyhow there are few hints:
- if possible, switch to a 64bit cadence version, probable yours is a 32bit
- could be a OS limitation of memory/process
- you may need to change your data structures, from what I've noticed creating a lot of lists will exhaust the memory. Also, the extensive usage of hashes/associative_arrays makeTable(...) may create memory problems.
In reply to marcelpreda:
Thanks for the inputs.
The version of Cadence is dictated by the foundry so the first option is out
I will look into the second possibility on the OS
I do have a number of lists and am now assigning them to nil when not in use - hopefully that will correct the issue.
In reply to thomas1000:
Do you have a Skill development license? If so, you can profile the performance and memory usage of your program:
CIW->Tools->Skill Development Click on Skill ProfilerFrom the profile menu, you can choose "Start Profiling Time" or "Start Profiling Memory". After the profiler has started, run your program. Since it is currently crashing Cadence, you'll want to run a smaller data set, or even ctrl-c to cancel the command before you crash. When your run has finished, press the "Stop" button on the profiler form (the square) and you'll see some information about the top memory users or time users. Press the Browse button (looks like a tree) and it will build a tree of your code to help you see your memory usage in your code hierarchy.Then examine the profile results to help pin point your memory hog. If you are able to get this far and isolate the problem code, then post it and we can help you improve it.
If you don't have the profiler, you might want to post a sample of your code.
In reply to dmay:
Thanks. That was helpful. I was able to find the memory problem and solve it. I had not needed to use the profiler much before but in this case it was helpful.