Using the AXI4 master BFM, I replaced Function Level APIcommand READ_BURST by a sequence of Channel Level API SEND_READ_ADDRESS and RECEIVE_READ_DATA commands.
The latter sequence does not seem to decrement the BFM internal transaction counter. Thus, the maximum transaction limit is reached.
I got the following error in the simulation:
MASTER_0 : *INFO : Reached the maximum outstanding transactions limit (2). Blocking all future transactions until at least 1 of the outstanding transactions has completed.
As I only do sequential transactions sequentially, not concurrently. Itappears that there is a counter inside BFM.When using Channel Level API the counter does not decrease so it reaches the limit. Is this a bug?
This behavior is not a bug;rather, it is a limitation.
As correctly predicted, the counter inside the BFM does not decrease because the channel level API commandRECEIVE_READ_DATA does not decrement pending_transactions_counter. The correct channel level API command to use is RECEIVE_READ_BURST, as this does decrement pending_transactions_counter. Alternatively, the user can call the remove_pending_transaction command manually after all data transfers associated with the complete transaction are complete.
The problem with decrementing the counter inside the RECEIVE_READ_DATA command is that this would cause any concurrent transaction that was previously stalled to start to transmit on the clock that the counter was de-asserted; however, the data burst of a normal transaction is not actually complete at that time.
The data transfer is only a subset of the transaction so the sum of all data transfers (that is,the burst) is actually transaction complete. In other words,if this ischanged to get this case to work thenother features when parallel transactions are desired may be broken.
Please be aware that to use channel level APIs increasesthe risk of violating AXI protocol at a channel dependency level. Therefore, this is not recommended. The Function level APIs have been validated against the Cadence AXI VIP.