
VHDL API Overview
Waiting Events
Mentor VIP AE AXI3/4 User Guide, V10.2b
195
September 2013
execute_transaction(), execute*_burst(), execute*_phase()
If the DUT is a slave then the execute_transaction() procedure is called in the master BFM test
program. If the DUT is a master then the execute*_burst() and execute*_phase() procedures are
called in the slave BFM test program.
For example, to execute a master write transaction the master BFM test program would contain
the following code:
-- * = axi| axi4
-- By default the execution of a transaction will block
execute_transaction(tr_id, bfm_index, *_tr_if_2(bfm_index));
For example, to execute a slave write response phase, the slave BFM test program would
contain the following code:
-- * = axi| axi4
-- By default the execution of a phase will block
execute_write_response_phase(write_trans, bfm_index,
*_tr_if_2(bfm_index));
In the above example, the bfm_index specifies the BFM.
Waiting Events
Each BFM API has procedures that block the test program code execution until an event has
occurred.
The wait_on() procedure blocks the test program until an ACLK or ARESETn signal event has
occurred before proceeding.
The get*_transaction(), get*_burst(), get*_phase(), get*_cycle() procedures block the test
program code execution until a complete transaction, burst, phase or cycle has occurred,
respectively.
wait_on()
For example, a BFM test program can wait for the positive edge of the ARESETn signal using
the following code:
-- * = axi| axi4
-- ** = AXI | AXI4
-- Block test program execution until the positive edge of the clock
wait_on(**_RESET_POSEDGE, bfm_index, *_tr_if_0(bfm_index));
In the above example, the bfm_index specifies the BFM.
Comentários a estes Manuais