You copied the Doc URL to your clipboard.

PPUv1 component

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

About

PPUv1 contains the following CADI targets:

  • PPUv1

PPUv1 contains the following MTI components:

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 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 4-175 Ports

Name Protocol Type Description
devpactive PChannel Master P-Channel port.
irq Signal Master PPU IRQ signal.
powerdown Signal Master Notify whether or not the PPU is in OFF state.
ppuhwstat Value 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 Signal Slave PPU reset signal input.
wakerequest Signal 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 4-176 Parameters

Name Type Allowed values Default value Description
default_op_dyn_en bool true, false false Whether to enable dynamic operating mode transitions by default.
default_op_policy int 0-15 0 Default operating policy.
default_power_state_on bool true, false false Set power state to ON at simulation initialization and/or reset.
default_pwr_dyn_en bool true, false false Whether to enable dynamic power mode transitions by default.
device_channels int 0-8 0 Number of device channels. 0: P-Channel, 1-8: Q-Channels.

Note

Only 0 is used. Other values are ignored
dynamic_off bool true, false false Dynamic Off.
dynamic_on bool true, false false Dynamic On.
dynamic_warm_reset bool true, false false Dynamic Warm Reset.
full_ret int 0-2 0 Full Retention. 0: not supported, 1: static, 2: dynamic.
func_ret int 0-2 0 Functional Retention. 0: not supported, 1: static, 2: dynamic.
is_core_ppu bool true, false false Set to true if connecting a PPU to a core rather than to a cluster or another device. Core_PPU has additional logic to hold wake_request until it is in OFF/OFF_EMU state.
lock_support bool true, false true Whether to support the LOCK feature.
logic_ret int 0-2 0 Logic Retention. 0: not supported, 1: static, 2: dynamic.
mem_off int 0-2 0 Memory Off. 0: not supported, 1: static, 2: dynamic.
mem_ret int 0-2 0 Memory Retention. 0: not supported, 1: static, 2: dynamic.
num_opmode_cfg int 0-15 0 Number of operating modes.
op_active_cfg int 0-1 0 Operating mode active configuration. 0: Ladder use model, 1: Independent use model.
revision string - "r1p1" Revision.
use_active_signal bool true, false false Use device-active signal.
Was this page helpful? Yes No