-
Notifications
You must be signed in to change notification settings - Fork 3
Description
One concern has been discussed in the email with Stefan regarding the possible deadlock caused by the incapability of debug modules to ensure a packet can be fully accepted (enough space in their local buffer).
Here is another one.
The Debug Packet Datagram (DPD) used between host and physical transport has the length field in the header. However, there is no length field in debug packets.
So for the host interface, it needs to receive the whole packet to count a length and then it can send out the packet in the format of DPD.
This requires the host interface must has enough space for at least one debug packet; however, the length of a debug packet can be arbitrarily long as indicated in the spec.
Besides, let us consider the scenario that the host interface is busy and there is a long debug packet incoming for host interface. The host interface is suppose to ignore the packet (low ready) as it is busy. Then the packet will continue cycling on the NoC. The available pipeline stages in the Ring NoC is limited (the number of Ring Routers). What happens when the packet header reaches the sending Router and that router is still sending more flits? Will the header be lost or the router must stop sending flits? If the router stops sending flits, it is suppose the remember where to resume? And could other router start sending a packet see there is a gap (host interface begins to accept), but actually the the previous packet is not finished yet. One solution could be enforcing all routers to track tail flits.