AMBA VIP基础使用方式(AXI)

1. AXI环境配置

1) 基础配置

作为master或者slave使用时,对应的is_active = 1
只作为i监测(monitor)使用时,对应slave_cfg的is_active = 0(对应端口连接也有所区别)

class axi_cfg extends svt_axi_system_configuration;
	`uvm_object_utils(aix_cfg)
	function new(string name="axi_cfg);
		super.new(name);
		this.num_masters=2;
		this.num_slaves=2;
		this.create_sub_cfg(num_masters,num_slaves);
		foreach(this.master_cfg[i]) begin
			this.master_cfg[i].is_active = 1;
			this.master_cfg[i].data_width = 512;
			this.master_cfg[i].addr_width = 48;
			this.master_cfg[i].id_width = 8;
			this.master_cfg[i].axi_interface_type = `SVT_AXI_INTERFACE_AXI3;
		end
		//slave ……
	endfunction
endclass

2)其他配置
如果user_enable、qos_enable不做配置,VIP默认采用0进行发送

foreach(this.master_cfg[i]) begin
	this.master_cfg[i].aruser_enable = 1;
	this.master_cfg[i].awuser_enable = 1;
	this.master_cfg[i].wuser_enable = 1;
	this.master_cfg[i].arqos_enable = 1;
	this.master_cfg[i].awqos_enable = 1;
end

同样ready信号在不做配置的情况下,VIP默认置位状态(为1),可根据需求设置

foreach(this.slave_cfg[i]) begin
	this.slave_cfg[i].default_awready = 0;
	this.slave_cfg[i].default_wready = 0;
end

2. interface连接

1)各端口相同时钟

assign axi_fab_if.common_aclk		= Aclk;
assign axi_fab_if.master_if[x].aresetn = Preset_n;

2)各端口不同时钟

除上述common_aclk的赋值外,需要对单个master//slave_if时钟进行赋值

assign axi_fab_if.master_if[x].aclk		= ACLK;

3)is_active=1 端口连接(master为例)

assign `TOP.awvalid = axi_fab_if.master_if[x].awvalid;
assign `TOP.awaddr	= axi_fab_if.master_if[x].awaddr;
//……
assign axi_fab_if.master_if[x].awready = `TOP.awready;
assign axi_fab_if.master_if[x].arready = `TOP.arready;

4)is_acitve=0 端口连接(master、slave相同)

assign axi_fab_if.slave_if[x].awvalid 	= `TOP.awvalid;
assign axi_fab_if.slave_if[x].awaddr  	= `TOP.awaddr;
//……
assign axi_fab_if.slave_if[x].awready 	= `TOP.awready;
assign axi_fab_if.slave_if[x].arready	= `TOP.arready;

3. 环境例化

svt_axi_system_env	axi_env;

uvm_config_db#(svt_axi_system_configuration)::set(this,"axi_env","cfg",axi_cfg);

axi_env = svt_axi_system_env::type_id::create("axi_env",this);

4. 端口连接

this.axi_env.slave[x].monitor.item_observed_port.connect(this.chk.item_observed_response_export);
  • 7
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值