Comparar revisões de PCB: o que olhar em cada arquivo

Introdução
Nos últimos anos eu vi mais de uma revisão de placa ser fabricada com algum tipo de erro, inserido por acidente e que passou despercebido ao gerar os arquivos de fabricação e montagem. Em nenhum dos casos, a placa fazia parte da primeira rodada de fabricação, eram todas de segunda ou terceira revisão. Eram revisões feitas para resolver obsolescência de componentes ou mudança de detalhe de fabricação, como material do stackup. Placas que já funcionavam e voltaram com defeito por causa da alteração, não do projeto.
Nos últimos meses, com a expansão da demanda gerada pela inteligência artificial e a subsequente falta de chips, memórias e outros semicondutores, ficou mais frequente. Tive que refazer algumas placas porque não conseguimos comprar componentes. O fechamento do estreito de Ormuz também abalou a disponibilidade de materiais dielétricos para fabricação de PCBs.
Todas essas placas que foram fabricadas com erro passaram no DRC (Design Rule Check).
O DRC responde se a placa é fabricável, e responde bem. O que ele não faz é olhar para trás: não sabe que existe uma “revisão A”. Se você editou o circuito integrado “U12” e no caminho arrastou uma trilha ou deixou um pino fora de uma net, isso pode não ser detectado pelo DRC. A placa continua fabricável, porém agora inclui uma modificação indesejada que pode causar uma falha no seu funcionamento.
Quem faz essa segunda conferência é a memória de quem editou, e que muitas vezes não é uma ferramenta confiável: você lembra do que quis mudar, não do que mudou sem perceber. E não é um caso isolado. Na pesquisa da Avnet com 530 engenheiros, 81% precisaram alterar desempenho ou funcionalidade do produto ao usar um substituto.
Sete arquivos, sete perguntas diferentes
Não existe um arquivo que contenha “a placa”. Cada arquivo exportado responde a uma pergunta diferente, e escolher a mais conveniente não garante que o resto seja livre de erros.
| Arquivo | Responde | Não responde |
|---|---|---|
| Netlist | Nets criadas, removidas, com pino ganho ou perdido | Geometria, posição, roteamento |
| BOM (xlsx/csv) | Part number, valor, footprint por designador | Se o componente cabe ou funciona |
| Gerber | Cobre, máscara e silk camada por camada | Intenção elétrica, conectividade |
| Excellon | Furo adicionado, removido ou deslocado, por span | Se o furo casa com o pad |
| Pick & place | Deslocamento, rotação, troca de lado e de valor | Cobre, nets, furação |
| ODB++ / IPC-2581 | Stackup, componentes, netlist, furação, contorno | Quase nada; é o dado mais completo |
| PDF de desenho | Diferença visual página a página | Nada em nível de dado; é pixel |
Netlist primeiro
É o único arquivo que descreve a intenção elétrica; o resto descreve o desenho em si. Duas coisas que descobri errando: relacione as “nets” pelo nome, porque algumas ferramentas eCAD renumeram os sinais a cada exportação; e use número de pad, não nome de pino, senão renomear VCC para VDD aparece como mudança de conectividade. Vale conferir também os sinais que perderam todas as conexões e se algum sinal sobrou com um pino só. Acidente de edição clássico, e passa no DRC.
BOM: o trabalho é abrir o arquivo
BOM (Bill Of Materials) vem em diferentes formatos. No Altium Designer, vem com bloco de título acima da tabela, coluna vazia, cabeçalho repetido e designador agrupado numa célula só, do tipo “R1, R2, R5”. É importante definir um denominador comum para a comparação, que muitas vezes é a coluna “Designator” ou “Ref Des”.
Gerber, e as extensões
A sobreposição por camada é a parte fácil. O difícil é saber qual arquivo da “revisão A” corresponde ao respectivo arquivo da “revisão B”. Diferentes eCADs usam diferentes formatos: Altium usa .GTL, .GBL e .G1 até .G30; KiCad usa .gbr com sufixo; EAGLE usa .cmp e .sol; OrCAD usa .art. Alguns fabricantes de PCBs mandam arquivos sem extensão nenhuma.
A Figura 1 mostra por que isso importa: catorze regiões alteradas espalhadas pela placa, várias com poucos pixels de diferença. Cada uma é fácil de ver isolada. Ninguém memoriza catorze localizações que mudaram entre revisões no design, especialmente após um ano depois da fabricação.
Uma opinião que eu sei não ser consenso: vermelho e verde é uma escolha ruim. Cerca de 8% dos homens têm deficiência de visão de cores nesse eixo, e para eles o overlay não informa nada.
Furação
Excellon renumera ferramenta entre exportações, então o casamento tem que ser por posição. A única variável de ajuste real é a tolerância de deslocamento, e eu ainda não achei um valor que sirva para todos os casos. O resto são armadilhas de leitura: supressão de zero, unidade só implícita no formato decimal, coordenada omitida.
Pick & place
É o arquivo mais bagunçado dos sete: delimitador varia, nome de coluna varia, e a unidade pode estar no preâmbulo, junto do valor ou em lugar nenhum. Exportação com configuração regional europeia vem com vírgula decimal, então 45,8500 mm é 45,85. E o delta de rotação tem que pegar o menor ângulo: 359° contra 1° é 2°.
ODB++ e IPC-2581
Um arquivo apenas que incorpora stackup, componentes, netlist, furação e contorno. Duas coisas que eu mudei depois de comparar esses arquivos de verdade: comparar áreas de cobre por contagem, porque uma camada real tem na ordem de milhares de “pads” e a comparação “registro por registro” só produz ruído; e comparação de stackups ordem física inteira, porque comparar por índice fazia toda camada abaixo de uma removida aparecer como “mudou de posição”.
Vale ainda uma verificação cruzada: os dois formatos declaram a espessura total da placa separada das espessuras por camada.
Os arquivos PDF são largamente utilizados entre diferentes equipes em um mesmo projeto para troca de informações, então esta opção funciona independentemente do programa CAD. Uma possível limitação: o pareamento é por índice de página, então inserir uma folha no meio do esquemático faz todas as seguintes detectarem diferenças.
Coisas para verificar antes de rodar comparações
- A extensão dos arquivos exportados tem formato proprietário. Um arquivo IPC-2581 é exportado como “.cvg” no Altium, e “.xml” por outras ferramentas. Detecte o formato pelo conteúdo.
- Arquivos ODB++ com diretórios em letra maiúscula abrem no Windows e retornam zero componente no Linux. Esse me custou uma tarde.
- Falsos positivos. Uma comparação com um arquivo “vazio” é indistinguível de “nada mudou”, e, numa ferramenta de verificação, essa é a pior falha possível.
Quando isso passa a ser requisito
A ISO 10007 pede identificação, controle, registro de situação e auditoria de configuração, e as quatro dependem de saber o que mudou entre duas revisões. A IEC 62402, de obsolescência, cobre exatamente o caso que abre este texto. Na maioria das empresas, essa evidência ainda é montada à mão.
Como comparar revisões de placas?
O conteúdo deste artigo veio a partir da minha experiência ao desenvolver uma ferramenta para esse propósito, o Kontr-Owl. A ideia é juntar os resultados em um único relatório (Figura 3). O programa foi escrito utilizando linguagem Python e é um executável portátil, não sendo necessária instalação. Rodando de forma 100% local, os arquivos de design e de propriedade intelectual nunca saem do seu computador, o que é essencial para empresas em áreas como Defesa e Aeroespacial.
Implementações futuras
A cobertura de formatos foi validada para as ferramentas Altium, Eagle e KiCAD. As próximas ferramentas testadas serão EasyEDA, Cadence OrCAD / Allegro, Siemens EDA PADS Professional, Zuken CR-8000 / CADSTAR e Mentor Xpedition.
A ferramenta contará com uma opção de comparar desenhos mecânicos exportados a partir de ferramentas eCADs (DXF/SVG/STEP).
Uma funcionalidade em desenvolvimento é a opção de incorporar um arquivo que configura as exportações do projeto no eCAD (ex.: “Kontr-Owl.OutJob” no Altium). Assim, os diretórios e formatos serão definidos de uma maneira que possibilite uma comparação automatizada e em série pela ferramenta Kontr-Owl.
Na sua equipe, a conferência entre a revisão anterior e a nova é etapa formal, com responsável, ou fica por conta de quem editou? E se alguém já foi mordido por erro introduzido numa correção, como ele apareceu: em revisão, em teste elétrico ou já na placa montada?
Referências
- Chip shortage: Engineers complain of prices, lead times (pesquisa Avnet, 530 engenheiros) – The Register: https://www.theregister.com/2022/03/25/chip_shortage_report/
- IPC-2581 – Generic Requirements for Manufacturing Description Data and Transfer Methodology. IPC.
- ISO 10007 – Quality management. Guidelines for configuration management. ISO.
- IEC 62402 – Obsolescence management. IEC.
- The Gerber Layer Format Specification, Revision 2024.05. Ucamco.
- MARCH, Samson. smarchWatch_PUBLIC (hardware aberto, GPL-3.0): https://github.com/S-March/smarchWatch_PUBLIC
- Little information loss with red-green color deficient vision in natural environments (deficiência de visão de cores): https://www.sciencedirect.com/science/article/pii/S2589004223014980
- Crédito para as Figuras 1, 2 e 3 e para a imagem destacada: renderizações produzidas pelo autor a partir dos arquivos do projeto smarchWatch de Samson March, licenciado sob GPL-3.0 (https://github.com/S-March/smarchWatch_PUBLIC).
Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
