Tandem PCIe UltraScale+ Example Tool Flow - 1.3 English

UltraScale+ Devices Integrated Block for PCI Express Product Guide (PG213)

Document ID
PG213
Release Date
2023-10-19
Version
1.3 English

This section demonstrates the AMD Vivado™ tool flow from start to finish when targeting an UltraScale+ reference board. Paths and pointers within this flow description assume the default component name pcie4_ultrascale_plus_0 is used.

  1. When creating a new Vivado project, select a supported part/package shown in the previous table.
  2. In the Vivado IP catalog, expand Standard Bus Interfaces > PCI Express , and double-click UltraScale+ PCI Express Integrated Block to open the Customize IP dialog box.
    Figure 1. Vivado IP Catalog
  3. In the Customize IP dialog box Basic tab, ensure the following options are selected:
    • Mode: Advanced
    • PCIe Block Location: X1Y2
      Note: Use the required PCIe Block Location for the device targeted, as listed in the previous table. This design example targets a VU9P.
    • Tandem Configuration or Dynamic Function eXchange: Tandem PCIe .
      Figure 2. Tandem PCIe
  4. 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 be 16'h903F. In the PF0 IDs tab, set:
    • Vendor ID: 10EE
    • Device ID: 903F
    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.
    Figure 3. IDs
  5. 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.

  6. 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.

  7. 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.

  8. 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 pcie4_ultrascale_plus_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.

  9. 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_pcie4_uscale_plus_ep_tandem1.bit|
    xilinx_pcie4_uscale_plus_ep_tandem2.bit
  10. Generate the PROM file for the stage 1.

    Run the following command in the Vivado Tcl Console to create a PROM file supported on an UltraScale+ development board.

    write_cfgmem -format mcs -interface BPI -size 256 -loadbit “up 0x0
    xilinx_pcie4_uscale_plus_ep_tandem1.bit” xilinx_pcie4_uscale_plus_ep_tandem1.mcs