5. Channel Dependencies - muneeb-mbytes/axi4_avip GitHub Wiki

We need to follow these dependency rules to avoid deadlock and dataloss.

We are having 2 handshake signals VALID and READY in all 5 channels. Their dependencies are

  • Source VALID signal must not dependent on destination READY signal.

  • Destination READY signal can wait for source VALID signal.

  • Both VALID before READY and READY before VALID are accepted but READY before VALID is more efficient way.

Addition to this we are having 3 more types of dependencies. They are

  • Read transaction dependency.
  • Write transaction dependency.
  • Write response dependency.

Read Transaction Dependency

In this transaction source is slave and destination is master.

  • Source is responsible for signals ARREADY and RVALID.
  • Destination is responsible for signals ARVALID and RREADY.

-> Master can assert ARVALID before slave asserts ARREADY.
-> Slave can assert ARREADY before/after master asserts ARVALID.
-> Slave can only assert RVALID after both ARVALID and ARREADY are asserted.
-> Master can assert RREADY before/after slave asserts RVALID.

Write Transaction Dependency

In this transaction source is master and destination is slave.

  • Source is responsible for signals AWVALID, WVALID and BREADY.
  • Destination is responsible for signals AWREADY, WREADY and BVALID.

-> Master can assert AWVALID and WVALID before slave asserts AWREADY and WREADY.
-> Slave can assert AWREADY and WREADY before/after master asserts AWVALID or WVALID or both.
-> Slave can only assert BVALID after all WVALID, WREADY are asserted.
-> also BVALID depends on WLAST to be send by the master to slave at the end of all write data to indicate this is the last data send by the master so a salve can generate BRESP response signal to indicate data received successfully.
-> Slave can assert BVALID before master asserts BREADY.
-> Master can assert BREADY before/after slave asserts BVALID.

Write Response Dependency

In this transaction source is master and destination is slave.

  • Source is responsible for signals AWVALID, WVALID and BREADY.
  • Destination is responsible for signals AWREADY, WREADY and BVALID.

This dependency is similar to Write transaction dependency but only BVALID signal depends on extra signal like,
-> Slave can only assert BVALID after all AWVALID, AWREADY, WVALID, WREADY and WLAST are asserted.

These are the dependencies that all 5 channels to follow to reduce the effect of deadlock and data loss.