3.2 PCIe Configurator

The PCIe configurator is used to build a PCIe endpoint or root port PCIe block. The configurator sets up the correct PCIESS registers and ports based on the user inputs.

To create a configured PCIe component, follow the steps:

  1. Access the PCIe module in the Features from the catalog, as shown in the following figure. Double click PCI Express; the Create Component dialog box is displayed.
    Figure 3-2. PCIe Selection from Catalog
  2. Enter the name of the component and then click OK to launch the configurator, as shown in the following figure. The GUI allows you to select the related PCIe properties.
    Figure 3-3. PCIe General Settings

The following table lists the options available in the General tab.

Table 3-2. PCIe General Settings
PCIE General Settings 
(PCIe 0 and PCIe 1)OptionsDefault
PCIe ControllerEnabled and DisabledPCIe 0 = Enabled

PCIe 1 = Disabled

Port TypeEnd Point and Root Port1End Point
Number of Lanesx1, x2, and x4x1
Lane RateGen1 (2.5 Gbps) and 
Gen2 (5.0 Gbps)PCIe 0 = Enabled

PCIe 1 = Disabled

Reference Clock Frequency (MHz)100, 125, and 156.25100
CDR Reference Clock SourceDedicated and FabricDedicated
Number of CDR Reference Clocks1 and 21
Embedded DLL in fabric interface2Enabled and DisabledEnabled
Embedded DLL Jitter RangeLow, Medium-Low, Medium-High, and HighMedium-Low
Optional Interfaces
APB Slave Interface3, 4Enabled and DisabledDisabled
DRI Slave Interface5Enabled and DisabledDisabled
Note:
  1. The PCIe Slot Capabilities register of PolarFire SoC FPGA is a read-only register and the to Slot Power Limit and Slot Power Scale fields are hardwired to zeros. Hence, the PCIe Root Port advertises the Slot Power Limit as zero to the add-in card. However, the PCIe endpoints whose power requirement is 25W or below work as expected. For PCIe endpoints whose power requirement is more than 25W or needs a strict adherence to PCIe spec, it is recommended to connect the endpoint through a Microchip SwitchTec Gen3 PCIe Switch.
  2. AXI clock frequency must be greater than or equal to 125 MHz when the embedded DLL is enabled. Select the Use embedded DLL in the fabric interface option for removing clock insertion delay.
  3. APB interface is used to configure PCIe control registers.
  4. The PCIe APB_S_CLK supports a frequency range between 50 MHz to 125 MHz.
  5. For PolarFire SoC FPGA, DRI interface is used to configure lane related registers.

Number of Lanes: PCIe requires selection of the initial lane width. Wider lane-width cores are capable of training down to smaller lane widths if attached to smaller lane-width devices. The configurations, x2 and x4 support automatic lane reversal, allowing the PCIe link to permit board interconnections with reversed lane numbers, and the PCIESS continues to link train successfully and operate normally.

Reference Clock Frequency: PCIESS requires a 100 MHz, 125 MHz, or 156.25 MHz clock input. The specified clock frequency must match with the TXPLL clock frequency.

Optional Interfaces (APB Slave/DRI Slave): Enabling these options, exposes the particular bus on the PCIESS component for connecting to the FPGA fabric of the APB and DRI.

The following figure shows the options available in the Identification tab.

Figure 3-4. PCIe Identification Settings

The following table lists the options available in the Identification tab.

Table 3-3. PCIe Identification Settings
PCIE Identification Settings 
(PCIe 0 and PCIe 1)OptionsDefault
Vendor IDUser Input0x11AA
Sub-System Vendor IDUser Programmable0x0000
Revision IDUser Input0x0000
Device IDUser Input0x1556
Sub-System Device IDUser Input0x0000
Class CodeUser Input0x0000

Vendor ID: It identifies the manufacturer of the device or application. The default value (0x11AA) is the vendor ID of Microchip and is registered with PCI-Sig. Customized vendor identification IDs can also be used.

Sub-System Vendor ID: This ID further qualifies the manufacturer of the device or application. The default value is 0x0000 matching the vendor ID. Customized vendor identification IDs can also be used.

Important:
  • 0x0000 is not recommended for vendor IDs or sub-system vendor ID.
  • SSVID/SSDID value of 0x0000 causes the Endpoint to fail the PCIECV compliance tests when non-zero SSVID/SSDID is a requirement by the PCIe specification.

Revision ID: This indicates the revision of the device or application; an extension of the device ID. The default value is 0x0000. Customized revision IDs can also be used.

