agentee

Simulación

Simulación RF: FDTD y cascada

Ejecuta un FDTD de onda completa de un layout en la GPU, introduce parámetros S y datos de ruido del fabricante, y lee ganancia, figura de ruido, adaptación y estabilidad.

Para el trabajo en RF, la división habitual es dos simulaciones. Una ejecución FDTD de la placa pasiva, con un puerto en cada punto donde hay un componente activo o un componente medido, da los parámetros S de la placa. Después, una cascada introduce en esos puertos los parámetros S, el ruido y los datos de linealidad del fabricante. Si cambias la placa, vuelves a ejecutar la FDTD; si cambias un componente, solo vuelves a ejecutar la cascada, que tarda segundos.

El ejemplo de LNA se construye así, y esta guía usa sus archivos.

La ejecución 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"

Un puerto es un puerto lumped sobre un pad completo, hasta la siguiente capa de cobre o hasta la capa reference que indiques, de 50 ohmios salvo que se indique lo contrario. El cobre se modela como láminas en cada capa de cobre: pads, pistas, vías como columnas bañadas entre las capas que abarcan, y rellenos de zona con sus despejes. Los dieléctricos provienen del apilamiento con su tangente de pérdida. Los condensadores, inductores y resistencias toman su valor del esquemático como componentes lumped por defecto; [[models]] lo sustituye por un valor propio o lo deja abierto. Cualquier otro componente queda abierto.

Validado en una microstrip de 50 ohmios: pérdida de retorno por debajo de -25 dB, pérdida de inserción por debajo de 0,2 dB y velocidad de fase dentro del 1,2 % de Kirschning-Jansen.

Dimensiona antes de ejecutar

FDTD es caro. La ejecución de seis puertos del LNA tardó 27 minutos en una GPU de estación de trabajo. Haz siempre una ejecución en seco primero:

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

Eso tarda un segundo y dice cuánto costará la ejecución: una ejecución por puerto excitado, cada una sobre una malla de tantas celdas. Para iterar:

  • Empieza con cell = 0.1 y solo ajusta al valor predeterminado de 0.05 cuando el diseño se haya estabilizado. La malla se degrada desde los bordes del cobre, así que la celda más fina marca el coste.
  • Recorta con region = [x0, y0, x1, y1] a la parte de la placa por la que cruza la señal.
  • Excita solo los puertos que necesitas con excite = ["IN"]. Una cascada necesita todos los puertos excitados, así que omite excite ahí.
  • Ejecuta simulaciones largas en segundo plano y sigue editando otras cosas. La verificación avisa cuando un resultado se ha desactualizado.

Ejecuta y lee

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

La ejecución escribe un .result.json y un Touchstone .s6p junto a la especificación, con el nombre del archivo de especificación. show imprime las lecturas, y render dibuja el gráfico de magnitud y un diagrama de Smith, como hace el visor.

Parámetros S de la placa del LNA de la ejecución FDTD

El resultado registra un hash del cobre que vio (solo la region de la simulación) y del apilamiento. Cuando cambia cualquiera de los dos, la verificación avisa de que el resultado está desactualizado, y todo lo que lo lea, una cascada o una medida de interfaz, falla hasta que lo vuelvas a ejecutar.

La cascada

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 se une a la placa en sus puertos. Un amplificador de dos puertos toma su archivo Touchstone como medido; un componente de dos terminales toma los datos de montaje del fabricante, mount = "shunt" o "series" según cómo se midió. Los puertos que no se unen a un dispositivo son los puertos del resultado.

El ruido y la linealidad van por delante cuando hay datos: el bloque de ruido del Touchstone si el archivo lo tiene, el nf de la hoja de datos si no, y oip3 y p1db por frecuencia. [after] es el etapa detrás de la salida, un receptor con una figura de ruido de 6 dB aquí, unido por Friis.

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

Las lecturas para el 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 por encima de 1 a cada frecuencia significa que el amplificador es incondicionalmente estable en esta placa. El suelo de ruido es -174 dBm/Hz más la figura de ruido más 10 log de la banda, y SFDR es dos tercios de IIP3 sobre el suelo.

La cascada: ganancia, adaptación, figura de ruido y estabilidad

Cuando un dispositivo no tiene datos, la banda se recorta a donde todos los dispositivos tienen algo, y una figura de ruido fuera de los datos se deja en blanco en lugar de adivinarla.

Post-procesa sin volver a ejecutar

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

sparam funciona con cualquier resultado FDTD o en cascada: un TDR de un puerto, parámetros S en modo mixto de un par y diafonía en frecuencia y como escalón. Siempre informa de pasividad y reciprocidad cuando se excitó cada puerto. Consulta Diagramas de ojo, PDN y parámetros S.

Campos y emisiones

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

Una ejecución FDTD también puede registrar mapas de campo E y H en el prepreg bajo la capa superior, y el campo lejano de una transformación de cercano a lejano, en hasta cuatro frecuencias. Las lecturas dan la potencia radiada como fracción de la entrada, la directividad, y el campo pico a 3 m con 1 mW de entrada, frente a la clase B de la FCC. Los puertos son cargas adaptadas, así que los cables y conectores no forman parte del radiador.

Pérdidas

La pérdida dieléctrica sigue un modelo causal Djordjevic-Sarkar ajustado a la permitividad y la tangente de pérdida de cada capa. El cobre es una impedancia de superficie que sigue el efecto de piel, la rugosidad del apilamiento y, con finish = "ENIG", el oro y el níquel en los pads exteriores, cuyo níquel añade varias veces la resistencia del cobre desnudo por debajo de unos pocos GHz. La referencia de pérdidas FDTD tiene los modelos y las medidas con las que se verificaron.

Mejorar esta guía · Markdown para agentes