Defining copper to drill hole clearance rule in Altium Designer

The “copper to drill hole” distance is an important rule for circuit board design, just like the “copper to copper” clearance. A PCB manufacturer usually announce their minimum allowable clearance between copper and drill hole as part of their capability. For example, the PCB house that I am always using has a minimum 6mill for copper to copper clearance, and 10mil for copper to drill hole. This rule sometimes doesn’t need to be taken care of if the holes come with annular ring (e.g. via hols or through-type pads), because the copper to copper clearance rule (e.g. 6mil) + the width of annular ring (e.g. 5mil) is usually more than enough to satisfy the copper to drill hole clearance requirement. However, when you only need a bare through hole on your PCB board for mechanical purpose such as mounting a connector, the copper to copper distance (e.g. 6mil) is used to monitor the clearance (e.g. require at least 11mil between a hole and copper) when there is no annular ring “protecting” the hole, which may potentially cause problems.

In this article, I would like to talk about how to set up the rule for the “copper to drill hole” clearance in Altium Designer. I wouldn’t have to write this if it were as easy as the “copper to copper” rule. For some reason, Altium Design doesn’t specifically provide a default methods in the “Design” -> “Rules” menu, where you can easily define the rules such as copper to copper distance. However, Altium Designer provides a powerful “Advanced (Query)” method with which you define the clearance rule between A and B. Apparently,  as you can see from the following plot: A stands for the bare through hole (I call it “NPTH” for Non-plated Through Hole), and B for all other coppers. So just put “(InPadClass(‘NPTH’))” in the top “Full Query” windows and “All” in the bottom.

AD_Design_Rule_Hole_Copper

Next, you will need to define which holes are “NPTH”.  In “Design” -> “Classes”, you can manually setup a new class under the tag “Pad Classes” and name it “NPTH”. Click the NPTH and pick up the holes that you want to put under the “copper to drill hole” rule from the “Non-Members” list and add them to the “Members”.

AD_Object_Class_Explorer

A useful tip for easily selecting the holes: Assign “-1”  to the designator of the non-plated through hole so that you can easily filter them out with regular expression “*–1” in the “Non-Members” list. Otherwise, you just get lost in the long “Non-Members” list of all the pads in your design.

Now, if your copper gets too close to the hole, the rule monitor will give you a warn immediately!

7 Replies to “Defining copper to drill hole clearance rule in Altium Designer”

    1. Also try PadIsPlated = ‘False’
      You can accomplish the same thing without setting up the NPTH class. Thanks for posting this

  1. There’s a slightly easier way, that doesn’t require adding all NPTH holes to a specific class. For the query to identify NPTH holes, use “PadXSize_AllLayers <= HoleDiameter". That will identify pad objects where the pad does not extend outside of the hole.

  2. Ok, but what if I want to do the same thing, either on a Component Pin (Through-hole) or a via when “Remove Unused Pad” feature is used ? Without a “Drill to Track” rule, the routed trace may come too close to the throu-hole barrel!!!

    1. As long as you could include all your things of interest into “a class”, you will always be able to keep a clearance between the class the trace through Advanced Query.

  3. How can I setup a rule for soldermask opening to covered metal? I don’t want any copper to be exposed because of the tolerance of solder mask opening

    1. Soldermask opening for component pads is actually the design of the each component. There is no rule to tune that, you will have to open the component library and custom design the soldermask layer of that that component.

Leave a Reply to Anonymous Cancel reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.