agentee

Simular

Simulação RF: FDTD e cascata

Executar um FDTD de onda completa de um layout na GPU, inserir parâmetros S e dados de ruído do fabricante, e ler ganho, figura de ruído, casamento e estabilidade.

Para trabalho de RF, a divisão habitual é duas simulações. Uma execução FDTD da placa passiva, com uma porta em cada local onde se encontra um componente ativo ou um componente medido, fornece os parâmetros S da placa. Uma cascata insere depois os parâmetros S, o ruído e os dados de linearidade do fabricante nessas portas. Altere a placa e volte a executar a FDTD; altere um componente e volte a executar apenas a cascata, que demora segundos.

O exemplo LNA é construído desta forma, e este guia utiliza os seus ficheiros.

A execução FDTD

name = "lna-rf"
layout = "lna"
cell = 0.1

[frequency]
start = "50MHz"
stop = "6GHz"
points = 596

[[ports]]
name = "IN"
pad = "J1.1"
reference = "In2.Cu"

[[ports]]
name = "AMP_IN"
pad = "U1.1"
reference = "In2.Cu"

[[ports]]
name = "AMP_OUT"
pad = "U1.3"
reference = "In2.Cu"

Uma porta é uma porta lumped sobre um pad inteiro, até à camada de cobre seguinte ou até à camada reference que indicar, 50 ohm, salvo indicação em contrário. O cobre é modelado como folhas em cada camada de cobre: pads, pistas, vias como colunas com revestimento entre as camadas que atravessam, e preenchimentos de área com os respetivos afastamentos. Os dielétricos provêm do stackup, com o respetivo tangente de perdas. Capacitores, indutores e resistores tomam o valor do esquema como componentes lumped por omissão; [[models]] substitui um valor por outro próprio, ou deixa-o aberto. Qualquer outro componente fica aberto.

Validado num microstrip de 50 ohm: perda de retorno inferior a -25 dB, perda de inserção inferior a 0,2 dB, e velocidade de fase dentro de 1,2% de Kirschning-Jansen.

Dimensione antes de executar

A FDTD é cara. A execução de seis portas do LNA demorou 27 minutos numa GPU de estação de trabalho. Faça sempre uma pré-execução primeiro:

agentee sim lna-rf --dry-run
{
  "cells_millions": 4.202388,
  "dt_fs": 120.43,
  "grid": [335, 234, 55],
  "runs": 6,
  "max_steps": 150000
}

Isto demora um segundo e indica o custo da execução: uma execução por porta excitada, cada uma sobre uma grelha com esse número de células. Para iterar:

  • Comece com cell = 0.1 e só afine para o valor predefinido de 0.05 quando o design estiver estabilizado. A grelha afina a partir das arestas do cobre, pelo que a célula mais fina define o custo.
  • Recorte com region = [x0, y0, x1, y1] para a parte da placa que o sinal atravessa.
  • Excite apenas as portas de que precisa com excite = ["IN"]. Uma cascata precisa de todas as portas excitadas, pelo que omita excite aí.
  • Execute simulações longas em segundo plano e continue a editar outras coisas. A verificação avisa quando um resultado ficou desatualizado.

Execute e leia

agentee sim lna-rf
agentee show sim:lna-rf
agentee render sim:lna-rf -o lna-rf.png

A execução escreve um .result.json e um Touchstone .s6p junto da especificação, com o nome do ficheiro da especificação. O show imprime as leituras, e o render desenha o gráfico de magnitude e um diagrama de Smith, tal como o visualizador.

Parâmetros S da placa LNA a partir da execução FDTD

O resultado regista um hash do cobre que viu (apenas a region da simulação) e do stackup. Quando qualquer um mudar, a verificação avisa que o resultado está desatualizado, e qualquer coisa que o leia, uma cascata ou uma medição de interface, falha até voltar a executar.

A cascata

name = "lna-cascade"
kind = "cascade"
board = "lna-rf"
bandwidth = "2MHz"
report = ["900MHz", "1090MHz", "1.9GHz"]

