第三节:测试前准备——硬件、软件与文档,一个都不能少
做FRL训练测试,最怕什么?
不是测试本身多复杂,而是你刚搭好环境,发现某个夹具没准备,或者示波器驱动版本不对。
这种低级错误,浪费的不只是时间,还有测试数据的一致性。我见过不少团队,硬件环境不一样,测试结果对不上,吵了半天才发现是夹具型号不同。
所以这节课,咱们认认真真把准备工作理一遍。你想想看,测试前准备到位了,后面所有环节都会顺很多。
硬件环境:测试板和夹具
先聊硬件。这是最基础的一环,但也是犯错最多的地方。
我个人习惯,拿到一个新项目,会先列一个硬件检查清单。咱们FRL测试,核心硬件就两样:测试板和夹具。
测试板,说白了就是你被测设备(DUT)的载体。它必须满足几个条件:
- 支持FRL训练频率:通常要覆盖1.6GHz到12.8GHz,甚至更高。
- 走线阻抗控制:差分阻抗100Ω,单端50Ω,偏差不能超过±10%。
- 参考时钟:100MHz或133MHz,要求抖动低于配套规范。
- 专用插座和连接器:SMPM、G3PO这些高频接口,别用普通SMA凑合。
我记得有一次,项目进度很紧,同事图省事用了一个普通SMA接头做测试。结果高频段上去,反射直接爆表,数据根本没法看。排查了两天才发现是接头问题。
嗯,后来我就养成了一个习惯:所有高频接口都必须有原厂的性能报告。哪怕贵一点,也比后期返工强。
夹具呢?它起两个作用:
- 信号转接:把DUT的微带线、共面波导,转接到标准同轴接口。
- 提供测试通路:包括走线、过孔、焊盘,每个节点都会影响信号完整性。
选夹具时我会重点关注这几点:
- 插入损耗:整个通路损耗要小于1.5dB@12.8GHz。
- 回波损耗:至少-15dB以下。
- 串扰:邻近通道串扰必须低于-30dB。
- 时延一致性:各通道之间时延差不超过5ps。
你可能会问,为什么这么严格?
因为FRL训练信号本身就是高速数字信号,任何一点阻抗不连续,都会在眼图上留下“伤疤”。眼图闭合了,测试结果就废了。
软件工具:Python与示波器驱动
硬件准备好了,接下来是软件。
我个人习惯,环境搭建顺序是:先装驱动,再装Python,最后装第三方库。反过来容易出各种奇怪的问题。
Python环境:推荐用Python 3.8以上版本,64位。
必须的库就这几个:
# 核心库
pyvisa>=1.11.3 # 仪器控制标准库
numpy>=1.21.0 # 数据处理
matplotlib>=3.4.0 # 绘图
scipy>=1.7.0 # 信号处理(滤波器、插值等)
# 可选但推荐
pandas>=1.3.0 # 数据分析框架
pyvisa-py>=0.5.1 # pyVISA的纯Python后端
示波器驱动:现在主流示波器都支持IVI驱动。
安装流程:
- 下载示波器厂商提供的IVI驱动安装包(Keysight IO Libraries Suite或Tektronix的VISA驱动)。
- 安装后,用VISA寻找仪器资源。
- Python里通过pyvisa调用:
import pyvisa
rm = pyvisa.ResourceManager()
resources = rm.list_resources()
print(resources)
# 会输出类似:'TCPIP0::192.168.1.100::inst0::INSTR'
为什么一定要搞定驱动?
因为控制示波器抓取FRL训练序列、设置带宽、采样率,全靠它。我遇到过的情况是:驱动版本和示波器固件不匹配,读取波形时一直报超时。换了两个版本才解决。所以我建议:固定一个版本组合做验证,不要频繁升级。
文档与规范版本
最后,也是最容易被忽略的——文档。
做测试不是拍脑袋。每一步都要有依据。我个人习惯,把以下文档打印出来贴在工作站旁边:
| 文档名称 | 版本要求 | 核心内容 |
|---|---|---|
| PCI Express Base Specification Rev 6.0 | 6.0.1或更新 | FRL物理层定义、训练状态机、电气参数 |
| PCI Express Electrical Compliance Test Spec Rev 6.0 | 6.0.2 | 详细的测试步骤、极限值、配置要求 |
| Ethernet CTS(一致性测试规范) | 按具体项目选择 | FRL模式下特定协议层测试条目 |
| 测试计划 | 内部版本 | 自定测试矩阵、优先级、数据记录格式 |
为什么强调版本?
因为规范本身也在迭代。我见过有人拿PCIe 5.0的电气参数去要求PCIe 6.0的FRL训练,测出来的东西根本不符合新规范。你说冤不冤?
系统环境要求:
- 温湿度:25℃±3℃,相对湿度40%~60%。
- 电磁环境:RF干扰源(如Wi-Fi、手机基站)距离测试台至少2米。
- 电源质量:使用隔离电源,电压波动小于1%。
预检清单(我每次必查):
- 测试板校准件是否在有效期内?
- 示波器带宽是否足够(至少13GHz)?
- Python环境与驱动是否已经跑过一遍demo?
- 规范版本是否是最新?
- 记录表格是否完整?
你看,这些看起来都是小事。但积少成多,就成了测试质量问题。
接下来的实际测试环节,我会基于这套准备环境,带大家走一遍FRL训练的完整测试流程。你如果按这个清单做了准备,后面几乎不会遇到卡住的情况。