agentee

Design

Especificações da placa, stackups e classes de rede

Escolher um fabricante e um stackup real, definir uma classe de rede por tipo de rede, e colocar neles alvos de impedância e corrente para que a verificação resolva as larguras.

A especificação da placa é o primeiro ficheiro de um projeto e aquele contra o qual tudo o resto é verificado. Nomeia o fabricante, o stackup, o contorno, os tipos de via e as classes de rede. Fazer bem primeiro: um layout roteado contra o stackup errado tem a impedância errada em todas as linhas controladas.

agentee new board sensor-node

Escolher um fabricante

name = "sensor-node"
fab = "jlcpcb"

fab escolhe um preset de regras: generic, jlcpcb ou hdi. O preset é uma tabela indexada pelo número de camadas de cobre, o peso do cobre externo e o acabamento, pelo que uma placa de quatro camadas de 1 oz tem regras de pista mais apertadas do que uma de duas camadas de 2 oz. Os valores jlcpcb seguem a página de capacidades da JLCPCB linha a linha; a referência de regras dá cada valor com a linha de onde vem, e os poucos lugares onde o agentee é mais estrito de propósito.

Substituir qualquer regra em [rules]:

[rules]
min_track_width = "0.15mm"
min_clearance = "0.15mm"

Escolher um stackup real

Não digitar espessuras de camadas. Escolher a construção própria do fabricante:

agentee stackups --fab jlcpcb --layers 4
agentee stackups --fab jlcpcb --layers 6 --thickness 1.6
agentee stackups JLC04161H-7628

Os presets cobrem todas as construções de impedância da JLCPCB, de 4 a 20 camadas e de 0,4 a 3,0 mm, as construções padrão da PCBWay, de 4 a 18 camadas, e duas construções HDI genéricas. Os presets da JLCPCB usam o próprio código do fabricante, JLC04161H-7628: camadas, espessura, cobre externo e interno, prepreg. O último comando imprime as camadas de um preset com a respetiva espessura e permissividade.

agentee edit board sensor-node stackup --preset JLC04161H-7628 --finish ENIG

Encomende a placa com a mesma construção: se a JLCPCB usar outro stackup, todas as impedâncias resolvidas ficam erradas.

Contorno, recortes e furos

agentee edit board sensor-node outline --size 50,30 --corner-radius 1mm
[[outline.cutouts]]
origin = [20, 12]
size = [6, 2]
corner_radius = 1              # half the width makes a slot

Um contorno é um retângulo com size, origin e corner_radius, ou um polígono de points. Um recorte é uma janela, fenda ou furo grande roteado através da placa, e tudo o que depende da borda (cobre até à borda, pads, áreas de cobre, o roteador, as simulações) trata a borda de um recorte como borda da placa. Um recorte no ficheiro de layout é diferente: apenas mantém as áreas de cobre afastadas de uma área em certas camadas.

Tipos de via

[[vias]]
name = "std"
drill = "0.3mm"
diameter = "0.6mm"

Uma placa pode listar vários tipos de via. Uma via atravessada não precisa de mais nada; vias cegas, enterradas e microvias precisam de um fabricante HDI e estão cobertas em HDI: microvias e laminação.

Classes de rede

Uma classe de rede define o que uma rede é: a largura da pista, o afastamento, as vias e os objetivos que a verificação exige. Dê a cada tipo de rede a sua própria classe. Uma rede deixada em Default gera um aviso, porque a classe decide como é roteada.

agentee edit board sensor-node class Signal --track-width 0.2mm --clearance 0.2mm --via std
agentee edit board sensor-node class Power --current 2A --max-temp-rise 10C
agentee edit board sensor-node class USB --impedance 90ohm --diff-gap 0.15mm --layers F.Cu
agentee edit board sensor-node class RF --impedance 50ohm --coplanar-gap 0.2mm --solver field --layers F.Cu

class edita a classe com esse nome no local ou adiciona-a. O que os objetivos fazem:

  • current é verificado contra o IPC-2221 em todas as camadas que a classe pode usar, a max_temp_rise (10 C por omissão). As camadas internas suportam menos corrente do que as externas, e a verificação indica a largura que a suporta em cada uma:
error: blinky.board.toml: blinky netclass Power on In2.Cu: 0.6mm carries only 0.451A for a 10C rise, 1A needs 1.7994mm (IPC-2221)
  • impedance é verificado em todas as camadas de layers. Omita track_width e a verificação resolve-o na primeira camada; indique widths por camada quando uma única largura não serve todas as camadas.
  • diff_gap torna a classe um par diferencial, e a sua impedância passa a ser a impedância diferencial.
  • coplanar_gap torna-a coplanar aterrada: a área de cobre mantém esse afastamento de cada lado, com o plano abaixo.
  • solver = "field" verifica a classe com o solver de campo da GPU, que inclui a máscara de solda e a espessura do cobre, em vez de fórmulas fechadas.

Ver o que o stackup fornece

agentee check
agentee show board:sensor-node

show imprime a placa resolvida em JSON: para cada classe e camada, a geometria da pista (microstrip nas camadas externas, stripline nas internas), a impedância, a largura que atinge o objetivo e a corrente que transporta. Quando uma classe está fora do objetivo, a verificação indica em quanto e o que usar:

error: lna.board.toml: lna netclass RF on F.Cu: field solver gives 59.4 ohm with solder mask, outside 50ohm +/- 5%, use track_width = "0.2985mm" (50.2 ohm)

Cole a largura e execute novamente a verificação. Impedância controlada e pares vai mais longe.

Definições de regras de design

As verificações de layout vêm de um registo de regras, cada uma com um id, uma categoria e uma severidade por omissão. A placa pode desativá-las ou alterar a respetiva severidade:

[drc]
disable = ["silk-width"]
severity = { "starved-thermal" = "error", "via-in-pad" = "warning" }

agentee drc NAME --list imprime todas as regras com indicação de se aplicam a esta placa e porquê. A referência das verificações de regras de design lista-as todas.

Lista de verificação

  • fab definido, e um preset de stackup que o fabricante realmente constrói.
  • Uma classe por tipo de rede: sinal, alimentação, massa, cada impedância, cada par.
  • Objetivos de impedância e corrente nas classes, em vez de larguras calculadas à mão.
  • solver = "field" em todas as classes onde alguns ohms importam.
  • agentee check limpo antes de o esquema começar a nomear classes.

Melhorar este guia · Markdown para agentes