| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
There was a problem hiding this comment.
According to my understanding, this PR mainly works on two things:
Regarding the first point, it looks good to me, although ready is, strictly, still dependent on valid because of the rr_arb_tree logic.
Regarding the second point, it exactly safer in some sense, but I am really concerned about a deadlock situation. The AXI spec allows a slave to assert aw_ready only when it receives a valid W, but here we only send a valid W when AW handshake is successful (aw_ready & aw_valid). axi_to_detailed_mem is exactly such kind of slave... I prefer to revert the w_fifo_push change, and if there's a problem in multicast, we can discuss another solution then.
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
This change was originally introduced in #398, though it may no longer be strictly required.
However, when this is possible, it is in general good to remove dependencies of aw_ready on aw_valid, as the dependency creates paths that are double in length, for de-asserting valid (from subordinate->manager to manager->subordinate->manager).
This PR further changes the condition which determines when the AW channel (or the arbitration outcome carried within it) is pushed into the W FIFO.
Instead of pushing it as soon as there is a valid AW, it only pushes when the AW is handshaked.
I don't know if there was a specific reason for this to be implemented as it was, but from what I understand this change shouldn't have any relevant performance implications, and is in my opinion safer.
Probably we could also decouple ready and valid, while reverting the w_fifo_push change, if needed. But, it would remain to be tested whether this would work with multicast.