Introduction

This confluence page describes how to build and run the software.  For this project, there are two flavors of software: "Simple" and "PGP".

Building and Running the "SimpleSoftware" Application

The same software is used for the SimpleDpm and SimpleDtm firmware.  This software application collects the data from the PRBS module with the option to either process or not process the PRBS data for bit errors. The following are the steps for building the software executable:

$ ssh root@$IP_ADDRESS

# cd /mnt/host/SimpleSoftware/

# source setup_cob.csh

# make

The "/mnt/host/SimpleSoftware/bin/dmaRead" executable is now ready to use.  There are two modes are operation with this executable.  If any arguments are passed to the executable, then the RCE will not process the PBRS data for bit errors (A.K.A. "dump mode").  Here's an example of what the printout looks like:

# bin/dmaRead 1

FpgaVersion: 0xda000001

BuildStamp: SimpleDpm: Vivado v2014.4 (x86_64) Built Tue Jul 14 16:43:05 PDT 2015 by ruckman

Press any key to continue:

Create 31 buffers of size 327680

Rate 794 hz, bw 1665.138672 Mbps, total 794, errors 0, size 262144

Rate 1908 hz, bw 4001.365967 Mbps, total 2702, errors 0, size 262144

Rate 1907 hz, bw 3999.268799 Mbps, total 4609, errors 0, size 262144

Rate 1907 hz, bw 3999.268799 Mbps, total 6516, errors 0, size 262144

Rate 1908 hz, bw 4001.365967 Mbps, total 8424, errors 0, size 262144

Rate 1907 hz, bw 3999.268799 Mbps, total 10331, errors 0, size 262144

Rate 1907 hz, bw 3999.268799 Mbps, total 12238, errors 0, size 262144

Rate 1908 hz, bw 4001.365967 Mbps, total 14146, errors 0, size 262144

Rate 1907 hz, bw 3999.268799 Mbps, total 16053, errors 0, size 262144

....................................................................................................................

....................................................................................................................

....................................................................................................................

If no arguments are passed to the executable, then the RCE will process the PBRS data for bit errors (which will reduce the data bandwidth).  Here's an example of what this looks like:

# bin/dmaRead

Compiling for RCE

FpgaVersion: 0xda000001

BuildStamp: SimpleDpm: Vivado v2014.4 (x86_64) Built Tue Jul 14 16:43:05 PDT 2015 by ruckman

Press any key to continue:

Create 31 buffers of size 327680

Rate 17 hz, bw 35.651585 Mbps, total 17, errors 0, size 262144

Rate 73 hz, bw 153.092102 Mbps, total 90, errors 0, size 262144

Rate 74 hz, bw 155.189255 Mbps, total 164, errors 0, size 262144

Rate 73 hz, bw 153.092102 Mbps, total 237, errors 0, size 262144

Rate 74 hz, bw 155.189255 Mbps, total 311, errors 0, size 262144

Rate 73 hz, bw 153.092102 Mbps, total 384, errors 0, size 262144

Rate 74 hz, bw 155.189255 Mbps, total 458, errors 0, size 262144

Rate 73 hz, bw 153.092102 Mbps, total 531, errors 0, size 262144

Rate 74 hz, bw 155.189255 Mbps, total 605, errors 0, size 262144

....................................................................................................................

....................................................................................................................

....................................................................................................................

The following software headers are required to run this example software application:

#include <sys/mman.h>

#include <sys/stat.h>

#include <fcntl.h>

#include <stdio.h>

#include <stdlib.h>

#include <fcntl.h>

#include <string.h>

#include <unistd.h>

#include <time.h>

#include <iostream>

#include <limits.h>

#include <AxiStreamDma.h> // Custom DMA engine located in /mnt/host/Common/AxiStreamDma.h

#include <PrbsData.h> // PBRS data processor located in /mnt/host/Common/PrbsData.h

Building and Running the "PgpSoftware" Application

The same software is for the PgpDpm firmware and PgpDtm firmware.  This software application configures all the PGP link's to near-side loopback mode then performs a rate tests on lane[0]. The following are the steps for building and running the software application:

