xxx pro env some basic structures // thanks Dan~



// ーーーーーーーーーーーー
// Class: xxx_proj_env
// ーーーーーーーーーーーー
// Environment for the xxx_proj UVC

class xxx_proj_env extends uvm env;
	// Module UVC Config Objects
	// Object: xxx_proj cfg
	// Environment configuration object.
	xxx_proj_config xxx_proj cfg;

	// Object: xxx_proj_test_cfg
	// Test configuration object.
	xxx_proj_test_config xxx_proj_test_cfg;

	// Object: xxx_proj_dut_cfg
	// DUT configuration object (for parameterised/templated DUT)
	xxx_proj_dut_config xxx_proj_dut_cfg;

	//Objects: UVCs
	// Object: multi_clk_rst
	// Clock / reset UVC
	multi_clk_rst_master_agent multi_clk_rst;

	// Object: aes apb vip
	// APB interface for AES (VIP)
	xxx_proj_ext_svt_apb master agent/*svt_apb_master_agent*/ aes_apb_vip;

	// Object: aes apb vip reg adapter
	// Register adapter for aes apb vip
	xxx_proj_fips_apb_vip_reg_adapter  apb_vip_reg_adapter;

	// Object: caps regs wire reg adapter
	// Register adapter for accesses from the link. 
	xxxx_caps_regs_reg_adapter caps_regs_wire_reg_adapter;
	// Object: caps regs host reg adapter
	// Register adapter for accesses from the local host. 
	xxxx_caps_regs_reg_adapter caps_regs_host_reg_adapter;
	// Object: aes apb reg_ predictor
	// Predictor for register map
	uvm_reg_predictort(svt_apb_transaction) aes_apb_reg_predictor;
	// Object: config apb reg predictor
	// Predictor for register map
	uvm_reg_predictor#t (svt_apb_transaction) config_apb_reg_predictor;


	// Objects: UVC Configuration Objects
	multi_clk_rst_config multi_clk_rst_cfg;
	ide_data_config_tx plain_data_if_cfg[i];
	ide_data_config_tx secure_data_if_cfg[i]:
	ide_data_shared_config_tx_plain_data_shared_cfg;
	ide_tip_shared config_tx secure tip shared cfg; 
	ide_msg_config ide_msg_cfg;
	xxxx_caps_regs_config xxxx caps_ regs _cfg;
	aes_hw_config config aes_hw_config config
	// Object: regmodel
	// Register model for the xxxx IDE
	xxx_proj_regblk xxx_proj_regmodel;
	// Object:xxxx ide vsegr
	// Virtual Sequencer
	....

	// Function: Build Phase
	virtual function void build phase (um_phase phase) ;
		int nfm_max_tag;
		super.build_phase(phase);
	// -- Factory Overrides --
	// -- Register model --
	if (!uvm_config_db#(xxx_proj_regblk)::get(this, "", xxx_proj_regmodel", xxx_proj_regmodel)) begin
		uvm_fatal(get_type_name(), "xxx_proj_regmodel not set in config db")
	end
	// - -Module UVC config object - -
	if (!uvm_config_db.(xxx_proj_config)::get(this, "xxx_proj_cfg", xxx_proj_cfg)) begin
		uvm_fatal(get_type_name(), "xxx_proj_cfg not set in config db")
	end
	// So does all the other configurations... test_cfg, dut_cfg, etc.

	//Get from Module UVC config object if not null, otherwise create here 
	if (xxx_proj)cfg.multi_clk_rst_cfg == null) begin
		multi_clk_rst_cfg = multi_clk_rst_config::type_id: create("multi_clk_rst_cfg") ;
		if (!randomize(multi_clk_rst_cfg) begin 
			uvm_fatal(get_type_name(), "Could not randomize config object")
		end
		xxx_proj_cfg.multi_clk_rst_cfg = multi_clk_rst_cfg;
	end	


	if(xxx_proj_cfg.tx_plain_data_if_cfg.size() !== 0) begin
		foreach (tx_plain_data_if_cfg[i]) begin
			tx_plain_data_if_cfg[i] = xxx_proj_cfg.tx_plain_tip_if_cfg[i];
		end 
	end
	foreach(t×_plain_data_if_cfg[i]) begin
		uvm_config_db#(ide_data_config) ::set(this, $sformatf(“tx_plain_data_if[%0d]*",i)。“ide_data_cfg", t×_plain_data_if_cfg[i]):
	end
	//...
	endfunction 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值