Execute_transaction(), Axi3 example, Information to be transferred and then calls the – Altera Mentor Verification IP Altera Edition AMBA AXI3/4TM User Manual

Page 67: Tasks. the

Advertising
background image

SystemVerilog AXI3 and AXI4 Master BFMs

execute_transaction()

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

49

September 2013

execute_transaction()

This task executes a master transaction previously created by the

create_write_transaction()

, or

create_read_transaction()

, functions. The transaction can be blocking (default) or non-

blocking, defined by the transaction record operation_mode field.

The results of execute_transaction() for write transactions varies based on how write transaction
fields are set. If the gen_write_strobes transaction field is set, execute_transaction()
automatically corrects any previously set write_strobes. However, if the gen_write_strobes
field is not set, then any previously assigned write_strobes will be passed through onto the
WSTRB protocol signals, which can result in a protocol violation if not correctly set. Refer to

“Automatic Correction of Byte Lane Strobes”

on page 197 for more details.

If a write transaction write_data_mode field is set to *_DATA_WITH_ADDRESS,
execute_transaction() calls the

execute_write_addr_phase()

and

execute_write_data_burst()

tasks simultaneously, otherwise

execute_write_data_burst()

will be called after

execute_write_addr_phase()

so that the write data burst occurs after the write address phase

(default). It will then call the

get_write_response_phase()

task to complete the write transaction.

For a read transaction, execute_transaction() calls the

execute_read_addr_phase()

task

followed by the

get_read_data_burst()

task to complete the read transaction.

AXI3 Example

// Declare a local variable to hold the transaction record.
axi_transaction read_trans;

// Create a read transaction with start address of 0 and assign
// it to the local read_trans variable.
read_trans = bfm.create_read_transaction(0);

....

// Execute the read_trans transaction.
bfm.execute_transaction(read_trans);

Prototype

// * = axi | axi4
task automatic execute_transaction
(

*_transaction trans

);

Arguments

trans

The

*_transaction

record.

Returns

None

Advertising