I have been asked to calculate the trace impedance of some routing, I know that impedance is dependent on the Er, trace thickness, trace width and distance from a plane. But the trace changes width as it is routed. And the two different impedance solvers have provided 2 different answers. In Altium I have impedances of 34.98633726, 32.81547534 and 28.78596208 for traces of 0.305, 0.33 and 0.381mm. But The Saturn PCB Toolkit shows 45.2196, 43.2286 and 39.6915 respectively!

  1. How do I work out the overall impedance of this trace?
  2. Which is the better result?

TraceHeight is 0.05mm
TraceToPlaneDistance is 0.142mm
Er is 4.2
TraceWidths are 0.305mm, 0.33mm and 0.381mm along a single trace (the default should be 0.381mm but there are fine pitch devices nearby and a reduction is required to get the trace into the pad).

  • \$\begingroup\$ Altium gives an impedence calculaion by a formula of: (60/SQRT(Er*(1-EXP(-1.55*(0.00002+TraceToPlaneDistance)/TraceToPlaneDistance))))*LN(5.98*TraceToPlaneDistance/(0.8*TraceWidth+TraceHeight)) \$\endgroup\$
    – Lonewolf
    Jun 6, 2019 at 10:09
  • \$\begingroup\$ I see you found the Altium formula. Check my answer for some Saturn alternatives if you want to model accurately arbitrary geometries. Saturn (and generic IPC forumas) is perfectly good as long as you keep it straightforward. Consider changing your dielectric thickness to 0.1mm if you've got control of the stack-up, it allows for narrower gaps between traces and thinner traces. \$\endgroup\$
    – Barleyman
    Jun 6, 2019 at 11:31

2 Answers 2


As a rule of thumb, a trace 2h wide on a substrate of thickness h and er 4.2 (like FR4) has an impedance in the 50 ohm ballpark. The Saturn PCB figures look like what I'd expect.

Are you sure you've given Altium all the correct data, it's unlikely to be that wrong by itself. Check any defaults that are lurking around.

The trace does not have an 'overall' impedance, unless its length is so short, or the frequencies are so low that the concept of impedance doesn't really matter. If it's short, do a weighted average. If it's long, you would need to model it as a length of 45 ohm line, followed by a length of 43 ohm line, followed by some 39 ohm line. Is there any reason to keep changing the width?

However, the change in impedance as you go along the trace is sufficiently small that the reflections caused by those impedance change are likely to be negligible for most purposes.


Altium uses a basic formula to determine the trace impedance, you can look at it from the layer stackup settings, design->layer stack manager->impedance calculation.

Saturn purports to use "a complex formula" for the basic microstrip trace impedance case, which should perform better than what Altium uses. However, in order for this to be accurate, your trace-to-copper or trace-to-trace gap needs to be larger than the distance to reference plane. How much larger? Well, some people say 2x is enough, some say 3x. Saturn uses the generic IPC calculations for CPW so the result is not as accurate as for the microstrip.

If you're interested in modelling impedances, there's this question about modelling 0.1" header properties. I tested some free and evaluation tools available.

One I didn't touch there is the "Multiple Dielectric Transmission Line Calculator", it does honest to god 2D field analysis which is by far more accurate than the generic models. You use it by drawing a bitmap with paint (or gimp or whatever), with pixels representing traces, copper, dielectric etc.


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.