Fill pour problem


#1

My PC:
Windows 7, Intel Core i7-6700HQ, 16,0 Gb Ram
Kicad (5.0.2)-1

I have 4 layer board with around 900 components. It takes a very long time to fill\refill the layers, each time about 15 minutes. - this is not normal, this was not the case in the old version of the program. Or it simply gives an error, and the program ends urgently, without saving, of course. Reading a net-list also takes a lot of time.

I guess this may depend on the size of the board, the number of components, probably the program or my computer has become difficult to process everything.

I do not have such problem with small boards.

Any ideas, why its happens and how to solve it?


#2

First I would suggest updating to 5.1.2


#3

First - is your project confidential or can you share it? Others could test it with different hardware and also KiCad versions.

The developers are very interested about speed problems especially if they occur consistently with different hardware. It’s possible to share projects with some developers privately if you can’t do it publicly.

There is some development work going on right now which may affect zone filling speed greatly. Unfortunately it will be in nightly builds only and much later in 6.0.


#4

For my pity, I can not share my project to anyone, its confidential.


#5

Is there any chance that performance will be better, if I increase my RAM memory to 32Gb?


#6

Hi,

Try deleting zones one by one and refilling. At some point the process should speed up - the last zone you removed will be likely responsible for the slowdown. Could you then send us a PCB file with just this zone?

Tom

PS. I doubt adding more RAM will make any change.


#7

Is easy to check. If the system monitor (or task manager) indicate that there is no physical memory left then yes adding ram will help. (Assuming the amount of ram needed is not because of some endless memory leak.) If there is enough ram left as is then nothing will change.


#8

Some time ago I saw a bug report about this on Launchpad.

The report was about 2400 or so part count PCB with 20 or so layers.
(Or was it a 20000 pin count)?

Then I had a look at the Olimexino64 to get some kind of idea of the complexity of such a board, and it was so vastly more complex that I can not imagine ever designing such a board.

Does give me an Idea though:
The Olimexino64 is an open design and the “made with KiCad” on the KiCad website has a link to it’s github repository. You can use this design to compare rendering times.

It’s a 6 layer design with:

  • 2147 pads
  • 1160 via’s
  • 17000 Track Segments (and indeed adding a segment makes it 17001)
  • 1977 Nodes (huh, what are those?)
  • 459 nets.

The olimexino does not have as many components as your boards, but it has some pretty high pin count BGA’s.

I’ve got a 11 year old dualcore PC with 4Gig of RAM, and a recalculation of all the zone outlines with ‘b’ takes approximately 12 seconds.

Hiding / showing the zones (with Icons on the left) is almost instantaneous.
Switching between filled and outline tracks has a noticable delay of arond 1s.
I’ve been playing around a bit with it. I can easily add and re-route existing tracks.
I’ve pushed upto 20 tracks with the interactive router without noticable lag.
(This does remove all the squiggles of matched impedance tracks though)

Zooming and scrolling is also fast enough to work comfortably with.
It seems my old PC is still adequate for designing a board of this complexity.

I opended the (latest?) Rev_C version of this board:

OLINUXINO/HARDWARE/A64-OLinuXino/A64-OLinuXino_Rev_C/A64-OlinuXino_Rev_C.pro

I’m using:

Application: kicad
Version: 5.1.0+dfsg1-1, release build
Libraries:
wxWidgets 3.0.4
libcurl/7.64.0 OpenSSL/1.1.1b zlib/1.2.11 libidn2/2.0.5 libpsl/0.20.2 (+libidn2/2.0.5) libssh2/1.8.0 nghttp2/1.36.0 librtmp/2.3
Platform: Linux 4.19.0-4-amd64 x86_64, 64 bit, Little endian, wxGTK
Build Info:
wxWidgets: 3.0.4 (wchar_t,wx containers,compatible with 2.8) GTK+ 3.24
Boost: 1.67.0
OpenCASCADE Community Edition: 6.9.1
Curl: 7.64.0
Compiler: Clang 7.0.1 with C++ ABI 1002

Build settings:
USE_WX_GRAPHICS_CONTEXT=OFF
USE_WX_OVERLAY=ON
KICAD_SCRIPTING=ON
KICAD_SCRIPTING_MODULES=ON
KICAD_SCRIPTING_PYTHON3=ON
KICAD_SCRIPTING_WXPYTHON=ON
KICAD_SCRIPTING_WXPYTHON_PHOENIX=ON
KICAD_SCRIPTING_ACTION_MENU=ON
BUILD_GITHUB_PLUGIN=ON
KICAD_USE_OCE=ON
KICAD_USE_OCC=OFF
KICAD_SPICE=ON

Edit:
I usually use https://www.cpubenchmark.net/high_end_cpus.html for a rough comparison of those thousands of PC processors.

Your Intel Core i7-6700HQ @ 2.60GHz has a Passmark rating of 8132, while my lowly E6550 @ 2.33GHz gets stuck at around 1500.

I do not use “top” enough to even remember if those numbers are bits, bytes of MB, but I can take a screenshot during the 12s it takes to recalculate the zones of the Olimexino64:


%CPU has peaks upto 174% which means KiCad uses both processors of my dualcore for it’s calculations. I only have 4GB of RAM, but it looks like it’s plenty.