3.9.53 PPUv1

Power Policy Unit (PPU) v1.1 architectural model. This model is written in C++.

PPUv1 contains the following CADI targets:

  • PPUv1

PPUv1 contains the following MTI components:

PPUv1 - about

Software can determine which features the PPU supports by reading the PPU Identification Register 0 (PPU_IDR0) and the PPU Identification Register 1 (PPU_IDR1).

The following power policies are offered by the PPU model, in order of increasing priority:

  • Off.
  • Emulated Off.
  • Memory Retention.
  • Emulated Memory Retention.
  • Logic Retention.
  • Full Retention.
  • Memory Off.
  • Functional Retention.
  • On.
  • Warm Reset.
  • Debug Recovery Reset.

For the power mode transition rules, see ARM® Power Policy Unit Architecture Specification (DEN 0051C). This specification, and the ARM® Power Control System Architecture Specification (DEN 0050C), are confidential and available only to licensed Arm partners from the System Architecture Drop Zone on http://connect.arm.com. For details, contact your Arm support representative.

There are 16 operating mode values. The meaning of these values is specific to the device that is connected to the PPU. The operating mode can only be configured to change during a power transition of ON to ON.

The PPU model supports static and dynamic transitions on the P-Channel interface. It does not yet support Q-Channel.

DEVPACTIVE and DEVPSTATE have the following bit encodings:

DEVPACTIVE bits [10:0]
Each bit indicates a required power mode.
DEVPSTATE bits [3:0]
The integer formed by this bitfield indicates a power mode.
DEVPACTIVE bits [23:16]
Operating mode. The interpretation of these bits depends on the DEVPACTIVE use model (Ladder or Independent).
DEVPSTATE bits [7:4]
The integer formed by this bitfield indicates an operating mode.

Communication over the Low Power Interface (PREQUEST and PACTIVE) uses blocking calls and does not model any delays. See 2.5.1 PChannel protocol for further details.

For static transitions, software sets the policy as the required power mode. The PPU then sends a PREQUEST with the required power state to the attached device. The device can ACCEPT or DENY it. For dynamic transitions, software sets the policy as a minimum power mode. Based on whether the device has sent a signal using DEVPACTIVE, the PPU sends a PREQUEST with the required power state to the attached device. The device can ACCEPT or DENY it.

The PPU model is automatically reset by the simulation engine when the model starts up. Reset can also occur through the reset_in port. The PPU model is reset only when the signal value is Signal::Set. Use Signal::Set instead of zero, its integer value, to prevent unexpected behavior.

The ppuhwstat port notifies the power state change inside the PPU and the definition of each bit is the same as DEVPACTIVE[10:0].

The smpen and standbywfi ports are defined in PPUv0 and are not supported in PPUv1.

Limitations of the model

  • Q-Channel is not supported
  • The PPU model has been validated with devices supporting only ON and OFF power modes. Arm has not tested the case where a connected device supports other power modes offered by the PPU.

Table 3-363 Ports

Name Protocol Type Description
devpactive 2.5.1 PChannel protocol Master P-Channel port
irq 2.7.2 Signal protocol Master PPU IRQ signal
powerdown 2.7.2 Signal protocol Master Notify whether or not the PPU is in OFF state.
ppuhwstat 2.7.4 Value protocol Master Notify the power state change inside the PPU. The definition of each bit is the same as DEVPACTIVE[10:0].
pvbus_s PVBus Slave PPU APB bus slave port
reset_in 2.7.2 Signal protocol Slave PPU reset signal input
wakerequest 2.7.2 Signal protocol Slave Input port for the wakerequest signal. It is ORed with PACTIVE[8] (ON) inside the PPU as input to PPU DEVPACTIVE[8] (ON). The "is_core_ppu" parameter controls whether there is additional logic to hold this signal until the PPU is in OFF/OFF_EMU state.

Table 3-364 Parameters for PPUv1

Name Type Default value Description
RevD_support bool 0x0 Whether to support Rev D locked IRQ
default_op_dyn_en bool 0x0 Whether to enable operating mode dynamic transition by default
default_op_policy int 0x0 Default operating policy
default_power_state_on bool 0x0 Default power state ON
default_pwr_dyn_en bool 0x0 Whether to enable dynamic power mode transition by default
device_channels int 0x0 Number of device channels (0: P-Channel, 1-8: Q-Channels)
dynamic_off bool 0x0 Dynamic Off
dynamic_on bool 0x0 Dynamic On
dynamic_warm_reset bool 0x0 Dynamic Warm Reset
full_ret int 0x0 Full Retention (0: not supported, 1: static, 2: dynamic)
func_ret int 0x0 Functional Retention (0: not supported, 1: static, 2: dynamic)
is_core_ppu bool 0x0 PPU is core_ppu type which means wake_request would wait till PPU is OFF/OFF_EMU
lock_support bool 0x1 Whether to support OFF lock feature
logic_ret int 0x0 Logic Retention (0: not supported, 1: static, 2: dynamic)
mem_off int 0x0 Memory Off (0: not supported, 1: static, 2: dynamic)
mem_ret int 0x0 Memory Retention (0: not supported, 1: static, 2: dynamic)
num_opmode_cfg int 0x0 Number of operating modes
op_active_cfg int 0x0 Operating mode active configuration (0: Ladder use model, 1: Independent user model)
revision string "r1p1" Revision
use_active_signal bool 0x0 Use device-active signal
Non-ConfidentialPDF file icon PDF version100964_1142_00_en
Copyright © 2014–2018 Arm Limited or its affiliates. All rights reserved.