Verilog测试(仿真)文件TestBench如何编写

本文详细介绍了FPGA开发中的三个关键仿真步骤:RTL仿真、综合后仿真与时序仿真,并通过实例演示了如何在Vivado中编写功能仿真测试文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、哪些步骤需要进行仿真

下图是FPGA开发的整个流程,先看一下仿真都出现在哪里。在这里插入图片描述
流程图中绿色的步骤是要进行测试仿真的,即有三个步骤是要进行仿真操作的(有时会省略“综合后仿真”这一步)

1.RTL仿真
也称为综合前仿真、前仿真和功能仿真。
这一步只验证在顶层模块和功能子模块的设计输入完成后,其电路的逻辑功能是否符合设计要求,不考虑门延时和线延时。

2.综合后仿真
综合后仿真加入了门延时。

3.时序仿真
也称为后仿真,在门延时的基础上又加入了线延时。

二、如何编写仿真测试文件

下面以功能仿真为例子,说明测试仿真文件如何编写。

1.首先准备好需要被测模块的Verilog代码

module led_twinkle( 
	input 		 sys_clk ,  //系统时钟
	input 		 sys_rst_n, //系统复位,低电平有效

	output [1:0] led //LED 灯
);

	......          //省略功能部分
	
endmodule

2.编写TestBench测试仿真文件

在Vivado软件中,在左侧的 Flow Navigator 窗口点击 Add Source, 选择 Add or create simulation sources,点击 Next,点击 Create File, 给测试文件命名,通常格式为 “tb_被测试模块名”,点击OK,点击Finish。

在 Source 栏中的 Simulation Sources 中双击生成的 “tb_被测试模块名” 文件,进行编写。

~timescale 1ns / 1ps  //测试时间基本单位为1ns,精度为1ps
 
module tb_led_twinkle(); //通常起名格式为 tb_被测试模块名

//输入
	reg sys_clk; 
	reg sys_rst_n; 
//输出
	wire [1:0] led;

//信号初始化,必须有这一步,容易被忽略
initial begin
	sys_clk = 1'b0; 
	sys_rst_n = 1'b0;
	#200  //延时200ns
	sys_rst_n = 1'b1;
end

//生成时钟,模拟晶振实际的周期时序
always #10 sys_clk = ~sys_clk; //每10ns,sys_clk进行翻转,达到模拟晶振周期为20ns
 
//例化待测模块(模块例化可点击文章最后附上的网址)
led_twinkle u_led_twinkle(   
	.sys_clk (sys_clk),      //注意语句后面为逗号
	.sys_rst_n (sys_rst_n),
	.led (led)              //最后一步无逗号
);

endmodule

在ISE中软件操作方式会有所不同,但测试文件代码编写不变。

模块例化说明链接

回答: 在Verilog中,测试文件是用来对设计进行仿真和验证的文件测试文件通常包含测试向量、时钟生成、数据输入和输出等内容。测试文件编写可以参考一些方法和技巧。例如,可以使用寄存器来存储复杂的数据,并通过一些处理后将数据输入到实例化模块中。在测试时,可以将仿真输出的数据打印出来进行分析,可以使用$fwrite函数将数据文件中。另外,如果测试文件中的输入量较大且较复杂,可以将数据打印出来并存储为TXT格式,然后将读出的数据存入寄存器数组中,再将寄存器数组的数据输入到实例化模块的输入端中。\[2\]\[3\] #### 引用[.reference_title] - *1* [【verilog】设计一个测试文件,产生一个周期为2微秒,占空比为3:1的时钟信号](https://blog.csdn.net/weixin_43210113/article/details/110373867)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [verilog测试代码(一)读文件数据](https://blog.csdn.net/weixin_43649647/article/details/110667345)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值