Tilelink: Interleaving D channel responses

Skip to first unread message


Dec 30, 2020, 2:26:10 AM12/30/20
to RISC-V HW Dev
I have a RAM that is internally multi-banked -- in that it has 1 TL node through which it can accept multiple requests sequentially, hold them until serviced, and respond in the D channel as and when the internal banks respond to different requests (via an arbiter). 

However, changing sourceIds mid-flight is prohibited (according to an assert in tilelink/Monitor.scala: function legalizeMultibeatD). Could someone kindly explain the reasoning behind having this restriction?

If, towards a special case, we can guarantee that different requests (with different sourceIds) that arrive at TL node of the RAM are from distinct client nodes, can this restriction then be somehow circumvented?

Thanks in advance, and a happy new year, 


Dec 30, 2020, 2:28:30 AM12/30/20
to RISC-V HW Dev, Anoop
Just to clarify, responses are usually multi-beat responses and I am trying to figure out how to interleave different responses with different sourceIds that are guaranteed to belong to distinct clients. 
Reply all
Reply to author
0 new messages