Testbench介绍及其重作用
编写Testbench的主要目的是为了对使用硬件描述语言(HDL)设计的电路进行仿真验证,测试设计电路的功能、部分性能是否与预期的目标相符。
博主在刚开始入门FPGA时把写RTL代码当成重点,不愿写Testbench,仅仅使用Quartus II自带的仿真产生几个激励,然后观察一下最后输出的波形就完事了。有段时间甚至直接忽视仿真,拿单片机在线调试那一套来对付FPGA,直接把代码下载到板子里看效果,若与预期不符,再修改代码,再次下载到板子,如此反复,效率、效果都很低。
后来随着深入地了解,发现FPGA水很深,而且和单片机等有很大的不同。因此劝各位要管住自己、不去使用Quartus II自带的仿真。如果你立志从事FPGA行业,那么会写Testbench才你的敲门砖,才是去大厂的门票,别想着去公司写RTL代码了,公司一定是让你来写Testbench测试文件的。
Testbench作为Modelsim的激励文件,也是自成体系的,同样具有规范化的设计,需要完美的风格及苛刻的结构
本篇只讲Testbench测试代码的推荐编写规范,Modelsim仿真步骤请移步另一篇博客https://blog.csdn.net/zhaogoudan/article/details/111663758。
一个最基本的Testbench包含三个部分,信号定义、模块接口和功能代码。借用一下特权同学总结的编写Testbench的三个基本步骤:
-
对被测试设计的顶层接口进行例化;
-
给被测试设计的输入接口添加激励;
-
判断被测试设计的输出相应是否满足设计要求。
逐步解决编写Testbench的这三点:
对被测试设计的顶层接口进行例化
首先“对被测试设计的顶层接口进行例化”,这一步相对比较简单,就是简单的例化,但端口多时,也比较困难,而且要分wire、reg,有时会弄错。这里我推荐大家可以偷个懒,通过Quartus II自动生成一个Testbench的模板,里面会自动例化好顶层的接口。
步骤