uvm_monitor
作用
验证平台必须监测DUT的行为,用于收集DUT的端口数据,并将其转换成transaction交给后续的组件,所以monitor需要一个虚拟接口。
特性
所有的monitor类应该派生自uvm_monitor;它是一个component,要使用uvm_component_utils宏注册
实现方式
由于monitor需要时刻收集数据,永不停歇,所以在main_phase中使用while(1)循环来实现这一目的。
uvm_driver
作用
因为driver只负责驱动transaction,而不负责产生,只要有transaction就驱动,所以必须做成一个无限循环的形式。
实现方式
通过get_next_item任务来得到一个新的req,并且驱动它,驱动完成后调用item_done通知sequencer。