Copper Filler: экономим на производстве печатных плат в KiCad без нарушения изоляции
Привет, коллеги-разработчики!
Каждый, кто проектирует многослойные печатные платы в KiCad, сталкивался с необходимостью в процессе трассировки оставлять по схемотехническим или каким-то иным причинам большие по площади области свободными от медных (подключённых или не подключённых к цепям) полигонов. На внешних слоях это не представляет особых проблем. На внутренних всё немного не так. Cо стороны топологии это нормально, но с точки зрения производства — не очень.
Сегодня хотим поделиться плагином, который мы разработали для решения этой проблемы. Это инструмент для автоматического заполнения свободных зон печатной платы медными не токоведущими элементами, квадратной или круглой формы настраиваемого размера.
Зачем это нужно?
На первый взгляд, пустая область на плате — это просто текстолит без меди. Но для производителя и потребителя устройства это имеет два важных последствия:
1. Экономия на производстве (и польза для экологии)
При химическом травлении плат мы травим медь. Чем больше пустых мест, тем больше меди уходит в травильный раствор. В мелких партиях это копейки, но в крупном серийном производстве расход реагентов — существенная статья затрат. Заполняя пустоты медью, мы оставляем её на плате, а не в баке с реактивами. Производителю — приятно, экологии — полезно.
2. Равномерность толщины платы (стабильность механических и электрических параметров)
Это критично именно для многослойных плат. Представьте «сэндвич» из ядра и препрегов. Если на внутренних слоях есть огромные участки без меди, а есть участки, плотно занятые дорожками и залитые полигонами, то при прессовании давление распределяется неравномерно. Плата получается неравномерной толщины и плотности, что создаёт риски:
коробления готовой платы (особенно на больших форматах);
нарушения структуры слоя;
нестабильного волнового сопротивления, критичного для ВЧ-цепей.
Равномерное заполнение медными элементами делает плату механически стабильной, толщину — равномерной, а электрические параметры — предсказуемыми.
Возможности плагина
Copper Filler находит пустые области на выбранном слое и заполняет их медными круглыми или квадратными элементами, не подключёнными ни к одной цепи. Это просто «медь», которая помогает производству, но не мешает работе схемы.
Главная «фишка» — заполнение происходит не абы как, а с соблюдением технологических зазоров и минимальных размеров, заданных пользователем.
Плагин многопоточный, что уменьшает время обработки платы.
Каждый вызов плагина сопровождается вызовом логгера, возможно в будущих версиях он будет отключён, но при каждом выполнении будет напоминать о себе.
Ограничения:
В текущей версии 1.1.0beta отсутствует возможность установки индивидуальных значений зазоров вдоль трасс дифференциальных и ВЧ-линий.
Также пока отсутствует возможность индивидуальной установки зазоров между проводящими элементами (дорожки, полигоны) и медным заполнением, формируемым плагином, в зависимости от напряжения цепей!
Данные настройки становятся критичными при напряжениях на внешних слоях более 30 вольт и частотах больше нескольких мегагерц.
Алгоритм работы
1. Анализ контура платы, получение геометрии из слоя Edge.Cuts.
2. Сбор всех объектов на плате: дорожки, площадки, переходные отверстия, маски и существующие зоны.
3. Разбиение всей платы на некоторое количество секций (4–10). Количество зависит от возможностей вашей платформы.
4. Ввиду того, что плагин многопоточный, каждая секция обрабатывается параллельно. Проводятся проверки для каждого элемента.
5. Автоматическая заливка созданных зон.
Количество потоков в плагине ограничено до 10. Для выбора данного количества было проведено тестирование плагина при разном количестве потоков.
Методология тестирования:
процессор: Intel Xeon Gold 5317 3.00GHz (12 ядер / 24 потока) – 2 штуки (в сумме 48 потоков);
память: 256Gb DDR4 3.00GHz;
Видеокарта: NVIDIA RTX A2000 6Gb;
Дисковая подсистема: SAS контроллер AVAGO MR9440-8i, 2 SAS HDD 1Tb в RAID-1;
плата: Тестовая плата размером 76.55 x 71.05 мм;
параметры заполнения: круги диаметром 600 мкм, шаг 120 мкм, плотность заполнения 90%;
измеряемая величина: общее время выполнения плагина.
Проведённые тесты:
Плагин запускался с количеством потоков от 1 до 24. Для каждого замера фиксировалось:
время подготовительных операций (чтение данных);
время основного цикла (генерация и проверка фигур);
время финального заполнения зоны;
среднее время обработки одной фигуры.
Результаты измерений
Таблица 1. Сводные результаты тестирования
Потоки | Основной цикл, с | Подготовка, с | Заполнение, с | Общее время, с | Ускорение | Время/фигура, мсек |
1 | 121,02 | 1,20 | 5,93 | 128,15 | 1,00 | 11,42 |
2 | 68,47 | 1,18 | 5,92 | 75,57 | 1,70 | 5,83 |
3 | 45,56 | 1,18 | 5,92 | 52,66 | 2,43 | 3,88 |
4 | 38,14 | 1,20 | 5,92 | 45,26 | 2,83 | 2,91 |
5 | 30,55 | 1,19 | 5,92 | 37,66 | 3,40 | 2,34 |
6 | 28,23 | 1,17 | 5,87 | 35,27 | 3,63 | 1,98 |
7 | 23,81 | 1,32 | 5,71 | 30,84 | 4,15 | 1,69 |
8 | 21,91 | 1,20 | 6,02 | 29,13 | 4,40 | 1,49 |
9 | 25,52 | 1,19 | 5,92 | 32,63 | 3,93 | 1,34 |
10 | 22,90 | 1,17 | 5,82 | 29,89 | 4,29 | 1,23 |
11 | 23,12 | 1,16 | 5,92 | 30,20 | 4,24 | 1,11 |
12 | 25,54 | 1,31 | 5,92 | 32,77 | 3,91 | 1,06 |
13 | 16,16 | 1,18 | 6,02 | 23,36 | 5,48 | 1,03 |
14 | 23,21 | 1,17 | 5,92 | 30,30 | 4,23 | 0,98 |
15 | 15,27 | 1,17 | 6,02 | 22,46 | 5,70 | 0,98 |
16 | 25,46 | 1,18 | 6,02 | 32,66 | 3,92 | 0,96 |
17 | 17,99 | 1,17 | 5,92 | 25,08 | 5,11 | 0,96 |
18 | 29,43 | 1,15 | 5,92 | 36,50 | 3,51 | 0,91 |
19 | 26,18 | 1,17 | 6,03 | 33,38 | 3,84 | 0,91 |
20 | 19,86 | 1,17 | 6,02 | 27,05 | 4,74 | 0,92 |
21 | 14,78 | 1,16 | 5,92 | 21,86 | 5,86 | 0,93 |
22 | 31,66 | 1,19 | 5,82 | 38,67 | 3,31 | 0,87 |
23 | 28,65 | 1,19 | 5,94 | 35,78 | 3,58 | 0,84 |
24 | 25,51 | 1,14 | 5,72 | 32,37 | 3,96 | 0,86 |
Видно, что до 8 потоков ускорение близко к линейному. После 8 потоков кривая выходит на плато — добавление новых ядер даёт незначительный прирост.
Закон Амдала: теория и практика
Доля последовательного кода S была рассчитана по формуле:

