Disabling PCB DRC check for silkscreen clipping etc?

I am finishing up my first project in KiCAD and have been trying to clean up my PCB text on the layers and run the DRC check to find things I need to fix. The only items left in the DRC check are warnings about the Silkscreen being clipped by solder mask and Silkscreen Overlapping lines.

Is there a way to disable those checks? Silkscreen lines for a Footprint being crossed by a line that I have specifically drawn around parts is not a warning I care about. Neither are warnings about the silkscreen going through solder mask areas or silkscreens being crossed by Edge Cuts. I sometimes have to add internal cutouts between AC and DC sections so UL does not complain and if they cross a components silkscreen outline, it does not matter.

My PCB shows 126 of those warnings. I know I can turn warnings off, but It would be nice to be able to refine them somewhat so that I don’t have to see them every time I design a board.

You have a couple of options.

  • You can exclude them on a case-by-case basis, which gives you the most flexibility but will be annoying for 126 of them. Right click on the violation in the DRC window and click “exclude this item”.
  • You can ignore all silkscreen-clipped-by-solder-mask (or whatever) at once by right clicking on one of them in the DRC window and clicking “ignore all ‘silkscreen clipped by solder mask’ violations”. That sets the violation severity for that category of violations to “ignore” so you won’t see any of those in the future for this project.

You can manually set severities for all violation types in File → Board Setup → Violation Severity. You can also get here by right-clicking any violation in the DRC window and clicking “edit violation severities”:

Assuming you’re using 6.0, right click on one of the warnings. You’ll get a menu that allows you to either mark that specific case as an exception, or turn of all warnings of that particular class.

1 Like

Thanks! I am using V6. I was wondering about how to mark exceptions. I have moved over from Eagle and always did the same thing there.

@JeffYoung Is there a way to create a rule that overrides the silkscreen clipped check for a specific component?

Try:

(rule allow_silk_collisions
    (constraint silk_clearance (min -1mm))
    (condition "A.insideArea('silk_ok')"))

Depending on whether you mean a specific component on your board or specific type of component you’ll need to draw a rule area either on your board or in the footprint and name it “silk_ok”.

Let me know if it works; it’s probably worth adding to the syntax help examples…

1 Like

Unfortunately I could not get that to work for me.

However, if I create a group I have found that I can make a rule using the memberOf() expression function as follows:

(rule allow_silk_collisions
    (constraint silk_clearance (min -1mm))
    (condition "A.memberOf('silk_ok')"))

There is a complication though if you only want to make the rule apply to only one component. You cannot create a group if you have only selected one component, so you have to select two components, create the group and then delete the component you don’t want in the group which leaves the group with only one component.

It would be handy if there was an expression function that allowed you to determine if an object was an element of a footprint. Something like the following:

(rule allow_silk_collisions
    (constraint silk_clearance (min -1mm))
    (condition "A.existsInFootprint('BT1')"))

where the string argument could match a reference designator, value or a footprint name.

@JeffYoung I tried this, too. No luck. Could it be that .insideArea() doesn’t work for graphics items?

No, it’s because there’s no way to put a Rule Area on a silk layer.

Repairs to 6.99 in: https://gitlab.com/kicad/code/kicad/-/commit/8f670552a66046b3cd3d8ece22ba66ac07151612.

If you guys could give it a bit of a flogging then I can merge it to 6.0.x later…

2 Likes

That’s for tomorrow. The commit didn’t make it to today’s nightly.

@JeffYoung Ok, works. Here’s the (your) example. Maybe for the docs? Demonstrates use of rule areas.

#ignore silkscreen overlap violations in rule area(s) 'silk_ok'
#rule area has to be on the respective silkscreen layer(s)
(rule allow_silk_collisions
	(constraint	silk_clearance (min -1mm))
	(condition "A.insideArea('silk_ok')"))

Warnings can be noted and ignored.

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