Quick Start:快速启动行为级仿真
打开 Vivado,创建一个新工程或打开现有工程。依次添加设计源文件(RTL)和仿真激励文件(Testbench)。在 Flow Navigator 面板中点击 “Run Simulation” → “Run Behavioral Simulation”,即可启动行为级仿真。仿真启动后,波形窗口默认显示顶层模块的所有信号。你可以右键点击波形窗口,选择 “Add Wave”,或者直接拖拽信号到波形区域,以添加关注的信号。点击 “Run All” 运行仿真至结束,或点击 “Run For” 运行指定时间。使用缩放工具(放大镜图标)查看波形细节。点击 “Stop” 停止仿真,观察波形变化是否符合预期。
前置条件与环境
| 项目/推荐值 | 说明 | 替代方案 |
|---|---|---|
| 器件/板卡 | Xilinx 7系列或更高(如 Artix-7、Kintex-7) | 支持 Vivado 的任意 FPGA |
| EDA 版本 | Vivado 2020.1 及以上 | Vivado 2018.3(功能基本一致) |
| 仿真器 | Vivado Simulator(内置) | ModelSim、QuestaSim(需配置) |
| 时钟/复位 | Testbench 中生成时钟(周期 10ns)和复位信号 | 使用 IP 核时钟源 |
| 接口依赖 | 无特殊接口要求 | 标准 JTAG 调试 |
| 约束文件 | 仿真阶段不需要 XDC 约束 | 综合后仿真需 XDC |
目标与验收标准
- 功能点:成功启动行为级仿真,观察关键信号(如数据总线、控制信号)的波形。
- 性能指标:仿真运行时间覆盖至少 1000 个时钟周期。
- 资源:无特殊资源要求,仿真仅依赖 CPU 和内存。
- 验收方式:波形中信号跳变符合设计逻辑,无 X 态或高阻态异常。
实施步骤
1. 工程结构
创建 Vivado 工程,添加 RTL 源文件(如 counter.v)和 Testbench(如 tb_counter.v)。确保 Testbench 中实例化设计模块,并生成时钟和复位。常见坑:Testbench 中未正确实例化模块,导致仿真无信号变化。检查模块名称和端口映射。
2. 关键模块:计数器示例
以计数器为例,RTL 代码如下:
module counter ( input clk, input rst_n, output reg [3:0] count);always @(posedge clk or negedge rst_n) begin if (!rst_n) count <= 4'b0000; else count <= count + 1'b1;endendmodule3. 编写 Testbench
编写对应的 Testbench,生成时钟和复位,并实例化计数器模块:
module tb_counter;reg clk;reg rst_n;wire [3:0] count;// 时钟生成:周期 10nsalways #5 clk = ~clk;// 初始化initial begin clk = 0; rst_n = 0; #20 rst_n = 1; #1000 $finish;end// 实例化设计模块counter u_counter ( .clk(clk), .rst_n(rst_n), .count(count));endmodule4. 启动仿真并添加信号
在 Flow Navigator 中点击 “Run Simulation” → “Run Behavioral Simulation”。仿真启动后,波形窗口默认显示顶层模块的信号。右键点击波形窗口,选择 “Add Wave”,或直接拖拽 count、clk、rst_n 等信号到波形区域。
5. 运行仿真并观察波形
点击 “Run All” 运行仿真至结束,或点击 “Run For” 并输入时间(如 1000 ns)。使用缩放工具(放大镜图标)查看波形细节。点击 “Stop” 停止仿真,观察波形变化是否符合预期。
6. 验证结果
检查 count 信号是否从 0 开始递增,复位后归零。确认无 X 态或高阻态异常。若波形异常,检查 Testbench 中的实例化是否正确,时钟和复位时序是否合理。
排障指南
- 仿真无波形:检查 Testbench 中是否实例化设计模块,时钟是否生成。
- 信号全为 X:检查复位信号是否有效,模块端口映射是否正确。
- 仿真时间过长:使用 “Run For” 控制仿真时间,或设置断点。
扩展:高级波形分析技巧
- 使用光标测量:在波形窗口中点击并拖动光标,测量信号跳变的时间差。
- 添加总线信号:右键点击总线信号,选择 “Radix” 切换显示格式(二进制、十六进制等)。
- 保存波形配置:点击 “File” → “Save Waveform Configuration”,方便后续复用。
参考
- Vivado Design Suite User Guide: Simulation (UG900)
- Xilinx 官方论坛:仿真相关常见问题
附录:完整 Testbench 代码
module tb_counter;reg clk;reg rst_n;wire [3:0] count;always #5 clk = ~clk;initial begin clk = 0; rst_n = 0; #20 rst_n = 1; #1000 $finish;endcounter u_counter ( .clk(clk), .rst_n(rst_n), .count(count));endmodule


