agentee

设计

受控阻抗与差分对

闭式解和 GPU 场求解的走线宽度、共面射频线、差分对、长度匹配以及 USB 3 等接口。

受控阻抗线是三者之间的承诺:叠层、走线宽度和周围的铜。agentee 在一个地方保持这个承诺,即网络类,并检查该类的每条走线。

先询问

agentee calc impedance --layer F.Cu --target 50ohm
agentee calc impedance --layer F.Cu --target 90ohm --gap 0.15mm
agentee calc trace-width --current 2A

这些读取项目中的电路板。第一个回答顶层 50 欧姆微带线的宽度;第二个回答 0.15 mm 间距的 90 欧姆差分对:

{
  "geometry": { "er": 4.4, "h_mm": 0.2104, "kind": "microstrip", "t_mm": 0.035 },
  "line": { "coplanar_gap_mm": null, "diff_gap_mm": 0.15 },
  "target_ohm": 90.0,
  "width_for_target_mm": 0.2682
}

闭式解是微带的 Hammerstad-Jensen、带状线的 Wheeler 和接地共面线的保角映射,均未涂覆。它们忽略阻焊,在薄预浸料上可能偏差几个欧姆。

求解场

agentee calc field --netclass RF
agentee calc field --netclass RF --sweep 10MHz,6GHz,21

场求解器在 GPU 上运行截面的有限差分拉普拉斯求解,包含铜厚、阻焊、共面地和差分对。它在 Cohn 的精确带状线内 0.5% 和 Hammerstad-Jensen 微带内 0.4%,耗时不到一秒:

{
  "closed_form_uncoated_ohm": 51.12,
  "coplanar_gap_mm": 0.2,
  "field": {
    "backend": "gpu",
    "eeff": 3.094,
    "delay_ps_per_mm": 5.87,
    "z0": 49.88
  },
  "solder_mask": true,
  "width_mm": 0.3
}

--sweep 添加每个频率的损耗表:R、L、G、C、Z0 以及每米和每英寸的 dB,分为导体损耗和介质损耗,包含趋肤效应、来自叠层的铜粗糙度(roughness 或 huray)和因果介质模型。没有 GPU 时,2D 求解器回退到 CPU。

将目标放在网络类上

[[netclasses]]
name = "RF"
impedance = "50ohm"
impedance_tolerance = "5%"
coplanar_gap = "0.2mm"
layers = ["F.Cu"]
solver = "field"

使用 solver = "field",检查会在它可能使用的每一层上求解网络类,并在偏离时说明偏差多少以及应使用什么:

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)

省略 track_width,检查会为第一层求解它。如果一个宽度不适合每一层,提供 widths = { "In2.Cu" = "0.16mm" }。

在电路板上保持

网络类是承诺;PCB 布局保持它。检查测量阻抗类的每条走线:

  • 当走线的宽度、其颈缩,或外层旁边的铜使其阻抗超出容差时,impedance-trace 是错误。铺铜太远的共面线,或颈缩太长的线,会在这里被捕获。
  • impedance-width 警告该类的走线在另一个宽度。
  • neckdown 记录比其网络类窄的走线,短距离进入小焊盘,这在网络类 neckdown 长度内是允许的(默认 0.5 mm)。

agentee neck NAME 颈缩进入比走线窄的焊盘的现有走线末端,--taper 在短链上逐步恢复宽度。

差分对

[[netclasses]]
name = "USB"
impedance = "90ohm"
diff_gap = "0.15mm"
layers = ["F.Cu"]
max_skew = "0.1mm"

diff_gap 使网络类成为差分对,其阻抗为差分。以 _P 和 _N、_DP 和 _DN、+ 和 -,或 P 和 N 结尾的网络自动配对;否则在 PCB 布局中命名它们:

[[pairs]]
p = "USB_DP"
n = "USB_DN"
max_skew = "0.1mm"

calc field --netclass USB 添加一个 pair 块:差分阻抗、共模阻抗、奇模和偶模阻抗与延迟、耦合系数以及长线近端串扰。检查报告每对线的偏斜(以毫米和皮秒计)、超出 max_uncoupled 的错误间距拉伸,以及并行走线长度不足总长 80% 的线对。穿过串联元件(如 USB 通道上的交流电容)的线对按端到端测量。agentee route NAME --nets 'USB_*' --pairs 将两半线一起布线。

长度匹配

[[match_groups]]
name = "ddr-dq0"
nets = ["DQ?", "DQS0_*"]
tolerance = "0.5mm"
agentee tune NAME
agentee show pcb:NAME

tune 对每对线中较短的网络按偏斜进行蛇形走线,对每个匹配组中未达到目标长度的成员进行蛇形走线,选择最长的直线段,确保凸起避开其他所有网络,并将点写回走线。对于线对,优先凸起那些腿部已经分开的拉伸段。超过目标长度的网络会被报告,但不会被缩短。agentee calc serpentine --from 10,5 --to 20,5 --add 2.5mm 给出您选定线段上单个蛇形走线的点。网络长度和延迟在 show 中显示。

接口

接口声明链路必须满足的条件,检查一次性测量铜皮是否满足所有条件:

[[interfaces]]
name = "usb-ss"
preset = "usb3-gen1"
nets = ["SS_TX*", "SS_RX*"]
预设阻抗偏斜过孔其他
usb3-gen1、usb3-gen290 欧姆 +/-7% 差分5 密耳215 密耳残桩,3500 / 3000 密耳长,回流过孔在 200 密耳内
usb2-hs90 欧姆 +/-10% 差分50 密耳412000 密耳长
lvds100 欧姆 +/-10% 差分
rf-5050 欧姆 +/-10%0
cmos2 毫米无参考平面

USB 数值是 TI 的高速布局指南。除了网络类目标外,接口还会检查端到端长度、每条走线的过孔数、过孔短截线、下方无参考平面的走线长度、每个信号过孔旁的接地过孔,以及对于总线,到达展宽和相对于时钟的窗口。它还可以读取完成的仿真:来自 FDTD 运行的最差插入损耗和回波损耗以及模式转换,以及来自通道仿真的眼图高度和宽度。参见 眼图、PDN 和 S 参数。

tune 在接口上同时处理时间和长度:偏斜超过皮秒限制的线对,以及超出时钟窗口的总线,会根据每个网络自身的每毫米延迟,延长较短的一侧。

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