Example: PipeTest

The PipeTest example is helpful in testing and verifying bulk transfers. The example allows you to do the following:

  • Perform bandwidth tests at full rate with various block and length settings
  • Perform bandwidth tests using block throttling to restrict data flow
  • Perform pattern tests with optional verification and error injection
  • Perform pipe transfer stress tests
  • Perform basic statistical analysis of transfers

Usage Information

New in 5.3.5

FrontPanel 5.3.5 introduces a version of PipeTest with statistical analysis consisting of min, max, average, data errors, and transfer errors. Useful for determining system health and debugging transient errors. Results are output in a csv file.

  1. Download the pre-built example bitfiles corresponding to your FPGA module from our Pins Downloads.
  2. Locate PipeTest.exe (and its source code):
  3. You need to have the following in a single directory:
    • PipeTest.exe (from step 2)
    • okFrontPanel.dll (.so for Linux, .dylib for macOS)
    • pipetest.bit (from step 1)

A device is only accessible in one application at a time. Ensure the FrontPanel application is closed before running the example.

Usage: PipeTest bitfile [serial S] [repeat N] [pattern lfsr|sequential|walking1|walking0|hammer|neighbor|fixed F]
                 [throttlein T] [throttleout T] [check] [inject]
                 [blocksize B] [segmentsize S]
                 [stress] [bench] [read N] [write N]

  serial S       - Optionally specify serial S of device to test.
  bitfile        - Configuration file to download, alternatively specify \"nobit\" to skip configuration.
  repeat N       - Repeats the requested tests for N seconds (\"inf\" to run forever).
  pattern        - Set pattern to one of the supported patterns.
     lfsr        - [Default] Selects LFSR psuedorandom pattern generator.
     sequential  - Selects Counter pattern generator.
     walking1    - Selects Walking 1's pattern generator. (USB 3.0 only)
     walking0    - Selects Walking 0's pattern generator. (USB 3.0 only)
     hammer      - Selects Hammer pattern generator. (USB 3.0 only)
     neighbor    - Selects Neighbor pattern generator. (USB 3.0 only)
     fixed F     - Selects a fixed pattern defined by hex input F. (USB 3.0 only)
  throttlein     - Specifies a 32-bit hex throttle vector (writes).
  throttleout    - Specifies a 32-bit hex throttle vector (reads).
  check          - Turns on validity checks.
  inject         - Injects an error during data generation.
  blocksize B    - Sets the block size to B (for BTPipes).
  segmentsize S  - Sets the segment size to S.
  stress         - Performs a transfer stress test (validity checks on).
  bench          - Runs a preset benchmark script and prints results.
  csv S          - Also output results to a csv file named [S]
  read N         - Performs a read of N bytes and optionally checks for validity.
  write N        - Performs a write of N bytes and optionally checks for validity.

FrontPanel Platform App

An app version of the PipeTest example is provided as a FrontPanel Platform app, written in JS+HTML+CSS. This provides a graphical interface to (mostly) the same functionality.