Embedded HandbookПриложения
Все разделы › XVI. Печатная плата
STM32F103 · уровень средний · 7 мин чтения
Открыть в интерактивном справочнике

134. Другие программы и перенос плат между ними

Программ для плат десятки: кроме KiCad, DipTrace и Altium — EasyEDA, Eagle, P-CAD, CADSTAR и другие. Разбирать каждую не нужно. Нужно знать, как плата переходит из одной программы в другую и что при этом теряется: заказчик прислал проект в чужом формате, завод просит свой, механику нужна 3D-модель.

Путей три: импорт чужого проекта, список соединений от схемы к плате и нейтральные файлы для завода и механики. Все опыты — в KiCad 9.0.9 из образа kicad/kicad:9.0 на плате из раздела 131 и на примере Altium из раздела 133; что умеет DipTrace — по его руководству.

Как это называется в документации

Оригинал Перевод
import, export импорт, экспорт
netlist список соединений
neutral format нейтральный формат: не принадлежит ни одной программе
IPC-2581 открытый формат всей платы для завода, один файл XML
ODB++ формат всей платы для завода, дерево файлов
IPC-D-356 список соединений для электроконтроля голой платы
bare board test электроконтроль голой платы
position file, pick and place файл установки: где и как стоит каждая деталь
STEP формат 3D-модели для механики
footprint mapping сопоставление посадочных мест

134.1 Три пути

Что переносят Чем Что доезжает
весь проект импорт в другой программе компоненты, цепи, дорожки, часть правил
схему в плату список соединений компоненты и цепи, без расстановки
плату на завод и в механику Gerber, Excellon, IPC-2581, ODB++, STEP геометрия для изготовления, не для правки

Чем дальше вниз по таблице, тем меньше остаётся от проекта — и тем больше программ этот файл понимают.

Перенос платы: импорт проекта, список соединений и нейтральные файлы — чем проще файл, тем меньше в нём от проекта


134.2 Импорт: KiCad как переходник

KiCad 9 знает 15 форматов плат:

Группа Форматы
свои KiCad, Legacy
Altium Altium Designer, Altium Circuit Maker, Altium Circuit Studio
другие программы Eagle, EasyEDA / JLCEDA Std, EasyEDA / JLCEDA Pro, P-Cad, CADSTAR PCB Archive, Fabmaster, GEDA/Pcb, Solidworks PCB
для завода IPC-2581, ODB++

Последние два KiCad только пишет. Свои же выгрузки IPC-2581 и ODB++ он обратно не открывает: LoadBoard возвращает пустой результат. Для завода этого достаточно, для переноса между программами — нет.

Как проходит импорт на деле, показал пример Altium (133.6): компоненты, цепи, медные слои, толщина и минимумы правил сошлись до числа, но 28 слоёв не сопоставлены, три шрифта заменены, а классы цепей получили настройки KiCad. Импорт — это начало переноса, а не конец.

Sprint-Layout и Proteus в этом списке нет.


134.3 Список соединений

Когда схема в одной программе, а плату разводят в другой, между ними ходит список соединений: какие детали есть и какие выводы соединены. Расстановки и дорожек в нём нет — плату разводят заново.

Формат KiCad 9 пишет DipTrace 5.3 читает и пишет Altium пишет
OrCAD PCB2 orcadpcb2 OrCAD Orcad/PCB2 Netlist
PADS pads PADS PADS ASCII Netlist
Allegro allegro Allegro —
P-CAD — P-CAD PCAD Netlist
Protel — Protel Protel
Tango — Tango Tango Netlist
CADSTAR cadstar — —

Из KiCad в DipTrace доедут OrCAD, PADS и Allegro, из Altium в DipTrace — OrCAD, PADS, P-CAD, Protel и Tango. Всего KiCad пишет 8 форматов, DipTrace читает 8, Altium пишет 21.

Матрица форматов списка соединений: семь форматов против трёх программ — KiCad 9 пишет OrCAD PCB2, PADS, Allegro и CADSTAR; DipTrace 5.3 читает OrCAD, PADS, Allegro, P-CAD, Protel и Tango; Altium пишет OrCAD, PADS, P-CAD, Protel и Tango; всего KiCad пишет 8 форматов, DipTrace читает 8, Altium пишет 21

Файлы разных форматов узнаются по первой строке. Демо-схема KiCad pic_programmer в четырёх форматах:

SCH=/usr/share/kicad/demos/pic_programmer/pic_programmer.kicad_sch
for f in orcadpcb2 pads allegro cadstar; do
    kicad-cli sch export netlist --format $f -o out/netlist.$f $SCH
