Return Path Routing — Why No One Does It, But You Really Should

Kristof Mulier
6 min readMar 4, 2024

--

Note: find the original article here: https://embeetle.com/#blog/return-currents

At my first job, I took a few courses on signal integrity and circuit design techniques to limit noise. I learned the basic principles:

  • Place ceramic capacitors close to the power pins of each chip.
  • Don’t mix digital and analog parts.
  • Keep signal traces short.
  • Provide a GND plane.

You know — the usual stuff. I thought I was well equipped for the challenges ahead.

At some point in my career, I had to design a circuit with several DC-DC converters and extremely sensitive analog circuitry. Now, if you’ve ever been dabbling with DC-DC converters, you know that they are a noisy nightmare. Given the requirements of the analog circuitry, I just felt that my knowledge wasn’t sufficient. I was heading for failure.

To save the project, I dived into everything available about signal integrity and best PCB design practices. I experimented with feed-through capacitors, chokes, filters and whatnot. All these things must have contributed to the success. But there’s one design technique that towered above all else: Return Path Routing. For the first time, I had a circuit where the noise levels were no longer perceivable with my fancy oscilloscope. Let’s have a look at the technique after reviewing a few basic principles.

Back to the Basics — Current Loop Area

It’s been a while ago that I studied Maxwell’s equations. But I do remember a few very important principles:

  • Currents flow in loops.
  • The loop area matters.

The larger the loop area, the more the signal will emit and receive electromagnetic noise (causing crosstalk). Signals with a large loop area emit more electromagnetic waves and pick up external ones more easily. They’re louder and more sensitive at the same time.

Let’s determine the loop area of signal PA0 in the circuit below:

Loop Area

The current starts from the 3V3 pin on the connector on the left. Then it flows into the power pin from CHIP_A and exits that chip at pin PA0. The current flows towards CHIP_B and enters it at one of its pins. Then, it exits that chip from the GND pin. Eventually, the current returns to the connector on the left.

You can clearly see the loop area on the circuit. Technically, the loop area extends further. If there’s a battery providing the current, it starts from there. The area between the wires adds to the total loop area:

‘Relevant’ Current Loop Area

What we just did — observing the entire current loop area for signal PA0 — is a bit overkill. In most cases it’s sufficient to focus on the current starting from the bypass capacitor closest to the chip emitting the signal:

If signal PA0 is a high-speed signal, the bypass capacitor delivers all the required current pulses that shape the signal. The current loop area beyond the bypass capacitor is no longer relevant. So let us keep our focus on the local loop area. How do we make that area smaller?

GND Plane

Adding a GND plane is the first and foremost method to reduce the current loop area. Well, you might think that the return current just flows straight from the GND via at CHIP_B to the one at CHIP_A, taking the shortest route:

And yes, this is a potential route for the return current on the GND plane. However, if signal PA0 is somewhat high-frequency, the return current chooses another path:

That’s because of the “Principle of Minimal Energy” in physics. The path chosen by the return current is not necessarily the shortest. It’s the path of minimal energy. For low-frequency signals, that’s indeed the shortest path. For higher frequencies, it’s the path that minimizes the current loop area. The smaller that area, the less energy is lost to electromagnetic radiation.

The End — or not?

This is where most signal integrity courses end, maybe with a few more suggestions:

  • Make sure you have a solid GND plane. Preferrably also a power plane.
  • Place a GND via close to each GND pin.
  • The return currents find their way on the GND plane, minimizing their own loop areas.

Great. But I don’t want to stop here. Now take a deep breath and repeat after me:

“GND planes are never solid.”

If you’ve drawn a PCB before, you know what I mean. GND planes are filled with holes. Hundreds, if not thousands of vias punch through the GND plane. Most GND planes look like a hole cheese. Now, see what happens to the return current if it gets obstructed by a bunch of vias:

The poor return current can’t fulfill its desire for a small loop area. It will make a lot of noise to punish you!

Solution — Route the Return Path!

The solution is pretty simple, actually. Just route the return path!

Yep. That’s right. At first, it looks pretty useless to route traces on a plane that is going to be filled with copper. All your carefully routed traces on that layer will disappear. They’ll melt away in the copper pour.

It might feel like a futile waste of time. However, routing all the return traces forces you to think about each return current. You’ll be mindful of the current loops. As a result, you’ll push the vias around such that the most important return currents are no longer blocked!

Eventually, when the copper pours over the entire GND plane, all the return currents are happily finding paths with small loop areas.

Happy return currents don’t make noise.

Acknowledgements

I want to thank my friend Marius Heier (https://www.youtube.com/@MariusHeier1) for his encouragement to write this article. In our first conversation, I brought up this topic. That was hilarious:

[Marius]
“Ahhhh, you’re also a return current guy! That’s fun. So am I.”

[Kristof]
“Haha, no way!!!”

[Marius]
“Haha, yes! I like to route the ground, and then remove it with a copper fill.”

[Kristof]
“Yeah, me too!”

[Marius]
“Hahahahaaa. Hello brother!”

Then Marius introduced me to Eric Bogatin’s videos (https://youtu.be/y4REmZlE7Jg?si=zhaFtP_h6LSH_rcu , https://www.youtube.com/watch?v=y4REmZlE7Jg )

Eric is one of us — also a return current guy.

You join the club?

About Me

Check out my life’s work Embeetle, a new IDE that supports RISC-V, AVR and ARM microcontrollers: https://embeetle.com/

Return Path Routing — The Sequel

The sequel to this article is out! Check it out here: https://embeetle.com/#blog/return-currents-sequel

Thank you André Kühne!

--

--