Synopsys AXI VIP 解析(1)——环境介绍和接口

1 环境介绍

Synopsys AXI VIP(2020版本)协议支持AXI3、AXI4、ACE、AXI4-Stream。

AXI VIP具体包含 axi_master_agent_svt、axi_slave_agent_svt、axi_interconnect_env_svt、axi_system_env_svt。

axi_master_agent_svt

相当于Master Agent,通过class"svt_axi_port_configuration"配置,通过class "svt_axi_master_transaction"传输数据,其中包含传输类型读/写、地址、写数据数组、burst类型、长度等信息。

axi_slave_agent_svt

相当于Slave Agent,通过class"svt_axi_port_configuration"配置,通过class "svt_axi_slave_transaction"传输数据,其中包含读数据数组、应答数组、ready延时等信息。

Slave中包含存储模型class “svt_mem”,Slave无效模式下通过总线数据直接写入,有效模式下通过sequence写入。同时支持使用read()、write()等方法后门读写。

Slave中包含FIFO模型class “svt_axi_fifo_mem”,对应AXI的FIXED burst模式。

axi_interconnect_env_svt

相当于AXI Interconnect的仿真模型,可以配置主从接口的数量,Interconnect的主接口接从设备,从接口接主设备(定义和Synopsys AXI DW是反的)。每个主/从接口通过class"svt_axi_port_configuration"配置,通过class "svt_axi_master_transaction " 和class "svt_axi_ic_slave_transaction"传输信息(2020版本还不支持svt_axi_ic_master_transaction)。

axi_system_env_svt

System Environment集成了Master Agent、Slave Agent和Interconnect Env(图中没有Interconnect ,可以选择加上)。通过class“svt_axi_system_configuration”配置主接口和从接口的数量,例如没有从接口也可以设置为0,默认最多16主16从,可以通过宏定义将上限最高修改到450,例如主接口+define+SVT_AXI_MAX_NUM_MASTERS_<value>。

顶层配置类class ” svt_axi_system_configuration”中又包含class ” svt_axi_port_configuration”数组。前者配置系统信息,包括主/从数量、虚接口传递、地址映射等信息;后者以数组形式作为前者变量,用来独立配置不同接口信息,包括协议类型、信号宽度、Active/Passive模式、协议检查、覆盖率统计开关等。
使用agent的优势在于轻量化,而使用Environment的优势在环境修改灵活,例如项目中期增减接口。
在这里插入图片描述

2 接口

svt_axi_if

svt_axi_if接口对应System Environment,除了时钟复位还包含svt_axi_master_if、svt_axi_lp_if和svt_axi_lp三个从接口数组,分别对应AXI主从和低功耗协议。

logic common_aclk
logic interconnect_resetn
svt_axi_master_if master_if[15:0](common_aclk);
svt_axi_lp_if lp_if[15:0]();
svt_axi_slave_if  slave_if[15:0](common_aclk);

svt_axi_master_if

  logic                                           internal_aclk;
  logic                                           aclk;

接口有2个时钟,aclk是每个svt_axi_master_if独立的时钟,internal_aclk是整个svt_axi_if的全局时钟,可以通过common_clock_mode选择。
svt_axi_master_if接口包含AXI的AW、W、B、AR、R读写通道信号。列举AW通道为例。

  logic                                           awvalid;
  logic [`SVT_AXI_MAX_ADDR_WIDTH-1:0]             awaddr;
  logic [`SVT_AXI_MAX_BURST_LENGTH_WIDTH-1:0]     awlen;
  logic [`SVT_AXI_SIZE_WIDTH-1:0]                 awsize;
  logic [`SVT_AXI_BURST_WIDTH-1:0]                awburst;
  logic [`SVT_AXI_LOCK_WIDTH-1:0]                 awlock;
  logic [`SVT_AXI_CACHE_WIDTH-1:0]                awcache;
  logic [`SVT_AXI_PROT_WIDTH-1:0]                 awprot;
  logic [`SVT_AXI_MAX_ID_WIDTH-1:0]               awid;
  logic                                           awready;

还包含ACE协议的AC、CR、CD窥探通道信号(AW等常规通道也有ACE增加信号),列举AC通道为例。

  logic                                                acvalid;    
  logic                                                acwakeup;
  logic                                                actrace;   
  logic                                                acready;
  logic [`SVT_AXI_ACE_SNOOP_ADDR_WIDTH-1:0]            acaddr;         
  logic [`SVT_AXI_ACE_SNOOP_TYPE_WIDTH-1:0]            acsnoop;      
  logic [`SVT_AXI_ACE_SNOOP_PROT_WIDTH-1:0]            acprot;          
  logic [`SVT_AXI_MAX_VMIDEXT_WIDTH-1:0]               acvmidext;
  logic                                                acvalidchk;       
  logic                                                acreadychk; 
  logic [(`CEIL(`SVT_AXI_ACE_SNOOP_ADDR_WIDTH,8))-1:0] acaddrchk;               
  logic                                                acctlchk;      
  logic                                                acvmidextchk;
  logic                                                acwakeupchk;

还包含AXI4-Stream协议信号

  logic                                           tvalid;
  logic                                           tready;
  logic [`SVT_AXI_MAX_TDATA_WIDTH-1:0]            tdata;
  logic [`SVT_AXI_TSTRB_WIDTH-1:0]                tstrb;
  logic [`SVT_AXI_MAX_TDEST_WIDTH-1:0]            tdest;
  logic [`SVT_AXI_TKEEP_WIDTH-1:0]                tkeep;
  logic                                           tlast;
  logic [`SVT_AXI_MAX_TID_WIDTH-1:0]              tid;
  logic [`SVT_AXI_MAX_TUSER_WIDTH-1:0]            tuser;

此外还包含AXI5的一些新增信号,例如chk后缀,但VIP文档并没有说支持相应协议。

svt_axi_slave_if

diff比较发现,svt_axi_slave_if包含的信号和svt_axi_master_if完全相同,所以不再列举信号。
和svt_axi_master_if的区别在modport定义会有差别,function在一些ACE的分支也会有差别

svt_axi_lp_if

低功耗接口,接口定义包含在AXI3/4协议中

  logic                                         cactive;
  logic                                         csysreq;
  logic                                         csysack;

svt_axi_steam_if

信号定义为标准AXI4-Stream协议接口。

但实际并不会使用,AXI4-Stream VIP使用的也是svt_axi_if。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值