done
Формат Начало файла
OrCAD PCB2 ( { EESchema Netlist Version 1.1
PADS *PADS-PCB*
Allegro (NETLIST)
CADSTAR .HEA

Главная ловушка списка соединений — имена посадочных мест. У каждой программы свои библиотеки и свои имена корпусов: в примере из руководства DipTrace корпусу «CAP 225» из списка соединений назначают свой «CAP_2225_N». При импорте DipTrace сначала ищет корпуса по именам (Assign all Patterns by Names), а что не нашёл, сопоставляют руками.


134.4 Файлы для завода: не только Gerber

Gerber и сверловка из раздела 131 — не единственный язык завода. Та же плата раздела 131 — в пяти других форматах:

kicad-cli pcb export ipc2581 -o out/board.xml board.kicad_pcb
kicad-cli pcb export odb -o out/board-odb.zip board.kicad_pcb
kicad-cli pcb export ipcd356 -o out/board.d356 board.kicad_pcb
kicad-cli pcb export pos --format csv --units mm -o out/board-pos.csv board.kicad_pcb
kicad-cli pcb export gencad -o out/board.cad board.kicad_pcb
Формат Что внутри
IPC-2581 один XML ревизии C, около полумегабайта: вся плата одним файлом
ODB++ архив из 103 файлов: слои, контур, список соединений
IPC-D-356 список соединений для электроконтроля голой платы
файл установки 15 строк — по детали: обозначение, корпус, X, Y, поворот, сторона
GenCAD текстовый формат GenCAD 1.4

IPC-D-356 стоит разобрать: по нему завод проверяет, что голая плата соединена так, как задумано. Каждая точка контроля — строка. Строк 327 — 74, ровно столько площадок SMD на плате; строк 317 — 10: шесть выводов разъёмов J1 и J2 в отверстиях и четыре переходных отверстия. Последняя строка — 999, конец файла.

ODB++ пишут все три программы части: KiCad — командой выше, Altium — выходом «ODB++ Files», DipTrace — File / Export / ODB++. IPC-2581 — KiCad и Altium (выход «IPC-2581 Files»).


134.5 Механика: STEP

Корпус прибора рисуют в механической программе, и ей нужна плата с деталями в 3D. Общий язык — STEP:

kicad-cli pcb export step -o out/board.step board.kicad_pcb

Файл начинается строкой ISO-10303-21; — номером стандарта. DipTrace выпускает STEP и VRML 2.0, а 3D-модели деталей принимает в форматах 3DS, VRML, STEP и IGES. У Altium среди выходов — STEP, PARASOLID, VRML и IDF.


134.6 Перенос по шагам

  1. Импорт — и сразу сверить числа: компоненты, цепи, медные слои, толщину. У примера Altium они сошлись: 73, 57, 4, 0,8165 мм.
  2. Стек слоёв: все ли сопоставлены. У Altium — 28 не сопоставлены.
  3. Правила и классы цепей — заново: при импорте в классы попадают настройки новой программы, а не старые правила.
  4. Шрифты — заменены на свои; надписи на шелкографии проверить глазами.
  5. DRC в новой программе — до первой правки: нарушения после переноса — от переноса, а не от вас.
  6. Список соединений старой и новой платы (IPC-D-356) сравнить — не построчно, а по группам: для каждой цепи — множество «обозначение.вывод», без имён цепей и координат. Совпали все множества — ни одна цепь не порвалась и не слилась.

134.7 Грабли

Симптом Причина
KiCad не открыл свой же IPC-2581 или ODB++ эти форматы KiCad только пишет
после импорта списка соединений у деталей нет корпусов имена посадочных мест в программах разные — сопоставлять
плату Altium скрипт KiCad не открыл формат не назван явно (133.6)
после импорта DRC чист, а зазоры «не те» в классах цепей — настройки новой программы
механик получил плату без деталей к деталям не привязаны 3D-модели
список соединений из одной программы не читается другой форматы не совпали — брать общий: OrCAD или PADS

134.8 Итоги

Полные исходники

exports.sh — выгрузки KiCad для завода, механики и чужих программ.

#!/bin/sh
# Раздел 134: плата раздела 131 — в нейтральные форматы для завода и механики, демо-схема KiCad — в
# списки соединений чужих программ. Запуск в образе kicad/kicad:9.0 из папки с board.kicad_pcb.
mkdir -p out
kicad-cli pcb export ipc2581 -o out/board.xml board.kicad_pcb
kicad-cli pcb export odb -o out/board-odb.zip board.kicad_pcb
kicad-cli pcb export ipcd356 -o out/board.d356 board.kicad_pcb
kicad-cli pcb export pos --format csv --units mm -o out/board-pos.csv board.kicad_pcb
kicad-cli pcb export gencad -o out/board.cad board.kicad_pcb
kicad-cli pcb export step -o out/board.step board.kicad_pcb
SCH=/usr/share/kicad/demos/pic_programmer/pic_programmer.kicad_sch
for f in orcadpcb2 pads allegro cadstar; do
    kicad-cli sch export netlist --format $f -o out/netlist.$f $SCH
done

Дальше: раздел 135 «Процесс: запуск, окружение, память, лимиты, завершение».

Открыть в интерактивном справочнике