Automatización de la generación de salidas desde 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.
El sistema de generación de salidas de Altium Designer se basa en los archivos Output Job (OutJobs). Un OutJob es una colección configurada de salidas —datos de fabricación, datos de ensamblaje, documentación, BOM, comprobaciones de validación e informes personalizados— en la que la configuración, el formato y la ubicación de destino de cada salida se definen una sola vez. El mismo OutJob puede ejecutarse en cualquier proyecto. Cuando el proyecto cambia, al ejecutar el OutJob se regeneran todas las salidas según el estado actual. Cuando cambian sus requisitos de salida, actualiza el OutJob una sola vez.
Los OutJobs no son solo una comodidad para los ingenieros individuales. A nivel de equipo, son el mecanismo para estandarizar qué se produce, en qué formato y a dónde va, eliminando la variación que se produce cuando cada ingeniero genera salidas manualmente con su propia configuración.
La arquitectura de generación de salidas: qué producen los OutJobs
-
Fabrication outputs: Archivos Gerber (RS-274X, X2), archivos de taladrado NC, ODB++, IPC-2581, informes de apilado de la placa.
-
Assembly outputs: Archivos pick and place, planos de ensamblaje, informes de puntos de prueba.
-
Documentation outputs: Impresiones de esquemáticos, impresiones de PCB, modelos 3D (STEP), planos de ensamblaje.
-
BOM outputs: Informes de BOM en formatos estándar y personalizados.
-
Validation outputs: Informes DRC, informes ERC, informes de diferencias, informes de comparación de huellas. Estos pueden configurarse para bloquear la generación de salidas si fallan.
-
Netlist outputs: Varios formatos de netlist para herramientas posteriores del flujo.
-
Custom outputs: Los scripts integrados en los OutJobs pueden generar salidas en cualquier formato que requiera su flujo de trabajo.
Automatización de la generación de salidas mediante la liberación
Cuando un proyecto se libera a través del Workspace, la ejecución del OutJob se integra en el proceso de liberación. Primero se ejecutan las comprobaciones de validación; si alguna falla, la liberación se detiene. Las salidas se generan a partir del estado validado del diseño y se almacenan en el Workspace como artefactos de liberación versionados. Esto significa que las salidas de la liberación siempre son rastreables a una revisión específica del diseño, se generan a partir de un estado verificado y se almacenan en una ubicación a la que todo el equipo puede acceder.
Esto es fundamentalmente diferente de generar salidas localmente y compartir archivos: no hay dudas sobre a qué revisión del diseño corresponden las salidas, no existe el riesgo de que las salidas se regeneren con configuraciones distintas y no hay dependencia de la máquina o la configuración de un ingeniero concreto.
Generadores de salida personalizados
Para los formatos de salida que Altium Designer no admite de forma nativa, el SDK proporciona una API de Output Generator. Una extensión de generador de salida personalizado se integra en el sistema OutJob como un tipo de salida de primera clase: aparece en el editor de OutJob como cualquier salida integrada, puede configurarse con ajustes, asignarse a contenedores de salida y ejecutarse como parte de una liberación automatizada. Desde la perspectiva del usuario, un generador de salida personalizado es indistinguible de uno nativo.
Este es el enfoque adecuado para formatos de fabricación propietarios, plantillas de documentación internas, formatos de netlist personalizados para herramientas internas o cualquier requisito de salida que no coincida con lo que Altium proporciona de forma predeterminada.
Patrones comunes de fallo en la gestión de salidas
-
Manual generation with per-engineer settings – cada ingeniero genera salidas desde su propia máquina con su propia configuración. Los resultados varían sutilmente entre ingenieros y entre ejecuciones. Cuando algo sale mal en fabricación, es difícil saber de qué revisión del diseño procedían las salidas o si la configuración utilizada era la correcta.
-
Outputs stored outside the Workspace – los archivos de salida almacenados localmente o en carpetas de red compartidas se desconectan de los diseños que los generaron. Deja de estar claro qué revisión del diseño corresponde a cada conjunto de salidas, especialmente después de realizar revisiones. El mecanismo de liberación del Workspace resuelve esto vinculando las salidas a revisiones específicas del diseño como artefactos versionados.
-
Validation and output generation as separate manual steps – cuando los ingenieros ejecutan DRC y ERC manualmente antes de generar salidas, las comprobaciones y la generación no están conectadas formalmente. Un diseño puede superar la validación en un momento y tener las salidas generadas más tarde después de que alguien haga un cambio. Integrar la validación en el OutJob garantiza que la validación se ejecute sobre el mismo estado del diseño que produce las salidas.
-
OutJob configuration drift between projects – cuando los OutJobs se copian entre proyectos y se modifican de forma independiente, las configuraciones divergen con el tiempo. Un cambio en los requisitos de salida exige actualizar varios OutJobs. Gestionar los OutJobs como plantillas compartidas en el Workspace e incorporar las actualizaciones en los proyectos evita esta deriva.
Cuándo invertir en generadores de salida personalizados
Los generadores de salida personalizados tienen sentido cuando sus socios de fabricación o sus herramientas posteriores del flujo requieren formatos que Altium no produce de forma nativa, y cuando esas salidas deben generarse de forma consistente como parte de un proceso de liberación gestionado. Si el formato puede producirse mediante posprocesamiento de una salida nativa de Altium —por ejemplo, transformar un CSV de BOM en una estructura específica—, un script en el OutJob suele ser más sencillo que una extensión completa del SDK. Cree la extensión cuando el formato requiera acceso a los objetos del diseño a un nivel al que el sistema de scripting no puede llegar, o cuando el tipo de salida deba integrarse en la interfaz de OutJob como una salida configurada propiamente dicha.