Yes, I’ve set the netclass ‘P’ clearance to 0.12 mm, but I’m actually trying to achieve more than 0.1 mm clearance between the copper pours. The issue is that no matter what value I set, the clearance between zones ends up being either 0.06 mm or 0.07 mm—never what I specified.
In some parts of the board, it shows 0.06 mm, in others 0.07 mm/.08mm, which makes it really confusing. So even though the netclass appears correctly configured, the actual clearance when zones are filled doesn’t match the setting. That’s the core issue I’m trying to understand and resolve.
Also, when I run the DRC, no clearance violation is reported, even though the spacing is clearly below the value I set. That’s what makes this even more difficult to debug
The issue isn’t limited to just those two zones — I’m specifically facing this problem across all copper pours. No matter which zones I look at, the clearance ends up being around 0.06 mm or 0.07 mm, even though I’ve set a higher value in the netclass
That’s nice of you to mention, but the rule that is used to define that 60um clearance is not shown in your screenshots.
You seem to be using a lot of custom rules, and even different rules with the same name. IMHO custom rules are great to do special things, but they can also become confusing. I tend to use the regular methods as much as possible and use custom rules only when there is no other option.
You’re absolutely right — the rule defining the 60 µm clearance isn’t shown in the screenshots, and I really appreciate you pointing that out. That’s exactly the issue I’m trying to understand.
I’ve set the netclass ‘P’ clearance to 0.12 mm because I want to maintain at least 0.1 mm clearance between copper pours. But no matter what I do, the clearance ends up being 0.06 mm, 0.07 mm, or sometimes 0.08 mm in different parts of the board — never the value I set.
This problem isn’t limited to just one or two zones — it’s happening across all copper pours, whether it’s power or ground. The netclasses seem correctly configured, but the actual clearance after filling doesn’t reflect those settings.
What’s even more confusing is that the DRC doesn’t report any violations, even though the spacing is clearly below the specified value.
I’m still trying to figure out what might be overriding the clearance settings — maybe it’s a hidden or unintended rule I missed. Any help or suggestions would be really appreciated. I truly need to get this resolved.
Yes, I’ve already tried setting the clearance directly in the copper zone properties as well as in the netclass settings (I set netclass ‘P’ to 0.12 mm because I want to maintain at least 0.1 mm clearance between copper pours). But no matter what I do, the actual clearance still ends up being 0.06 mm, 0.07 mm, or sometimes 0.08 mm in various parts of the board — never the value I intended.
This issue is not isolated — it’s happening across all copper pours, including both power and ground. The netclasses look correctly configured, and the zone settings also seem fine, yet after filling, the result doesn’t match what I’ve set.
What’s even more puzzling is that DRC doesn’t flag any clearance violations, even when the spacing is clearly under the specified limits.
No, that is not true. You’re running in circles because you are looking for the wrong dragon. KiCad does not suck the clearance of 60um out of it’s thumb (KiCad does not even have a thumb). As a logical deduction: Somewhere in your project, a clearance of 60um is defined, and apparently this overrules the settings you attempt to apply to the zones.
In the screenshot from your clearance report, there is a scrollbar on the right:
And it’s a short bar, so it looks like there are 6 to 8 more pages of text of rules that KiCad went though. One or more probably define that 60 clearance rule that overrules the others.
In the post where you wrote that, you had two screenshots. One was zones in VDD and 3V3. That shows that the constraint for netclass P is applied, 0.12 mm. But we can’t know if you have measured any clearances for those nets.
Then you show a test which resolves to 0.06 mm. The cause is of course that “condition not satisfied” for every rule.
You should probably show the whole custom rule set, it’s easy to get some rule wrong. Then you have to choose two items which we all can recognize and talk only about them; otherwise we will be confused by screenshots which aren’t related to each other.
The easiest way may be to share the whole project, if possible.
thanks for the detailed explanation. To help resolve this, I can share the full project. What’s the best way to do that here? Should I compress it as a .zip and attach it, or is there another preferred method?
Several people have now wrote multiple times that the problem very likely is with the setup of your custom rules, and apparently you have not yet done anything with that advise.
So go to: PCB Editor / File / Board Setup / Design Rules / Custom Rules and then:
Select all the text.
Copy it to the clipboard.
Paste it in a text editor and save it, so you can restore it easily later.
Delete all the custom rules.
Press OK to close the dialog.
Press b to redo the zone boundary calculation and filling.
Run DRC.
If the clearances are now as you would have expected, then you can be quite certain that it’s because of those rules you deleted. As a bit more fine grained approach, you can start by deleting / modifying only rules that specify a 60um clearance.
I already checked the custom rules when I had DRC issues before (due to a syntax error). I’ve reviewed them again, and they don’t seem to be the cause here
I did not ask if you had once reviewed the rules (nor to post many screenshot). And cutting / pasting the text would have been both easier for you and for us compared to those screenshots.
What is the result if you go though the 7 steps I posted earlier?
(You can make a backup before you do this, just as extra security you don’t loose all your rules.)
Yes, I thought that too, but I wanted to encourage Ryan to dive a bit deeper into his project and solve it himself instead of just letting us do all the work.
To me it looks clear where the problem is. The explanation can be found if you combine the generic explanation of the rule syntax in PCB Editor | 9.0 | English | Documentation | KiCad, and insideCourtyard().
Note also that you have “constraint clearance (min 0.06mm)” while the minimum clearance in the Constraints setup is 0.07. The Constraints has absolute minimum values which must not be violated (minimum manufacturer accepted values). However, I don’t understand why the algorithms don’t obey the minimum clearance Constraint and why DRC check doesn’t catch it as an error. For example the front GND zone around U12 fills to 0.06 mm against tracks.