KiCad 5.1.10 not allowing via in keepout zone, even though "keepout vias" is not selected

Hey folks,

Running into an issue with keepout zones. I have an area on my board with some sensitive supporting passives for some analog circuitry. I have a keepout around those components and a fence. Keep out tracks and pours is selected, but not vias, since I need to drop down and connect these components to the IC below.

I can start a trace on the front layer, and then when pressing ‘V’ or selecting to send a buried via to layer 5 or bottom, it just doesn’t do it. It will snap my cursor to the edge of the keepout, and hit a wall (the fence). So I’m stuck. I can, however, manually place an individual via and set it up.

Am I doing something wrong? Is this a bug?


If you are Excluding Tracks… How would you place a via without a track. It is preventing you from running a trace, just as you requested.

Unless you are attempting to tie top and bottom fill areas.

Thanks for the point @iabarry. The keepout is not present on the front, In5, and bottom layers. So, checking the logic here… I should be able to route traces on front, and drop a via (and via only) to either In5 or bottom, and then route on those layers (and those layers only). Am I misunderstanding the feature?

The use case here, just to elaborate, is that In1 is 1V8, In2 is digital signal, In4 and 5 are ground, and In6 is 5V. In5 is analog signal, hence why it is permitted.

Maybe, under the hood, KiCAD can only allows a via if tracks are allowed as well? Is a via classed as a track, somehow? I’ll need to test that out tomorrow.

@iabarry do you know a workaround, perhaps? Currently, my strategy is to route the rest of the board with these keepouts, and then at the end remove the trace keepout and get this part of the board done. I must have copper pours kept out as this region is noise sensitive.

A normal via exists on ALL layers.

Blind via exists an outside and internal layers, but it still exists on All intermediate layers. A via from layer 2 to 6, will also exist on 3,4,5. This is necessary as the pcb is fabricated as multiple 2 layer boards and glued together. Each 2 layer board needs to have pads to allow for a plated through hole.

Buried vias exist only on internal layers.

Sorry, I’m doing this on my phone.

I believe, without testing, that you need to be able to route Traces on the beginning and ending layers.

I still think you are trying to route traces where prohibited. Try some test routes without vias to be sure.

Am I actually helping :thinking:

If that relevant here? The keepout zone doesn’t prevent the drawing of vias.

I’d assume that this is a bug with the V key feature while routing and would try to draw the via manually using the via tool.

Bug or workflow assumption.

When you use V a via is dropped but placing a track also start and this might be the issue due to the keepout rules stopping tracks.

Try placing a via from the UI

Just checked the hotkeys and the “V” key is explictly for placing a via at the end of a track (v5.99 has improved description).
So the issue is more you can’t track within the zone (because of the keepout) to place the via.

I do believe now that it is a bug. And I found another one with the feature: The keep out for traces does not block if the trace does not have a net associated. Very minor cause I can imagine that doesn’t come up much.

Anyway, back to the issue with vias. @Naib Only way I could get a via to place is manually with the toolbar “Add vias” button. Nothing else works: hot keys, right-click menu, etc.

@Naib, to your second point, shouldn’t I be able to track on the layers which do no have keepout zones? I should be able to start a trace on the front layer, drop a blind via to In5, and continue to route. In this scenario, only vias are present on the keepout layers, which should be legal.

I think it must be some bug where, since I am trying to place the via while in the routing tool, it classes the via as a conflicting “trace” and rejects it.

Playing with it this morning, unchecking the “keep out traces” attribute allows me to tie non-kept-out layers together with blind vias. I can use this as a workaround for now, and just be mindful not to route things through that zone.

V places a via, not necessarily at the End of a track. It is at any location where you wish to change layers.

It may be that the prohibition of a Via on ANY layer prevents placing a Via, and vias usually have tracks attached.

If you are placing a Via NOT attached to a track, you are doing it wrong. The Via will not be associated with a net and it will be impossible to attach a trace without changing the net name of the Via.

In Kicad you route Traces by starting on a component pad, which has a net. Then you route to other pads on the same net.

Your statement above indicates you are attempting to place traces and vias independent of nets. This is bad practice at a minimum and is prohibited when Enforce DRC While Routing" is enabled.

I don’t think there is a bug, you just aren’t using the tool correctly.

If you place a via by itself, it will have no net or the net of the fill zone in which you have placed the via.

I don’t think so. I went and checked. The behaviour is very consistent between 5.1.x and 5.99, the only difference is the description field has been added in 5.99

V on its own when you are not tracking swaps layers.

What the OP wants is CTRL-SHIFT-V

Correct but it doesn’t work even though I’m specifying a valid layer. Nothing works if I try to drop a via while I’m in the trace tool. I’ll try to put together a test case board in 5.1.10 and post a bug report. I’ll submit a write up on gitlab tomorrow for the devs.

Naib - I believe that we are in agreement regarding operation, but differing in terminology. Not a problem.

Tarasjg - I think your problem is in regard to TRACES within a Keepout Zone. Try changing the exclusion to Only Fill on all layers and see what you get.

In this video Chris shows how to do Blind & Buried vias. See if you are following this process.

If your need is just void in a zone fill to improve SNR, just use “Add zone cutout” instead of the “Keepout”.
These are two different ways to place voids in your fills.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.