PPM L3 State - 1.0 English

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

Document ID
PG343
Release Date
2023-11-10
Version
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