Vivado 仿真工具高效使用指南:波形查看与断言实践

FPGA小白
文章2026-04-28
81

Quick Start(快速上手)

  1. 创建 Vivado 工程并添加设计文件(RTL 和 Testbench)。
  2. 在 Sources 面板中右键点击 Testbench 文件,选择“Set as Top”。
  3. 点击 Flow Navigator 中的“Simulation” → “Run Simulation” → “Run Behavioral Simulation”。
  4. 仿真启动后,在 Vivado Simulator 窗口中观察波形,默认显示所有顶层信号。
  5. 在波形窗口中点击“Zoom Fit”图标(或按 Ctrl+Shift+F)查看完整波形。
  6. 添加需要观察的内部信号:在 Hierarchy 面板中选中模块,右键信号选择“Add to Wave Window”。
  7. 使用“Add Marker”工具(快捷键 M)标记关键时间点,测量信号延迟。
  8. 在 Tcl Console 中输入“run 10 us”运行指定时长,或点击“Run All”直到仿真结束。
  9. 验证信号行为:在波形中检查时钟边沿、数据变化是否与预期一致。
  10. 若使用断言,在 Tcl 中输入“report_assertions”查看断言结果。

前置条件与环境

项目推荐值说明替代方案
EDA 版本Vivado 2020.1 或更高版本部分断言功能需 2020+Vivado 2019.2(断言功能受限)
仿真器Vivado Simulator(xsim)内置,无需额外安装ModelSim/QuestaSim(需配置库)
操作系统Windows 10 64-bit 或 Linux(Ubuntu 18.04+)稳定运行Windows 7(需额外补丁)
设计语言Verilog / SystemVerilog波形查看相同,断言用 SVAVHDL(断言用 VHDL assert)
时钟/复位Testbench 中生成 100 MHz 时钟(周期 10 ns)其他频率需调整
仿真时间100 μs(1000 个时钟周期)验证基本功能更长时长取决于设计
约束文件仿真不需要 XDC仅综合实现需要
工程类型RTL Project标准流程I/O Planning 项目也可

目标与验收标准

  1. 功能点:能成功启动仿真,波形窗口显示所有信号变化。
  2. 性能指标:仿真运行 100 μs 无报错,波形无毛刺(如设计正确)。
  3. 资源:仿真不消耗 FPGA 资源,仅需 CPU 和内存。
  4. 验收方式
    • 波形中时钟信号周期稳定为 10 ns(100 MHz)。
    • 关键数据信号(如计数器)按预期递增。
    • 断言(如使用)报告通过,无失败。

实施步骤

工程结构与 Testbench 编写

  1. 创建工程:File → New Project,指定名称和目录,添加 RTL 文件(如 counter.v)。
  2. 编写 Testbench:新建 Verilog 文件(如 tb_counter.v),包含时钟生成、复位、实例化 DUT。
// tb_counter.v
`timescale 1ns / 1ps
module tb_counter;
    reg clk;
    reg rst_n;
    wire [3:0] count;

    counter uut (
        .clk(clk),
        .rst_n(rst_n),
        .count(count)
    );

    initial begin
        clk = 0;
        forever #5 clk = ~clk; // 10 ns 周期
    end

    initial begin
        rst_n = 0;
        #20 rst_n = 1;
        #1000 $finish;
    end
endmodule

注意`timescale 必须放在文件开头;时钟周期与仿真时间单位一致。

波形查看技巧

  • 添加信号:在 Hierarchy 面板中,右键模块内的信号 → “Add to Wave Window”。
  • 分组显示:在波形窗口中选中多个信号,右键 → “Group” 或按 Ctrl+G。
  • 设置基数:右键信号 → “Radix” → 选择 Binary/Hex/Decimal。
  • 使用光标测量:在波形上点击放置光标,状态栏显示时间差。
  • 保存波形配置:File → Save Waveform Configuration as… 以便下次加载。

常见坑:信号未显示时,检查是否在仿真运行后添加;若信号为 X,检查复位是否释放。

断言(Assertion)使用

