Vivado学习笔记二

简单testbench测试代码的编写

编写testbench的主要目的是为了对使用硬件描述语言(HDL)设计的电路进行仿真验证,测试设计电路的功能、部分性能是否与预期的目标相符。
以以下源代码为例

module test(
input [1:0]SW,
output [1:0]LED
    );
    assign LED[1]=SW[1];
    assign LED[0]=SW[0];
endmodule

testbench测试代码编写步骤如下:
测试代码模块命名

module tb_test(

    );

定义变量类型
对于 testbench 而言,端口应当和被测试的 module 一一对应。
端口分为 input,output 和 inout 类型产生激励信号的时候,
input 对应的端口应当申明为 reg,
output 对应的端口申明为 wire。

reg [1:0]SW;
wire [1:0]LED;

例化模块,并将输入输出的信号和 2 中定义的变量进行关联。

test uut(
.SW(SW),
.LED(LED));

直接赋值,一般用 initial 块给信号赋初值,initial 块执行一次,always 或者 forever 表示由事件激发反复执行。

`timescale 1ns / 1ps
module tb_test(

    );
reg [1:0]SW;
wire [1:0]LED;
test uut(
.SW(SW),
.LED(LED));
initial
SW=0;
always
begin
#50
SW=2'b00;
#50;
SW=2'b01;
#50;
SW=2'b10;
#50;
SW=2'b11;
end
endmodule

其中#50指延迟相应的时间单位,该时间单位由 timscale 决定。
一般在 testbench 的开头定义时间单位和仿真精度

timescale 1ns/1ps

前面一个是代表时间单位,后面一个代表仿真时间精度。

小结

module Test_bench()//一般简单的测试文件无输入输出
信号或变量声明定义
逻辑设计中输入信号在这里对应reg型变量
逻辑设计中的输出信号在这里对应wire型
使用initial或always语句块产生激励
例化猜测是模块UT
监控和比较输出响应
endmodule
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值