The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl
Analog Verification >> Analog Performance Verification >> Ocean memory management
https://designers-guide.org/forum/YaBB.pl?num=1424971521

Message started by danmc on Feb 26th, 2015, 9:25am

Title: Ocean memory management
Post by danmc on Feb 26th, 2015, 9:25am

For quite some time I've had issues where if I use Ocean to iterate over a large number of corners or conditions that it often crashes due to a failed alloc or too many open files.  Anyone else see this or have good workarounds?  


foreach(cfg my_big_big_list_of_conditions_and_corners

 mySetupAndRunSim()
 myPostProcessSim()
)

in the post processing, I often write processed data to files using

fp=outfile("some_file")
fprintf(fp, "mydata")
close(fp)

but I *always* include the close().

Also I use printGraph() to make postscript files from various plots along the way.  I've found I do need to close windows when not needed:

awvSetCurrentWindow( myPlotWin )
awvCloseWindowMenuCB()

so I don't open (without closing) a new plot window for every iteration in my big loop.

Thoughts?  I like Ocean over ADE-XL because I find it easier to program both what I want in terms of simulation conditions as well as data post processing but the crashing just kills me.  I've even resorted to iterating with something like perl and launching new ocean jobs for each iteration but that prevents you from combining results from different runs within ocean.

grrrr....



Title: Re: Ocean memory management
Post by danmc on Aug 14th, 2019, 6:34am

I'll reply to myself.  Turns out some of the waveform processing functions in Cadence have memory leaks in some conditions.  dft() is one of them.  So if the analysis loop does lots of calls to dft(), well, doing more by having the outer loop can make it fail.  

The Designer's Guide Community Forum » Powered by YaBB 2.2.2!
YaBB © 2000-2008. All Rights Reserved.