ADI AXI Agent (VIP)
Overview
The ADI AXI Agent uses the AMD (Xilinx) AXI VIP at its core with added sequencer, monitor and wrapper class. Has a master, slave and passthrough variant. Provides functions to start, stop and run the classes within. Its purpose is to create and contain everything under a single construct and not have the user to create and manage each of these modules separately.
Parameters
The ADI AXI Agent parameters must
be compatible with the VIP used in the
design. The virtual interface that is defined must be of the same type that
the VIP is using. The AMD AXI VIP must also be compatible with the specified
parameters. The axi_definitions.svh header file has useful macros to create
and build the required parameter list.
Variables
The core components are available for access depending on the agent type that is instantiated.
adi_axi_master_agent variant
axi_mst_agent agent
m_axi_sequencer sequencer
adi_axi_monitor monitor
adi_axi_slave_mem_agent variant
axi_slv_mem_agent agent
s_axi_sequencer sequencer
adi_axi_monitor monitor
adi_axi_passthrough_mem_agent variant
axi_passthrough_mem_agent agent
m_axi_sequencer master_sequencer
s_axi_sequencer slave_sequencer
adi_axi_monitor monitor
Methods
function new(…);
Creates the ADI AXI Agent object. The name string is assigned to the instance as an Identifier when logging. The vip_if is a Virtual Interface that is instantiated inside the AXI VIP when created. This is used to connect the VIP (in block design) to the simulation. The parent variable is optional, it is used to narrow down the origin of this class, used in logging. The parent variable can only reference an adi_environment.
task start();
Used to start the master or slave agent when not in passthrough mode. In passthrough mode it throws a warning, since in the passthrough agent can only work in master, slave or passthrough mode at a given time.
Note
This warning message can be ommitted, as this causes no harm during simulation. Its main use is to notify the user that the VIP in passthrough mode is only monitoring and it must be changed manually to master or slave mode if needed.
task run();
Used to run the monitor.
task stop();
Used to stop the agent, the sequencer(s) and the monitor.
Usage and recommendations
Basic usage of the ADI AXI Agent:
Declare the ADI AXI Agent, preferably inside an environment with the correct parameters, give a name and if it’s inside an environment, set the parent as well
Call the start function before resetting the entire system
Call the run function
Run the test stimulus
Call the stop function before the clocks associated to the VIP are stopped