$ ssh root@$IP_ADDRESS

# cd /mnt/host/PgpSoftware/

# source setup_cob.csh

# make

The "/mnt/host/PgpSoftware/bin/rateTest" executable is now ready to use.  Here's an example of what the print looks like:

# bin/rateTest

FpgaVersion: 0xda000001

BuildStamp: PgpDpm: Vivado v2014.4 (x86_64) Built Tue Jul 14 13:14:42 PDT 2015 by ruckman

PgpLoopback[0]: 0x2

PgpLoopback[1]: 0x2

PgpLoopback[2]: 0x2

PgpLoopback[3]: 0x2

PgpLoopback[4]: 0x2

PgpLoopback[5]: 0x2

PgpLoopback[6]: 0x2

PgpLoopback[7]: 0x2

PgpLoopback[8]: 0x2

PgpLoopback[9]: 0x2

PgpLoopback[10]: 0x2

PgpLoopback[11]: 0x2

Press any key to continue:

Starting write thread

Starting read thread

Seconds=0, Rx Count=4605, Rx Total=301830120, Rx Rate=2.41435e+09, Tx Count=4622, Tx Total=302907392, Tx Rate=2.42326e+09

Seconds=0, Rx Count=9224, Rx Total=604577856, Rx Rate=2.41644e+09, Tx Count=9232, Tx Total=605028352, Tx Rate=2.41697e+09

Seconds=0, Rx Count=13832, Rx Total=906604608, Rx Rate=2.41592e+09, Tx Count=13840, Tx Total=907018240, Tx Rate=2.41592e+09

Seconds=0, Rx Count=18440, Rx Total=1208631360, Rx Rate=2.41592e+09, Tx Count=18449, Tx Total=1209073664, Tx Rate=2.41644e+09

Seconds=0, Rx Count=23048, Rx Total=1510658112, Rx Rate=2.41592e+09, Tx Count=23057, Tx Total=1511063552, Tx Rate=2.41592e+09

Seconds=0, Rx Count=27656, Rx Total=1812684864, Rx Rate=2.41592e+09, Tx Count=27665, Tx Total=1813053440, Tx Rate=2.41592e+09

Seconds=0, Rx Count=32265, Rx Total=2114777160, Rx Rate=2.41592e+09, Tx Count=32273, Tx Total=2115043328, Tx Rate=2.41592e+09

Seconds=0, Rx Count=36873, Rx Total=2416803912, Rx Rate=2.41592e+09, Tx Count=36881, Tx Total=2417033216, Tx Rate=2.41592e+09

Seconds=0, Rx Count=41482, Rx Total=2718896208, Rx Rate=2.41592e+09, Tx Count=41490, Tx Total=2719088640, Tx Rate=2.41644e+09

Seconds=0, Rx Count=46090, Rx Total=3020922960, Rx Rate=2.41592e+09, Tx Count=46099, Tx Total=3021144064, Tx Rate=2.41644e+09

Seconds=0, Rx Count=50698, Rx Total=3322949712, Rx Rate=2.41592e+09, Tx Count=50706, Tx Total=3323068416, Tx Rate=2.41539e+09

Seconds=0, Rx Count=55307, Rx Total=3625042008, Rx Rate=2.41592e+09, Tx Count=55315, Tx Total=3625123840, Tx Rate=2.41644e+09

Seconds=0, Rx Count=59915, Rx Total=3927068760, Rx Rate=2.41592e+09, Tx Count=59923, Tx Total=3927113728, Tx Rate=2.41592e+09

....................................................................................................................

....................................................................................................................

....................................................................................................................

The following software headers are required to run this example software application:

#include <sys/mman.h>

#include <sys/stat.h>

#include <fcntl.h>

#include <stdio.h>

#include <stdlib.h>

#include <fcntl.h>

#include <string.h>

#include <unistd.h>

#include <time.h>

#include <sstream>

#include <iostream>

#include <iomanip>

#include <limits.h>

#include <termios.h>

#include <pthread.h>

#include <AxiStreamDma.h> // Custom DMA engine located in /mnt/host/Common/AxiStreamDma.h

 

  • No labels