// WIKI

Formato Gerber: storia, varianti e viewer

Cos'è il formato Gerber e da dove nasce, le sue varianti (RS-274D, RS-274X, X2), il drill Excellon, come si compongono i layer di una PCB e perché molti produttori preferiscono oggi formati come ODB++ e IPC-2581.

Pubblicato il Aggiornato il GerberPCBViewerLayerEDA

Un circuito stampato non si descrive con un solo file: ogni layer fisico della board è un file a sé, e per vederla bisogna ricomporli tutti allineati. Questa pagina spiega da dove nasce il formato Gerber, quali varianti esistono, da quali file è fatta una board e perché oggi molti produttori si appoggiano a formati più ricchi.

Una breve storia

Il nome viene da Gerber Scientific, l’azienda di Joseph Gerber che fra gli anni ’60 e ’80 produceva i fotoplotter vettoriali usati per incidere le pellicole (i film) da cui si fabbricavano i circuiti stampati. Il formato Gerber nasce come linguaggio di controllo di quelle macchine — un sottoinsieme dello standard EIA RS-274 per le macchine a controllo numerico.

Il fotoplotter muoveva una sorgente luminosa: flashava una forma (un’apertura) in una posizione per creare un pad, oppure tracciava una linea esponendo la pellicola lungo un percorso per creare una pista. Da qui i concetti ancora oggi centrali — apertura, flash, draw — e il motivo per cui un Gerber è un disegno vettoriale e non un’immagine raster. Poiché ogni fabbricante leggeva quel linguaggio, il Gerber è diventato lo standard di fatto per scambiare l’artwork delle PCB.

Le varianti del formato

  • RS-274D (Gerber “standard”) — conteneva solo i movimenti; la forma delle aperture stava in un file separato (la aperture wheel) da comunicare a parte. Ambiguo e fragile: bastava un disallineamento fra disegno e tabella aperture per sbagliare la board. Oggi obsoleto.
  • RS-274X (Extended Gerber, X1) — incorpora nel file le definizioni di apertura e il formato delle coordinate, e aggiunge regioni (G36/G37), polarità dark/clear (LPD/LPC), step-and-repeat e macro di apertura. È la variante usata da decenni e quella che questo viewer interpreta.
  • Gerber X2 (2014) — aggiunge attributi (metadati) che dichiarano il significato di ogni file: funzione del layer, dati di foratura, attributi di netlist. Il set diventa auto-descrittivo invece di affidarsi ai nomi file. È mantenuto da Ucamco, erede di Gerber Scientific per il formato.
  • Gerber Job File (.gbrjob) — file companion che descrive l’intero job (stack-up, ordine dei layer, materiali) accanto ai Gerber X2.

Il formato Gerber in pratica (RS-274X)

Il Gerber descrive ogni layer come una sequenza di aperture (cerchi, rettangoli, forme custom via macro) che vengono flashate in una posizione (un pad) o tracciate lungo un percorso (una pista). L’RS-274X incorpora nel file sia la definizione delle aperture sia il formato delle coordinate; le regioni (G36/G37) riempiono aree, la polarità clear (LPC) “scava” il rame già depositato.

Ogni file Gerber contiene un solo layer. Un sistema di coordinate comune (origine e unità) garantisce che layer diversi si sovrappongano correttamente.

La direttiva che decide tutto: il formato delle coordinate

C’è una riga, all’inizio di ogni file, da cui dipende se la board sarà grande dieci centimetri o dieci metri. Le coordinate nel Gerber sono interi senza virgola: X1500Y2000 non dice millimetri, dice «mille­cinquecento unità», e quanto vale un’unità lo stabilisce la direttiva FS (Format Specification) insieme a MO (Mode, pollici o millimetri).

Direttiva Interi Decimali X1500 significa Se la si sbaglia
%FSLAX46Y46*% 4 6 0,0015 mm riferimento
%FSLAX35Y35*% 3 5 0,015 mm × 10
%FSLAX24Y24*% 2 4 0,15 mm × 100
%FSLAX23Y23*% 2 3 1,5 mm × 1000

La forma %FSLAX46Y46*% si legge così: L = zeri iniziali omessi (leading zeros omitted), A = coordinate assolute, poi X46 = 4 cifre intere e 6 decimali per la coordinata X, Y46 idem. Con MO in millimetri, l’unità elementare è quindi 10⁻⁶ mm.

