Filled Copper Zones not showing up in Gerbers/Printouts/3D view

So this is my first KiCAD project, and I can’t figure what I’m missing when it comes to filled copper zones. I seem to be able to create them just fine, but they don’t end up on Gerbers, or print outs, or in the 3D view. See the screenshot below.

The left window is pcbnew in default mode, showing three copper zones, on three different nets. They only show up with the hatched fill, which is necessarily consistent with what I’ve seen in some of the tutorials on the 'net, where the filled zones get the solid color. The right hand window is showing the resultant Gerber file (with GerbView), which doesn’t have the copper zones, but it does have the rest of the tracks and pads.

What am I doing wrong to not get the copper zones? I’ve tried “Fill Zone” when brining up the right click context menu (like shown in the video at:
https://www.youtube.com/watch?v=WcdJ7FAmD7k
). And I have run the DRC.

Is there some other global setting I need to enable? The DRC deck can see the zones, since they get highlighted correctly when doing the “Highlight Nets” command.

I’ve tried different setting in the “Copper Zone Properties” dialog:

I’ve played with those settings, like “Fill Mode” and “Outline style”, but that hasn’t cured the issue.

The zone doesn’t look filled when using either the “default” or the “opengl” canvas, and things don’t look different when using the “Show filled areas in zones” buttons on the left hand button bar.

Maybe there is an inconsistency with some other setting I have for clearances? Could there be a problem with one of the footprints I created and used elsewhere on the board? Problem with the netlist? Any advice on tracking down the source of the problem? Log files to look at for error messages or warnings that might not make it all the way up to the gui?

I did start this project in v4.0.6, but I had to change computers midstream and upgraded to v4.0.7 on the new machine. I had generated a netlist, and had read it into pcbnew, but had not begun to really place footprints or tracks when I switched over.

Here is my kicad version information:

Application: kicad
Version: 4.0.7 release build
wxWidgets: Version 3.0.3 (debug,wchar_t,compiler with C++ ABI 1011,GCC 7.1.0,wx containers,compatible with 2.8)
Platform: Windows 7 (build 7601, Service Pack 1), 64-bit edition, 64 bit, Little endian, wxMSW
Boost version: 1.60.0
Curl version: libcurl/7.54.1 OpenSSL/1.0.2l zlib/1.2.11 libssh2/1.8.0 nghttp2/1.23.1 librtmp/2.3
USE_WX_GRAPHICS_CONTEXT=OFF
USE_WX_OVERLAY=OFF
KICAD_SCRIPTING=ON
KICAD_SCRIPTING_MODULES=ON
KICAD_SCRIPTING_WXPYTHON=ON
USE_FP_LIB_TABLE=HARD_CODED_ON
BUILD_GITHUB_PLUGIN=ON

Thanks!

Greg

P.S. Here is a screenshot showing the zones not showing up in the print preview or the 3D viewer.

Just to validate some of your observations and prevent you from wasting time, effort, and worry over things that are NOT a problem . . . you are not seeing filled zones because the zones are not filled.

A zone will not fill if it is located within a zone of higher priority, but that is obviously not the case here. Your zones are probably not filling because the zone does not enclose another copper feature (trace, pad, or via) of the same net as the zone.

Display the zone “Properties” and verify that the zone is associated with a net. Then confirm that the net name for the zone is identical to a net name on the board. No spelling errors allowed, and you can’t make up arbitrary names for the net associated with a zone. (Don’t ask how I know that.)

Then make sure that a piece of copper (i.e., trace, pad or via) from that same net is present within the boundary of the zone. You may need to expand the zone boundary, or relocate a trace, or place a via to make this happen. Finally, “Fill” the zone or run DRC and see what happens.

Dale

3 Likes

b is a shortcut to fill the zones. On the left side tool bar there are buttons to show the filled zone, the outline or one other mode I never use. So, try the b first and select the button for showing filled zones and see what you have after that. It looks the same as the button on the right for creating zones in my version. Also, sometimes things mysteriously get fixed simply by changing canvases. Try F9 and F11 once or twice.

1 Like

For a zone to fill, it needs to do one of the following:

  1. enclose at least one pad
  2. enclose a track “joint”
  3. enclose a via

as well as the other conditions - the item enclosed must be on the same net as that specified for the zone.

It is not sufficient to just overlap a straight track section, or part of a pad.

Since it can be tricky, I checked with some test cases.

7 Likes

Yes, that is the answer. You have to completely enclose the center of a pad or a via within the copper fill. Once I did this, everything worked out as expected.

Thanks!

Greg

1 Like

Excellent example. I wasn’t aware that an overlapping track segment, by itself, wouldn’t cause a zone fill. (I guess all of my zones must have qualified under one of the other cases.) That illustration needs to find its way into the User’s Manual.

Dale

2 Likes

Yes, I second that motion. That is a very nice example.

1 Like

A trace is enough. But one endpoint of it needs to be strictly within the zone. (if it is on the outline of the zone it is not enough.) I tested it in kicad 4.0.6 under fedora.

More details can be found in this quite old tread.

Good point…

7 Likes

You were faster with your edit than i was with my tests.
And i must say your testcase pcb looks very nice. Could be included as is in the documentation.

[quote=“Rene_Poschl, post:10, topic:8401”]
Could be included as is in the documentation.
[/quote]I’ve been thinking recently that perhaps we as a help forum community should look into helping with the documentation. That would certainly give us a stable reference to direct folks too.

@bobc
I have not tested it, but at the moment I suspect that in the “end” example on the right, that the center of the trace is not “in” the zone. This may be nice to see by showing the traces in outline mode.

As can be seen, if the center of the trace is on the edge of zone, the zone will not fill. The center of the end point must be inside the zone.

Yes, that is exactly what my example is intended to show, and what it does show.

1 Like

@bobc

It does not appear that way to me with my computer settings.

I’m suggesting that you include a “zoomed in” bubble to magnify the issue to make it clear.

At no point in time did I think you were wrong; it just was not visible to me.

Your choice to make it more visible to others or not.

This is a really massive problem for a project I’m working on right now. Why oh why would a polygon stop filling if it does not contain a certain feature? How can one ‘force fill’ a polygon? For me this is a massive bug that is killing my project.

Maybe the discussion should be continued in another thread.

What you actually want to do? There will probably be a better solution.

Does the zone hve “acces” to the net? Sometimes GND won’t fill, but a via or some moving around can fix it

You specified your zone to be part of a net. Free floating copper is a bad idea from an EMI point of view. This is why only the parts of the fill that can be connected to the specified net are filled.

This doubles as a way to tell you that something is wrong with your connections as it is very clear if a zone does not fill. (The zone filling is not a guarantee that everything is connected properly. Use DRC for that. And even DRC does not check if you have a low impedance connection. It only checks if you have any connection.)

1 Like

In other words: if it’s a massive problem for you, you’re doing something wrong.

1 Like

Thanks for the feedback, I’m using scripts to create boards, so I’m not particularly interested in being nannied by DRC for this particular project, but I need a predictable way of making copper areas, so is there a way to override the system?