Placa
Impedância e perdas
Geometria de pistas por classe e camada, impedância em forma fechada e resolvida por campos, pares diferenciais, e o modelo de perdas com rugosidade e ENIG.
Para cada classe de rede e camada de roteamento, encontra a geometria do traço a partir do stackup (camadas externas são microstrip, camadas internas são stripline entre o cobre mais próximo acima e abaixo), depois a impedância (microstrip Hammerstad-Jensen, stripline Wheeler, coplanaar com massa por mapeamento conforme com a espessura do cobre e paredes laterais, tudo sem revestimento; a forma coplanaar fica dentro de 4% do solver de campo de um núcleo de 0,08 mm a 0,21 mm), a largura que atinge o alvo e a capacidade de corrente IPC-2221. agentee show <board> imprime tudo em JSON.
Com solver = "field", a classe é verificada pelo solver de campo 2D: uma resolução de Laplace por diferenças finitas baseada em nós, numa malha graduada, executada na GPU através de wgpu, incluindo espessura de cobre, máscara de solda, terras coplanares e pares. Em referências exatas, fica dentro de 0,5% da stripline de espessura zero de Cohn e 0,4% da microstrip de Hammerstad-Jensen. Quando a classe está fora da meta, a verificação sugere a largura de pista que a atinge. agentee calc field --netclass RF imprime o resultado completo (Z0, eeff, C e L por metro, atraso, grelha).
--sweep 10MHz,20GHz,21 (MCP sweep) acrescenta uma tabela de perdas por frequência: R, L, G, C, Z0 e dB por metro e por polegada, divididas em perdas de condutor e dielétrico. As perdas de condutor provêm da indutância incremental de Wheeler, resolvida recuando todas as superfícies de cobre no solver de campo (dentro de 1% da fórmula de stripline de Wheeler em Pozar), com profundidade de pele do cobre recozido e a resistência CC misturada como sqrt(Rdc^2 + Rac^2). Os dielétricos seguem o modelo causal Djordjevic-Sarkar ajustado ao er e loss_tangent de cada camada, tomados como valores a 1 GHz. A rugosidade do cobre é definida no stackup:
[stackup]
roughness = "0.5um" # rms, Hammerstad-Jensen
# huray = { radius = "0.5um", ratio = 2.0 } # or the Huray snowball model
finish = "ENIG"
nickel = "4.5um" # ENIG nickel thickness, default 4.5 um
gold = "0.075um" # ENIG immersion gold thickness, default 0.075 umO solver 2D aplica a rugosidade como um fator de perdas na resistência a cada frequência. O FDTD usa a rugosidade e o acabamento ENIG conforme descrito em "Perdas no FDTD" abaixo; nickel e gold só importam quando finish = "ENIG". Os valores por omissão são o meio das janelas IPC-4552 (3 a 6 um de níquel, ouro 0,05 um mínimo, com os fabricantes a visar 0,05 a 0,1 um).
Uma classe com diff_gap é um par: a sua impedance é a impedância diferencial, e o solver executa ambos os modos ímpar e par. O calc field acrescenta então um bloco pair com Zdiff, Zcommon, as impedâncias e atrasos dos modos ímpar e par, o coeficiente de acoplamento (Ze - Zo)/(Ze + Zo) e o crosstalk de perto saturado de uma linha longa (metade do acoplamento). Os dois modos ficam dentro de 0,5% da stripline de acoplamento de borda exata de Cohn. A diferença entre os atrasos ímpar e par é o que conduz o crosstalk de longe no microstrip.