agentee

仿真

射频仿真:FDTD 与级联

在 GPU 上运行 PCB 布局的全波 FDTD,放入供应商 S 参数和噪声数据,并读取增益、噪声系数、匹配和稳定性。

射频工作通常拆成两次仿真。对无源电路板做一次 FDTD 仿真,在有源器件或实测元件的位置放置端口,得到电路板的 S 参数。然后用级联把厂商的 S 参数、噪声和线性度数据接入这些端口。修改电路板就重跑 FDTD;更换器件就只重跑级联,只需几秒。

LNA 示例就是这样搭建的,本指南使用其中的文件。

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"

端口是覆盖整个焊盘的集总端口,向下延伸到下一铜层或你指定的 reference 层,默认 50 欧姆,除非另有说明。铜按各铜层上的薄片建模:焊盘、走线、跨层过孔作为镀层柱,以及带间距的铺铜填充。介质来自叠层,包含其损耗角正切。电容、电感和电阻默认按原理图值作为集总元件处理;[[models]] 可用自定义值覆盖,或将其留空。其他任何器件均留空。

已在 50 欧姆微带线上验证:回波损耗低于 -25 dB,插入损耗低于 0.2 dB,相速度与 Kirschning-Jansen 公式的偏差在 1.2% 以内。

运行前先估算规模

FDTD 开销很大。LNA 的六端口仿真在工作站 GPU 上耗时 27 分钟。务必先进行试运行:

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

这只需一秒,并告知仿真的成本:每个驱动端口一次仿真,每次覆盖相应数量的网格单元。为了迭代:

  • 从 cell = 0.1 开始,待设计稳定后再收紧到默认的 0.05。网格从铜边缘向外分级,因此最细的单元决定成本。
  • 用 region = [x0, y0, x1, y1] 裁剪到信号经过的电路板区域。
  • 用 excite = ["IN"] 仅驱动所需的端口。级联需要驱动所有端口,因此在那里省略 excite。
  • 在后台运行长时间仿真,同时继续编辑其他内容。当结果过期时,检查会发出警告。

运行并读取结果

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

仿真会在规范文件旁写入 .result.json 和 Touchstone .s6p 文件,文件名与规范文件一致。show 打印读数,render 绘制幅度图和史密斯圆图,与查看器的行为一致。

FDTD 仿真得到的 LNA 电路板 S 参数

结果记录其所见铜的哈希值(仅限仿真的 region)和叠层的哈希值。任一发生变化时,检查会警告结果已过期,任何读取该结果的操作(如级联或接口测量)都会失败,直到你重新运行。

级联

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"

每个器件通过其端口接入电路板。双端口放大器使用实测的 Touchstone 文件;双端器件使用厂商的夹具数据,mount = "shunt" 或 "series" 取决于测量方式。未接入器件的端口即为结果的端口。

当数据存在时,噪声和线性度会一并处理:文件中有 Touchstone 噪声块时使用该块,否则使用数据手册的 nf,以及每个频率的 oip3 和 p1db。[after] 是输出后级的阶段,此处为噪声系数 6 dB 的接收器,通过 Friis 公式级联。

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

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 大于 1,意味着放大器在该电路板上无条件稳定。噪声底为 -174 dBm/Hz 加上噪声系数加上带宽的 10 倍对数,SFDR 为 IIP3 的三分之二除以噪声底。

级联:增益、匹配、噪声系数和稳定性

当某器件没有数据时,频段被截断到所有器件都有数据的范围,超出数据范围的噪声系数留空而非猜测。

后处理而不重跑

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

sparam 适用于任何 FDTD 或级联结果:一个端口的 TDR、一对的混合模式 S 参数,以及频率域和阶跃响应中的串扰。当所有端口都被驱动时,它始终报告无源性和互易性。参见 眼图、PDN 和 S 参数。

场与辐射

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

FDTD 仿真还可以记录顶层下方预浸胶中的 E 场和 H 场分布,以及通过近场到远场变换得到的远场,最多四个频率。读数给出辐射功率占输入的比例、方向性,以及 1 mW 输入下 3 米处的峰值场强,对照 FCC B 类标准。端口为匹配负载,因此电缆和连接器不属于辐射体。

损耗

介质损耗遵循因果 Djordjevic-Sarkar 模型,针对每层的介电常数和损耗角正切进行拟合。铜为表面阻抗,遵循趋肤效应、叠层的粗糙度,以及当 finish = "ENIG" 时外层焊盘上的金和镍,其镍在几 GHz 以下会增加数倍于裸铜的电阻。FDTD 损耗参考 包含这些模型及其验证所用的测量数据。

改进此指南 · 面向智能体的 Markdown