.
Теоретическое ускорение по закону Амдала:

.
Таблица 2. Сравнение с теорией
Потоки | Теория (S=0.0556) | Практика | Эффективность |
1 | 1.00 | 1.00 | 100% |
2 | 1.89 | 1.70 | 90% |
4 | 3.51 | 2.83 | 81% |
8 | 6.06 | 4.40 | 73% |
12 | 7.78 | 3.91 | 50% |
16 | 8.85 | 3.92 | 44% |
24 | 9.88 | 3.96 | 40% |

Выводы:
Оптимальное количество потоков: 6-12. Дальнейшее увеличение даёт менее 10% прироста скорости при утроении потребляемых ресурсов.
Эффективность параллелизма: до 10 потоков эффективность составляет 73-90%, что является отличным показателем для геометрических вычислений.
Закон Амдала в действии: даже при бесконечном числе ядер, максимальное ускорение ограничено 18x из-за последовательной части. На практике достигнуто 5.86x.
Установка
В настоящий момент плагин временно отсутствует в репозитории самого KiCad, поэтому установка производится из файла в «Менеджере плагинов и контента»:
Скачать архив с GitHub.
1. Открыть KiCad.
2. Перейти в Инструменты → Менеджер плагинов и контента.
3. Нажать кнопку «Установить из файла». Выбрать скачанный архив.
Плагин проверен на версиях KiCad с 9.0.5 по 9.0.7, а также на 10RC1, и работает на Windows (10/11), Linux (Debian 13, Kubuntu 24).
Важный нюанс: технология vs электрика (прочитайте внимательно!)
В настройках плагина вас попросят выбрать класс платы (точность изготовления, минимальные зазоры и т.д.). Тут кроется главный подвох, о котором важно помнить.
Класс платы (например, 3-й, 4-й, 5-й) определяет технологические возможности завода. Может ли производитель сделать зазор 0.1 мм или ему нужно минимум 0.2 мм.
Но класс платы не гарантирует электрическую безопасность этих зазоров!
Если ваши цепи находятся под высоким напряжением (более 30 вольт), зазор в 0.1 мм (допустимый технологически) может не удовлетворить по электрической прочности или токам утечки и т.д. Поэтому плагин работает по следующему принципу:
Вы указываете технологический класс (чтобы он не генерировал элементы, которые заводу не вытравить).
Вы, как проектировщик, должны заранее настроить сетевые классы (Net Classes) в KiCad, задав им правильные зазоры согласно классам изоляции (таблицы из ГОСТов или стандартов производителя).
Плагин уважает эти правила и не полезет в зоны, где зазоры уже заданы электрическими правилами и прочими ограничениями, установленными в PCB редакторе.
Лицензия (важно для энтузиастов)
На данный момент проект находится в стадии пре-релиза. Код можно свободно копировать и модифицировать, но только для личного использования.
Публиковать форки или модифицированные версии пока запрещено.
Но есть хорошая новость: как только выйдет официальный релиз, проект перейдёт на свободную лицензию MIT. Тогда можно будет делать с ним всё что угодно.
Заключение
Copper Filler — надеемся, окажется полезной штукой для тех, кто доводит платы «до ума» перед отправкой на завод. Он автоматизирует рутину и помогает сделать плату не только правильнее электрически, но и, возможно, дешевле в про��зводстве.
Пользуйтесь, и пусть ваши платы будут стабильны, а производители довольны!
Если у вас есть идеи или вы нашли баги — пишите в Issues (но пока без PR, как указано в лицензии).
Команда проекта: Александр aka @Sartorio, Михаил aka @mzakharov27, Татьяна aka @MeowRr
