06-28-2017 08:16 AM
Hi! I'm working on a design with SRIO Gen 2 core, and one observation during our lab testing was that the IREQ port's ready signal from the core could go low for significant amount of time (100's of clock cycles) in the middle of an NWrite transaction. Unfortunately, in my design, I cannot afford to wait for that long, and I'll have to terminate this packet transfer and allow another master to access the bus. Is there any way I can gracefully end a packet transfer even if the last word was not sent (it doesn't matter if a few packets are lost, or the last NWrite fails)?
07-06-2017 06:12 AM
It's a little bit more than just deasserting tvalid. How do I cleanly break from the middle of a packet transfer? Say I'm transferring a large SRIO NWrite packet, and half way through the payload transfer, tready goes low for a long time. My source encounters timeout, and I stop trying to send the remaining payload. I want to start a new SRIO Nwrite when tready goes high next. Do I just start with a SRIO header just like that, or do I send one last packet (invalid data) with tlast high when tready goes high next. Would that stop the transfer and then continue on with the next valid data packet?
07-07-2017 01:11 AM
I believe that you should send one last packet (invalid data) with tlast high when tready goes high next.
If not, the new header may be considered as the data of the previous unfinished packet by the IP core.