We have all debugged SOC and IP level issues using signal level waveforms. Its a tedious and laborious process. Are there any ways that can make design debug easier? Wouldn't it be great if I could look at fully decoded packets and transactions instead of signal toggles? In this series of posts, we will try to come up with the best way to look at some typical interfaces in order to reduce debug effort and increase productivity.
USB3
USB3 is a high-speed serial protocol that provides a peripheral interface for high bandwidth devices such as flash drives and cameras. The USB3 protocol specifies that the Host controls the communication with Devices by exchanging following types of signaling, sequences and packets:
- Link Command Packets
- Transaction Packets (Headers and data packets)
- Training Sequences
- LFPS
Additionally, USB defines software level transfers that are composed of individual transactions that are composed of transaction packets.
For debugging USB3 related issues, you need to know what's going on on the interface. You might need answers to questions such as:
- What packets have been transmitted?
- Have requests been correctly acknowledged?
- Have the required link level flow control packets been exchanged?
- How many packets was a software level transfer broken up into?
- USB3 permits bursting of packets so requests and acknowledgements get pipelined. This makes it difficult to find the corresponding acknowledgement for a request.
- Different endpoints act as parallel threads and their packets get interleaved on the interface making it difficult to make sense of traffic
Wouldnt it be great if there was a tool that could analyze the signal level activity in a waveform and give you easy to digest information? This is what out PDA tool does!
The corresponding activity shown by our PDA tool is as follows:
The input for the waveform and PDA is the same, but the output is very different.
As you can see, the PDA tool recognizes all the USB3 packets and also decodes various fields of the packets into spec defined names and values. For example, figuring out when the last LGOOD_7 was sent would take you 5-10 minutes using the waveform whereas using PDA you can get the same information in less than 30 seconds!
If this looks interesting to you, please have a look at a short 3 minute demo video here.
Contact us for more details!
Author: Aditya Mittal
'