|ARM Technical Support Knowledge Articles|
Applies to: AXI
If a master is performing hazard checking, to allow it to issue multiple outstanding read and write transactions, as described in section 8.6 of the AXI specification, then at what point can the master consider that the transaction has been accepted by the slave and the responsibility for hazard checking now lies with the slave.
According to the specification “In the case of reads the earlier transaction can be considered complete when the last read data is returned to the master. In the case of writes the transaction can only be considered complete when the write response is received by the master, it is not acceptable to consider the write transaction complete when all the write data is sent."
The master cannot consider the transaction to have been accepted at the point at which the address has been acknowledged. The reason for this is that the address ready signal is simply showing that the address has been registered, but this may be in the slave or it may be in some intervening interconnect. Therefore this is no guarantee that the address has reached its destination.
For a read transaction the guarantee that the address has reached its destination is obtained when the read data (and associated response) are returned to the master. The AXI specification requires a relationship between the channels, as described in section 3.2 of the specification, which ensures that a read response is only given after the address has been accepted.
For write transactions the situation is slightly more complex. In a similar manner, the guarantee that a write has reached its final destination is given by the response. According to the rules of the AXI specification, the only requirement is that the write response is given after the last item of write data has been accepted. This is the point at which the master can consider that the responsibility for hazard checking has been passed to the slave.
There is no actual requirement in the specification that the address must have been accepted by the slave at the point at which the write response is given. However, in such a circumstance the slave must still take the appropriate action to ensure that any subsequent transactions are treated successfully, such as stalling any further transfers.
It is important to note that the recommended behavior for a slave is to only gives a write response once both the address and the write data has been accepted. This would be equivalent to a double headed arrow from AWVALID to BVALID and also from AWREADY to BVALID.
Article last edited on: 2008-09-09 15:47:47
Did you find this article helpful? Yes No
How can we improve this article?