Introduction
The bus utilization graph found in the range of CATC USB Analyser applications provides a valuable time-scaled view in addition to the chronological packet and logical transfer views of the primary display window. Some modes of operation of the USB bus and some bus problems can be more readily observed using the bus utilization view. This application note looks at some of the strategies that can be employed using the bus utilization view as a debugging tool.
Performance Analysis
Analysing a recording where throughput is important, will initially start using the timing calculator and may yield a performance figure lower than expected.
The first complication when analysing the performance of a transfer is that you may choose to use the performance calculator transfer-to-transfer
In this case it shows a full-speed bandwidth of 4.8Mb/s which is considerably lower than the theoretical 12Mb/s. Looking at the bus utilization graph shows that we have included a period of bus idle time since we have asked for the calculation to be made from the start of one transfer to the start of the next. The second transfers’ initiation is dependant upon the bus scheduling and the application processing time and therefore to measure the throughput of a specific transfer, the calculation should be made from the first to the last packet of the transfer only.
Making the last packet of the transfer repeating the calculation, yields a figure closer to the 12Mb/s expected, but is still not reaching the expected throughput.
Doing the same calculation on a single transaction yields a figure at the theoretical throughput.
Although, this is more realistic if the inter-transaction gap is included in the case where the host may only be able to schedule one transfer per frame, which gives an average throughput of 10Mb/s. Thus, we see that the transaction is running 2Mb/s less than we would expect. There can be a number of reasons for this and these can be seen readily using the bus utilization view.
In this view, we can see that the transfer has a couple of time periods when no activity was performed on the bus. We would expect the host to use every opportunity to transfer the data; therefore periods with 10ms of no activity when most frames exceed 90% utilization suggest the host has a problem. The exact nature of the problem could be that a buffer has been emptied and the delay is the wait for more data to be fetched, it could be the host USB stack scheduling has a problem (more likely in this case since the periods are not symmetric). The localisation of the problem is much easier to see in the Bus view since the lack of information is the problem, whereas the main view shows when there IS information.
Customising Graphs
You can customise graphs to display the information in a number of ways. You may either right click an existing graph and select properties to change the style of the graph. Or you can select the new graph option from the graph pull-down.
Changing properties allows you to control color and style of the graph. It also allows you to filter parts of the bus traffic allowing you to focus on the traffic of interest to you.
A technique, which may be employed to examine the operation of the host scheduling system, is to split the graphs out by address and/or endpoint. The first example here shows an expansion of the Bus usage by device.
The top graph shows all devices individually color-coded on one graph. Each of the graphs below is a user-defined graph, based on a specific device address. This can give a clear indication of the times when the host schedules communication with each device.
Another examination of host scheduling can be seen in this bus utilization graph:
In this case the host schedules only one transfer per frame to any device (the short blue lines are the SOF packet – the color coding is the same as the main display). This may indicate a low-powered host implementation or it could be the root of a design in-efficiency.
A similar trace based on a different host implementation yields a bus utilization graph below. Here, we see multiple transfers to devices within the frame.
There are 3 starts of frames shown. In the first frame, there is a single transfer to endpoint #1, the second and third frame display multiple bulk transfers to endpoint#2 (although we also note that there is some delay after the SOF before the first transfer)
By using the multiple-graph approach the combined graph can be used as a reference for all traffic while the focused graphs allow inspection of detail (and use of a separate scale) for a specific address or endpoint.
Summary
The bus utilization view is a valuable addition to the Chronological packet view and the Logical Transfer view. The bus utilization graph allows inspection of time related issues in an intuitive analog interface, which compliments the digital precision of the packet display.