uVIA L1 & L2 ring size rule

While doing a HDI design in KiCad I found the only limitation is the rule to prevent a via on same layer. Why this? Because when using a BGA footprint. On occasion, you want to have a blind/buried via from Layer 1 (L1) to Layer 2 (L2) where the footprint pad is smaller than the uVIA pad on layer 2.

If it was possible to make a via on the same layer, that is a uVIA going from L2 to L2 with a larger annular ring then the uVIA from L1 to L2, it would pe possible to create a larger “pad” on layer 2.

Can you give an example board file and show what you want to do and where?

Yes, here the uVIA going from L1 to L2 is smaller then tha uVIA above (on layer 2) because one can not set the layer 2 annular ring larger than layer 1.

The reason for keeeping the Layer1 ring smaller than L2 is for BGA footprint reflow specification. And the fab house like to have largest possible ring on layer 2.

I meant, can you attach a board file here? I haven’t used µvias so it’s very difficult to understand from textual explanation and picture only. I don’t even know what you mean by L1 and L2.

L1/L2 layer 1 and layer 2.

Its really not that hard to grasp. If doing a uVIA from layer 1 to layer 2, it is not possible to have a larger ring on layer 2 than layer 1. This imposes a problem when doing HDI design.

And no, I will not purplish the design here.

I suppose this is the limitation of KiCad, because paid firmware like Eagle, has this functionality and because there has to be a limit as to what one can achieve w. KiCad? Maybe the FAB house can add the L2 ring offset.

1 Like

Right now, kicad has no real support for custom padstacks (the only thing it does support is removing unused pads from a stack).

Such support might be added for v8. The only option you have right now is to edit the kicad_pcb file directly to specify a larger annular ring on a different layer

I see, so without saving, as I suppose that will overwrite the edit?

When is v8 due for release?

Just to 100% clear. @Naib

I open the file, edit the file in NotePad++ and then export the fab files without saving?

Right: So you trach the via in the kicad_Pcb by the coordinate?

Here is the line from the Kicad.pcb file:

(via blind (at 167.57 127.185167.57 127.185) (size 0.3) (drill 0.1) (layers “F.Cu” “In1.Cu”) (net 63) (tstamp 4d099a73-0397-4426-b659-d29dace18887))

How should I change that to have 0.35mm ring on L2?

How can one disable the rule for blind/buried uVIA on same layer?

I could then make a “via pad” without drill…

I understand your need now, to have different angular ring diamaters on different layers. You didn’t express that very clearly IMO, because “via on same layer” doesn’t mean anything by itself. And via on one layer only, not between two or more layers, is only one possible solution to the actual problem (and not very logical one because via by definition connects layers).

Naib’s solution doesn’t work, it’s impossible. What is possible is to use extra footprint with a SMD pad. KiCad understand pads on inner layers although there’s no way to create such pads in the UI.

  (footprint "Library:hhh" (layer "F.Cu")
    (tstamp cf9d7909-d569-4104-b7d8-a6846578dff0)
    (at 174.5 61.5)
    (attr smd)
    (pad "1" smd circle (at 0 0) (size 1 1) (layers "In1.Cu") (tstamp 264e03c4-6198-4695-bf36-d669d79af31b))
  )

When you create the footprint the pad is originally in layers "F.Cu" which has to be changed manually in the footprint text file or in the board file. All KiCad features, including zone fills, should work with the pad then. (“Should” means it’s not officially supported but has worked when tested.)

The via ring must of course be the smaller one of the two, and the pad represents the larger one.

1 Like

I can confirm, That changing the pad in the footprint file, and then importing the footprint againg, will move the pad in question to Layer 2 with the correct diameter.

For some reason, the soldermask opening looks clean, although the pad is larger beneath…

In the footprint editor, I ended up doing a B.Cu pad, below the F.Cu pad, without paste and mask checked. In notepad++ i then changed that pad to In1.Cu, after which I updated the footprint from lib.

Having the changes in the footprint file makes it static, so only if you change the footprint again, will the custom pad change. This, I guess, is only relevant for BGA Via-In-Pad

Just to confirm. It also works on L3 like below.

(pad “B5” smd circle (at -1 -2.5) (size 0.350 0.350) (layers “In1.Cu”) (tstamp 0e876af7-3eec-425e-913f-da64e7888c2e))
(pad “B5” smd circle (at -1 -2.5) (size 0.350 0.350) (layers “In2.Cu”) (tstamp 0e876af7-3eec-425e-913f-da64e7888c2e))
(pad “B5” smd circle (at -1 -2.5) (size 0.254 0.254) (layers “F.Cu” “F.Paste” “F.Mask”) (tstamp 3cdf610a-32e6-471c-ab65-2014c642278e))

NEMA23 CNC FOC Stepper Driver Dev - developement - SimpleFOC Community

I must have been confusing another aspect that you needed to directly edit. It was todo with padstack, just got uVia then

Im not sure, but wouldn’t you get the same result if you place a trace on L2 which have the same startpoint and endpoint as the coordinate of the via? The trace should also of course have the same width as you like the diameter of the via to be on L2.

This could be done in a text editor, but it can also be done in kicad.

  1. Draw a trace from the via on L2.
  2. Select the trace and press E for edit. Change the endpoint to be the same as the startpoint.
  3. Set the width to be what you like the diameter of the via pad to be.

I’m not currently at the computer. Maybe this is only possible with polygons? But then I guess this is possible to do using a polygon instead of a trace?

Hi!

Yes, I agree, in theory that is possible, but I found that editing the footprint file is quite straight forward. Just copy paste the lines in the footprint doc. and update the footprint from lib. It actually gives a good overview, which I’m not so sure the trace “dot” approach will…

Another thing, not so ideal, with regards to trace “dot´s”, is the fact that these dots would use the global coordinates, while the pads use the footprint coordinate. If doing lots of changes, like im doing w. a 169 (13X13) pad UBGA, and when precision is a important factor, I will say it is a good solution to just edit the footprint file.

This is all related to a very extreme case, where VIA-IN-PAD is necessary and where the 0.5mm ball pitch puts some restrains on the via top ring, while doing mask offset. Since it is not necessary to have mask offset on the inner layer, we then wish to expand that via ring a bit (on L2) to make it less troublesome to fab.

To my surprise I noticed than in KiCad v6.99 (nightly builds) it’s possible to set the start and end layer of a via to the same layer, and KiCad understands it and even plots it correctly. This is possible through the UI in the new major feature Properties Panel.

image

A bigger surprise is that v6.0 supports this, too. This works:

(via micro (at 147.85 85.83) (size 0.3) (drill 0.1) (layers "In1.Cu" "In1.Cu") (net 0) (tstamp e7e6ecfb-4880-47a3-b4c0-119c232af88d))

There just isn’t any kind of UI support.

I don’t know why I didn’t think of this earlier.

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