Skip to content

Commit cba5830

Browse files
committed
More work on protocol analysis page
1 parent f9e6206 commit cba5830

File tree

6 files changed

+25
-1
lines changed

6 files changed

+25
-1
lines changed

grapheditor.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ Right click on a block to configure it.
2222

2323
Need a decode for an obscure or proprietary protocol that's not in the library? Build it yourself!
2424

25-
A new filter block is a single C++ class which can chain before and after existing blocks. No need to start from raw analog samples - you can take SPI bus transactions, PCIe TLPs, or 8B/10B symbols as input. If your new decode outputs a standard data type, it can be used as input to existing library blocks as well.
25+
A new filter block is a single C++ class which can chain before and after existing blocks. No need to start from raw analog samples - you can take SPI bus transactions, PCIe TLPs, 8B/10B symbols, Ethernet frames, or any other supported data type as input. If your new decode outputs a standard data type, it can be used as input to existing library blocks as well.
26+
27+
Filter blocks can be loaded from binary plugins, allowing easy distribution of filters without needing to build a custom version of libscopehal from source every time you install a new decode.
2628

2729
The QSGMII protocol decode shown here took less than a day of engineering time to develop due to this ability to leverage existing decodes, and the [source code](https://github.com/glscopeclient/scopehal/blob/master/scopeprotocols/QSGMIIDecoder.cpp) was under 175 lines including comments. It accepts a single 5 Gbps 8B/10B stream and outputs four demuxed 1.25 Gbps 8B/10B streams which can be used as input to the existing SGMII decode.
2830

images/protocol1.png

414 KB
Loading

images/protocol2.png

169 KB
Loading

images/protocol3.png

111 KB
Loading

index.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ layout: default
1717

1818
# Features
1919

20+
* [Filter graph editor](/grapheditor)
2021
* [Multi-scope support](/multiscope)
22+
* [Protocol analysis](/protocol-analysis)
2123

2224
# Learn more
2325

protocol-analysis.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,21 @@
1+
---
2+
layout: default
3+
---
4+
15
# Protocol Analysis
6+
7+
Combine waveform-centric and packet-centric decode views to better understand complex system behavior.
8+
9+
In the example below, a PCIe gen2 x1 link comes up at 2.5 GT/s then negotiates a transition to 5 GT/s speed.
10+
11+
<img src="images/protocol1.png" alt="PCIe link training protocol decode"/>
12+
13+
Zooming in, a single TS2 training set can be seen in the waveform view, decoded at several levels. A list of packets is displayed in the protocol analyzer view below the waveform. Complex transactions or sequences of repeated packets are collapsed into a single line item unless expanded, allowing quick understanding of long captures.
14+
15+
<img src="images/protocol2.png" alt="PCIe link training protocol decode"/>
16+
17+
Clicking on a packet in the protocol analyzer moves the waveform view to make the packet visible, and moves the X-axis cursor (if enabled) to the start of the packet. Dragging the cursor highlights the packet under the cursor in the protocol analyzer view.
18+
19+
The protocol analyzer view supports complex filter expressions, allowing packets of interest to be quickly located among thousands of irrelevant ones.
20+
21+
<img src="images/protocol3.png" alt="PCIe link training protocol decode"/>

0 commit comments

Comments
 (0)