Backdrilling Via


I’m currently working on a design in Kicad 8.0.1.
The design uses some pretty high-speed signals like PCIe Gen4 (8GHz) and 10GBase-KR (5GHz)
I would like to be able to backdrill some vias to reduce the via stubs.
I’ve had a look around the forum and google but I’ve seen very little information regarding the subject.
Does kicad support backdrilling vias? Whats the best way to accomplish that right now?


I have never heard ‘backdrilling’ term. Isn’t it the same as one of microvia, blind or buried via?

Sounds to me like more of a ‘reaming’ process on the drill through nub. Probably actually a question for your manufacturer as it would be an extra step they may not normally do.

It has some similarities. A blind via I believe would be the closest in terms of the finished item.

Say you have a through hole via (or pin) from say top layer 1 to bottom layer 14.
If you have a signal that enters the via on layer 1 and runs along layer 5 the remaining barrel of the via from layer 5 to 14 would be a stub that causes reflections on a high speed signal.

Backdrilling would be the processing drilling out the stub of the via barrel from layer 14 upto and including layer 6. Which effectively creates a blind via from layer 1 to layer 5.

The difference is that with a blind via I believe you could use the area of the pcb under the via on layers 6-14 for something else, but with back drilling you must keep it clear to allow for it be drilled.

I know the PCB manufacturer I have been speaking to can do it, I was looking for a method to communicate that process with the kicad data I will have to output.

This image here shows a rough representation of the stack and via types I am using.

I was looking for a mechanism to not have to add blind via types between layer 14-3, 14-5, 14-10

How does the PCB manufacturer WANT the information conveyed. That may end up being the question.

1 Like

If memory serves correctly this would be on the drill drawing and the specific holes would be called out to state how they would be back drilled.

I’ll have a chat to them to find out how they expect it to be shown.

1 Like

One solution I have seen already is to use a special diameter for all backdrill vias.

1 Like

Kicad does not support back drilling AFAIK, someone correct me if I’m wrong.

You will need two drill layers for back drilling. A plate through hole layer and a counter bore layer. Holes you want back drilled will need to be on both layers. Drill diameter on the counter bore layer will need to be bumped up a few sizes to clear out undesired plating. If you want back drill vias on both sides of the board or back drill vias at different depths you will probably need to break out the respective counter bores to multiple layer since I don’t believe kicad supports depth control drilling.

Might also find the need for a small pad on the counter bore side of the outer layer so the photo resist can protect the via during final etch. Counter bore itself is after etching and you may be able to remove the undesired pad during drill.

A highly annotated drill map will be very helpful times like this.

Of course as mentioned, you should work out these details with the manufacturer.

@piotr, @hermit “Backdrilling” is a standard term for PCB manufacturing. It’s even mentioned in the X2 Gerber specification from Ucamco, (Revision 2018.11 page 160) although very briefly. Backdrilling
An example explains best how to structure a job with backdrilling. Suppose we have an 8 layer
job with backdrilling to remove via plating between layers 8 and 7. We need two files:
One file contains the via’s. It has .FileFunction Plated,1,8,PTH. The drill tool has the via end
diameter. Its .AperFunction value is Via.
The second file contains the backdrills. It has .FileFunction NonPlated,8,7,Blind. The drill tool
has the same diameter as the via – the manufacturer will determine the tool diameter. Its
.AperFunction value is Backdrill.

… and I guess it’s not supported by KiCad. It also is not mentioned in the manual of the PCB editor. Using a special via diameter as mf_ibfeew mentions may work. Maybe you can work with micro via’s instead.

Thanks @paulvdh I’m already using an HDI type stackup with 2+n+2 where n is actually 2 half stacks from 2-7 and 8-13.

The issue I’m trying to solve is routing a bunch of 20 differential pairs + 16 single ended signals between 2 connectors and because their pinout and connector locations are fixed it requires 6 signal routing layers.

The differential pairs are routed on inner signal layers 3, 5, 10 and 12. and take the path from an SMT pad on layer 1 at one end to a through hole pin on the connector at the other end, which effectively means I need to route all signals from layer 1 to 14 using the intermediate layers for crossing over.

Its a bit messed up right nice as I’ve been playing with a few ideas but it should convey the idea.

The signals on the diff pairs can run upto 10gbit so and this is only part of the channel so I’m trying to ensure I eat as little of the margin as possible. Hence the reason for looking at how I can reduce the stub lengths with the vias.

I did a bit of digging around the blind vias vs backdrilling and sounds like the main limitiation is that from what I have read blind vias have an aspect ratio limit of 1:1 which means if I want the blind via to go from layer 1-12 with a distance of 1.25mm that would result in a via drill diameter of 1.25mm which is far larger than I can cope with. Currently I’m using 0.15mm drill with 0.45mm pad.

I feel like I’m right on the edge and finding the limits of what KiCad can cope with right now. It’s missing a few features I’m trying to work around, things like the lack of a constraint manager (I know you can do custom rules but definitely more clunky than other tools), no built in tools for assisting with impedance calculations, via separation, anti-pad sizes.

Add this reference here for any future people that come across this thread.
I’ve found a feature request for Kicad, few years old for backdrilling.
Doesn’t look like its got much traction though.
If like me backdrilling is something you are needing then would recommend giving this feature request a thumbs up to get it on the dev guys radar a bit more.


Altium has an excellent explanation:

This could also provide some inspiration on how to integrate this feature from the UI side.