读懂 DUT、Testbench 与软硬件分工
明确设计边界、激励、检查器与交互接口各自的职责。
先修知识能阅读简单 Verilog 模块。
适用环境通用 RTL 方法;具体工具与器件选项以项目版本为准
验证状态ready/valid 正常与故障变体已软件自检 · 软硬件迁移待设备验证
画出边界
DUT 是被验证的设计。Testbench 产生输入、观察输出,并将行为与预期比较。把顶层连接画出来,标明时钟、复位、输入输出、存储器和外部模型。边界应能解释每一个进入 DUT 的信号由谁驱动。
按行为划分,而非按文件划分
可综合 RTL、文件读写、动态对象和延时激励可能位于同一个文件,但它们适合的执行位置不同。迁移时分别检查综合支持、运行时访问和跨边界通信。将每周期软件交互改成批量事务可能减少通信,但必须保持数据顺序和握手语义。
建立检查闭环
驱动器发出请求,监视器采集实际响应,参考模型计算预期,检查器比较两者。先用短确定性测试排除连接与复位问题,再加入随机测试。只看到波形有跳变,不能证明设计正确。
原理与信号关系
DUT 负责被验证的功能,Testbench 负责产生输入并判断结果。Driver 只在 valid 与 ready 同时为 1 的采样边沿把事务记为已发送;Monitor 必须独立观察实际握手,不能直接把 Driver 的计划当作 DUT 已接收的事实。Scoreboard 保存已接收输入对应的期望值,并与实际输出逐笔比较。软件模型、文件读写和随机激励通常留在主机侧;跨到硬件侧的应是边界清晰、可映射且通信开销可控的部分。
| out_valid | out_ready | in_ready | 本拍含义 |
|---|---|---|---|
| 0 | 任意 | 1 | 输出槽为空,可以接收输入 |
| 1 | 0 | 0 | 背压:保持 valid 和 data |
| 1 | 1 | 1 | 旧数据被接受,可同时加载新输入 |
动手步骤与预期结果
按下面的顺序执行,每一步都留下可复核的证据。若当前步骤的预期条件未满足,先停在该阶段定位原因;不要继续累积后续错误。涉及工具、板卡或专用硬件的步骤,需要使用本工程实际版本和配置,示例数值不能直接替代设备规格。
- 下载本文 ready-valid 实验并解压
预期与判定:目录包含 DUT、独立检查器、运行脚本;需要 Python 3、iverilog 和 vvp。无需商业工具。
- 执行 python3 run.py
预期与判定:正常实现应打印 PASS,脚本还会运行故意损坏的实现,并确认检查器能捕捉故障。
- 观察输入与输出计数
预期与判定:输入被接受时才入队,输出被接受时才出队;排空后计数相等且每个输出等于输入加一的 8 位结果。
- 改变背压节奏后重跑
预期与判定:增大连续 ready=0 的区间;正确实现仍通过,不能以缩短测试或取消背压使故障版通过。
- 准备软硬件迁移边界
预期与判定:记录时钟、复位、端口宽度、参数与事务语义;先迁移 DUT,保留同一个参考模型作为对照。
可综合单级缓冲核心,完整可运行版本见文末实验包;输入为 8 位,复位同步高有效。
assign in_ready = !out_valid || out_ready;
always @(posedge clk) begin
if (rst) begin
out_valid <= 1'b0;
out_data <= 8'd0;
end else if (in_ready) begin
out_valid <= in_valid;
if (in_valid) out_data <= in_data + 8'd1;
end
end典型故障:从现象到复测
下面的案例是为说明定位方法而构造的教学场景,不代表真实客户事故或本平台设备实测。实践时先确认现象与证据相符,再采用相应修复;若证据不同,应回到前一步缩小范围,避免把同一种表象都归因于同一个问题。
完成检查
- 每个输入只有明确驱动源
- 响应有可自动判定的检查器
- 失败能记录 seed、输入及首个差异
延伸阅读与来源
本文为黄河电子原创教学说明。产品命令与支持范围请以实际安装版本的官方文档为准。
- Palladium Simulation Acceleration TBA Tutorial · WXE 24.05,2024-05
PDF 第 12、14 页:主机与硬件的通信成本、信号级与事务级交互;第 22 页:分割后参数与跨边界引用的影响。 本站不分发受限手册;链接通向厂商公开入口,页码以本地手册 PDF 页序为准。
- AMD Vivado 开发者资源
- Cadence Palladium 产品资料
继续阅读
基础如何选择软件仿真、硬件仿真与 FPGA 原型
从验证目标、可见性和工程投入出发,选择当前阶段的验证方法。
时钟和复位为何决定验证结果
从采样边沿与初始状态理解设计启动过程。
如何准备一个可复现的问题工程
用最少信息重现故障,让同事和 FAE 能够接手分析。
黄河电子