System Verilog 验证环境的搭建2

接着上一篇博客,正式开始进行System Verilog验证环境的搭建。依据MCDF的结构图,依次进行MCDF功能模块的验证。代码设计时我们将每一个功能模块里的验证内容都放在一个package中,提高代码的可读性。

  1. arb_pkg
    由于Arbiter模块并没有与外部信号进行交互,其内部信号都已经划分至其余功能模块内,这里暂时先不对此模块进行验证,只会在测试案例中添加一些通道优先级的测试。
  2. chnl_pkg
    channel模块的功能是向三个通道发送数据。
 package chnl_pkg;
     class chnl_trans;
     	constraint cstr{
   
		};
		//-------------------------------------------------
		fuction chnl_trans clone();
		endfunction
		
		fuction string sprint();
		endfunction
	 endcalss
     class chnl_driver;
     	local string name;
     	local virtual chnl_intf intf;
     	mailbox#(chnl_trans)req_mb;
     	mailbox#(chnl_trans)rsq_mb;
     	//-------------------------------------------------
     	function new(string name = "");
     	endfunction
     	
     	fuction viod set_interface(virtual chnl_inft intf)
     	endfunction
     	//-------------------------------------------------
     	task tun();
     		this.do_driver(();
		endtask
     class chnl_gennerator;
     	mailbox#(chnl_trans)req_mb;
     	mailbox#(chnl_trans)rsq_mb;
     	constraint cstr{
   
		};
		//-------------------------------------------------
		function new(string name = "");
     	endfunction
     	task start();
     		repeat(ntrans) send_trans();
     class chnl_monitor;
     	local string name;
     	local virtual chnl_intf intf;
     	mailbox#(mon_data_t)mon_mb;
     	//-------------------------------------------------
     	function new(string name = "");
     	endfunction
     	
     	fuction viod set_interface(virtual chnl_inft intf)
     	endfunction
     	//-------------------------------------------------
     	task tun();
     		this.mon_trans();
		endtask
     class chnl_agent;
     	local string name;
     	chnl_driver driver;
     	chnl_monitor monitor;
     	local virtual chnl_intf intf;
     	//-------------------------------------------------
     	function new(string name = "");
     	endfunction
     	
     	fuction viod set_interface(virtual chnl_inft intf)
     	endfunction
     	//-------------------------------------------------
     	task tun();
     		fork
     			driver.run();
     			monitor.run();
     		jion
		endtask
 endpackage
  1. fmt_pkg
    formater模块的功能是模拟一个与设计相符的buffer。
 package fmt_pkg;
     class fmt_transclass fmt_driverclass fmt_genneratorclass fmt_monitorclass fmt_agent;
 endpackage
  1. reg_pkg
    reg模块的功能是向寄存器发送读写数据。
 package reg_pkg;
     class reg_transclass reg_driverclass reg_genneratorclass reg_monitorclass reg_agent;
 endpackage
  1. rpt_pkg
    report模块的功能是提供一些打印消息的函数,若使用UVM则无须此模块。
  2. mcdf_pkg
    mcdf模块是验证环境的顶层模块,包括env的搭建与测试案例的编写。
 package mcdf_pkg;
     class mcdf_refmod;
      	local string name;
     	local virtual mcdf_intf intf
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值