Device ID: A unique identifier for the application. This can be any value based on the input.

Sub-System Device ID: This is similar to sub-system vendor ID and further qualifies the device application.

Class Code: The class code identifies the general function of a device, and is divided into three byte-size fields:

  • Base Class: Broadly identifies the type of the function performed by the device.
  • Sub-Class: More specifically identifies the device function.
  • Interface: Defines a specific register-level programming interface.

Class code encoding details can be found at www.pcisig.com.

The following figure shows the options available in the Power Management tab. Selecting the power management option allows loading settings to the PCIe config space headers.

Figure 3-5. PCIe Power Management Settings

The following table lists the options available in the Power Management tab.

Table 3-4. PCIe Power Management Settings
PCIE Power Management Settings (PCIe 0 and PCIe 1)OptionsDefault
Number of Fast Training Sequences (FTS)63 (Not configurable by the user)
L0 Standby (L0s) Acceptable LatencyNo Limit

Maximum of 64 ns

Maximum of 128 ns

Maximum of 256 ns

Maximum of 512 ns

Maximum of 1 µs

Maximum of 2 µs

Maximum of 4 µs

No Limit
Enable L1 CapabilityDisabled and EnabledDisabled
L1 Acceptable LatencyNo Limit

Maximum of 1 µs

Maximum of 2 µs

Maximum of 4 µs

Maximum of 8 µs

Maximum of 16 µs

Maximum of 32 µs

Maximum of 64 µs

No Limit
L1 Exit LatencyLess than 1 µs

1 µs less than 2 µs

2 µs less than 4 µs

4 µs less than 8 µs

8 µs less than 16 µs

16 µs less than 32 µs

32 µs to 64 µs

more than 64 µs

16 µs to less than 32 µs

The PCIe base specification defines two levels of active state power management (ASPM) that are designed to provide options for trading off increased power conservation with rapid recovery to the L0 state.

Number of fast training sequences (FTS): The specific number to be repeated is defined by the receiving device and broadcast during training sequences at the link up time. The more FTS transmitted, the easier it is to obtain a receiver lock on the transmitted signal. By default, the number of FTS is grayed out, fixed to 63, and is not configurable by the user.

L0s Acceptable Latency: This state is required by all the PCIe devices and applies to a single direction on the link. The latency to return to L0 from L0s is specified to be very short. When entering L0s, the device moving into the power saving state sends an electrical idle ordered set (EIOS) to the receiving device, and then turn off the power to its transmitter. When returning from L0s to L0, the device must first generate a specific number of small order known as FTS. However, the purpose of L0s is to regain receiver lock and be able to receive traffic as quickly as possible, so the receiving device selects the lowest number of FTS that ensure clock recovery based on its specific design. This selection is used to choose a time interval to achieve L0s.

Enable L1 Compatibility: The L1 ASPM is optionally enabled and can be entered to achieve a greater degree of power conservation. In this state, both directions of the link are placed in the L1 state. Return to L0 requires both devices to go through the link recovery process which results in a greater latency to return to L0, so that the power state can typically be used when activity on the link is not expected for some significant time period.

L1 Acceptable Latency: To enter the L1 state, the downstream device must first request permission from the upstream device for entering in to a deeper power conservation state. Upon acknowledgement, both devices turn off their transmitters and enter an electrical idle state. This settings gives the allowable time to wait to achieve L1.

L1 Exit Latency: Returning from L1 requires, that both devices must now go through the link recovery process. The link recovery process uses TS1 and TS2 standard ordered sets as opposed to the smaller FTSs used by L0s. This setting selects the time interval to exit from L1.

Important: When Enable, L1 capability is enabled.

The following figure shows the options available in the Interrupts and Auxiliary Settings tab.

Figure 3-6. PCIe Interrupts and Auxiliary Settings

The following table lists the options available in the Interrupt and Auxiliary Settings tab.

Table 3-5. PCIe Interrupts and Auxiliary Settings
PCIE Interrupts and Auxiliary Settings (PCIe 0 and PCIe 1)OptionsDefault
Physical layer reference clock slotSlot and IndependentSlot
InterruptsINTx, MSI 1, MSI 2, MSI 4, MSI 8, MSI 16, and MSI 32INTx
Expose wake signals1Enabled and DisabledEnabled
Transmit swingFull swing (Not configurable by the user)
De-Emphasis−3.5 dB and −6 dB−3.5 dB
(1) Enabled for End Point port type and disabled for Root Port by default.

