一个完整的设计,除了好的功能描述代码,对于程序的仿真验证是必不可少的。学会如何去验证自己所写的程序,即如何调试自己的程序是一件非常重要的事情。而RTL逻辑设计中,学会根据硬件逻辑来写测试程序,即Testbench是尤其重要的。Verilog测试平台是一个例化的待测(MUT)模块,重要的是给它施加激励并观测其输出。逻辑模块与其对应的测试平台共同组成仿真模型,应用这个模型可以测试该模块能否符合自己的设计要求。 编写TESTBENCH的目的是为了对使用硬件描述语言设计的电路进行仿真验证,测试设计电路的功能、性能与设计的预期是否相符。通常,编写测试文件的过程如下: • 产生模拟激励(波形); • 将产生的激励加入到被测试模块中并观察其响应; • 将输出响应与期望值相比较。 3.1 完成的Test bench文件结构通常,一个完整的测试文件其结构为
3.2 时钟激励设计下面列举出一些常用的封装子程序,这些是常用的写法,在很多应用中都能用到。
3.3 复位信号设计
3.4 双向信号设计
3.5 特殊信号设计
3.6 仿真控制语句及系统任务描述
3.7 加法器的仿真测试文件编写上面只例举了常用的testbench写法,在工程应用中基本能够满足我们需求,至于其他更为复杂的testbench写法,大家可参考其他书籍或资料。 这里提出以下几点建议供大家参考: • 封装有用且常用的testbench,testbench中可以使用task或function对代码进行封装,下次利用时灵活调用即可; • 如果待测试文件中存在双向信号(inout)需要注意,需要一个reg变量来表示输入,一个wire变量表示输出; • 单个initial语句不要太复杂,可分开写成多个initial语句,便于阅读和修改; • Testbench说到底是依赖PC软件平台,必须与自身设计的硬件功能想搭配。 下面具体看一段程序:
仿真文件:
|
XILINX 官网|站点统计|Archiver|手机版|米联客品牌主页|UISRC工程师开源站 ( 苏ICP备19046771号-2 )
GMT+8, 2025-4-2 15:30 , Processed in 0.180348 second(s), 87 queries .