废话不多说,先上本文中所使用的testbench和仿真脚本的源代码链接。我们可以在我们的工程目录下建立一个src文件夹,用于存放待测设计的所有代码,另外再建立一个sim文件夹,用于存放testbench和仿真脚本。
一、简单的testbench的编写步骤
如果根据UVM验证方法学,成熟的testbench由激励源(sequence)、激励源产生器(sequencer)、激励发射器(driver)、监控器(monitor)、计分板(scoreboard)、算法模型(model)、与DUT的虚拟接口(vif)和测试case等组成(暂时不懂这些名词也没关系哈),简单的testbench不用这么复杂,只需遵循下面的步骤编写即可。
1、确定仿真时间单位和精度
`timescale 仿真时间单位/仿真精度
一般情况下功能仿真就是1ns/100ps足够了,时序仿真设置成1ns/1ps。相同仿真时间的情况下,精度越小,仿真越耗时。
2、设置时钟和复位信号
时钟可能不止一个,复位信号也是。先不要管其他,把复位信号和时钟驱动起来再说。
initial begin
clk = 0;
forever begin
#20 clk = ~clk;//25MHZ时钟
end
end
initial begin
rst_n = 1'b0;
#2000;
rst_n = 1'b1;