I am running a simulation that takes forever to be completed! It has some switched-cap circuits inside and currently I use moderate simulation and ASP is also enabled, with 16 threads and 24 cores. I wonder if there is any option to break the simulation into smaller parts and use several computers to run parallel simulation.
I don't often chime in on simulation issues but I doubt many would be able to help you, your request seems to be too vague.
1. What sort of simulation are you running, transient, PSS, harmonic balance etc. (you get the picture)
2. I'm assuming that you are using Spectre as the simulator (APS, not ASP) but which version?
3. Are the circuit elements all transistors and passives, or do you have any behavioural models?
4. Is the timestep being reduced to a very small value? This might indicate discontinuities in the models or incorrect component values, or incorrect connectivity even.
I think that you will need to supply more information, or perhaps file a Case with Cadence Customer Support.
In reply to skillUser:
Thanks for your reply, and sorry for not giving complete description.
I am running transient simulation and I need to get SNR of the whole
system, and in this case I need to have 2^18 fft points, that's the
reason why my simulation takes a long time.
2)Yes I use Spectre. Sorry, that was a typo, I meant APS. The version of Spectre is 18.104.22.1687.
I am just using resistors, capacitors and transistors, and all
components are real. Actually when I use VCVS as opamp, it would take
less time for a simulation to be completed.
4) I am not getting
any warning about that, so I am sure it's not a problem with the
circuit, and it's normal for my circuit to take that much time. So I'm just trying to find a way to do parallel simulation, if available, to save time.
In reply to Monady:
instead of doing an endless transient run why don't you try to use SpectreRF simulations techniques?
Here is a basic guide which can save you a lot of simulation time.
In reply to Marc Heise:
Thanks for your post. I think what you're suggesting is using periodic steady state analysis, but this method could be applied just when the circuit has steady state condition. For a switched cap circuit alone, it's possible to use PSS, but if it's used in a bigger circuit like delta sigma converter which has no steady state condition, PSS cannot converge. Isn't it like this?
To be honest, SpectreRF isn't my strong side, but Google is:
There is a good community of designers, but I would advise to show that you put some effort into it before asking there.
I think you didn't read my question carefully, I didn't
ask about simulating any specific circuit. I was just asking whether
there is any way to do parallel simulation. I'm aware of APS and using
multiple cores on a computer, now I wonder if there is anyway to use
multiple cores on multiple computers to run one simulation. BTW, I saw
that report before, it's a behavioral simulation, not transistor level.
I did read your question and tried to find a different solution which even might been faster.
AFAIK, Spectre APS will run parallel on cores/threads ( which you already do) but not over different machines.
Actually APS can run across multiple machines - using the "distributed processing" mode. However, this is not that likely to give you more speed up over running on a big multi-core machine - it just allows you to use hardware more efficiently (sometimes people have a large number of smaller core machines, or can schedule jobs easier when asking for only a few cores per machine).
Without knowing the specifics of where the bottlenecks are in your simulation and the statistics about the size of your circuit, number of timesteps and what exactly you are trying to simulate, it's hard to answer such a vague question.
Marc was quite right in trying to suggest alternative strategies for simulating the circuit which could have been much more efficient.
For example, if your simulation is of a relatively small circuit but needs hundreds of millions of timepoints to complete, parallelization won't help you much because time is sequential... you can't do something in parallel if it depends on a previous timestep's results.