因为DUT是一个静态的内容,所以testbench理应也是静态的,其作为uvm验证环境和DUT的全局根结点。
module tb_top;
import uvm_pkg::*;
bit clk;
always #10 clk <= ~clk;
dut_if dut_if1 (clk);
dut_wrapper dut_wr0 (._if (dut_if1));
initial begin
uvm_config_db #(virtual dut_if)::set (null,"uvm_test_top","dut_if",dut_if1);
run_test ("base_test");
end
endmodule
上面是一个简单的验证平台的tb_top示例.其中:
- tb_top 是一个静态的module,验证环境中所有的信息都可以从这里索引到。此时需要 import uvm_pkg:: * 才能识别一些uvm库的内容。
- 在tb_top需要生成验证环境、DUT和接口都需要的时钟和复位。因为验证环境是动态的,无法在其中例化物理接口,所以需要采用uvm_config_db将物理interface的指针set给验证环境中的virtual interface。
- 通过ru
n_test(“
base_test
”) 启动
一个test_case。
Clock generation
一般的数字设计都会包含一个或者多个时钟,同时设计可能会因为工艺等问题工作在不同的频率下,所以时钟生成最好是参数化的。
Reset Generation
和时钟类似,复位也需要在testbench顶层实现。在许多数字设计中,复位分为 硬件复位和软件复位 ,它们的复位方式不一样,前者通过寄存器接口实现,后者直接通过硬件复位接口实现。
和DUT interface一样,时钟和复位在验证环境和DUT中都会用到,对应的赋值可以在tb_top中实现,也可以在验证环境中实现。
另外很多验证环境都需要抽取DUT中的信号,可能是force,也可能是采样DUT内部信号。此时需要在testbench tb_top中将DUT信号赋值过去。
interface gen_if;
logic signals;
endinterface
module tb_top;
gen_if u_if0 ();
des u_des ( ... );
// Assign an internal net to a generic in
assign u_if0.signals = u_des.u_xyz.status;
endmodule
-
时钟
+关注
关注
11文章
1953浏览量
134532 -
UVM
+关注
关注
0文章
183浏览量
19938 -
DUT
+关注
关注
0文章
193浏览量
13361
发布评论请先 登录
NVMe高速传输之摆脱XDMA设计18:UVM验证平台
NVMe高速传输之摆脱XDMA设计23:UVM验证平台
IC验证"一个简单的UVM验证平台"是如何搭建的(六)
IC验证"UVM验证平台加入factory机制"(六)
IC验证“UVM验证平台加入objection机制和virtual interface机制“(七)
基于C的测试和验证套件集成到常规UVM测试平台的方法
数字IC验证之“什么是UVM”“UVM的特点”“UVM提供哪些资源”(2)连载中...
数字IC验证之“典型的UVM平台结构”(3)连载中...
数字IC验证之“构成uvm测试平台的主要组件”(4)连载中...
数字IC验证之“搭建一个可以运行的uvm测试平台”(5)连载中...
什么是uvm?uvm的特点有哪些呢
UVM验证平台执行硬件加速

UVM验证平台顶层有什么作用
评论