Using the axi3 basic slave test program api, Advanced axi3 slave api definition – Altera Mentor Verification IP Altera Edition AMBA AXI3/4TM User Manual

Page 179

Advertising
background image

SystemVerilog Tutorials

Verifying a Master DUT

Mentor VIP AE AXI3/4 User Guide, V10.2b

161

September 2013

Using the AXI3 Basic Slave Test Program API

As described in the

AXI3 Basic Slave API Definition

section, there are a set of tasks and

functions that you can use to create stimulus scenarios based on a memory-model slave with a
minimal amount of editing. However, consider the following configurations when using the
Slave Test Program.

slave_mode

- The read and write channel interaction can cause simultaneous read and

write transactions to occur at the same address. With the default slave_mode setting the
read transaction data burst is buffered at the start of the burst and the write data burst is
buffered at the end of the burst. This can result in the read data being stale at the time it
is transmitted over the protocol signals. If this is an undesirable feature, then set the
Slave_mode to be AXI_PHASE_SLAVE.

slave_ready_delay_mode

- By default the handshake *READY signal will always

follow, or be simultaneous with, the *VALID signal. By configuring the delay_mode to
be AXI_TRANS2READY *READY before *VALID scenarios can be achieved.

m_max_outstanding_read_trans - The maximum number of outstanding (incomplete)
read transactions that can be initiated by a master test program before the slave test
program applies back-pressure to the master by deasserting the ARREADY signal. When
subsequent read transactions complete, then the slave test program asserts ARREADY.

m_max_outstanding_write_trans - The maximum number of outstanding (incomplete)
write transactions that can be initiated by a master test program before the slave test
program applies back-pressure to the master by deasserting the AWREADY signal. When
subsequent read transactions complete, then the slave test program asserts AWREADY.

Advanced AXI3 Slave API Definition

Note

You are not required to edit the following Advance Slave API unless you require a
different response than the default (OKAY) response.

The remaining section of this tutorial presents a walk-through of the Advanced Slave API in the
slave test program. It consists of four main tasks,

process_read

,

process_write

,

handle_read

and

handle_write

in the slave test program, as shown in

Figure 6-5

.

The Advanced Slave API is capable of handling pipelined transactions. Pipelining can occur
when a transaction starts before a previous transaction has completed. Therefore, a write
transaction that starts before a previous write transaction has completed can be pipelined.

Figure 6-5

shows the write channel having three concurrent write_trans transactions, whereby

the write_addr_phase[2], write_data_burst[1] and write_response_phase[0] are concurrently
active on the write address, data and response channels, respectively.

Advertising