(UVM验证学习3)apb watchdog scoreboard/coverage_model 实现

本文介绍了UVM验证中针对APB总线的watchdog_subscriber、watchdog_scoreboard及watchdog_coveragemodel的实现,详细阐述了这三个组件在系统级验证中的作用和功能。
摘要由CSDN通过智能技术生成

watchdog_subscriber

class watchdog_subscriber extends uvm_component;
	// scb,cov共同的父类
	
	// analysis imp接收monitor发来的消息
	uvm_analysis_imp #(apb_transfer, watchdog_subscriber) apb_trans_observed_imp;
	
	// uvm_event
    uvm_event wdg_regacc_fd_e;
    uvm_event wdg_regacc_bd_e;
    uvm_event wdg_inten_e;
    uvm_event wdg_resen_e;
    uvm_event wdg_load_e;
    uvm_event wdg_intclr_assert_e;
    uvm_event wdg_intr_release_e;
    uvm_event wdg_intr_assert_e;
    uvm_enent wdg_regacc_e;

	protected uvm_event_pool _ep;
	
	watchdog_config cfg;
	watchdog_rgm rgm;
	virtual watchdog_if vif;

	`uvm_component_utils(watchdog_subscriber)

	function new(string name = "watchdog_subscriber", uvm_component parent);
	super.new(name, parent);
	endfunction

	function void build_phase(uvm_phase phase);
		super.build_phase(phase);
		// 例化imp
		apb_trans_observed_imp = new("apb_trans_observed_imp", this);
		if(!uvm_config_db#(watchdog_config)::get(this,"',"cfg",cfg))
			`uvm_fatal("GETCFG", "cannot get config object from config DB")
		vif = cfg.vif;
		rgm = cfg.rgm;

		// 例化event_pool和各个event
		_ep = new("_ep");
		wdg_regacc_fd_e = _ep.get("wdg_regacc_fd_e");
    	wdg_regacc_bd_e = _ep.get("wdg_regacc_bd_e");
    	wdg_inten_e = _ep.get("wdg_inten_e");
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值