1
\$\begingroup\$

I am currently working on a quite big project and I use Altium to simulate my overall circuit to make everything works as I expect it to.

I have something like 10 sheets linked to each other with feedback loops etc. I have for the first time tried to simulate the global process today and it takes me 15s in real time to simulate 1 ms of the simulation.

The problem is that I have phenomenons that are happening at differents scales (basically one part is about the ms and the other one at around the second).

So I calculated and it would take me 4 hours to simulate 1s of my circuit and 41 hours to simulate 10 seconds. 10 seconds is the minimum I need to simulate to be able to see what's happening in my project.

Do you know a way to make the simulation faster thant it currently is ?

(I already tried to increase the Transient step time and the transient max step time but they both are now at 10 ms and it doesn't drastically change the simulation time).

\$\endgroup\$

2 Answers 2

3
\$\begingroup\$

The problem is that I have phenomenons that are happening at differents scales

This is the classic case of an ill-conditioned simulation problem. It is fundamentally computationally expensive to simulate this kind of system.

Do you know a way to make the simulation faster thant it currently is ?

The classic way is to use short duration simulations to study the behavior of the parts of the circuit with short time constants. Then replace those parts with simplified behavioral models to simulate the parts of the circuit with long time constants.

Of course it requires engineering judgement to figure out exactly what needs to be included in the simplified models. And it may require changing the system design to make the fast components well-behaved (at least in the limit) in order to get a consistent result in the long-duration simulation.

\$\endgroup\$
2
\$\begingroup\$

I have no experience with Altium specifically, but the basic approach is divide and conquer. You can do this in two ways and probably need to do both.

1) Unit testing : test each sheet individually, probably in a testbench that drives its ports and examines its outputs, covering the normal range of usage and throwing it curveballs to catch corner cases. You probably do this anyway.

2) Short time simulations. Run simulations to cover your ms scale events. Then cue up different simulations to cover key moments in your second scale events - for example, if you're testing a clock, set it to 11:59 and simulate the next 2 minutes, rather than simulating 12 hours.

Part of creating a design is thinking about how to test it, and structuring the design so that these tests are possible.

You probably need to run the 41 hour simulation too : but by that stage the design should be thoroughly exercised so it only needs to run once. Leave it over the weekend, with clear instructions to the cleaners not to unplug the computer so they can use the floor polisher!

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.