Skip to content

Contributed NIC by Mario Flajslik

mshahbaz edited this page Sep 11, 2012 · 12 revisions





IP Cores



This is a reference NIC project using the DMA engine. It includes many of the standard NetFPGA modules (microblaze, AXI interconnect, nf10_interface), but in addition it uses the DMA module to connect to the host over PCIe. The DMA module is connected to the rest of the NetFPGA system through AXIS (master+slave) for streaming packets and AXI4-LITE over which user code on the host can read/write any AXI register in the system.

Block Diagram


The 10G NIC on NetFPGA is similar to other NICs. In the following sections, we will show how to run a iperf test between NetFPGA and another machine.

Testing Hardware

To run the test, you need two machines, A and B. Let's say Machine A is equipped with NetFPGA and Machine B is equipped with a third-party 10G NIC.

Download the reference_nic bitfile from contrib-projects/nic/bitfiles/nic.bit. (Refer to Production Test Manual if you don't know how to download the bitfile and/or not setup JTAG cable yet.)

Connect Machine A and Machine B using a 10G cable. Assume we use nf0 (the port nearest to the PCI Express) on Machine A and eth1 on Machine B.

Build and Install the NIC Driver

Make the driver in the sw/host/driver directory and insert it as a module.

cd sw/host/driver
sudo insmod nf10.ko

If everything went smoothly dmesg will output that nf10 device is ready.

Setup IP address

On Machine A

sudo ifconfig nf0

On Machine B

sudo ifconfig eth1

Test 1: Ping

On Machine A

[hyzeng@machine_A ~]$ ping

PING 56(84) bytes of data.

64 bytes from icmp_req=1 ttl=50 time=1.04 ms

64 bytes from icmp_req=2 ttl=50 time=1.04 ms

64 bytes from icmp_req=3 ttl=50 time=1.04 ms

64 bytes from icmp_req=4 ttl=50 time=1.04 ms

Test 2: iperf

iperf is a utility to measure the performance over an IP link.

First, make sure you have iperf installed on both machines. If not,

sudo yum install iperf 

Setup iperf server on Machine A.

iperf -s

Setup iperf client on Machine B.

[hyzeng@machine_B ~]$ iperf -c


Client connecting to localhost, TCP port 5001

TCP window size:  132 KByte (default)


[  3] local port 52787 connected with port 5001

[ ID] Interval       Transfer     Bandwidth

[  3]  0.0-10.0 sec  9.35 GBytes  935 Mbits/sec

Clone this wiki locally
You can’t perform that action at this time.