我是靠谱客的博主 现实耳机,这篇文章主要介绍verilog中tb仿真文件模板,现在分享给大家,希望可以做个参考。

        以前总是用ise,它会自动编写仿真文件,所以用了vivado以后就有点生疏。留一个备份,万一以后用到了方便找。

1. Testbench的概念

​        Testbench 是一种用任意语言编写的程序或模块,用于在模拟过程中执行和验证硬件模型的功能正确性。 Verilog 主要用于硬件建模(模拟),该语言包含各种资源,用于格式化,读取,存储,动态分配,比较和写入模拟数据,包括输入激励和输出结果。

2. Testbench的组成组件

​ Testbench 的主要组件如下:

  1. 时间表声明:指定所有延迟的时间单位

  2. Module:它定义了测试文件的top模块,测试文件的top模块通常没有输入输出端口,测试是直接监控寄存器和线网这些内部信号的活动

  3. 内部信号:它将驱动激励信号进入 UUT 并监控 UUT 的响应,信号驱动和监控

  4. UUT 实例化

  5. 激励生成:编写语句以创建激励和程序块

  6. 响应监控和比较:自我测试语句,能报告数值,错误和警告

简单来说,仿真tb文件主要包含4部分:顺序无所谓,可以打乱。

        1、初始化

        2、产生激励

        3、仿真暂停

        4、实例化

下面就以mealy型状态机,检测序列 “ 01101101 ”,编写仿真文件。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
`timescale 1ns / 1ps module tb_mealy01101101; //注意分号,不加;仿真会出现未知态(红色)和高阻态(蓝色) //inputs reg clk; //在always和initial块里的变量要用reg型变量 reg rst_n; reg din; //如果输入是多位,别忘了加位宽。 reg [5:0] din; //outputs wire dout; //1、初始化 initial begin clk = 0; rst_n = 0; din = 0; end //2、产生激励 //时钟激励(写法1) always #10 clk=~clk; /*时钟激励(写法2) forever begin #10 clk=~clk; end*/ always @(posedge clk) begin #100; rst_n = 1'b1; din = 1'b1; #100; din = 1'b1; #100; //#100 din = 1'b0; din = 1'b0; //代表100ns后din由上一个状态1 变为此时的状态0 #100; din = 1'b1; end //3、仿真暂停 initial begin #600 $finish(); end //4、实例化 mealy01101101 uut ( .clk(clk), .rst_n(rst_n), .din(din), .dout(dout) ); endmodule

最后

以上就是现实耳机最近收集整理的关于verilog中tb仿真文件模板的全部内容,更多相关verilog中tb仿真文件模板内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部