[after]
nf = 6.0

[[devices]]
ref = "U1"
file = "models/qorvo_spf5189z.s2p"
ports = ["AMP_IN", "AMP_OUT"]

[[devices.datasheet]]
freq = "0.9GHz"
nf = 0.55
oip3 = 38.5
p1db = 22.4

[[devices]]
ref = "L1"
file = "models/coilcraft_bcr-162.s2p"
ports = ["L1"]
mount = "shunt"

Cada dispositivo liga-se à placa nas suas portas. Um amplificador de duas portas toma o seu ficheiro Touchstone como medido; um componente de dois terminais toma os dados de fixação do fabricante, mount = "shunt" ou "series" conforme foi medido. As portas não ligadas a um dispositivo são as portas do resultado.

O ruído e a linearidade acompanham quando os dados existem: o bloco de ruído Touchstone quando o ficheiro o tem, o nf da folha de dados em caso contrário, e oip3 e p1db por frequência. O [after] é o estágio atrás da saída, um receptor com uma figura de ruído de 6 dB aqui, ligado por Friis.

agentee sim lna-cascade
agentee show sim:lna-cascade

As leituras para o LNA:

gain peak       27.0 dB    S21 at 50 MHz
input match     -5.1 dB    S11 at 4.380 GHz
output match    -9.9 dB    S22 at 4.420 GHz
stability mu    1.14       lowest at 60 MHz
noise figure    0.93 dB    best at 800 MHz, worst 2.16 dB at 2.200 GHz
at 900 MHz      gain 17.7 dB, NF 1.00 dB, floor -110.0 dBm, SFDR 86.8 dB, IIP3 20.3 dBm, P1dB out 21.9 dBm
at 1.090 GHz    gain 16.2 dB, NF 1.31 dB, floor -109.7 dBm, SFDR 87.9 dB, IIP3 22.2 dBm, P1dB out 21.9 dBm

Mu acima de 1 em todas as frequências significa que o amplificador é incondicionalmente estável nesta placa. O piso de ruído é -174 dBm/Hz mais a figura de ruído mais 10 log da largura de banda, e o SFDR é dois terços do IIP3 sobre o piso.

A cascata: ganho, casamento, figura de ruído e estabilidade

Quando um dispositivo não tem dados, a banda é cortada para onde todos os dispositivos têm alguns, e uma figura de ruído fora dos dados fica em branco em vez de ser estimada.

Pós-processe sem voltar a executar

agentee sparam lna-rf --tdr IN --rise 50ps
agentee sparam link --pair 1,2,3,4
agentee sparam link --xtalk 1,3

sparam funciona com qualquer resultado FDTD ou em cascata: um TDR de uma porta, parâmetros S em modo misto de um par e interferência cruzada em frequência e como degrau. Relata sempre passividade e reciprocidade quando todas as portas foram excitadas. Veja Diagramas de olho, PDN e parâmetros S.

Campos e emissões

fields = ["1090MHz", "2.4GHz"]
far_field = true

Uma execução FDTD pode também registar mapas de campos E e H no prepreg sob a camada superior, e o campo distante a partir de uma transformação de perto para longe, em até quatro frequências. As leituras dão a potência radiada como fração da entrada, a diretividade, e o campo de pico a 3 m para 1 mW de entrada, contra a classe B da FCC. As portas são cargas casadas, pelo que cabos e conectores não fazem parte do radiador.

Perdas

A perda dielétrica segue um modelo causal Djordjevic-Sarkar ajustado à permissividade e ao tangente de perdas de cada camada. O cobre é uma impedância de superfície que segue o efeito de pele, a rugosidade do stackup e, com finish = "ENIG", o ouro e o níquel nos pads externos, cujo níquel adiciona várias vezes a resistência do cobre nu abaixo de alguns GHz. A referência de perdas FDTD tem os modelos e as medições contra os quais foram verificados.

Melhorar este guia · Markdown para agentes