Quick Start
- 打开 Vivado 工程,在 Flow Navigator 中点击 “Run Simulation” → “Run Behavioral Simulation”。
- 仿真启动后,在 Simulation 窗口的 “Objects” 面板中,右键选择需要查看的信号,点击 “Add to Wave Window”。
- 在 Wave 窗口中,使用鼠标滚轮或工具栏的 “Zoom In/Out” 调整时间范围,观察信号跳变。
- 对于时钟信号,右键选择 “Clock” → “Configure”,设置占空比和周期,验证时钟沿对齐。
- 使用光标(Cursor)工具:点击工具栏 “Cursors” 图标,在波形上点击添加光标,测量两个事件间的时间差。
- 添加标记(Markers):在波形上右键选择 “Add Marker”,标记关键事件,便于对比。
- 使用 “Find” 功能(Ctrl+F)搜索信号名称或值,快速定位特定信号。
- 检查时序违例:在 Tcl 控制台输入 “report_timing_summary”,查看 Setup/Hold Violations 报告,再回波形窗口定位。
前置条件与环境
| 项目 | 推荐值 | 说明 | 替代方案 |
|---|---|---|---|
| Vivado 版本 | 2020.1 及以上 | 支持最新波形查看特性 | 2019.1(功能基本一致,但缺少部分 UI 优化) |
| 仿真器 | Vivado Simulator (xsim) | 原生集成,操作最便捷 | ModelSim/Questa(波形导入需额外步骤) |
| 器件/板卡 | 任意 Xilinx FPGA(如 Artix-7、Kintex-7) | 波形查看方法通用 | Zynq、Virtex 系列(方法相同) |
| 时钟/复位 | 仿真中需提供时钟(如 100MHz)和异步复位 | 使用 testbench 生成时钟 | 接口依赖 |
| 约束文件 | 仿真阶段不需要 XDC,但时序分析需 XDC | 无 | 无 |
| 操作系统 | Windows 10 / Linux (CentOS 7) | 推荐 64 位系统 | Windows 7(可能缺少驱动) |
目标与验收标准
- 功能点:能够通过波形窗口快速定位信号跳变、时钟沿对齐、数据建立/保持时间违例。
- 性能指标:在 100MHz 时钟下,能识别出 0.1ns 级别的时序偏差。
- 资源/Fmax:无额外资源消耗,波形查看不改变设计。
- 关键波形/日志:仿真日志中无 “Timing violation” 警告;波形中信号跳变严格对齐时钟沿。
实施步骤
工程结构
创建 Vivado 工程,添加 RTL 源文件(如 counter.v)和 testbench(tb_counter.v)。确保 testbench 中包含时钟生成和复位逻辑。
// tb_counter.v 片段
reg clk;
reg rst_n;
wire [7:0] count;
always #5 clk = ~clk; // 生成 100MHz 时钟(周期 10ns)
initial begin
clk = 0;
rst_n = 0;
#20 rst_n = 1;
#1000 $finish;
end注意:时钟周期需与设计匹配,否则波形无法反映真实时序。
关键模块
以计数器为例,在波形中观察 count 信号是否在时钟上升沿更新。若 count 在时钟沿后若干时间才变化,可能存在组合逻辑延迟。
// counter.v
module counter(
input clk,
input rst_n,
output reg [7:0] count
);
always @(posedge clk or negedge rst_n) begin
if (!rst_n)
count <= 8'd0;
else
count <= count + 1'b1;
end
endmodule仿真与波形查看
- 在 Vivado 中运行行为仿真,自动打开波形窗口。
- 将 clk、rst_n、count 信号添加到波形窗口。
- 使用 Zoom In/Out 调整到合适的时间范围(如 0~200ns)。
- 观察 count 是否在 clk 上升沿后立即变化(理想情况是 0 延迟,实际会有微小 delta 延迟)。
- 若 count 变化明显滞后(如超过 1ns),说明存在组合逻辑路径过长,需优化设计。
验证结果
验证波形中 count 信号在时钟上升沿更新,且无毛刺或延迟过大。仿真日志中不出现 “Timing violation” 警告。使用光标测量时钟周期,应为 10ns ± 0.1ns。
排障
- 波形窗口无信号:确认已在 Objects 面板中选中信号并点击 “Add to Wave Window”。
- 时钟波形不显示:检查 testbench 中时钟生成逻辑,确保时钟周期与设计匹配。
- 时序违例误报:仿真阶段时序分析需结合 XDC 文件,若未添加约束,report_timing_summary 可能不准确。
- 光标测量不精确:放大波形后使用光标,可提高测量精度。
扩展
- 使用 Multi-Cursor 功能同时测量多个时间点。
- 导出波形为 VCD 格式,用于第三方工具分析。
- 在 Tcl 控制台中使用
get_cursors命令获取光标位置,实现自动化测量。 - 结合 Waveform Compare 功能对比两次仿真结果,定位回归问题。
参考
- Vivado Design Suite User Guide: Simulation (UG900)
- Vivado 官方 Tcl 命令参考手册
- Xilinx 支持页面:仿真波形查看常见问题
附录
附录 A:常用 Tcl 命令
# 打开波形窗口
open_wave_config
# 添加信号到波形
add_wave /tb_counter/clk
add_wave /tb_counter/count
# 设置时间范围
wave_zoom -range 0 200
# 报告时序总结
report_timing_summary附录 B:波形查看快捷键
| 操作 | 快捷键 |
|---|---|
| 放大 | Ctrl + + |
| 缩小 | Ctrl + - |
| 添加光标 | Ctrl + C |
| 添加标记 | Ctrl + M |
| 查找信号 | Ctrl + F |



