Commit 39287a6a authored by Dustin Peterson's avatar Dustin Peterson

Updated xUPF spec.

parent 339b9d14
# Unified Power Format
This page describes the changes to the IEEE standard 1801 (UPF 2.1) that were made to support the specification of all relevant power management details. The commands are still not available in the newer standard (IEEE 1801-2015) but our implementation is based on IEEE 1801-2013, so we describe this document using IEEE 1801-2013. The IEEE standard 1801-2013 is available [here](ieee1801-2013.pdf).
Our changes are intended to provide a UPF model that can be easily translated to the models that are used by the power_management IP generator and low power platform generation tool (project: power_management).
## Base Models
The power_management project is based on three models:
* __Supply Network Model:__ Models the supply network consisting of supply nets, buffers, voltage sources and power switches. Further describes the possible states of each voltage source (a state assigns each output port a dedicated voltage) and power switch (a state assigns each output port an input port it is connected to, or describes that an output port is unconnected).
* __Power State Machine Model:__ Models the power state machine for a given supply network. A power state machine consists of power states and valid transitions in between. A power state collects the active state of each power switch and voltage source. The power state machine model further specifies the initial power state that will be transitioned to directly after start/reset.
* __Power Management Controller Model:__ Models implementation details of the power management controller for a given power state machine and supply network. This involves the specification of the controls for power switches and voltage sources (generating the control signals to switch to the right state at the right time) and features. Features are something like clock gating, isolation or retention that need to be activated when entering a specific state (and disactivated when leaving a specific state, if the next state does not need this feature). There are some out-of-the-box implementations for features and controls.
We will reuse the existing UPF commands as much as possible to capture the details of all three models, but we still need to introduce some new UPF commands. The next few lists will outline the UPF commands that are necessary for a specific model.
This page describes the changes to the IEEE standard 1801 (UPF 2.1) that were made to support the specification of all relevant power management details. The commands are still not available in the newer standard (IEEE 1801-2015) but our implementation is based on IEEE 1801-2013, so we describe this document using IEEE 1801-2013. The IEEE standard 1801-2013 is available [here](http://p1801.org).
\* indicates that a command is reused from UPF. Reused UPF commands are mostly left unchanged, but their implementation is extended slightly: One can specify the connection to a specific control signal via the PMC. So instead of filling a specific signal, it is possible to insert the name of the PMC — the framework will do the rest.
### Supply Network Model
### Modeling supply networks
* add_voltage_source_state
* connect_supply_net *
......@@ -31,20 +19,20 @@ We will reuse the existing UPF commands as much as possible to capture the detai
* set_domain_reset
* set_supply_voltage
### Power State Machine Model
### Modeling power state machines
* add_power_state *
* create_pmc
* describe_state_transition *
* set_initial_state
### Power Management Controller Model
### Modeling power management controllers
* configure_device
* create_pmc
* schedule_strategy
* set_strategy_schedule
* set_device_schedule
* update_strategy_schedule
* update_device_schedule
## List of new UPF commands
......@@ -134,7 +122,7 @@ We follow the guideline of the official document from http://www.p1801.org.
<td colspan=2><b>create_pmc</b> <i>pmc_name</i>
<br>[<b>-devices</b> { <i>power_switch | voltage_source</i> }*]
<br>[<b>-domain</b> <i>domain_name</i>]
<br><b>-interface</b> <i>&lt;plain | apb3 | axi4lite | avalon&gt;</i>
<br><b>-interface</b> <i>&lt;plain | apb3 | axi4lite | avalon | wishbone&gt;</i>
<br>[<b>-interface_param</b> {<i> name value </i>}]*
<br>[<b>-extend_interface</b> {<i>target_scope</i>}]
<br><b>-clock</b> {<i>clock_signal [&lt;posedge|negedge&gt;]</i>}
......@@ -157,7 +145,7 @@ We follow the guideline of the official document from http://www.p1801.org.
</tr>
<tr>
<td><b>-interface</b> <i>&lt;plain | apb3 | axi4lite | avalon | wishbone&gt;</i></td>
<td>Interface that shall be created to control the PMC by the SoC: Either a plain interface (so timer configuration, mode configuration, status and so on is available as plain inputs and outputs) or a variety of bus interfaces (currently: APB3, AXI4-Lite and Avalon-MM) are supported.</td>
<td>Interface that shall be created to control the PMC by the SoC: Either a plain interface (so timer configuration, mode configuration, status and so on is available as plain inputs and outputs) or a variety of bus interfaces (currently: APB3, AXI4-Lite, Avalon-MM, Wishbone) are supported.</td>
</tr>
<tr>
<td><b>-interface_param</b> {<i> name value </i>}]*</td>
......@@ -179,7 +167,7 @@ We follow the guideline of the official document from http://www.p1801.org.
<td><b>-scheduler</b> <i>&lt;default | custom&gt;</td>
<td>Specifies the scheduler that shall be used for generating the schedule graph that is used to determine
the order and dependencies between strategy and device actions when switching from one power state to another. The default scheduler schedules depending strategies for enable in the order clock_gating, isolation, retention, reset and clock_gating, reset, retention, isolation for disable. All strategies are scheduled before the device change when enabled, and
afterwards when disabled. When using the default scheduler all set_strategy_schedule commands are ignored. When using the custom scheduler, only set_strategy_schedule and schedule_strategy specified dependencies are taken into account when generating the schedule graph.</td>
afterwards when disabled. When using the default scheduler all update_strategy_schedule and update_device_schedule commands are ignored. When using the custom scheduler, only dependencies that have been specified by update_strategy_schedule, update_device_schedule and schedule_strategy are taken into account when generating the schedule graph.</td>
</tr>
</table>
......@@ -332,7 +320,7 @@ We follow the guideline of the official document from http://www.p1801.org.
<th>Syntax</th>
<td colspan=2><b>schedule_strategy</b> <i>pmc_name</i>
<br>[<b>-device</b> {<i>power_switch|voltage_source</i>}]
<br><b>-state</b> {<i>power_switch_state|voltage_source_state|psm_state</i>}
<br><b>-state</b> {<i>power_switch_state|voltage_source_state|pmc_state</i>}
<br><b>-feature</b> {<i>isolation_strategy</i> | <i>retention_strategy</i> | <i>clock_gating_strategy</i> | <i>reset_strategy</i>}
<br>[<b>-enable</b> <i>&lt;before|after&gt;</i>]
<br>[<b>-disable</b> <i>&lt;before|after&gt;</i>]
......@@ -348,8 +336,8 @@ We follow the guideline of the official document from http://www.p1801.org.
<td>The name of the voltage source or power switch, in which in the given state this feature gets activated. If device is not given, the name of the state given in <b>-state</b> shall be the name of a power state added to the power management controller given by <pmc_name>.</td>
</tr>
<tr>
<td><b>-state</b> {<i>power_switch_state|voltage_source_state|psm_state</i>}</td>
<td>The name of the voltage source or power switch state where this feature gets activated.</td>
<td><b>-state</b> {<i>power_switch_state|voltage_source_state|pmc_state</i>}</td>
<td>The name of the voltage source, power switch or power state machine state where this feature gets activated.</td>
</tr>
<tr>
<td><b>-feature</b> {<i>isolation_strategy</i> | <i>retention_strategy</i> | <i>clock_gating_strategy</i> | <i>reset_strategy</i>}</td>
......@@ -493,7 +481,7 @@ We follow the guideline of the official document from http://www.p1801.org.
</tr>
<tr>
<th>Syntax</th>
<td colspan=2><b>set_initial_state</b> <i>psm_name</i>
<td colspan=2><b>set_initial_state</b> <i>pmc_name</i>
<br><b>-state</b> <i>state_name</i>
</td>
</tr>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment