This is part 1 of a 3 part series, covering “how to simulate with SPICE” in each of Altium Designer, Autodesk Eagle, and Kicad, mostly so I know exactly how to do it quickly.
That said, this video took FOREVER to put together, so we’ll see how quick I am to follow it up for Eagle and Kicad.
The gist of simulation with any of these CAD packages is
- Capture the schematic
- Associate SPICE models with each component in it
- configure and run a simulation.
All three packages are great at (1). Theoretically (2) and (3) should just be convenient front end interfaces in your native CAD domain to an external spice simulation engine. In practice, stringing it all together is not the EASIEST user experience.
As far as Altium is concerned, here are my high-level notes:
- Make sure your component values mean in SPICE what they mean to you. SPICE is case-insensitive. 1M does not mean 1 megaohm, it means 1 miliohm. You want 1Meg.
- SPICE model pin numbering often doesn’t match component/package numbering. Take care to figure out what the model order is, and that it’s mapped properly to your component.
- In Altium, a SPICE model can be independently added to a single part of a multi-part component. This doesn’t make a ton of sense to me, i.e. when a multi-part op-amp component needs 2 or 4 copies of the amplifier model but also one shared power rail between them.
- If you’re using Altium 365/Concord Pro, you CAN attach a SPICE model to a component, but port mapping model pins to component pins may or may not be possible. In this case, my component is two independent 3-pin parts. Associating either a 3-pin model OR a 6-pin model (two 3-pin .subckt’s wrapped in a 6-pin .subckt) both failed.
- Altium handles SPICE parsing errors by crashing with no additional info. In this instance, models direct from Diodes Inc. had a .ENDS statement on the same line as the previous statement, which Altium can’t handle.
- SPICE models can be intrinsic, model cards, or .subckt models. Each requires a different file extension when associating it with a component in Altium, even though the contents is just the same generic text.