UVM搭建学习之三:interface

1、说明

避免绝对路径的另外一种方式是使用 interface 。在 SystemVerilog 中使用 interface 来连接验证平台与 DUT 的端口;
2、定义
interface my_if(input clk, input rst_n);
       logic [7:0] data;
       logic valid;
endinterface
3、在类里面的声明
class my_driver extends uvm_driver;
       virtual my_if vif;
       .....
endclass
在类里面声明必须是无实体的,否则会报语法错误;
4、跟top_tb的连接
UVM 引进了 config_db 机制。在 config_db 机制中,分为set get 两步操作。所谓 set 操作,可以简单地理解成是 寄信 ,而 get 则相当于是 收信
top_tb 中执行 set 操作:
src/ch2/section2.2/2.2.4/top_tb.sv
initial begin
        uvm_config_db#(virtual my_if): :set(null, "uvm_test_top", "vif", input_if) ;
end
跟top_tb的input_if连接;
src/ch2/section2.2/2.2.4/my_driver.sv
virtual function void build_phase(uvm_phase phase);
    super.build_phase(phase);
    `uvm_info("my_driver", "build_phase is called", UVM_LOW);
    if(!uvm_config_db#(virtual my_if):: get(this, "", "vif", vif) )
          `uvm_fatal("my_driver", "virtual interface must be set for vif!!!")
endfunction
config_db set get 函数都有四个参数,这两个函数的第三个参数必须完全一致。 set 函数的第四个参数表示要将哪个interface,通过 config_db 传递给 my_driver get 函数的第四个参数表示把得到的 interface 传递给哪个 my_driver 的成员变量。 set函数的第二个参数表示的是路径索引;
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UVM(Universal Verification Methodology)中,`uvm_type_id::create`是一个静态函数,用于创建指定类型的对象实例。 `uvm_type_id::create`函数的作用是根据给定的类型标识符(type_id)创建该类型的对象实例。它是UVM中的一种工厂模式,通过类型标识符动态地创建对象,而无需显式调用具体类的构造函数。 使用`uvm_type_id::create`函数可以实现以下功能: 1. 动态创建对象:通过使用类型标识符,可以在运行时根据需要创建对象。这样可以实现在运行时决定对象类型的灵活性。 2. 避免直接调用构造函数:通过使用`uvm_type_id::create`函数,可以避免直接调用对象的构造函数,减少代码的依赖性和耦合度。 3. 多态性支持:UVM中的类通常使用继承关系构建,通过创建对象实例,可以实现多态性的支持。即可以通过基类的类型标识符创建派生类的对象实例。 使用`uvm_type_id::create`函数需要注意以下几点: 1. 类型注册:在使用`uvm_type_id::create`函数之前,需要确保要创建的类型已经在UVM系统中注册过。通常可以通过在类声明中使用`uvm_object_utils`宏来注册类型。 2. 类型转换:由于`uvm_type_id::create`函数返回的是一个基类指针,如果需要使用派生类的特定方法或成员,可能需要进行类型转换。 总结来说,`uvm_type_id::create`函数用于根据类型标识符动态创建对象实例,实现了对象的动态创建和多态性支持。它是UVM中一种灵活和方便的对象创建方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值