Vivado使用入门(四)仿真

本文转载自:FPGA入门到精通

本系列文章将详细介绍Vivado软件的使用方法,帮助初学者快速掌握AMD FPGA开发。

本文将详细介绍vivado仿真功能,包括如何使用、测试激励文件的撰写,以及如何调用第三方仿真测试软件。

一、仿真概述

仿真是FPGA设计流程中的重要环节,它允许设计者在实际硬件实现之前,对设计进行逻辑功能和时序行为的验证。Vivado软件中的仿真功能主要包括行为仿真(Functional Simulation)和时序仿真(Timing Simulation)。

1、行为仿真

行为仿真,又称为功能仿真,主要关注设计的逻辑功能是否正确。在此阶段,仿真器不考虑硬件的具体实现细节,如门延迟和布线延迟,只关注设计是否按照预期的逻辑行为工作。

2、时序仿真

时序仿真则关注设计在特定硬件实现条件下的时序行为。它考虑了实际硬件中的延迟因素,如门延迟和布线延迟,以验证设计是否满足时序约束。

二、功能仿真需要的文件

进行功能仿真前,需要准备以下文件:

1、设计HDL源代码

设计HDL源代码是仿真的基础,可以是VHDL或Verilog语言编写。这些源代码构成了被测试单元(Unit Under Test, UUT)。

2、测试激励代码(TestBench)

测试激励代码(TestBench)用于生成UUT的输入信号,并验证输出信号。TestBench不需要进行综合,因此具有很高的灵活性。

3、仿真模型/库

根据设计中使用的IP核或第三方模块,可能需要相应的仿真模型或库。Vivado集成了预编译的仿真模型,可以直接使用。

三、具体步骤

1、创建TestBench

在Vivado IDE中,通过“Sources”窗口中的“+”号添加TestBench。

图1.png

选择“Add or Create Simulation Sources”,点击next。

图2.png

然后点击“Create File”。

图3.png

输入文件名TestBench,点击OK。

图4.png

最后点击finish。

图5.png

一路点击OK,点击Yes。最后在source窗口下,可看到testbench.v文件。

图6.png

2、编写TestBench代码

在创建的TestBench文件中,编写测试激励代码。这通常包括初始化输入信号、生成时钟信号、监视输出信号等。

双击打开testbench.v文件,输入测试激励即可。

`timescale 1ns / 1ps // 定义时间单位和时间精度
module testbench;
// 定义测试激励信号reg clk; // 时钟信号reg reset; // 复位信号wire [3:0] led; // LED输出信号
// 实例化待测试的设计模块test uut (    .clk(clk),    .reset(reset),    .led(led));
initial begin    // 初始化时钟和复位信号    clk = 1'b0;    reset = 1'b1;     // 应用复位    #20 reset = 1'b0;     // 等待一段时间,观察LED信号的变化    #10000 $finish;end
// 时钟信号生成always #5 clk = ~clk; // 每隔5ns翻转时钟信号
// 监控输出信号initial begin    $monitor("Time = %t, reset = %b, led = %b",$time, reset, led);end
endmodule
// 这里是待测试的设计模块module test(    input clk,    input reset,    output reg [3:0] led);     reg [15 : 0] cnt;     always @ (posedge clk) begin        if (reset)            cnt <= 0;        else            cnt <= cnt + 1;    end     always @ (posedge clk) begin        if (reset)            led <= 4'b0001;        else if (cnt == 16'hffff)            led <= led == 4'b1000 ? 4'b0001 : led << 1;     end endmodule

更多有关测试激励编写可以查看:TestBench内容编写与方法总结

3、 运行仿真

在“Flow Navigator”窗口中点击“Run Simulation”,选择合适的仿真类型(如“Run Behavioral Simulation”)并启动仿真。

图7.png

常用的一般是行为功能仿真(Run Behavioral Simulation),时序仿真测试不如直接上板调试来的快。

4、查看和分析结果

使用Vivado的Scope、Waveform等窗口查看和分析仿真结果。可以通过添加信号到波形窗口,保存波形配置信息,并进行波形的缩放、测量等操作。

图8.png

四、高级技巧

1、波形配置信息的保存与加载

在仿真过程中,可以将波形配置信息保存为“.wcfg”文件,以便在后续的仿真中重用。

2、仿真时间的设置

可以在仿真设置中调整仿真的默认时间,以便更好地观察和分析信号的变化。

3、代码修改与重新仿真

在观察到仿真结果与预期不符时,可以对HDL源代码进行修改,并通过“Relaunch”功能重新加载并仿真,以便快速迭代和调试。

4、时钟和复位信号的生成

在TestBench中,通常会生成时钟和复位信号,以便模拟实际硬件的工作条件。

5、仿真精度的调整

根据需要,可以调整仿真的精度,如将仿真单位设置为1ns/1ps,以便更精确地观察信号的变化

最新文章

最新文章