设计
受控阻抗与差分对
闭式解和 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:NAMEtune 对每对线中较短的网络按偏斜进行蛇形走线,对每个匹配组中未达到目标长度的成员进行蛇形走线,选择最长的直线段,确保凸起避开其他所有网络,并将点写回走线。对于线对,优先凸起那些腿部已经分开的拉伸段。超过目标长度的网络会被报告,但不会被缩短。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-gen2 | 90 欧姆 +/-7% 差分 | 5 密耳 | 2 | 15 密耳残桩,3500 / 3000 密耳长,回流过孔在 200 密耳内 |
usb2-hs | 90 欧姆 +/-10% 差分 | 50 密耳 | 4 | 12000 密耳长 |
lvds | 100 欧姆 +/-10% 差分 | |||
rf-50 | 50 欧姆 +/-10% | 0 | ||
cmos | 2 毫米无参考平面 |
USB 数值是 TI 的高速布局指南。除了网络类目标外,接口还会检查端到端长度、每条走线的过孔数、过孔短截线、下方无参考平面的走线长度、每个信号过孔旁的接地过孔,以及对于总线,到达展宽和相对于时钟的窗口。它还可以读取完成的仿真:来自 FDTD 运行的最差插入损耗和回波损耗以及模式转换,以及来自通道仿真的眼图高度和宽度。参见 眼图、PDN 和 S 参数。
tune 在接口上同时处理时间和长度:偏斜超过皮秒限制的线对,以及超出时钟窗口的总线,会根据每个网络自身的每毫米延迟,延长较短的一侧。