Now let’s generate the Aurora IP. To illustrate the IP configuration options more clearly, we firstly use Vivado GUI to see the graphical Aurora IP configuration options with U200 card as example.
Please start the Vivado GUI, then in the Tcl Console window enter following example command to create a project using the FPGA part corresponding to your Alveo card. In following command line, xcu200-fsgd2104-2-e is the FPGA part name of U200 card.
create_project aurora_test -part xcu200-fsgd2104-2-e
After the project created, click IP Catalog in the PROJECT MANAGER on the left, find Aurora 64B66B IP in the list, and double click it. Afterwards, the Aurora 64B66B IP configuration window pops up, and we review and make necessary necessary to the options as explained below.
We configure the Core Options tab as below:
Physical Layer
GT Type: GTY (default)
Line Rate (Gbps): 10.3125 (default)
Column Used: right (default)
Lanes: 4 (the example design uses four lanes)
Starting GT Quad: Quad X1Y5 (default, the Vitis linking process will choose the correct GT Quad)
Starting GT Lane: X1Y20 (default, the Vitis linking process will choose the correct GT Lane)
GT Refclk Selection: MGTREFCLK0 of Quad X1Y5 (default, the Vitis linking process will choose the correct GT Refclk)
GT Refclk (MHz): 161.1328125 (This matches the GT clock source on the Alveo card)
INIT clk (MHz): 100 (we will use the 100MHz clock provided in the U200 target platform as the INIT clk)
Generate Aurora without GT: keep unselected (we want the Aurora IP include the GT transceiver)
Link Layer
Dataflow Mode: Duplex (default)
Interface: Streaming (we use streaming mode in the example design)
Flow Control: None (default)
USER K: keep unselected (we don’t use USER-K in the example design)
Little Endian Support: keep unselected (we don’t need littl endian support in the example design)
Error Detection
CRC: keep unselected (we don’t need CRC in the example design)
Debug and Control
DRP Mode: Native (actually we don’t use DRP function in the example design)
Vivado Lab Tools: keep unselected (we don’t need use this feature in the example design)
Additional transceiver control and status ports: keep unselected (we don’t need use this feature in the example design)
We configure the Shared Logic tab as below:
Shared Logic
Include Shared Logic in core (in the example design, we use a single Aurora module)
Following above settings, the Aurora 64B66B IP configuration window is as below:
The configured IP will have an AXI stream slave port and an AXI stream master port, and the data width is 256 bits, namely 64 bits per lane. These two AXI stream ports work on 161.1328125 MHz user_clk domain, which is 1/64 of 10.3125 Gbps lane speed.
After clicking OK button, and Aurora IP configuration is finished. What we actually need is the generated aurora_64b66b_0.xci file, which will be used in the later IP package step. Just like mentioned earlier, the Aurora IP generation step will be finished by Vivado Tcl script in this tutorial, so let’s look at the script file ./tcl/gen_aurora_ip.tcl, which is used to generate the same output as above GUI flow. The major part of this script is as below:
create_ip -name aurora_64b66b \
-vendor xilinx.com \
-library ip \
-version 12.0 \
-module_name aurora_64b66b_0 \
-dir ./ip_generation
set_property -dict [list CONFIG.C_AURORA_LANES {4} \
CONFIG.C_LINE_RATE {10.3125} \
CONFIG.C_REFCLK_FREQUENCY {161.1328125} \
CONFIG.C_INIT_CLK {100} \
CONFIG.interface_mode {Streaming} \
CONFIG.drp_mode {Native} \
CONFIG.SupportLevel {1}] \
[get_ips aurora_64b66b_0]
With the script, you can use following command line to generate the Aurora IP (u200 card as example):
vivado -mode batch -source ./tcl/pack_kernel.tcl -tclargs xcu200-fsgd2104-2-e
But hold a minute, since a Makefile is provided to manage the full flow, we will use the make command to finish all the steps.