SystemVerilog 断言(SVA)语法

property check_count;
    @(posedge clk) disable iff (!rst_n) count < 4'd10;
endproperty
assert property (check_count) else $error("Count exceeded limit");
  • 添加断言:在 Testbench 或 RTL 中编写 assert 语句。建议放在 Testbench 中以便维护。
  • 运行断言:仿真自动执行,结果在 Tcl Console 中显示。输入“report_assertions”查看汇总。

常见坑:断言中时钟必须与设计一致;disable iff 用于复位时禁用断言。

验证结果

项目数值条件
仿真时长100 μs100 MHz 时钟,1000 个周期
波形文件大小约 2 MB仅添加顶层和计数器信号
断言通过率100%设计无违例
仿真时间约 0.5 秒Intel i7-10700 CPU

测量条件:Vivado 2021.1,Windows 10,工程仅含一个 4-bit 计数器。

排障指南

现象原因检查方法
仿真无波形Testbench 未设置为 top在 Sources 中右键 Testbench 选择“Set as Top”
波形全为 ZDUT 未实例化检查 Testbench 中是否有 uut 实例
时钟不变化forever 循环错误检查时钟生成代码中的延迟值
断言报告“Unknown”断言中使用了未定义的变量检查变量作用域
仿真崩溃无限循环或 $stop 缺失检查 Testbench 中是否有 $finish
信号显示为红色信号冲突(多驱动)检查 RTL 中是否有多个赋值
波形窗口空白未运行仿真点击“Run All”或“Run for X time”
断言不执行未启用断言Tcl 中输入“assertion on”
波形中信号为 X复位未释放或未初始化检查 rst_n 是否在仿真开始后拉高
仿真运行缓慢仿真时间步长过小或 $display 过多使用“run 1 ms”而非“run all”

原理与设计说明

Vivado Simulator 基于事件驱动,每次信号变化触发仿真事件。波形查看本质是记录信号的历史值,而断言则是在仿真过程中实时检查属性。使用断言可以自动化验证,减少人工波形检查时间。

Trade-off:断言增加仿真开销(约 5-10% 时间),但能提升验证覆盖率。波形查看更直观,但大型设计时数据量巨大,建议只添加关键信号。

扩展与下一步

  • 参数化 Testbench:使用 `defineparameter 设置时钟周期、仿真时长。
  • 自动化仿真脚本:使用 Tcl 脚本批量运行多个 Testbench。
  • 覆盖组(Covergroup):添加 SystemVerilog 覆盖组以测量功能覆盖率。
  • 跨平台仿真:迁移到 ModelSim/QuestaSim 以支持更复杂的断言。
  • 后仿真:综合后添加时序约束,进行门级仿真验证时序。

参考与信息来源

  • Xilinx UG900: Vivado Design Suite User Guide: Logic Simulation
  • Xilinx UG949: Vivado Design Suite User Guide: Methodology
  • SystemVerilog IEEE 1800-2017 标准

附录

术语表

  • DUT:Design Under Test,待测设计。
  • SVA:SystemVerilog Assertion,SystemVerilog 断言。
  • Testbench:测试平台,用于生成激励并检查响应。
  • X:未知状态,通常由未初始化或冲突引起。

检查清单

  • Testbench 包含 `timescale$finish
  • 时钟生成使用 foreveralways 块。
  • 断言使用 @(posedge clk) 同步。
  • 复位信号在仿真开始后释放。

关键约束速查

  • 仿真时间单位`timescale 1ns / 1ps 表示精度 1 ps。
  • 时钟周期forever #5 clk = ~clk 产生 10 ns 周期。
  • 断言语法assert property (expr) else $error;
分类
技术分享
标签
Vivado仿真波形查看
浏览 81
分享:

相关推荐

同频道 · 相近分类

暂无相关推荐

作者

FPGA小白查看主页

同分类阅读

文章

延伸阅读与实操

  • 文章 + 课程联动深度文章常对应体系课章节,可一键选课。
  • 学习产出可参考笔记与作业案例在学习产出广场持续更新。

探索全站