KiCad 7 how to dis/allow microvias and/or buried vias

The docs for v7 says If microvias or blind/buried vias are enabled in the Constraints section of the Board Setup dialog. But I can’t find it.

Moreover, the Python BOARD_DESIGN_SETTINGS.m_MicroViasAllowed member was removed, but the v7 projects contains:

     "rules": {
        "allow_blind_buried_vias": false,
        "allow_microvias": false,

Where is this setting? How do I know it from Python?

There is no longer a setting for this; the thing in the json is left over and should be removed, and the docs need to be updated.


If you really need to exclude them you can do so with a custom DRC rule. But most people can just ignore it – either their board contains blind/buried and/or microvias or it doesn’t.


Hi @JeffYoung !
Thanks for the reply. I just want to keep some KiBot functionality. For KiCad v5/6 the PCB report could say if the user enabled burried/microvias. But I couldn’t find how to do it using v7. But @craftyjon explanation revealed the mistery. Right now I’m informing unknown for v7, but in the future I’ll add some PCB scan to detect if they are used.

@JeffYoung I’m setting up my first KiCad project and configuring it to use OshPark as my fab. I don’t know if it’s common in other fabs, but they do not support microvias or blind/buried vias (OSH Park Docs ~ KiCad ~ Design Rule Setup).

If this is a common limitation, then it does feel like it will be pretty common for users to want to set up these DRC rules.

You can just not use microvias… it’s not really something you need to set up a design rule check for.

1 Like

As @craftyjon says, they aren’t accidentally created.
But if you need a warning about them you can try using KiBot

As KiCad 5 and 6 had options to disable them KiBot has an option for KiCad 7 and can generate a warning if violated, you just need to ask for a report of the project.

You can also use custom rules in 7.0. It would look something like:

(rule "through vias only"
   (constraint disallow via)
   (condition "A.Via_Type == 'Micro' || A.Via_Type == 'Blind/buried'"))