Обратный инжиниринг печатной платы с помощью Sprint Layout и Altium Designer

Ниже описывается методика, как по имеющейся плате получить полноценный проект в Altium Designer, включающий схему и разводку печатной платы. К сожалению, элементы с исходной платы придется демонтировать.

1. Сканируем обе стороны платы с разрешением не менее 300 dpi.

2. Подгоняем изображения по сетке в графическом редакторе. Для этого берем 4 точки (лучше центры отверстий) в разных углах платы, выставляем по координатам направляющие и в режиме Free Transform подгоняем картинку под эти 4 точки. Чем точнее это будет сделано, тем легче потом будет накладывать проводники. Нижнюю сторону платы переворачиваем в зеркальном отображении.

3. Экспортируем обе стороны в формат BMP без сжатия.

4. Sprint Layout: Создаем проект, задаем размеры платы, шаг сетки.

5. Загружаем сканы. Опции/Шаблон — Кнопка Загрузить. Подгоняем оба файла, задавая сдвиги по X и Y.



6. Рисуем слои. С металлизированными отверстиями используем только круглые контактные площадки (КП), иначе они пропадут при импорте. С компонентами сильно не заморачиваемся, все равно потом переделывать. Тщательно следим, чтобы проводники и КП не задевали чужие цепи, т.к. при генерации нетлиста они объединятся. Посадочные места размещаем по основной сетке, чтобы оптом было легко заменить на итоговые.
Полигоны лучше собирать из прямоугольников, в противном случае у них остается окантовка, которая потом будет мешать в Альтиуме, и которую там лучше потом удалить. Если этого не избежать, то можно установить ширину окантовки полигонов в определенное значение (например, 0,111 мм), потом в Альтиуме выделить все треки данной ширины и удалить их скопом.

7. Экспортируем файлы. Файл/Экспорт. Gerber: оба слоя + контур платы без зеркалирования. Сверловка. Ставим миллиметры. Запоминаем, какую точность мы выбрали для файла сверловки (на картинке 3.3). Далее при импорте надо будет выбрать такие же значения, иначе не совпадет масштаб.

  

8. Altuim Designer. Создаем проект. File/New/Project.

9. Создаем файл CAM. File/New/CAM Document.

10. Импортируем файлы Gerber. File/Import/Gerber. Ставим миллиметры.



11. Импорт Сверловки. File/Import/Drill. Ставим миллиметры. Digits — 3.3. Если в итоге масштаб сверловки и проводников не совпал — играемся с Digits.



Должно получиться что-то типа этого:



12. Настраиваем слои. Tables/Layers.



13. Проверяем, чтобы был заполнен список отверстий. Tables/NC Tools. Если он не заполнился автоматически, заполняем.


14. Создаем временный нетлист. Tools/Netlist/Extract. Он, скорее всего, будет кривой, но без него не включится экспорт в PCB.

15. Экспортируем в PCB. Не забываем сохранить подготовленный CAM-файл. Далее File/Export/Export to PCB. Если при экспорте Altium вылетает с ошибкой, то просто перезапускаем его и начинаем экспорт заново.

В некоторых случаях пришлось столкнуться со следующей проблемой — в созданном файле видны только два сигнальных слоя, и нет никакой возможности включить остальные, хотя они присутствуют. Решение — в создании чистого PCB-файла и переносе всех элементов через буфер обмена.

16. Заново расставляем посадочные места. Старые КП удаляем, прочие переходные отверстия не трогаем. Даем компонентам обозначения по плате, если они там указаны, или придумываем на ходу.

Так как все переходные отверстия (Vias) по факту импортировались как контактные площадки (Pads), их лучше конвертировать в Vias, для чего выделяем их (можно использовать инструмент группового выделения) и используем меню Tools/Convert/Convert Selected Free Pads To Vias

17. Удаляем старый нетлист. Design/Netlist/Clear All Nets.

18. Генерируем новый нетлист. Design/Netlist/Configure physical nets. В окне должен появиться список физических соединений. Если его нет, значит не расставлены посадочные места. Нажимаем Execute. Долго ждем.


19. Пересоздаем полигоны. Tools/Polygon pours/Repour all.

20. Переименовываем известные цепи. Выбираем проводник. В окне PCB Inspector (клавиша F11) нажимаем подчеркнутый пункт Net, в пункте Name меняем имя.
  

21. Устраняем все Violations.

22. Создаем файл нетлиста. Design/Netlist/Create netlist from connected copper. Распечатываем на принтере :)

23. Создаем файл схемы File/New/Schematic.

