Automatizzare la generazione degli output da 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.
Il sistema di generazione degli output di Altium Designer è costruito attorno ai file Output Job (OutJob). Un OutJob è una raccolta configurata di output – dati di fabbricazione, dati di assemblaggio, documentazione, BOM, controlli di validazione e report personalizzati – in cui le impostazioni, il formato e la destinazione di ciascun output vengono definiti una sola volta. Lo stesso OutJob può essere eseguito su qualsiasi progetto. Quando il progetto cambia, l’esecuzione dell’OutJob rigenera tutti gli output in base allo stato corrente. Quando cambiano i requisiti degli output, è sufficiente aggiornare l’OutJob una sola volta.
Gli OutJob non sono solo una comodità per i singoli ingegneri. A livello di team, rappresentano il meccanismo per standardizzare cosa viene prodotto, in quale formato e dove viene inviato, eliminando la variabilità derivante dal fatto che ogni ingegnere generi manualmente gli output con le proprie impostazioni.
L’architettura della generazione degli output – cosa producono gli OutJob
-
Fabrication outputs: File Gerber (RS-274X, X2), file di foratura NC, ODB++, IPC-2581, report dello stackup della scheda.
-
Assembly outputs: File pick-and-place, disegni di assemblaggio, report dei punti di test.
-
Documentation outputs: Stampe dello schema, stampe PCB, modelli 3D (STEP), disegni di assemblaggio.
-
BOM outputs: Report BOM in formati standard e personalizzati.
-
Validation outputs: Report DRC, report ERC, report delle differenze, report di confronto delle footprint. Possono essere configurati per bloccare la generazione degli output in caso di errore.
-
Netlist outputs: Vari formati di netlist per gli strumenti a valle.
-
Custom outputs: Gli script incorporati negli OutJob possono generare output in qualsiasi formato richiesto dal tuo flusso di lavoro.
Automatizzare la generazione degli output tramite il rilascio
Quando un progetto viene rilasciato tramite il Workspace, l’esecuzione dell’OutJob è integrata nel processo di rilascio. I controlli di validazione vengono eseguiti per primi: se uno qualsiasi fallisce, il rilascio si interrompe. Gli output vengono generati dallo stato del progetto validato e archiviati nel Workspace come artefatti di rilascio versionati. Questo significa che gli output di rilascio sono sempre tracciabili a una specifica revisione del progetto, generati da uno stato noto e valido e archiviati in una posizione accessibile all’intero team.
Questo è fondamentalmente diverso dal generare gli output localmente e condividere i file: non ci sono dubbi su quale revisione del progetto corrispondano gli output, non c’è il rischio che gli output vengano rigenerati con impostazioni diverse e non c’è dipendenza dalla macchina o dalla configurazione di uno specifico ingegnere.
Generatori di output personalizzati
Per i formati di output non supportati nativamente da Altium Designer, l’SDK fornisce una Output Generator API. Un’estensione di generazione output personalizzata si integra nel sistema OutJob come un tipo di output di prima classe: appare nell’editor OutJob come qualsiasi output integrato, può essere configurata con impostazioni, assegnata ai contenitori di output ed eseguita come parte del rilascio automatizzato. Dal punto di vista dell’utente, un generatore di output personalizzato è indistinguibile da uno nativo.
Questo è l’approccio corretto per formati di produzione proprietari, modelli di documentazione interna, formati di netlist personalizzati per strumenti sviluppati internamente o qualsiasi requisito di output che non corrisponda a ciò che Altium fornisce per impostazione predefinita.
Modelli comuni di errore nella gestione degli output
-
Manual generation with per-engineer settings – ogni ingegnere genera gli output dalla propria macchina con le proprie impostazioni. I risultati variano in modo sottile tra un ingegnere e l’altro e tra un’esecuzione e l’altra. Quando qualcosa va storto in produzione, è difficile capire da quale revisione del progetto provengano gli output o se le impostazioni usate fossero corrette.
-
Outputs stored outside the Workspace – i file di output archiviati localmente o in cartelle di rete condivise finiscono per scollegarsi dai progetti che li hanno generati. Diventa poco chiaro quale revisione del progetto corrisponda a quale insieme di output, soprattutto dopo che sono state apportate modifiche. Il meccanismo di rilascio del Workspace risolve questo problema collegando gli output a specifiche revisioni del progetto come artefatti versionati.
-
Validation and output generation as separate manual steps – quando gli ingegneri eseguono DRC ed ERC manualmente prima di generare gli output, i controlli e la generazione non sono formalmente collegati. Un progetto può superare la validazione in un’ora e avere gli output generati l’ora successiva dopo che qualcuno ha apportato una modifica. Integrare la validazione nell’OutJob garantisce che la validazione venga eseguita sullo stesso stato del progetto che produce gli output.
-
OutJob configuration drift between projects – quando gli OutJob vengono copiati tra progetti e modificati in modo indipendente, le configurazioni divergono nel tempo. Una modifica ai requisiti di output richiede l’aggiornamento di più OutJob. Gestire gli OutJob come modelli condivisi nel Workspace e importare gli aggiornamenti nei progetti evita questa deriva.
Quando investire in generatori di output personalizzati
I generatori di output personalizzati hanno senso quando i partner di produzione o gli strumenti a valle richiedono formati che Altium non produce nativamente e quando tali output devono essere generati in modo coerente come parte di un processo di rilascio gestito. Se il formato può essere prodotto tramite post-elaborazione di un output nativo di Altium – per esempio trasformando un CSV della BOM in una struttura specifica – uno script nell’OutJob è spesso più semplice di un’estensione SDK completa. Conviene sviluppare l’estensione quando il formato richiede l’accesso agli oggetti di progetto a un livello che il sistema di scripting non può raggiungere, oppure quando il tipo di output deve integrarsi nell’interfaccia utente dell’OutJob come un vero output configurabile.