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
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 Перенос по шагам
- Импорт — и сразу сверить числа: компоненты, цепи, медные слои, толщину. У примера Altium они сошлись: 73, 57, 4, 0,8165 мм.
- Стек слоёв: все ли сопоставлены. У Altium — 28 не сопоставлены.
- Правила и классы цепей — заново: при импорте в классы попадают настройки новой программы, а не старые правила.
- Шрифты — заменены на свои; надписи на шелкографии проверить глазами.
- DRC в новой программе — до первой правки: нарушения после переноса — от переноса, а не от вас.
- Список соединений старой и новой платы (IPC-D-356) сравнить — не построчно, а по группам: для каждой цепи — множество «обозначение.вывод», без имён цепей и координат. Совпали все множества — ни одна цепь не порвалась и не слилась.
134.7 Грабли
| Симптом | Причина |
|---|---|
| KiCad не открыл свой же IPC-2581 или ODB++ | эти форматы KiCad только пишет |
| после импорта списка соединений у деталей нет корпусов | имена посадочных мест в программах разные — сопоставлять |
| плату Altium скрипт KiCad не открыл | формат не назван явно (133.6) |
| после импорта DRC чист, а зазоры «не те» | в классах цепей — настройки новой программы |
| механик получил плату без деталей | к деталям не привязаны 3D-модели |
| список соединений из одной программы не читается другой | форматы не совпали — брать общий: OrCAD или PADS |
134.8 Итоги
- Три пути: импорт проекта, список соединений, нейтральные файлы.
- KiCad 9 знает 15 форматов плат; IPC-2581 и ODB++ только пишет.
- Список соединений между KiCad и DipTrace — OrCAD, PADS или Allegro; расстановку и дорожки он не переносит.
- IPC-D-356 платы 131: 74 записи
327по площадкам SMD и 10 записей317. - Для механики — STEP, файл начинается строкой
ISO-10303-21;. - После импорта: сверить числа, стек, правила, шрифты, DRC и список соединений.
Полные исходники
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 «Процесс: запуск, окружение, память, лимиты, завершение».