24. Рисуем вручную схему по нетлисту, можно на нескольких листах. Компонентам задаем правильные посадочные места и обозначения по нетлисту/плате. Подключенные цепи вычеркиваем на распечатке :)

25. Вызываем Project/Show Differences. Разбираемся с отличиями, устраняем.

26. Объединяем проект. Design/Update PCB Document. Должно совпасть все, кроме Rooms. Или добавляем на плату, но тогда придется их правильно настроить, или отключаем проверку: Project/Options/Comparator/Extra Room Definitions.

27. Изучаем получившуюся схему. Находим странности (например, неподключенные важные выводы, или наоборот непонятные соединения). Разбираемся, устраняем на схеме и на плате.
  • +3
  • 10 февраля 2016, 15:10
  • Panther

Комментарии (29)

RSS свернуть / развернуть
24. Рисуем вручную схему по нетлисту, можно на нескольких листах. Компонентам задаем правильные посадочные места и обозначения по нетлисту/плате. Подключенные цепи вычеркиваем на распечатке :)
Вот этого бы да поменьше… а все остальное и без сплинта можно делать в альтиуме
0
  • avatar
  • kalik
  • 10 февраля 2016, 22:26
В Альтиуме можно подложить картинку для отрисовки дорожек?
0
Не, а там хз… может и можно как нибудь…
Я так перерисовывал глазомером.
Но то второй вопрос… главная соль — схема, если бы можно было вернуть разводку «в зад» в схему(((
0
мне вот тоже понадобилось сделать из платы схему, так ни одна прога не делает такого
я в шоке, думал это само собой разумеющееся
0
Та печаль с этим(( лежат пару платок которые отреверсить надо бы за денюжку неплохую… но косяк в том, что большая лень рисовать отдельно разводку а потом мучится вычленяя схему((
0
Неужели я бы стал городить такой огород, если бы знал более простой способ? К сожалению, нарисовать хоть немного сложную схему невозможно без понимания ее работы, а искусственный интеллект еще не изобрели, и вряд ли изобретут в ближайшем будущем. Изложенный в статье способ уменьшает трудоемкость построения нетлиста за счет механической отрисовки дорожек по скану, и далее сверку схемы с разводкой. А самая интеллектуальная работа, к несчастью, все равно остается человеку.

Тот проект, на котором я отработал методику, занял два дня на рисование платы и два дня на первый вариант схемы. Отслеживать дорожки по плате я бы не взялся вообще.

0
Да ну=)) такую спору нет, только путем вышеописанным… а платку в 50х50 с двумя десятками элементов и по другому пути можно попробовать
0
Ну так кто же спорит? Просто в процессе выявилось много тонкостей, которые хотя бы для себя хотелось зафиксировать, т.к. на разборки с ними ушла уйма времени.
0
Что за платка? Интересен ее функционал и в чем стоит
0
Контроллер дисковода на шину МПИ, редкий продвинутый вариант.
Вот такой
0
Гы-ы, это что, модуль для шины Q-BUS микро-ЭВМ DEC LSI-11 (Электроника-60)?
0
Q-BUS это у буржуев. У нас МПИ :)
0
А щас есть какие поделки (SOM or COM) на компонентах современного уровня, которые исполняют код для PDP/VAX-11?
0
Не знаю точно, в любительских кругах моего вращения молятся на старое железо в максимально аутентичном варианте. Есть программные эмуляторы ДВК (один, вроде), УКНЦ (один-два), БК (много-много). Делают реплики БК, заменяя редкие детали на современные. Но процы пока ставят старые. Сейчас допиливают Verilog-описание К1801ВМ1, может, во что-то выльется.

Этот контроллер, кстати, полноценный SOC — там процессор ВМ1, ОЗУ, ПЗУ и т.д. Была идея заменить память на современную, но пока в процессе.
0
Есть PDP-11/70 (22 bit address bus up to 4Mbyte) реализация на FPGA.

Не отказался бы от настоящей PDP-11 в коробочке а-ля TV-box/Raspberry с microSD c UNIX V7 и UART-USB мостом в софтовый терминал на компе заместо ИРПС(RS-232) + VT100. Только вот никто не делает и не продает ничего подобного :(
0
Да-а, но зато уже в лампочки с IoT засовывают MCU c вычислит.мощью в 20-70 раз выше по частоте, чем в PDP-11, и с RAM и ROM сравнимыми по объему с ОЗУ и НГМД в ДВК-2(Электроника-60).
0
Изложенный в статье способ уменьшает трудоемкость построения нетлиста за счет механической отрисовки дорожек по скану, и далее сверку схемы с разводкой.
почему нельзя просто расставить детали на плате согласно скану и соединять дорожками? почему софт не может потом создать схему?
ведь уго привязаны к корпусам
0
Вы это у меня спрашиваете? Я не создавал этот софт, я изложил свой способ его использования для нужных мне целей. Что касается моего мнения, то я считаю, во-первых, что эта задача чисто механически нерешаема, и, во-вторых, неинтересна производителям ПО с коммерческой точки зрения.

По первому пункту — с точки зрения алгоритма эта задача не менее сложна, чем автоматическая разводка платы, и даже если кто-то ее реализует, этот процесс будет выглядеть аналогично — программа создаст заготовку-монстра, которого вы все равно будете до посинения доводить руками.

По второму — обратный инжиниринг, это, вообще-то, незаконный процесс, поэтому создавать для него специальный продукт кто-то станет только при очень значительной потребности коммерческого (я подчеркиваю, коммерческого) рынка, а не кучки самоделкиных. Я уверен, что у китайцев, сдирающих все подряд в промышленных масштабах, есть соответствующие инструменты, но кто ж их нам покажет?
0
да это риторический вопрос
я не вижу ничего сложного в том, чтобы рисоват схему из платы
ведь плата рисуется же из схемы
я не имею в виду автороутер, а просто воздушные соединения
так и в схеме я не требую авторасстановки уго и соединении их в удобночитаемом для меня виде с шинами и всем остальным

с точки зрения софта должно быть без разницы
если я с платы убираю деталь, то и из схемы она исчезает или обрываются связи

а насчет легальности исопльзование — так это что угодно можно подвести под нелегальное использование
вплоть до кухоного ножа
0
с точки зрения софта должно быть без разницы
Теоретически да, но пока никто не захотел такой инструмент создать, какой смысл это обсуждать?
0
По второму — обратный инжиниринг, это, вообще-то, незаконный процесс

Почему Вы так считаете? Незаконным может быть нарушение патентов и прочее связанное с защитой всяких торговых марок и т. д… Но просто изучить устройство — в этом нет ничего незаконного. Если я, без всяких программ, понял схему просто взглянув на простую плату – я совершил что-то незаконное?
0
Вы обычно перерисовываете схему, только чтобы понять, как она работает? Или чтобы применить ее в своих разработках? Как только вы попытаетесь заработать деньги, используя чужую интеллектуальную собственность, вы нарушите закон. А так — изучайте сколько влезет.
0
Реверс-инженеринг бывает разный. Например, заметный потребитель решений для программного RE — антивирусные лаборатории.
И, в общем-то, они именно что зарабатывают деньги, изучая и используя чужую интеллектуальную собственность.
0
С ПО история немного другая, т. к. «купить» ПО нельзя (можно купить имущественные авторские права, но за другую сумму :). То, что многие называют «покупкой» на самом деле является приобретением лицензии на право использования. Притом лицензия может содержать запрет на декомпиляцию. Но, например, в РФ законом явно разрешено исследование программы в личных целях и такой пункт лицензии в РФ не будет иметь силы, т. к. закон имеет большую юридическую силу. На хабре часто эта тема поднималась, можно нагуглить (с пруфами, ссылками на закон и комментариями юристов).
0
Как только вы попытаетесь заработать деньги
Вот, это ключевой момент. Тогда у вас действительно могут начаться проблемы (и то, для этого должен быть пыполнен ряд условий). Само по себе исследование устройства (для личных целей, например ремонта или самообразования)— вполне законная штука. Немного по другому с ПО.
0
Я когда то выкрутился так — положил на плату 3д корпус на который натянул картинку и зафиксировал чтобы не мешался.
0
Интересный вариант. С двумя слоями так можно работать?
0
В принципе да. Только по очереди, конечно. Задачка интересная, надо будет поковырять и как раз есть кандидат который неплохо будет отрисовать.
0
Иногда рисовал куски схемы и платы в PCAD 4.5 посредством скриптового языка.
в своей утилитке обработать список связей и можно
— расставить детали по сетке
— автоматом присвоить имена цепей ножкам на схеме…
— дальше уже умственно-мышиная работа…
для PCAD 4.5 выглядело как то так
PCCAPS
Command ENTR
Command WIRE
B1 -30 290
B1 -30 285
B2 
B1 -30 245
B1 -30 235
B2 

PCCARDS
Command ENTR
Command COMP
Text \p\ANL\1401SA1.PRT
B1 0 0
B1 50 300
B2 
Text \p\RES\RM8.PRT
B1 -800 100
B2 
Text \p\RES\RPER.PRT
B1 0 0
B1 50 -1250
B2 
Text \p\RES\RV0125.PRT
B1 0 0
B1 -150 -600
B1 -50 -600
B2 
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.