Spectre/Ocean for EDA development

T

Tao Chen

Guest
I am trying to make a matlab script to do some optimization to my
circuits. Since I only have technology files for Spectre, I use
Spectre in command line to run the simulations, and invoke ocean
functions to get the results (which seems to be the only way to get
simulation results by command line?). Then my program can do some
adjustments to the circuit parameters based on these results, and send
the new circuit for simulations, and so on.

Hundreds of simulations need to be run. Now the problem is, for each
simulation I have to invoke Ocean once, which is very time-consuming
(it needs almost the same time as invoking cadence itself). Is there
any way to avoid this and speed up my optimization process?

Thanks!
Tao
 
Tao Chen wrote:
I am trying to make a matlab script to do some optimization to my
circuits. Since I only have technology files for Spectre, I use
Spectre in command line to run the simulations, and invoke ocean
functions to get the results (which seems to be the only way to get
simulation results by command line?). Then my program can do some
adjustments to the circuit parameters based on these results, and send
the new circuit for simulations, and so on.

Hundreds of simulations need to be run. Now the problem is, for each
simulation I have to invoke Ocean once, which is very time-consuming
(it needs almost the same time as invoking cadence itself). Is there
any way to avoid this and speed up my optimization process?

Thanks!
Tao
There's quite some overhead when running ocean. I can suggest the following :

1/ Optimize your simulation flow to use the simulator native capabilities as much as possible (for
example when doing sweeps, altergroups). Then use ocean to process the resulting data in batches.

2/ Have only a single ocean session running the whole time, and send commands to it via some kinf
of IPC when there's data to process. I don't know how much this would be feasible with matlab though.

3/ Variation of 2/ where the ocean session is the master. It runs the simulator, processes the
data and either saves it into a format suitable for post-processing by matlab or invoke matlab
on-the-fly.

4/ Avoid ocean completely by using MDL (which gives some sort of built-in data processing
capabilities). It's less flexible than ocean, but for simple enough processing it outputs a file in
text format with the results, simple enough to parse in a MATLAB script (I guess).

Maybe one of these will suit your case.

Cheers,
Stéphane
 

Welcome to EDABoard.com

Sponsor

Back
Top