Q: A Slave is ready to accept data (WREADY=1) but not address
(AWREADY=0). Is this allowed?
Yes. All 5 channels are independent. A slave might have space in its
write data FIFO but its address command queue is full. A verified Master must handle
this mismatched backpressure correctly.
Q: Can a Master issue a Write Response (from earlier transaction)
before the current Write Data finishes?
No. The Master DOES NOT issue Write Responses; the Slave does. This is
a trick question to check if you know flow direction. The Slave sends B-channel
responses.
Q: Why is the separation of Address and Data channels critical for
performance?
It allows for "Address Pipelining". The Master can issue the address
for Transaction N+1, N+2, and N+3 before the Data for Transaction N has even finished.
This hides memory latency (latency hiding) compared to protocols like AHB where Address
and Data phases are tightly coupled.
Q: What happens if you assert RREADY=1 only when RVALID=1?
It works, but it causes 50% throughput performance (1 bubble cycle for
every transfer). For 100% bandwidth, RREADY (and all Ready signals) should ideally be
defaulted to 1 (Pre-Ready) to accept data on the very first cycle it is valid.