UVM学习笔记(一)——验证平台的组成

本文介绍了在UVM验证平台中driver类的使用,包括派生自uvm_driver、main_phase任务中的功能实现、通过`uvm_component_utils`宏进行工厂注册、使用objection机制控制仿真结束以及利用virtualinterface和config_db进行通信和数据传递。
摘要由CSDN通过智能技术生成

1. Driver

1.1 driver类

使用UVM的原则:验证平台中所有的组件应该派生自UVM中的类。

UVM验证平台中的driver派生自uvm_driver,例:class my_driver extends uvm_driver;

*派生自uvm_driver的类中new函数的参数有两个,一个是string类型的name,另一个是uvm_component类型的parent;每一个派生自uvm_component的类都要有name和parent两个参数。

*driver中所要完成的事情在任务main_phase中执行,main_phase是uvm_driver中预先定义好的一个任务,它有一个类型为uvm_phase、名为phase的参数。

*uvm_info宏用于打印信息,它有三个参数。例:`uvm_info("my_driver","data is drivered",UVM_LOW);

对driver类的例化:

        `timescale 1ns/1ns

        `include "uvm_macros.svh"

        import uvm_pkg::*;

        `include"my_driver.sv"

        module top_tb;

        ......

        endmodule

1.2 加入factory机制

在一个类中可使用`uvm_component_utils()对类进行注册,并在tb中使用run_test语句创建类的对象,并自动执行main_phase任务,例:

        class my_driver entends uvm_driver;

        ......

        `uvm_component_utils(my_driver);

        ......

        endclass

        module top_tb;

        ......

        initial begin

        run_test("my_driver");

        end

        ......

        endmodule

*所有派生自uvm_component的类都应使用`uvm_component_utils()宏进行注册。

1.3 加入objection机制

 在每个phase中,UVM会检查是否有objection被提起(raise_objection),如果有,那么等待这个objection被撤销(drop_objection)后停止仿真,如果没有则马上结束仿真。例:

phase.raise_objection(this);

phase.drop_objection(this);

raise_objection语句必须在main_phase中第一个消耗仿真时间的语句之前,raise_objection和drop_objection要成对出现。

1.4加入virtual interface

由于class中不能声明一个interface,必须使用虚接口。如:

virtual my_if vif;

config_db机制:set和get操作

在函数build_phase使用config_db来传递类和tb间的一些数据和例化成员变量等。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值