A deadlock occurs when Component A is waiting for Component B to do something, while Component B is waiting for Component A. Neither can proceed, and the bus hangs.
The Golden Rule of AXI
VALID must NOT depend on READY.
A sender cannot wait for the receiver to be ready before asserting VALID. It must assert VALID whenever it has data. Wait for READY only to deassert/complete the handshake.