This section demonstrates the Vivado tool flow from
start to finish when targeting the VCU108 reference board. Paths and pointers within this
flow description assume the default component name pcie3_ultrascale_0
is
used.
- When creating a new Vivado project, select a supported part/package shown in the preceding table.
- In the Vivado IP catalog, expand
> , and double-click UltraScale FPGA Gen3
Integrated Block for PCI Express to open the Customize IP dialog box.
- In the Customize IP dialog box Basic tab,
ensure the following options are selected:
- Mode: Advanced
-
PCIe Block Location: X0Y0
Note: Use the required PCIe Block Location for the device targeted, as listed in the preceding table.
- Tandem Configuration or Dynamic Function eXchange: Tandem
- The example design software attaches to the device through the Vendor ID
and Device ID. The Vendor ID must be
16'h10EE
and the Device ID must be16'h
8038
.In the PF0 IDs tab, set:- Vendor ID: 10EE
- Device ID: 8038
Note: An alternative solution is the Vendor ID and Device ID can be changed, and the driver and host PC software updated to match the new values.
- Perform additional PCIe customizations, and select
OK to generate the core.
After core generation, the core hierarchy is available in the Sources tab in the Vivado IDE.
- In the Sources tab, right-click the core, and select Open IP Example
Design.
A new instance of Vivado is created and the example design project automatically loads in the Vivado IDE.
- Run Synthesis and Implementation.
Click Run Implementation in the Flow Navigator. Select OK to run through synthesis first. The design runs through the complete tool flow, and the end result is a fully routed design supporting Tandem PCIe.
- Setup PROM or Flash settings, and request two explicit bit files.
Set the appropriate settings to correctly generate a bitstream for a PROM or flash memory device by:
- modifying the constraints in the PCIe IP constraint file (for example, pcie3_ultrascale_0_tandem).
- requesting two explicit bitstreams by
setting these properties, as seen in the example design constraint file:
set_property HD.OVERRIDE_PERSIST FALSE [current_design]
set_property HD.TANDEM_BITSTREAMS Separate [current_design]
Other values for HD.TANDEM_BITSTREAMS are Combined (default), which is used for the Tandem PROM solution, and None, which generates a standard single-stage bitstream for the entire device. For more information, see Programming the Device.
- Generate the bitstream.
After Synthesis and Implementation are complete, click Generate Bitstream in the Flow Navigator. The following two files are created and placed in the runs directory:
xilinx_pcie3_uscale_ep_tandem1.bit|
xilinx_pcie3_uscale_ep_tandem2.bit
- Generate the PROM file for the stage 1.
Run the following command in the Vivado Tcl Console to create a PROM file supported on the VCU108 development board.
write_cfgmem -format mcs -interface BPI -size 256 -loadbit up 0x0 xilinx_pcie3_uscale_ep_tandem1.bit xilinx_pcie3_uscale_ep_tandem1.mcs