跳转至

从 Golden Model 到 First Silicon

分层验证

阶段 主要目标 典型证据
Bit-true model 算法与定点精度 vector、bit-exact diff、PER curve
RTL/UVM 协议、边界与并发 assertion、functional/code coverage
FPGA/Emulation Firmware/Host 联调与长序列 boot、ring、loopback、trace
First Silicon 时钟电源、总线、MAC/PHY/RF register、scope、instrument、sniffer
Characterization PVT 与性能边界 power/EVM/PER/sensitivity matrix

Coverage 数字不是目标本身。必须把 BA wrap、Ring full、Trigger deadline、Key 重装、Reset inflight、低功耗竞态等系统场景写进 functional coverage。

Bring-up 梯子

Power/clock/reset/JTAG
→ BootROM + memory
→ Firmware download/heartbeat
→ Host Interface register/interrupt
→ DMA/Ring loopback
→ MAC internal loopback
→ PHY digital loopback
→ RF conducted TX
→ RF conducted RX
→ OTA association/data

每一级只引入一个新的不确定域。若直接从上电跳到 OTA 连接失败,Host、Firmware、MAC、PHY、RF、Board 和对端都会成为嫌疑人。

Golden Vector 对齐

固定 Scrambler seed、FEC、MCS、RU、GI/LTF 和 PSDU,逐级比较 encoder、mapper、FFT/IFFT、SIG、TXVECTOR/RXVECTOR。允许的舍入/饱和必须写入模型规范;“波形看起来差不多”不能作为通过标准。

Fault Injection

  • Descriptor 长度/版本错误、Ring wrap 和 completion loss;
  • Firmware task starvation、重复/迟到 event;
  • BA hole、Sequence wrap、reorder timeout;
  • Key install/reset/suspend 竞态;
  • Trigger buffer empty、deadline miss、错误 RU;
  • AGC saturation、CFO、低 SNR 和干扰。

注入后的验收包括正确 reason、有限时间恢复、无资源泄漏、Trace 足以定位,而不只是“系统没有崩”。

闭环

Silicon 或现场问题修复后,应向前回灌:Firmware 单测、Driver fault injection、UVM sequence、model vector 或生产筛选项。否则知识只停留在一次性报告里。

一条需求拆成Stimulus、Checker与Coverage

以“有效Peer的合法Trigger在允许条件下得到及时响应”为教学需求。Stimulus选择RU/MCS/长度与Context;Checker验证实际Vector、发射起点、PPDU结果和错误原因;Coverage覆盖参数和边界状态。

非法RU、不匹配AID、无Buffer、切信道和旧generation是不同测试,不应只增加随机包量。允许不响应的条件也要有明确checker,避免所有缺响应都被判同一种失败。

Golden Model与RTL差异怎么定位

逐级比较scrambler、FEC、mapper、频域tone、IFFT、定点缩放和输出样本。发现差异时先确认同一seed、参数和位宽,再看舍入/饱和。

教学例:模型32-bit中间结果直接截断,而RTL四舍五入,平均误差可能很小但bit-true测试持续失败。需要先定义规格允许的量化方式,再判断设计是否错误;不能修改测试容差到“刚好通过”。

FPGA与Silicon分别证明什么

FPGA/emulation适合长序列、Host/FW交互、状态机和资源管理,但时钟频率、内存延迟、模拟前端与真实芯片不同。FPGA连接通过不能证明Silicon SIFS、PVT和RF指标通过。

Silicon bring-up先确认电源/clock/reset、寄存器和内存,再验证HIF/中断/DMA、数字loopback、conducted、真实协议。每一步保存进入条件、输入向量、输出与停止条件,失败时只增加有限未知因素。

覆盖率的危险误读

Code coverage表示结构执行;functional coverage表示目标场景命中;assertion检查不变量;cross coverage检查组合。全部模块单独通过,不证明 rekey × reorder × reset 交错正确。

随机种子、build ID、硬件revision和配置应可回放。一次失败重跑成功仍要记录flaky原因;不能只保留最后一次通过结果。

复习追问与答案

为什么优先数字loopback? 隔离模拟和对端因素,验证已有数字路径后再扩大测试范围。

如何选择cross coverage? 依据共享资源和生命周期风险,而非把所有参数做无界笛卡尔积。

修复现场问题后需要什么? 将最小触发序列回灌到最早能复现的模型/RTL/FW/Host测试层,并保留系统级回归。

深入:Coverage与追溯