tomako123

导航

2.2.4 加入virtual interface

为了保证验证平台的可移植性,在根本上来说应该杜绝在验证平台中使用绝对路径

1.使用宏(这里不提)

2.使用interface

定义完interface之后,在top_tb中实例化DUT时就可以直接使用:

上面是在top_tb中使用interface,那如何在driver中使用interface呢?

在类中不能直接使用interface,只有在module中可以这样使用。

在类中应该使用virtual interface


可以看到driver中的路径都用vif代替了,大大提高了代码的可移植性。

还剩下一个问题:

如何把top_tb中的input_if 和 my_driver中的vif对应起来?

config_tb机制:

在这个机制中,分为set和get操作(寄信和写信)
在top_tb中执行set操作,在driver中执行get操作。

其中的bulid_phase与main_phase一样,也是属于UVM中的内建的一个phase。当UVM启动后,会自动启动build_phase。执行顺序是先new函数,再bulid_phase,再main_phase。在build_phase中主要通过config_db的set和get操作来传递一些数据,以及实例化成员变量等。

14:这里显示调用了super.build_phase是因为其在父类的build_phase中执行了一些必要的操作。

build_phase是一个函数phase,而main_phase是一个任务phase,build_phase是不消耗仿真时间的,总在仿真时间为0时执行。

17:uvm_fatal:这个也是用来打印的,但是与uvm_info不同的是在执行完这个语句后会自动finish,只有在验证平台出现重大问题无法继续时用这个。

config_tb的set和get都有四个参数,两个函数的第三个参数要求必须完全一致

posted on 2024-05-17 11:20  甜豆莎的辣白菜  阅读(3)  评论(0编辑  收藏  举报