I have posted this question on other EE forums and received conflicted answers. But I think no where can give me a better answer then here. So here we go
Now I am using CADENCE IC 617 and MMSIM151 on a Linux machine with 10 cores CPU (20 threads). The simulation setup is like this:
ADE L --> Setup --> High-Performance Simulation Options. Then I click APS. choose Error Preset: DO not override; Use ++aps; Multi_Threading Manual #Threads: 19 (1-19)
But when I try to simulate, the total CPU usage is about 16% and a lot of cores are idle. The total simulation time-steps are 2210000 steps (transient time is 2210ns and simulation step is 0.001ns. ) this cost me more than 2 hours per simulation.
this is the info
It seems the CPU is very underused.
My questions are:
1. Does anyone know how I can setup the software to use all or most of the CPU power to speed up the simulation?
2. What dictate the time step of the simulation?
Thank you very muchAllen
Just because it takes a lot of time steps doesn't mean that multi-threading will help improve performance. Mostly that's dependent upon the size of the design (number of devices, particularly active devices). For small designs, there's little benefit gained by multi-threading. It looks as if you're getting some, because the CPU shows at 200%, but certainly it wouldn't be worth using 19 CPUs.
Pay attention to the log file - it will tell you if it thought the circuit was too small to benefit (and will reduce the number of threads used, and return licenses too if not needed). The circuit inventory is important information - perhaps you can post what that shows?
The reason why multiple threads won't help in a long simulation of a small circuit is that future time cannot be simulated in parallel with past or current time - there's an order dependency.
Can I ask a follow up question?
I ran 2 transient simulations with a little different setup
1. the step is decided by the simulator (conservative)
2. On top of 1, I add options----maxstep=minstep=1p
This results more overall steps and simulation time.
However, 2 simulations gave me different result.
Which result is more reliable? Does this means the automatic time step is not super accurate?
A huge amount of work has gone into making Spectre's automatic timestep mechanism accurate whilst balancing the need not to take an excessive number of time steps, so it absolutely should not be stated as "not super accurate".
In general you should never set minstep. This limit's spectre's ability to take a very short timestep if it needs to - normally if it needs to take a shorter timestep than this, it's because error criteria indicate that it is necessary. It's mostly there for debugging some cases with discontinuous waveforms.
As for maxstep, I would say that there are very few cases where it's necessary to set this - and for the most part, it's an inefficient way of forcing more time steps. One of the few cases is with oscillators - oscillators can be hard to start and sometimes you need to force the simulator to take more time steps to allow the oscillation to build. Other than that, there is little need to use it.
If you have a concern about accuracy - I can't comment on your simulation because I've not seen the details of the perceived inaccuracy, or even what kind of circuit it is, then you should contact customer support.