L’ultima colonna della tabella è il motivo per cui questa direttiva conta più di tutte le altre: un errore di una cifra scala la board di un fattore dieci, e il file si apre benissimo. Non c’è nessun errore di sintassi, nessun avviso: c’è una board di dimensioni sbagliate, che il fab produrrebbe volentieri se il file di outline avesse lo stesso errore. È anche il motivo per cui il primo controllo su un Gerber ricevuto è sempre misurare qualcosa di noto — il passo di un connettore, la diagonale della board — e non guardare se «sembra giusto».

Due varianti storiche si incontrano ancora, e vanno riconosciute. Gli zeri finali omessi (T invece di L) esistono ancora in file vecchi e cambiano completamente l’interpretazione della stessa cifra. E le coordinate incrementali (I invece di A, con G91) sono deprecate da decenni ma compaiono in output di CAD antichi: ogni coordinata è uno spostamento dalla precedente, quindi un singolo errore di parsing sposta tutto il resto del layer.

Archi: G74 e G75, il bug che nessuno vede

Un arco in Gerber si traccia con G02 (senso orario) o G03 (antiorario) dando il punto finale e l’offset del centro (I, J) rispetto al punto di partenza. Ma l’interpretazione di quell’offset dipende da una modalità dichiarata a parte:

  • G74 — single quadrant: l’arco non può attraversare un quadrante, I e J sono senza segno e il verso va dedotto. Modalità storica, deprecata.
  • G75 — multi quadrant: I e J sono con segno e l’arco può percorrere fino al cerchio intero. È la modalità corretta.

Interpretare un file G74 come G75 (o viceversa) non produce un errore: produce archi che vanno dalla parte sbagliata, o cerchi al posto di quarti di cerchio. Su un layer di rame si vede; su un layer di solder mask o su una fresatura di contorno, molto meno — e il pezzo esce con un profilo diverso da quello disegnato. Il renderer di questo strumento implementa entrambe le modalità, che è esattamente il motivo per cui vale citarle.

I file di una board

Una board tipica è un insieme di file, uno per piano fisico più la foratura e il bordo:

  • Rame (copper) — uno per ogni strato conduttivo: top, bottom ed eventuali strati interni. È dove vivono piste e pad.
  • Solder mask — la maschera di saldatura, un file per lato. Le sue aperture indicano dove il rame resta esposto.
  • Serigrafia (silkscreen) — scritte e contorni dei componenti, un file per lato.
  • Pasta saldante (solder paste) — le aperture dello stencil per la pasta sui pad SMD, un file per lato.
  • Drill (Excellon) — non è un Gerber ma un file Excellon a parte, con le coordinate dei fori per diametro.
  • Bordo (outline / Edge Cuts) — il contorno meccanico della scheda, un Gerber dedicato.

Perché più file, e come si compongono

Separare i layer è necessario perché ognuno va su un processo di fabbricazione diverso (incisione del rame, serigrafia, foratura). Per vedere la board si fa l’operazione inversa: si caricano tutti i file e si sovrappongono allineati sullo stesso sistema di coordinate, così che pad, piste, maschera e fori cadano esattamente dove devono. Ogni layer riceve un colore e si può accendere/spegnere per ispezionare la board strato per strato.

Identificazione dei layer

I nomi dei file non sono standardizzati fra i CAD: lo stesso layer può chiamarsi top.gtl, board-F_Cu.gbr (KiCad), top_copper.gbr e così via, e i drill possono avere estensione .drl o .txt. È proprio per questo che il Gerber X2, aggiungendo attributi di funzione, riduce l’ambiguità. Il viewer riconosce il tipo di ogni file combinando nome/estensione e contenuto; i file estranei (BOM, pick&place, PDF, README) vengono ignorati senza errore, mentre un layer ambiguo resta marcato come “sconosciuto” e può essere assegnato a mano.

Estensioni comuni per layer

Layer Estensioni tipiche
Rame top / bottom .gtl / .gbl, F_Cu.gbr / B_Cu.gbr
Solder mask top / bottom .gts / .gbs, F_Mask.gbr / B_Mask.gbr
Serigrafia top / bottom .gto / .gbo, F_Silkscreen.gbr / B_Silkscreen.gbr
Pasta top / bottom .gtp / .gbp, F_Paste.gbr / B_Paste.gbr
Bordo (outline) .gko, .gm1, Edge_Cuts.gbr
Drill (Excellon) .drl, .txt, .xln

