ADI AXIS Agent (VIP)

Overview

The ADI AXIS Agent uses the AMD (Xilinx) AXIS 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 AXIS 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 AXIS VIP must also be compatible with the specified parameters. The axis_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_axis_master_agent variant

  • axi4stream_mst_agent agent

  • m_axis_sequencer sequencer

  • adi_axis_monitor monitor

adi_axis_slave_agent variant

  • axi4stream_slv_agent agent

  • s_axis_sequencer sequencer

  • adi_axis_monitor monitor

adi_axis_passthrough_agent variant

  • axi4stream_passthrough_agent agent

  • m_axis_sequencer master_sequencer

  • s_axis_sequencer slave_sequencer

  • adi_axis_monitor monitor

Methods

function new(…);

Creates the ADI AXIS 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 AXIS 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 sequencer(s) and the monitor.

task stop();

Used to stop the agent, the sequencer(s) and the monitor.

Usage and recommendations

Basic usage of the ADI AXIS Agent:

  • Declare the ADI AXIS 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

  • Configure the sequencer(s)

  • Call the run function

  • Call the start function in the case of master mode

  • Run the test stimulus

  • Call the stop function before the clocks associated to the VIP are stopped