PCB Editor Constraints vs Manufacturer Capabilities: Via sizes


Under Constraints, the following constraints exist:

  • Minimum annular width
    Should a manufacturer’s (via.diameter.min - via.hole.min)/2 be considered for this?

  • Minimum through hole
    Should a manufacturer’s via.hole.min be considered for this?

  • Minimum copper to hole clearance
    Should a manufacturer’s track2viaHole.min be considered for this?

  • Minimum hole to hole clearance
    Should a manufacturer’s viaHole2viaHole.sameNets.min be considered for this?

Example Manufacturer

Known PCB manufacturer, JLC, provides:

  • Minimum via hole size
  • Minimum via diameter
  • Minimum PTH size
  • Minimum NPTH size

  • Minimum annular ring

  • Minimum via to track
  • Minimum PTH to track
  • Minimum NPTH to track

  • Minimum hole to hole (different nets)
  • Minimum via hole to via hole (same nets)

I also recommend: If you don’t have to, don’t use the absolute minimum but use a bit more. If you have to produce the PCB somewhere else, they may have higher tolerances and then you don’t have to change anything. It can also often mean cheaper PCBs / the smaller the tracks and clearance, the more it will cost.


If holes and vias are effectively the same, why aren’t the constraints:

Copper width:

  • Minimum net track width
  • Minimum net zone(?) connection width (What is this? Chokepoints in a zone?)

Copper spacing:

  • Minimum net to net clearance
  • Minimum net to hole clearance
  • Minimum net to edge clearance


  • Minimum via hole diameter
  • Minimum via (hole + annular) diameter
  • Minimum via annular width (Why is this needed, given the above two?)
  • Minimum through hole diameter (Why is this needed, if vias and PTH are the same?)
  • Minimum uvia hole diameter
  • Minimum uvia (hole + annular) diameter


  • Minimum text to item clearance
  • Minimum text height
  • Minimum text thickness

I am sorry. I told some things wrong, i hope you aren’t that far that this is a problem.

Some manufacturers differentiate between THT Pads and Vias. But AFAIK they can’t do that by looking into the gerbers alone, since this information is not in the gerber files. Instead, they assume it is a via when it too small for a THT.
See here for more information: Drilled Holes - Eurocircuits Eurocircuits


You have to use custom rules as eelik mentioned.

Have you tried Custom Rules (since v6)?

Do clarifications to these questions exist in the documentation anywhere?

(version 1)

(rule viaDiameter
   (constraint hole_size (min 0.2mm))
   (constraint via_diameter (min 0.5mm))
   (condition "A.Type == 'Via'")

(rule padHoleDiameter
   (constraint hole_size (min 0.5mm))
   (constraint annular_width (min 0.25mm))
   (condition "A.Type == 'pad'")

(rule NPTHDiameter
   (constraint hole_size (min 0.6mm))
   (condition " A.Type == 'hole' && !A.isPlated() ")

Maybe this works? You have to try it.

@johannespfister :

My questions are based on filling out the the standard constraints.

You are providing instructions surrounding how to implement custom rules; however, I haven’t even begun to delve into those yet ( : j )

Is it standard practice to place additional constraints using custom rules, and if so, does there exist a primer in the documentation for filling out the constraints (standard as well as the typical custom constraints)?

Documentation: PCB Editor | 6.0 | English | Documentation | KiCad

I don’t know if this is normal. I personally don’t need them because i can afford higher tolerances in my designs.

For the standard definitions: If you have multiple values and need to set custom rules, use the lowest setting in constraints you need. For example if a Pad hole has a minimum annular width of 250µm and the vias have 100 µm ((400µm-200µm/2), then choose a minimum annular width of 100 µm in the standard settings so it doesn’t generate a error for Vias smaller with an annular width of 100 µm

I made a spreadsheet for the major manufacturers based on their constraints pages.

Custom constraints rules presets (for general use) for the major manufacturers might be better, especially if they had if/then statements based on layers, copper thickness, and board thickness, if that sort of functionality already exists.

In my excel sheet, the numbers are cited (separate sheet) and the formulas work correctly with the filters.

It could use peer review.

1 Like

Sie benötigen Zugriff
Bitten Sie um Zugriff oder wechseln Sie zu einem Konto mit Zugriffsberechtigung. Weitere Informationen

Can you fix that? And maybe use a text file that is easier to process, such as csv?

os/ft^2 is a stupid unit. Even when you would use the British imperial units elsewhere since they are incompatible to themselves (but that is off topic).
Using the actual height in µm would make more sense.

In my editor, the link is correct, but it postprocesses it to the link you see. Let me try embedding it in text, here.

Gerber X2 tells you where the via’s are, and more.

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