Автоматизация формирования выходных данных в Altium Designer
Output generation is not a manual step at the end of a project – it is a configurable, automatable process that should run the same way every time.
Система генерации выходных данных в Altium Designer построена вокруг файлов Output Job (OutJob). OutJob — это настроенный набор выходных данных: производственные данные, данные для сборки, документация, BOM, проверки валидации и пользовательские отчеты, где параметры, формат и целевое расположение для каждого типа выходных данных задаются один раз. Один и тот же OutJob можно запускать для любого проекта. Когда проект изменяется, повторный запуск OutJob заново формирует все выходные данные в соответствии с текущим состоянием. Когда меняются требования к выходным данным, достаточно один раз обновить OutJob.
OutJob — это не просто удобный инструмент для отдельного инженера. На уровне команды это механизм стандартизации того, что именно создается, в каком формате и куда отправляется, — устраняя вариативность, возникающую, когда каждый инженер вручную генерирует выходные данные со своими собственными настройками.
Архитектура генерации выходных данных — что создают OutJob
-
Fabrication outputs: Файлы Gerber (RS-274X, X2), файлы сверловки NC, ODB++, IPC-2581, отчеты по стеку платы.
-
Assembly outputs: Файлы pick-and-place, сборочные чертежи, отчеты по тестовым точкам.
-
Documentation outputs: Печатные схемы, печатные платы, 3D-модели (STEP), сборочные чертежи.
-
BOM outputs: Отчеты BOM в стандартных и пользовательских форматах.
-
Validation outputs: Отчеты DRC, ERC, отчеты о различиях, отчеты сравнения посадочных мест. Их можно настроить так, чтобы они блокировали генерацию выходных данных в случае ошибки.
-
Netlist outputs: Различные форматы нетлистов для последующих инструментов.
-
Custom outputs: Скрипты, встроенные в OutJob, могут генерировать выходные данные в любом формате, который требуется вашему процессу.
Автоматизация генерации выходных данных через Release
Когда проект выпускается через Workspace, выполнение OutJob интегрируется в процесс release. Сначала выполняются проверки валидации — если какая-либо из них не проходит, выпуск останавливается. Выходные данные генерируются из проверенного состояния проекта и сохраняются в Workspace как версионируемые артефакты release. Это означает, что выходные данные release всегда можно однозначно связать с конкретной ревизией проекта, они генерируются из заведомо корректного состояния и хранятся в месте, доступном всей команде.
Это принципиально отличается от локальной генерации выходных данных и обмена файлами: не возникает вопросов о том, какой ревизии проекта соответствуют выходные данные, нет риска, что они будут повторно сгенерированы с другими настройками, и нет зависимости от машины или конфигурации конкретного инженера.
Пользовательские генераторы выходных данных
Для форматов выходных данных, которые Altium Designer изначально не поддерживает, SDK предоставляет API Output Generator. Расширение с пользовательским генератором выходных данных подключается к системе Outjob как полноценный тип выходных данных — оно отображается в редакторе OutJob так же, как любой встроенный тип, может настраиваться, назначаться контейнерам выходных данных и выполняться как часть автоматизированного release. С точки зрения пользователя пользовательский генератор выходных данных неотличим от встроенного.
Это правильный подход для проприетарных производственных форматов, внутренних шаблонов документации, пользовательских форматов нетлистов для внутренних инструментов или любых требований к выходным данным, которые не соответствуют тому, что Altium поставляет по умолчанию.
Типовые сценарии сбоев в управлении выходными данными
-
Manual generation with per-engineer settings — каждый инженер генерирует выходные данные на своей машине со своими настройками. Результаты немного различаются между инженерами и между запусками. Когда на производстве что-то идет не так, трудно понять, из какой ревизии проекта были получены выходные данные и были ли использованы корректные настройки.
-
Outputs stored outside the Workspace — выходные файлы, хранящиеся локально или в общих сетевых папках, теряют связь с проектами, которые их создали. Становится неясно, какая ревизия проекта соответствует какому набору выходных данных, особенно после внесения изменений. Механизм release в Workspace решает эту проблему, связывая выходные данные с конкретными ревизиями проекта как с версионируемыми артефактами.
-
Validation and output generation as separate manual steps — когда инженеры вручную запускают DRC и ERC перед генерацией выходных данных, проверки и сама генерация формально не связаны между собой. Проект может успешно пройти валидацию в один час, а выходные данные будут сгенерированы в следующий час уже после того, как кто-то внес изменения. Интеграция валидации в OutJob гарантирует, что проверки выполняются для того же состояния проекта, из которого формируются выходные данные.
-
OutJob configuration drift between projects — когда OutJob копируются между проектами и изменяются независимо друг от друга, со временем конфигурации расходятся. Любое изменение требований к выходным данным требует обновления нескольких OutJob. Управление OutJob как общими шаблонами в Workspace и получение обновлений в проектах предотвращает такой дрейф.
Когда стоит инвестировать в пользовательские генераторы выходных данных
Пользовательские генераторы выходных данных имеют смысл, когда вашим производственным партнерам или последующим инструментам требуются форматы, которые Altium изначально не создает, и когда эти выходные данные нужно генерировать согласованно как часть управляемого процесса release. Если формат можно получить постобработкой стандартного выходного файла Altium — например, преобразованием BOM CSV в определенную структуру, — скрипт в OutJob часто оказывается проще, чем полноценное расширение SDK. Создавать расширение стоит тогда, когда формат требует доступа к объектам проекта на уровне, недоступном системе скриптов, или когда тип выходных данных должен интегрироваться в интерфейс OutJob как корректно настраиваемый тип вывода.