La colonna di sinistra è il significato; quella di destra mostra le due convenzioni più diffuse (Protel/legacy e KiCad). Sono esempi, non uno standard: è esattamente l’ambiguità che gli attributi del Gerber X2 eliminano.

Cosa il renderer copre, per davvero

Dire che un viewer «interpreta il Gerber» non significa niente: quello che conta è quali direttive gestisce, perché le mancanti non danno errore, danno un disegno diverso. Questa è la copertura effettiva, letta dal sorgente del renderer:

Gruppo Supportato dal renderer Non supportato
Direttive estese FS MO AD AM AB SR LP LM LR LS attributi TF/TA/TO (metadati X2: letti, non usati per il disegno)
Codici G G01 G02 G03 G04 G36 G37 G70 G71 G74 G75 G90 G91 —
Primitive di macro 1 cerchio, 4 outline, 5 poligono, 7 thermal, 21 linea centrata, 22 linea da angolo 2/20 linea vettoriale, 6 moiré
Excellon M48 M71 M72 M15 M16, tool table routing con compensazione raggio

Tre righe meritano un commento. AB (Aperture Block) e SR (Step and Repeat) sono le direttive con cui si descrive un pannello — la stessa board ripetuta su una griglia — e sono quelle che i viewer semplici ignorano: il risultato è che si vede una board sola invece di dodici, e il pannello sembra sbagliato quando è il viewer a essere incompleto. LM/LR/LS (mirror, rotate, scale) sono le trasformazioni introdotte dal Gerber X2: senza di esse le aperture ruotate finiscono nel posto giusto con l’orientamento sbagliato.

E fra le primitive di macro non supportate, la 20 (linea vettoriale) è l’unica che si incontri con qualche frequenza, in macro generate da CAD non recenti; la 6 (moiré) serve ai target di fiducializzazione ottica ed è rara. Una macro che le usi viene ignorata nella parte non supportata invece di far fallire il caricamento, che è la scelta giusta per un viewer ma va saputo.

Oltre il Gerber: ODB++ e IPC-2581

Il Gerber classico descrive solo l’artwork di ogni layer: non porta in sé lo stack-up, la netlist, i componenti o lo span dei fori. Per la fabbricazione e soprattutto per l’assemblaggio questo lascia margini di ambiguità che il fab deve colmare a mano. Per questo molti produttori preferiscono oggi formati “intelligenti”:

  • ODB++ (nato in Valor, oggi Siemens) — non un file ma un database (un albero di cartelle) che raccoglie in un unico pacchetto rame, foratura, netlist, componenti, stack-up, test-point e regole DFM. Molto diffuso per ridurre il setup e gli scambi col fab.
  • IPC-2581 (detto anche DPMX) — standard aperto e neutrale, un singolo file XML con l’intero modello di prodotto (stack-up, netlist, componenti, foratura, dati DFM). Spinto come alternativa aperta all’ODB++ proprietario.

Gerber X2 colma in parte il divario aggiungendo attributi, ma ODB++ e IPC-2581 nascono per portare nativamente netlist, componenti e stack-up. Nella pratica un fab accetta quasi sempre il Gerber (X2 o RS-274X + Excellon), e in parallelo ODB++ o IPC-2581 quando il flusso di assemblaggio li richiede.

Come viene resa la board

La board è rasterizzata su canvas WebGL2 da un motore scritto in Rust e compilato a WebAssembly: interpreta direttamente le polarità dark/clear (LPD/LPC) e le regioni di pour (G36/G37), così le clearance “scavano” davvero il rame e le piste restano leggibili anche dentro un piano. I layer sono composti con trasparenza per layer, con misure punto-punto e selezione degli elementi.


Strumento web: Gerber Viewer. Motore: WASM Gerber Viewer (renderer Rust/WASM su WebGL2, MIT).

Ultimo aggiornamento: · Trovato un errore o un dato superato? Segnalacelo

← Torna all’indice Wiki

Un progetto simile?

Acustica, embedded, strumenti di calcolo: se hai un caso d’uso vicino, parliamone.