UVM——组件家族

uvm_driver

class uvm_driver#(type REQ=uvm_sequence_item, type RSP=REQ) extend uvm_component;

用户在使用uvm_driver时,不应该直接调用uvm_driver,而应该定义一个继承于uvm_driver新driver类,其中的REQ,RSP类型也可以进行更改。
uvm_driver类的作用是和sequencer类的端口连接进行通信,从而实现事务对象的获取。通过pull实现:

driver.seq_item_port.connect(sequencer.seq_item_export);		//双向
driver.rsp_port.connect(sequencer.rsp_export);
//实例
class dut_driver extends uvm_driver#(basic_transaction);	//	定义,tansaction:sequence item类型
	virtual chip_if vif;
	bit[7:0] addr, data;
	`uvm_component_utlis(dut_driver)		//在factory中注册dut_driver类
	function new(string name, uvm_component parent);	//创建
		super.new(name, parent);
	endfunction: new
	extern task run_phase(uvm_phase phase)		//extern可以先声明方法,然后再外部进行定义

uvm_monitor

uvm_monitor中没有增添新的成员和方法,但在使用时用户应定义一个新的monitor类继承uvm_monitor。
uvm_monitor功能:

  1. 观测DUT的interface,收集总线信息
  2. 永远保持PASSIVE模式,即永远不会驱动DUT。passive,不主动修改内部信号
  3. 在总线协议或内部信号协议观察时,可以做一些功能和时序的检查
  4. 对于更加复杂的检查要求,可以将数据发送到其他的验证组件,如scoreboard,reference model,coverage collect
//实例
class serial_monitor extends uvm_monitor;
	virtual serial_if.monitor mi;
	function new(string name, uvm_component parent);
		super.new(name, parent);
	endfunction: new
	function void build_phase(uvm_phase phase);
		super.build_phase(phase);
	endfunction: build_phase
	extern task run_phase(uvm_phase)
		.
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值