UVM实用技巧【二】

本文探讨了在UVM sequence运行时如何与硬件事件同步,建议通过配置对象实现wait_for_hardware_event方法,而非直接修改driver或增加sequence_item字段。举例介绍了使用包含虚拟接口的配置类来处理等待硬件事件的场景。
摘要由CSDN通过智能技术生成

等待硬件事件

虽然通常driver会负责正常的硬件同步,但sequence运行过程中可能需要与硬件事件同步,例如边界信号的转换或复位事件的结束。 不应该去修改driver然后为sequence_item添加一个新的字段,而是建议在包含指向virtual interface的指针的配置对象中实现 wait_for_hardware_event 方法。

举个例子,可以利用一个配置类,内含虚接口,传递给sequence,然后在配置类中实现相关方法。

/ Transaction Class
class transaction extends uvm_sequence_item;
	`uvm_object_utils(transaction)
 
	rand logic [31:0] addr;
	rand logic [31:0] write_data;
 	rand bit read;
	rand int delay;
 
	bit error;
	logic [31:0] read_data;
 
	function new (string name);
		super.new(name);
	endfunction: new
 
	constraint at_least_1 { delay inside {[1:20]};}
 
	constraint 32bit_align {addr[1:0] == 0;}
 
endclass: transaction

/ Bus Configuration Object
class bus_config extends uvm_object;
	`uvm_object_utils(bus_config)
 
	virtual bus_i
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值