PHY Reference Clock Slot: Select this option, if the PHY reference clock is either from a PCIe slot or is generated separately. Slot is a clock source shared in the PCIe system between the host and endpoint link. An Independent slot is used in a system that uses the independent clock sources on either side of the link. This setting changes the PCIe configuration space register, to advertise the used clocked topology to the system root. It makes no other functional changes to the endpoint.

Interrupts: The PCIe EP implementation supports 32 MSI interrupt and INTx interrupts. It cannot simultaneously support both the interrupts. The PCIe EP supports legacy INT A interrupt as PolarFire is a single-function device.

Expose Wake Signals: Enabling this option, exposes the WAKE_N input signal on the PCIESS component allowing connection to the FPGA fabric.

De-Emphasis: This sets the de-emphasis (3.5 dB and 6.0 dB) for PCIe GEN 2 speed.

The following figure shows the options available in the Master Settings tab.

Figure 3-7. PCIe Master Settings

The following table lists the options available in the Master Settings tab.

Table 3-6. PCIe Master Settings
PCIE Master Settings 
(PCIe 0 and PCIe 1)OptionsDefault
BAR TypeDisabled, 32-bit memory,

32-bit prefetchable memory, and 64-bit prefetchable memory

32-bit memory
BAR Size4 KB, 8 KB, 16 KB, 32 KB, 64 KB, 128 KB, 256 KB, 512 KB, 1 MB, 2 MB, 
4 MB, 8 MB, 16 MB, 32 MB, 64 MB, 128 MB, 256 MB, 512 MB,1 GB, 2 GB, and 4 GB4 KB
AXI Address [32 bit]User Input, 32-bit address to be entered, lower 12 bits must be zero.0x0000
Important: At least one Master Bar must be enabled for PCIe 0 and PCIe 1 controllers.

The following figure shows the options available in the Slave Settings tab.

Figure 3-8. PCIe Slave Settings

The following table lists the options available in the Slave Settings tab.

Table 3-7. PCIe Slave Settings
PCIE Slave Settings 
(PCIe 0 and PCIe 1)OptionsDefault
StateDisabled

Enabled

Disabled
Size4 KB, 8 KB, 16 KB, 32 KB, 64 KB, 128 KB, 256 KB, 512 KB, 1 MB, 2 MB, 4 MB, 8 MB, 16 MB, 32 MB, 64 MB,128 MB, 256 MB, 512 MB, 1 GB, 2 GB, and 4 GB4 KB
AXI Address [32 bit]User Input, 32-bit address to be entered, lower 12 bits must be zero.0x0000
Translation Address [64 bit]User Input, 64-bit address to be entered, lower 12 bits must be zero.0x0000
Important: When State is enabled, the size, AXI address, and translation address settings are available.

After making all selections in the PCIe configurator, complete the generation by clicking OK.

The next step is to create the XCVR_REFCLK and TX_PLL modules to be instantiated and connected to the PCIe block. Typically, the REF_CLK output of the PF_XCVR_REF_CLK is connected to the respective inputs of the PF_PCIE as well as the input REF_CLK of the PF_TX_PLL. For information on XCVR block generation, see PolarFire Family Transceiver User Guide.

Figure 3-9. Complete PCIe Interface Example

The following table lists the key connections of the SmartDesign PCIe example.

Table 3-8. Key Connections of SmartDesign
SourceDestination
PF_XCVR_REF_CLK_PCIE_0:REF_CLKPF_TX_PLL_PCIE_0:REFCLK
PF_PCIE_0_0:PCIESS_LANE0_CDR_REF_CLK_0
PF_TX_PLL_PCIE_0:CLKS_TO_XCVRPF_PCIE_0_0:CLKS_FROM_TXPLL_TO_PCIE_0
PF_TX_PLL_PCIE_0:CLK_125PF_PCIE_0_0:PCIE_0_TL_CLK_125MHz
Note: For information about how to demonstrate the high-speed data transfer capability of PolarFire FPGA using the hardened PCIe EndPoint, Soft DDR3, and DDR4 controller IP, see PolarFire FPGA PCIe EndPoint DDR3L DDR4 Memory Controller Data Plane.
Note: For information about Root Port capabilities of the PolarFire FPGA PCIe controller using Mi-V soft processor, see PolarFire FPGA PCIe Root Port Application Note (Earlier DG0802).
Note: For information about PolarFire SoC PCIe Root Port Linux reference design, see GitHub.