PPM L3 State - 1.0 English

Versal Adaptive SoC Integrated Block for PCI Express LogiCORE IP Product Guide (PG343)

Document ID
Release Date
1.0 English

These steps outline the transition of the Endpoint for PCI Express® to the PPM L3 state:

  1. The core negotiates a transition to the L23 Ready Link State upon receiving a PME_Turn_Off message from the upstream link partner.
  2. Upon receiving a PME_Turn_Off message, the core initiates a handshake with the user logic through cfg_power_state_change_interrupt (as shown in the following table) and expects a cfg_power_state_change_ack back from the user logic.
  3. A successful handshake results in a transmission of the Power Management Turn-off Acknowledge (PME-turnoff_ack) Message by the core to its upstream link partner.
  4. The core closes all its interfaces, disables the Physical/Data-Link/Transaction layers and is ready for removal of power to the core.
    There are two exceptions to this rule:
    • The core is configured as an Endpoint and the User Configuration Space is enabled. In this situation, the user application must refrain from sending new Request TLPs if cfg_function_power_state indicates non-D0, but the user application can return Completions to Configuration transactions targeting User Configuration space.
    • The core is configured as a Root Port. To be compliant in this situation, the user application should refrain from sending new Requests if cfg_function_power_state indicates non-D0.
Table 1. Power Management Handshaking Signals
Port Name Direction Description
cfg_power_state_change_interrupt Output Asserted if a power-down request TLP is received from the upstream device. After assertion, cfg_power_state_change_interrupt remains asserted until the user application asserts cfg_power_state_change_ack.
cfg_power_state_change_ack Input Asserted by the user application when it is safe to power down.

Power-down negotiation follows these steps:

  1. Before power and clock are turned off, the Root Complex or the Hot-Plug controller in a downstream switch issues a PME_Turn_Off broadcast message.
  2. When the core receives this TLP, it asserts cfg_power_state_change_interrupt to the user application and starts polling the cfg_power_state_change_ack input.
  3. When the user application detects the assertion of cfg_to_turnoff, it must complete any packet in progress and stop generating any new packets. After the user application is ready to be turned off, it asserts cfg_power_state_change_ack to the core. After assertion of cfg_power_state_change_ack, the user application is committed to being turned off.
  4. The core sends a PME_TO_Ack message when it detects assertion of cfg_power_state_change_ack.
Figure 1. Power Management Handshaking: 64-Bit