Реверсивный инжиниринг плат
После импорта CAM-данных в CAM-документ вы заметите, что параметр Export to PCB недоступен (выделен серым), независимо от текущего режима CAM Editor (CAM или NC). Эта команда позволяет выполнить обратное проектирование (reverse engineering) разводки печатной платы непосредственно из CAM-файлов. Это не обычный процесс экспорта/импорта — данные загружаются напрямую в PCB Editor.
В следующих разделах описаны шаги, необходимые для обратного проектирования PCB по CAM-данным: от первоначального импорта в CAM-документ, через требуемую подготовку перед экспортом и далее — к экспорту данных проекта в PCB Editor.
Импорт данных
Отправной точкой всего процесса является загрузка ODB++, либо файлов Gerber и NC Drill в новый CAM-документ. Если у вас есть IPC-нетлист, его также следует импортировать при импорте данных Gerber и NC Drill. При импорте ODB++ импортируйте IPC-файл только в том случае, если нетлист отсутствует в каталоге ODB++. IPC-нетлист позволит обновить извлеченные цепи, вернув им исходные имена, а также различать сквозные переходные отверстия (vias) и свободные площадки, не относящиеся к компонентам.
Команды подменю File » Import выполняют поиск файлов с определенными расширениями в указанной папке. Например, при импорте файлов сверловки выбранный каталог отфильтрует все файлы, кроме имеющих расширения .DR*, .ROU, .RTE, *.NC*, и *.TX* . Если вы получаете файлы сверловки с расширениями, отличными от перечисленных, вы можете расширить этот список на странице CAM Editor - Miscellaneous диалога Preferences. Здесь же можно изменить любые списки расширений по умолчанию, связанные с файлами Gerber, Aperture, HPGL и Netlist.
Страница CAM Editor - Import/Export диалога Preferences позволяет изменить настройки импорта и экспорта Gerber по умолчанию. Например, если вы регулярно получаете CAM-данные, сформированные в P-CAD, имеет смысл изменить формат точности координат с 2:3 (по умолчанию в Altium Designer) на 4:4 (по умолчанию в P-CAD). Если этого не сделать, у вас все равно будет возможность менять эти параметры относительно значений по умолчанию при каждом импорте задания.
Назначение типов слоев
Диалог Layer Table Detection Template
Отдельные файлы Gerber и Drill назначаются отдельным слоям. Кроме того, CAM Editor при импорте анализирует их имена и пытается назначить каждому тип слоя. Это выполняется согласно информации в диалоге Layer Types Detection Template, который открывается выбором Tables » Layer Type Detection в главном меню. Это полностью настраиваемый диалог, содержащий фрагменты имен файлов (расширения, ключевые слова или и то и другое), по которым отдельные файлы идентифицируются как типы слоев — например, сигнальные, отрицательные плоскости (negative plane), контур (border), сверловка (drill) и временные слои (механические).
PCB Editor в Altium Designer, например, различает слои Gerber по расширениям, таким как .gtl для верхнего слоя и .gbl для нижнего. Другие САПР могут экспортировать файл .top для верхнего слоя и .sol для нижнего (паяльного) слоя. Некоторые из этих инструментов, например P-CAD, позволяют пользователям задавать имена выходных Gerber-файлов вручную.
После импорта любой группы CAM-файлов вы можете открыть диалог Layers Table и просмотреть назначения типов, выполненные автоматически. Можно раскрыть выпадающий список типа и изменить любое назначение. Например, вы заметите, что все файлы сверловки автоматически получают тип Drill Top. На этом этапе вы можете захотеть различать наборы сверловки для верхних, нижних и внутренних слоев. Однако это не является обязательным.
Если вы обычно получаете Gerber- или drill-файлы, которым не удается корректно назначить тип слоя автоматически, следует проверить имя файла на наличие отличительных признаков, по которым CAM Editor мог бы их распознать, и добавить их в диалог Layer Types Detection Template. Для ODB++ диалог Layer Types Detection Template не требуется, поскольку вся информация, необходимая для идентификации каждого слоя, хранится в matrix-файле. Тем не менее хорошей практикой является проверка назначений типов слоев после завершения загрузки.
Стек слоев платы и наборы сверловки
Диалог Create/Update Layers Order
Слои, которым назначены сигнальные типы (верхний, нижний или внутренний) либо плоскости, теперь появятся в диалоге Create/Update Layers Order, который открывается выбором Tables » Layers Order в главном меню. В большинстве случаев CAM Editor сможет определить стек слоев по предоставленным CAM-данным, но иногда будет доступен только логический порядок (порядок, в котором слои были импортированы). Лучше убедиться, что информация в столбце Layer Physical Order корректна, где номер один соответствует верхнему слою. Следите, чтобы один и тот же номер порядка не был назначен разным слоям. После задания корректного стека столбец физического порядка будет иметь приоритет над логическим списком при повторном открытии этого диалога, и вы увидите слои, перечисленные в соответствии с предполагаемым стеком.
Этот же физический порядок будет отражен в диалоге Create/Update Layers Sets, открываемом выбором Tables » Layers Sets в главном меню, где выполняется сопоставление файлов сверловки с наборами слоев. Рассмотрим 6-слойную плату (четыре сигнальных слоя, две плоскости) со слепыми и скрытыми переходными отверстиями. Проект может содержать четыре отдельных файла сверловки:
- один для пары Top-Bottom (сквозные отверстия)
- один для пары Top-InternalPlane1
- один для пары MidLayer1-MidLayer2
- один для пары Bottom-InternalPlane2.
Извлечение нетлиста
Этот шаг, доступный через выбор Tools » Netlist » Extract в главном меню, зависит от точности предыдущих шагов. Его невозможно выполнить, если для каждого слоя вашей платы не назначен тип слоя (механические слои следует установить как Temporary). После запуска команды будет извлечена информация нетлиста, и список цепей появится на вкладке Nets панели CAMtastic . Каждая цепь приводится с указанием ее общей длины. Щелчок по любой записи цепи в панели приведет к выбору этой цепи и масштабированию (zoom) в рабочей области.
CAM Editor будет отслеживать связность от одного слоя к другому, используя файлы NC drill для формирования межслойных соединений. По этой причине стек слоев, заданный вами в диалоге Create/Update Layers Order, и пары сверловки, выбранные в диалоге Create/Update Layers Sets, являются критически важными предпосылками для извлечения точного нетлиста из CAM-данных.
Если вместе с импортированными файлами Gerber и NC Drill вы включили файл нетлиста IPC-D-356, вы можете восстановить исходные (и осмысленные) имена цепей, выбрав Tools » Netlist » Rename Nets в главном меню. После запуска команды цепи будут сопоставлены, а те, что были извлечены из текущего документа, будут переименованы с использованием имен цепей из IPC-нетлиста. Обновленные имена появятся на вкладке Nets панели CAMtastic .
Хотя информация IPC-D-356 нетлиста не является обязательной для экспорта, она желательна. Ее наличие поможет CAMtastic Editor отделять площадки от переходных отверстий и, следовательно, обеспечит корректное создание vias вместо pads для любых слепых или скрытых переходов в проекте. Но что еще важнее, IPC-нетлист дает эталон, с которым можно сравнить извлеченный нетлист при выборе Tools » Netlist » Compare в главном меню. После запуска команды будет выполнено сравнение и сформирован отчет Netlist-Compare.rpt, который откроется как активный документ в главном окне проекта. В отчете перечислены все цепи, которые были найдены в импортированном нетлисте, но отсутствуют в извлеченном нетлисте.
Если IPC-нетлист импортирован корректно, вы увидите, что в список слоев на панели CAMtastic добавлены два слоя: <fabrication_testpoint_report_for_DesignName>.ipc_t и <fabrication_testpoint_report_for_DesignName>.ipc_b, отражающие информацию нетлиста для верхнего и нижнего сигнальных слоев. (Третий слой, <fabrication_testpoint_report_for_DesignName>.ipc_in, появится, если в вашем проекте PCB есть внутренние сигнальные слои. Если только у вас нет слепых и/или скрытых переходов, задействующих эти слои, этот третий слой будет пустым — его можно оставить или удалить из списка слоев).
Для IPC-нетлистов, сгенерированных из PCB Editor, вы заметите, что функция сравнения CAM Editor обычно находит серию «отсутствующих цепей» без имен. Это связано с тем, что IPC-формат PCB Editor включает одноконтактные цепи. CAM Editor, с другой стороны, игнорирует площадки без каких-либо медных соединений с точки зрения нетлиста. Фактически, в его DRC есть опция удаления нефункциональных площадок.
Границы и плоскости
Когда CAM Editor экспортирует файл PCB в PCB Editor, контур платы будет сгенерирован автоматически. Чтобы сделать это корректно, на слое типа Border должна присутствовать замкнутая полилиния. Если на этом слое не удаётся найти замкнутые полилинии или если в диалоге Layers Table в качестве границ назначено несколько слоёв, вы, скорее всего, не получите желаемую форму платы.
Любые разрывы (splits) на внутренних плоскостях также должны быть определены замкнутыми полилиниями. Чтобы определить, замкнута ли полилиния, выполните запрос (сочетание клавиш Q). Можно проверить, подсвечивается ли полилиния целиком и отображается ли она как замкнутая на вкладке Info панели CAM. Если нет, то можно преобразовать имеющееся в замкнутую полилинию командой Join в подменю Edit » Objects.
Секции split plane могут потребовать дополнительной работы, потому что каждому разрыву нужна собственная «пузырьковая» (bubble) замкнутая область. Хотя island planes можно объединять, как описано выше, split planes, которые разделяют свои контуры с другими разрывами или с граничной полилинией, необходимо перерисовать. Чтобы нарисовать собственную замкнутую полилинию, щёлкните правой кнопкой мыши после выбора её последней вершины, затем выберите Close.
Вложенные плоскости (островки внутри split planes) в настоящее время не поддерживаются.
Экспорт полигонов
Страница CAM Editor - Import/Export диалога Preferences предоставляет дополнительные параметры, определяющие, как полигоны в CAM-документе экспортируются в PCB-документ. Если полигоны прямоугольной формы, их можно создать как заливки (fills) в PCB-документе. Для непрямоугольных полигонов можно создать в PCB Editor полигонные заливки (polygon pours) типа Hatched или Solid. Предусмотрен доступ к диалогам параметров для этих двух типов заливки, что даёт более точный контроль над тем, как экспортированные полигоны будут обработаны на стороне PCB.
При включении опции Create Hatched Polygons CAM Editor будет использовать один размер сетки и одну ширину дорожки для заполнения всех полигонов в файле. Если ваши CAM-данные содержат очень маленькие полигоны, убедитесь, что параметры экспорта откалиброваны под этот уровень.
Диалог Polygon Options, открываемый нажатием соответствующей кнопки Hatched Polygon Options, позволяет изменить размер сетки, ширину дорожки и минимальную длину примитива для полигонов. Если вы хотите, чтобы полигоны были заполнены полностью и с высокой точностью, эти значения следует держать в узком диапазоне вокруг минимальных требований вашей платы. Иначе вы рискуете получить пустые участки внутри полигонов, штриховку вместо сплошной заливки или даже пропуск целых полигонов при экспорте.
Диалог Polygon Options
С другой стороны, эти значения применяются ко всем экспортируемым полигонам, поэтому слишком малые значения увеличат «тяжеловесность» файла и связанные с управлением проблемы (например, скорость перерисовки) для экспортированного документа. Поэтому лучше использовать максимально возможные значения, которые всё ещё обеспечивают требуемую точность для всех полигонов на плате.
При включении опции Create Solid Polygons каждый полигон будет заполнен одной или несколькими сплошными областями меди. Количество медных областей зависит от числа отдельных областей, образованных внутри полигона существующими объектами сети, такими как дорожки и площадки.
Диалог Solid Polygon Options
Диалог Solid Polygon Options, открываемый нажатием соответствующей кнопки Solid Polygon Options, позволяет определить, как обрабатываются медные островки и узкие медные «сети», а также поведение заливки при заливке поверх объектов сети, принадлежащих той же сети, что и медная заливка:
-
Pour Over All Same Net Objects - выберите этот вариант, если хотите, чтобы polygon pour автоматически подключался ко всем объектам той же сети, что и заливка
-
Pour Over Same Net Polygons Only - выберите этот вариант (по умолчанию), если хотите, чтобы polygon pour автоматически подключался только к объектам polygon pour внутри своей границы, которые связаны с той же сетью
-
Don't Pour Over Same Net Objects - выберите этот вариант, если вы специально не хотите, чтобы polygon pour подключался к каким-либо другим объектам сети. Если выбран один из первых двух вариантов и polygon pour назначен на No Net, он будет заливаться вокруг всех объектов независимо от их назначений по сетям.
Экспорт в PCB
После извлечения netlist из ваших CAM-данных команда File » Export » Export to PCB становится доступной. Выполнение этой команды после всех необходимых шагов создаст PCB-документ, содержащий проект платы, который по виду будет очень близок к исходному.
После запуска команды будет создан новый PCB-документ (<CAMDocumentName>.PcbDoc) и открыт как активный документ в рабочей области. Фактическая последовательность событий при переносе информации между CAM-документом и PCB-документом следующая:
-
PCB-документ создаётся с контуром платы на основе текущего размера платы в CAM-документе.
-
В PCB-документе создаются объекты сети (net objects) с использованием информации о сетях, извлечённой из CAM-документа.
-
Формируется stack-up слоёв на основе порядка физических слоёв, заданного в CAM-документе (диалог Create/Update Layers Order, доступный через Tables » Layers Order).
-
Сети назначаются всем внутренним плоскостям.
-
Сети назначаются всем существующим split planes. Они могут быть
-
Создаются правила проектирования (design rules) Clearance, Width и Power Plane Connect Style. Для каждой сети плоскости создаются соединения типа relief.
-
Padstack’и строятся из CAM-данных (с использованием площадок на сигнальных/плоскостных слоях в физическом порядке, затем сверловка, маска, паста и т. д.). Padstack’и загружаются в PCB и определяется требуемый стиль (простой или полный padstack).
-
Создаются дорожки PCB.
-
Выполняется DRC-проверка для всей платы.



).