When performing multiple Single Read tasks in the BFM test bench bfm_system_tb.v, the simulator produces an error indicating that there are too many pending transactions.
The auto-generated AXI BFM test bench only performs one data read task. However, if the test bench is modified to perform multiple RECEIVE_READ_DATA API tasks, additional modification are required. Per DS824: AXI Bus Functional Models, the user will need to call the 'remove_pending_transaction' task to ensure that the pending transaction counter is decremented. Otherwise, the simulation will fail when the counter reaches the maximum number of outstanding transactions specified by the system. This is done automatically by the RECEIVE_READ_BURST and RECEIVE_WRITE_RESPONSE API tasks.
In order to perform more than one RECEIVE_READ_DATA tasks, bfm_system_tb.v must be modified to include a 'remove_pending_transaction' task after all of the data is received. Be sure to make the following modifications:
task automatic SINGLE_READ;
input [`ADDR_BUS_WIDTH-1 : 0] address;
output [`C_SLV_DWIDTH-1 : 0] data;
input [`PROT_BUS_WIDTH-1 : 0] prot;
output[`RESP_BUS_WIDTH-1 : 0] response;